From b327bddcc16b014c0e49fd65575c4ac84941bfc9 Mon Sep 17 00:00:00 2001 From: Nevio Vesic <0x19@users.noreply.github.com> Date: Thu, 17 Aug 2023 02:36:21 +0200 Subject: [PATCH] Abstract Syntax Tree Bugfixes and Improvements (#77) * tensorflow and openssf * Just some shit code that will be trashed * Dropping useless code * Auditing, prediction deletion and fixes of the report path building * This was overly ambitious and just bad idea... * fixing simplify import paths for WriteToDir * Bunch of updates, however need to deal with references as they suck * Ast nonsense code cleanups to start from base * Bunch of corrections for reference resolver and tree updater * More fixes * More fixes, especially to type descriptions * Remaining protos for ast, some documentation, bump of protos to 0.1.5. Should build now * Bunch of corrections * Sources test cases are now readable. Finally basic AST documentation completed * More cleanups, fixes and unit test basic coverage * Most of the AST is now at least basically unit tested * Updates final I guess... --- abi/builder_test.go | 20 +- abi/helpers.go | 18 - abi/root.go | 11 +- ast/and_operation.go | 140 + ast/assembly.go | 2 +- ast/assignment.go | 37 +- ast/base_contract.go | 10 +- ast/binary.go | 1 + ast/body.go | 5 +- ast/break.go | 7 +- ast/builder.go | 20 - ast/builder_test.go | 502 +- ast/catch.go | 5 +- ast/comments.go | 30 +- ast/conditional.go | 141 + ast/constructor.go | 16 +- ast/continue.go | 17 +- ast/continue_test.go | 70 - ast/contract.go | 55 +- ast/declaration.go | 39 +- ast/do.go | 31 +- ast/emit.go | 28 +- ast/enum.go | 29 +- ast/error.go | 31 +- ast/event.go | 26 +- ast/expr_operation.go | 23 +- ast/expression.go | 37 +- ast/expression_statement.go | 12 +- ast/fallback.go | 65 +- ast/for.go | 34 +- ast/function.go | 51 +- ast/function_call.go | 37 +- ast/helpers.go | 40 +- ast/ids.go | 3 + ast/if.go | 30 +- ast/imports.go | 51 +- ast/index_access.go | 124 +- ast/index_range.go | 14 +- ast/inheritance.go | 2 + ast/interface.go | 139 +- ast/library.go | 37 +- ast/marshaler.go | 4 + ast/member_access.go | 39 +- ast/meta_type.go | 27 +- ast/modifier.go | 37 +- ast/modifier_invocation.go | 43 +- ast/new.go | 24 +- ast/node.go | 3 + ast/override.go | 31 +- ast/parameter.go | 59 +- ast/parameter_list.go | 13 + ast/payable_conversion.go | 13 + ast/pragma.go | 13 +- ast/primary_expression.go | 124 +- ast/receive.go | 68 +- ast/reference.go | 42 +- ast/reference_test.go | 7 +- ast/return.go | 11 + ast/revert.go | 26 +- ast/root_node.go | 11 +- ast/simple.go | 55 +- ast/sources_test.go | 382 + ast/state_variable.go | 70 +- ast/struct.go | 48 +- ast/symbols.go | 11 +- ast/tree.go | 10 +- ast/try.go | 33 +- ast/tuple.go | 38 +- ast/type_name.go | 62 +- ast/unary_prefix.go | 17 + ast/unary_suffix.go | 17 + ast/using.go | 20 +- ast/variable.go | 28 +- ast/while.go | 33 +- ast/yul.go | 2 +- ast/yul_assignment.go | 4 +- audit/auditor_test.go | 9 +- audit/config.go | 12 +- audit/report.go | 2 +- audit/report_test.go | 2 +- audit/types.go | 115 +- bytecode/metadata.go | 15 + bytecode/metadata_test.go | 1 + data/tests/ast/Context.solgo.ast.json | 1018 +- data/tests/ast/ERC20.solgo.ast.json | 23402 +++--- data/tests/ast/ERC20.solgo.ast.proto.json | 41727 +++++----- data/tests/ast/Empty.solgo.ast.proto.json | 4 +- data/tests/ast/IDummyContract.solgo.ast.json | 462 +- data/tests/ast/IERC20.solgo.ast.json | 3102 +- data/tests/ast/IERC20Metadata.solgo.ast.json | 1266 +- data/tests/ast/Lottery.solgo.ast.json | 2 +- data/tests/ast/Lottery.solgo.ast.proto.json | 18093 ++--- data/tests/ast/MathLib.solgo.ast.json | 4544 +- data/tests/ast/SafeMath.solgo.ast.json | 11068 ++- data/tests/ast/SimpleStorage.solgo.ast.json | 2 +- .../ast/SimpleStorage.solgo.ast.proto.json | 6815 +- data/tests/ast/Token.solgo.ast.json | 2 +- data/tests/ast/Token.solgo.ast.proto.json | 31259 ++++---- data/tests/ast/TokenSale.solgo.ast.json | 2 +- data/tests/ast/TokenSale.solgo.ast.proto.json | 17751 +++-- .../tests/ast/resolver/InterfaceContract.json | 2 +- data/tests/ast/resolver/LibraryContract.json | 2 +- data/tests/ast/resolver/TestContract.json | 2 +- .../contracts/cheelee/Address.solgo.ast.json | 11216 ++- .../AdminUpgradeabilityProxy.solgo.ast.json | 1130 +- .../cheelee/BeaconProxy.solgo.ast.json | 3524 +- .../contracts/cheelee/Context.solgo.ast.json | 1060 +- .../cheelee/ERC1967Proxy.solgo.ast.json | 2310 +- .../cheelee/ERC1967Upgrade.solgo.ast.json | 13318 ++-- .../contracts/cheelee/IBeacon.solgo.ast.json | 466 +- .../contracts/cheelee/Ownable.solgo.ast.json | 4192 +- .../contracts/cheelee/Proxy.solgo.ast.json | 1860 +- .../cheelee/ProxyAdmin.solgo.ast.json | 4750 +- .../cheelee/StorageSlot.solgo.ast.json | 2358 +- ...TransparentUpgradeableProxy.solgo.ast.json | 2 +- ...arentUpgradeableProxy.solgo.ast.proto.json | 57943 +++++++------- .../cheelee/UpgradeableBeacon.solgo.ast.json | 2901 +- data/tests/contracts/sushixswap/Address.sol | 222 + .../sushixswap/Address.solgo.ast.json | 5452 ++ .../contracts/sushixswap/BentoAdapter.sol | 61 + .../sushixswap/BentoAdapter.solgo.ast.json | 1380 + .../contracts/sushixswap/IBentoBoxMinimal.sol | 86 + .../IBentoBoxMinimal.solgo.ast.json | 2124 + data/tests/contracts/sushixswap/IERC20.sol | 6 + .../contracts/sushixswap/IImmutableState.sol | 19 + .../sushixswap/IImmutableState.solgo.ast.json | 1026 + data/tests/contracts/sushixswap/IPool.sol | 82 + .../contracts/sushixswap/IPool.solgo.ast.json | 1873 + .../contracts/sushixswap/IStargateAdapter.sol | 11 + .../IStargateAdapter.solgo.ast.json | 199 + .../sushixswap/IStargateReceiver.sol | 14 + .../IStargateReceiver.solgo.ast.json | 521 + .../contracts/sushixswap/IStargateRouter.sol | 32 + .../sushixswap/IStargateRouter.solgo.ast.json | 1040 + .../contracts/sushixswap/IStargateWidget.sol | 7 + .../sushixswap/IStargateWidget.solgo.ast.json | 189 + .../contracts/sushixswap/ISushiXSwap.sol | 17 + .../sushixswap/ISushiXSwap.solgo.ast.json | 397 + .../contracts/sushixswap/ITridentRouter.sol | 64 + .../sushixswap/ITridentRouter.solgo.ast.json | 1485 + .../sushixswap/ITridentSwapAdapter.sol | 10 + .../ITridentSwapAdapter.solgo.ast.json | 174 + .../contracts/sushixswap/IUniswapV2Pair.sol | 54 + .../sushixswap/IUniswapV2Pair.solgo.ast.json | 5996 ++ data/tests/contracts/sushixswap/IWETH.sol | 11 + .../contracts/sushixswap/IWETH.solgo.ast.json | 461 + .../contracts/sushixswap/ImmutableState.sol | 38 + .../sushixswap/ImmutableState.solgo.ast.json | 1119 + data/tests/contracts/sushixswap/SafeERC20.sol | 99 + .../sushixswap/SafeERC20.solgo.ast.json | 4722 ++ data/tests/contracts/sushixswap/SafeMath.sol | 19 + .../sushixswap/SafeMathUniswap.solgo.ast.json | 1530 + .../contracts/sushixswap/StargateAdapter.sol | 150 + .../sushixswap/StargateAdapter.solgo.ast.json | 6420 ++ .../sushixswap/SushiLegacyAdapter.sol | 72 + .../SushiLegacyAdapter.solgo.ast.json | 4427 ++ .../tests/contracts/sushixswap/SushiXSwap.sol | 239 + .../sushixswap/SushiXSwap.solgo.ast.json | 1 + .../SushiXSwap.solgo.ast.proto.json | 64715 ++++++++++++++++ .../contracts/sushixswap/TokenAdapter.sol | 48 + .../sushixswap/TokenAdapter.solgo.ast.json | 1990 + .../sushixswap/TridentSwapAdapter.sol | 130 + .../TridentSwapAdapter.solgo.ast.json | 7880 ++ .../contracts/sushixswap/UniswapV2Library.sol | 153 + .../UniswapV2Library.solgo.ast.json | 9877 +++ data/tests/eip/eip1155_full_match.proto.json | 4 + data/tests/eip/eip1820_full_match.proto.json | 2 + data/tests/eip/eip1822_full_match.proto.json | 2 + data/tests/eip/eip1967_full_match.proto.json | 2 + data/tests/eip/eip20_full_match.proto.json | 2 + data/tests/eip/eip20_high_match.proto.json | 2 + data/tests/eip/eip20_low_match.proto.json | 2 + data/tests/eip/eip20_medium_match.proto.json | 2 + data/tests/eip/eip20_no_match.proto.json | 2 + data/tests/eip/eip721_full_match.proto.json | 3 + data/tests/ir/ERC20.ir.json | 42 +- data/tests/ir/ERC20.ir.proto.json | 42 +- data/tests/ir/TokenSale.ir.json | 4 +- data/tests/ir/TokenSale.ir.proto.json | 4 +- .../ir/TransparentUpgradeableProxy.ir.json | 38 +- .../TransparentUpgradeableProxy.ir.proto.json | 38 +- eip/confidence.go | 6 +- eip/storage_test.go | 3 + eip/types.go | 1 + go.mod | 2 +- go.sum | 4 +- ir/builder_test.go | 11 +- ir/import.go | 5 +- sources.go | 6 +- sources_test.go | 7 +- utils/json.go | 17 + 191 files changed, 262200 insertions(+), 135821 deletions(-) create mode 100644 ast/and_operation.go create mode 100644 ast/conditional.go delete mode 100644 ast/continue_test.go create mode 100644 ast/sources_test.go create mode 100644 data/tests/contracts/sushixswap/Address.sol create mode 100644 data/tests/contracts/sushixswap/Address.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/BentoAdapter.sol create mode 100644 data/tests/contracts/sushixswap/BentoAdapter.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/IBentoBoxMinimal.sol create mode 100644 data/tests/contracts/sushixswap/IBentoBoxMinimal.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/IERC20.sol create mode 100644 data/tests/contracts/sushixswap/IImmutableState.sol create mode 100644 data/tests/contracts/sushixswap/IImmutableState.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/IPool.sol create mode 100644 data/tests/contracts/sushixswap/IPool.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/IStargateAdapter.sol create mode 100644 data/tests/contracts/sushixswap/IStargateAdapter.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/IStargateReceiver.sol create mode 100644 data/tests/contracts/sushixswap/IStargateReceiver.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/IStargateRouter.sol create mode 100644 data/tests/contracts/sushixswap/IStargateRouter.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/IStargateWidget.sol create mode 100644 data/tests/contracts/sushixswap/IStargateWidget.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/ISushiXSwap.sol create mode 100644 data/tests/contracts/sushixswap/ISushiXSwap.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/ITridentRouter.sol create mode 100644 data/tests/contracts/sushixswap/ITridentRouter.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/ITridentSwapAdapter.sol create mode 100644 data/tests/contracts/sushixswap/ITridentSwapAdapter.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/IUniswapV2Pair.sol create mode 100644 data/tests/contracts/sushixswap/IUniswapV2Pair.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/IWETH.sol create mode 100644 data/tests/contracts/sushixswap/IWETH.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/ImmutableState.sol create mode 100644 data/tests/contracts/sushixswap/ImmutableState.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/SafeERC20.sol create mode 100644 data/tests/contracts/sushixswap/SafeERC20.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/SafeMath.sol create mode 100644 data/tests/contracts/sushixswap/SafeMathUniswap.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/StargateAdapter.sol create mode 100644 data/tests/contracts/sushixswap/StargateAdapter.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/SushiLegacyAdapter.sol create mode 100644 data/tests/contracts/sushixswap/SushiLegacyAdapter.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/SushiXSwap.sol create mode 100644 data/tests/contracts/sushixswap/SushiXSwap.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/SushiXSwap.solgo.ast.proto.json create mode 100644 data/tests/contracts/sushixswap/TokenAdapter.sol create mode 100644 data/tests/contracts/sushixswap/TokenAdapter.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/TridentSwapAdapter.sol create mode 100644 data/tests/contracts/sushixswap/TridentSwapAdapter.solgo.ast.json create mode 100644 data/tests/contracts/sushixswap/UniswapV2Library.sol create mode 100644 data/tests/contracts/sushixswap/UniswapV2Library.solgo.ast.json diff --git a/abi/builder_test.go b/abi/builder_test.go index 5be10bf4..f153e3b1 100644 --- a/abi/builder_test.go +++ b/abi/builder_test.go @@ -10,6 +10,7 @@ import ( "github.com/txpull/solgo/ast" "github.com/txpull/solgo/ir" "github.com/txpull/solgo/tests" + "github.com/txpull/solgo/utils" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) @@ -31,6 +32,7 @@ func TestBuilderFromSources(t *testing.T) { expectedAbi string expectedProto string unresolvedReferences int64 + isEmpty bool }{ { name: "Empty Contract Test", @@ -50,6 +52,7 @@ func TestBuilderFromSources(t *testing.T) { expectedAbi: tests.ReadJsonBytesForTest(t, "abi/Empty.abi").Content, expectedProto: tests.ReadJsonBytesForTest(t, "abi/Empty.abi.proto").Content, unresolvedReferences: 0, + isEmpty: true, }, { name: "Simple Storage Contract Test", @@ -260,11 +263,14 @@ func TestBuilderFromSources(t *testing.T) { root := builder.GetRoot() assert.NotNil(t, root) - /* assert.GreaterOrEqual( - t, - int32(len(builder.GetSources().SourceUnits)), - root.GetContractsCount(), - ) */ + assert.NotNil(t, builder.GetSources()) + assert.NotNil(t, builder.GetTypeResolver()) + + if !testCase.isEmpty { + assert.NotNil(t, root.GetIR()) + assert.NotNil(t, root.GetContractsAsSlice()) + assert.NotNil(t, root.GetEntryContract()) + } pretty, err := builder.ToJSONPretty() assert.NoError(t, err) @@ -293,7 +299,7 @@ func TestBuilderFromSources(t *testing.T) { // Leaving it here for now to make unit tests pass... // This will be removed before final push to the main branch - err = builder.GetAstBuilder().WriteToFile( + err = utils.WriteToFile( "../data/tests/abi/"+testCase.sources.EntrySourceUnitName+".abi.json", pretty, ) @@ -306,7 +312,7 @@ func TestBuilderFromSources(t *testing.T) { // Leaving it here for now to make unit tests pass... // This will be removed before final push to the main branch - err = builder.GetAstBuilder().WriteToFile( + err = utils.WriteToFile( "../data/tests/abi/"+testCase.sources.EntrySourceUnitName+".abi.proto.json", protoPretty, ) diff --git a/abi/helpers.go b/abi/helpers.go index 334e23a5..15b17ddc 100644 --- a/abi/helpers.go +++ b/abi/helpers.go @@ -1,30 +1,12 @@ package abi import ( - "encoding/json" - "fmt" - "os" "regexp" "strings" ast_pb "github.com/txpull/protos/dist/go/ast" ) -// dumpNode prints a formatted JSON representation of the provided interface and exits the program. -// This function is primarily used for debugging purposes. -func dumpNode(whatever interface{}) { - j, _ := json.MarshalIndent(whatever, "", "\t") - fmt.Println(string(j)) - os.Exit(1) -} - -// dumpNodeNoExit prints a formatted JSON representation of the provided interface without exiting the program. -// This function is primarily used for debugging purposes. -func dumpNodeNoExit(whatever interface{}) { - j, _ := json.MarshalIndent(whatever, "", "\t") - fmt.Println(string(j)) -} - // normalizeStateMutability converts the provided Mutability value to its corresponding string representation. func (b *Builder) normalizeStateMutability(m ast_pb.Mutability) string { switch m { diff --git a/abi/root.go b/abi/root.go index 05b3e6e1..ade9feae 100644 --- a/abi/root.go +++ b/abi/root.go @@ -29,11 +29,20 @@ func (r *Root) GetEntryName() string { return r.EntryContractName } -// GetContracts returns the map of contracts in the ABI. +// GetContracts returns the map of contracts. func (r *Root) GetContracts() map[string]*Contract { return r.Contracts } +// GetContractsAsSlice returns the slice contracts. +func (r *Root) GetContractsAsSlice() []*Contract { + toReturn := make([]*Contract, 0) + for _, c := range r.Contracts { + toReturn = append(toReturn, c) + } + return toReturn +} + // GetContractByName retrieves a contract by its name from the ABI. // Returns nil if the contract is not found. func (r *Root) GetContractByName(name string) *Contract { diff --git a/ast/and_operation.go b/ast/and_operation.go new file mode 100644 index 00000000..fbb36bf7 --- /dev/null +++ b/ast/and_operation.go @@ -0,0 +1,140 @@ +package ast + +import ( + v3 "github.com/cncf/xds/go/xds/type/v3" + ast_pb "github.com/txpull/protos/dist/go/ast" + "github.com/txpull/solgo/parser" +) + +// AndOperation represents an 'and' operation in an abstract syntax tree. +type AndOperation struct { + *ASTBuilder + + Id int64 `json:"id"` + NodeType ast_pb.NodeType `json:"node_type"` + Src SrcNode `json:"src"` + Expressions []Node[NodeType] `json:"expressions"` + TypeDescriptions []*TypeDescription `json:"type_descriptions"` +} + +// NewAndOperationExpression creates a new AndOperation instance. +func NewAndOperationExpression(b *ASTBuilder) *AndOperation { + return &AndOperation{ + ASTBuilder: b, + Id: b.GetNextID(), + NodeType: ast_pb.NodeType_AND_OPERATION, + TypeDescriptions: make([]*TypeDescription, 0), + } +} + +// SetReferenceDescriptor sets the reference descriptions of the AndOperation node. +// This function always returns false for now. +func (b *AndOperation) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { + return false +} + +// GetId returns the ID of the AndOperation. +func (f *AndOperation) GetId() int64 { + return f.Id +} + +// GetType returns the NodeType of the AndOperation. +func (f *AndOperation) GetType() ast_pb.NodeType { + return f.NodeType +} + +// GetSrc returns the source information of the AndOperation. +func (f *AndOperation) GetSrc() SrcNode { + return f.Src +} + +// GetTypeDescription returns the type description associated with the AndOperation. +func (f *AndOperation) GetTypeDescription() *TypeDescription { + return f.TypeDescriptions[0] +} + +// GetNodes returns the child nodes of the AndOperation. +func (f *AndOperation) GetNodes() []Node[NodeType] { + toReturn := []Node[NodeType]{} + toReturn = append(toReturn, f.Expressions...) + return toReturn +} + +// GetExpressions returns the expressions within the AndOperation. +func (f *AndOperation) GetExpressions() []Node[NodeType] { + return f.Expressions +} + +// ToProto converts the AndOperation to its corresponding protocol buffer representation. +func (f *AndOperation) ToProto() NodeType { + proto := ast_pb.AndOperation{ + Id: f.GetId(), + NodeType: f.GetType(), + Src: f.GetSrc().ToProto(), + Expressions: make([]*v3.TypedStruct, 0), + TypeDescriptions: make([]*ast_pb.TypeDescription, 0), + } + + for _, exp := range f.GetExpressions() { + proto.Expressions = append(proto.Expressions, exp.ToProto().(*v3.TypedStruct)) + } + + for _, typeDesc := range f.TypeDescriptions { + proto.TypeDescriptions = append(proto.TypeDescriptions, typeDesc.ToProto()) + } + + return NewTypedStruct(nil, "AndOperation") +} + +// Parse parses the AndOperation node from the parsing context and associates it with other nodes. +func (f *AndOperation) Parse( + unit *SourceUnit[Node[ast_pb.SourceUnit]], + contractNode Node[NodeType], + fnNode Node[NodeType], + bodyNode *BodyNode, + vDeclar *VariableDeclaration, + expNode Node[NodeType], + ctx *parser.AndOperationContext, +) Node[NodeType] { + f.Id = f.GetNextID() + f.Src = SrcNode{ + Id: f.GetNextID(), + Line: int64(ctx.GetStart().GetLine()), + Column: int64(ctx.GetStart().GetColumn()), + Start: int64(ctx.GetStart().GetStart()), + End: int64(ctx.GetStop().GetStop()), + Length: int64(ctx.GetStop().GetStop() - ctx.GetStart().GetStart() + 1), + ParentIndex: func() int64 { + if vDeclar != nil { + return vDeclar.GetId() + } + + if expNode != nil { + return expNode.GetId() + } + + if bodyNode != nil { + return bodyNode.GetId() + } + + if fnNode != nil { + return fnNode.GetId() + } + + return contractNode.GetId() + }(), + } + + expression := NewExpression(f.ASTBuilder) + + for _, expr := range ctx.AllExpression() { + parsedExp := expression.Parse(unit, contractNode, fnNode, bodyNode, vDeclar, f, expr) + f.Expressions = append( + f.Expressions, + parsedExp, + ) + f.TypeDescriptions = append(f.TypeDescriptions, parsedExp.GetTypeDescription()) + } + + return f +} diff --git a/ast/assembly.go b/ast/assembly.go index 46e83c23..34903dac 100644 --- a/ast/assembly.go +++ b/ast/assembly.go @@ -59,7 +59,7 @@ func (a *AssemblyStatement) GetNodes() []Node[NodeType] { // GetTypeDescription returns the type description of the assembly statement. // For an AssemblyStatement, this is always nil. func (a *AssemblyStatement) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{} } // ToProto returns the protobuf representation of the assembly statement. diff --git a/ast/assignment.go b/ast/assignment.go index aed09b28..e5bf5b17 100644 --- a/ast/assignment.go +++ b/ast/assignment.go @@ -13,15 +13,15 @@ import ( type Assignment struct { *ASTBuilder - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - Expression Node[NodeType] `json:"expression,omitempty"` - Operator ast_pb.Operator `json:"operator,omitempty"` - LeftExpression Node[NodeType] `json:"left_expression,omitempty"` - RightExpression Node[NodeType] `json:"right_expression,omitempty"` - ReferencedDeclaration int64 `json:"referenced_declaration,omitempty"` - TypeDescription *TypeDescription `json:"type_description,omitempty"` + Id int64 `json:"id"` // Unique identifier for the Assignment node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the AST node. + Src SrcNode `json:"src"` // Source location information. + Expression Node[NodeType] `json:"expression,omitempty"` // Expression for the assignment (if used). + Operator ast_pb.Operator `json:"operator,omitempty"` // Operator used in the assignment. + LeftExpression Node[NodeType] `json:"left_expression,omitempty"` // Left-hand side expression. + RightExpression Node[NodeType] `json:"right_expression,omitempty"` // Right-hand side expression. + ReferencedDeclaration int64 `json:"referenced_declaration,omitempty"` // Referenced declaration identifier (if used). + TypeDescription *TypeDescription `json:"type_description,omitempty"` // Type description associated with the Assignment node. } // NewAssignment creates a new Assignment node with a given ASTBuilder. @@ -129,7 +129,7 @@ func (a *Assignment) ToProto() NodeType { func (a *Assignment) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { a.ReferencedDeclaration = refId a.TypeDescription = refDesc - return false + return true } // ParseStatement parses an expression statement context into the Assignment node. @@ -142,6 +142,7 @@ func (a *Assignment) ParseStatement( eCtx *parser.ExpressionStatementContext, ctx *parser.AssignmentContext, ) { + // Setting the source location information. a.Src = SrcNode{ Id: a.GetNextID(), Line: int64(eCtx.GetStart().GetLine()), @@ -166,8 +167,10 @@ func (a *Assignment) ParseStatement( }(), } + // Parsing the expression and setting the type description. expression := NewExpression(a.ASTBuilder) a.Expression = expression.Parse(unit, contractNode, fnNode, bodyNode, nil, nil, ctx) + a.TypeDescription = a.Expression.GetTypeDescription() } // Parse parses an assignment context into the Assignment node. @@ -180,6 +183,7 @@ func (a *Assignment) Parse( expNode Node[NodeType], ctx *parser.AssignmentContext, ) Node[NodeType] { + // Setting the type and source location information. a.NodeType = ast_pb.NodeType_ASSIGNMENT a.Src = SrcNode{ Id: a.GetNextID(), @@ -201,16 +205,23 @@ func (a *Assignment) Parse( }(), } + // Parsing the operator. a.Operator = parseOperator(ctx.AssignOp()) + + // Parsing left and right expressions. expression := NewExpression(a.ASTBuilder) a.LeftExpression = expression.Parse(unit, contractNode, fnNode, bodyNode, vDeclar, a, ctx.Expression(0)) a.RightExpression = expression.Parse(unit, contractNode, fnNode, bodyNode, vDeclar, a, ctx.Expression(1)) - // What we are going to do here is take left expression type description and assign it to the - // asignment type description. This is because the left expression is the one that holds the - // type description of the assignment. + // Setting the type description based on the left expression. a.TypeDescription = a.LeftExpression.GetTypeDescription() + // If the left expression is nil, set the reference descriptor for the right expression. + if a.TypeDescription == nil { + a.LeftExpression.SetReferenceDescriptor(a.RightExpression.GetId(), a.RightExpression.GetTypeDescription()) + a.TypeDescription = a.RightExpression.GetTypeDescription() + } + return a } diff --git a/ast/base_contract.go b/ast/base_contract.go index 4fdbeccf..6866f624 100644 --- a/ast/base_contract.go +++ b/ast/base_contract.go @@ -93,10 +93,10 @@ func (b *BaseContractName) GetReferencedDeclaration() int64 { // ToProto returns the protobuf representation of the base contract name. func (b *BaseContractName) ToProto() *ast_pb.BaseContractName { return &ast_pb.BaseContractName{ - Id: b.Id, - NodeType: b.NodeType, - Src: b.Src.ToProto(), - Name: b.Name, - ReferencedDeclaration: b.ReferencedDeclaration, + Id: b.GetId(), + NodeType: b.GetType(), + Src: b.GetSrc().ToProto(), + Name: b.GetName(), + ReferencedDeclaration: b.GetReferencedDeclaration(), } } diff --git a/ast/binary.go b/ast/binary.go index ee721b82..b66f2220 100644 --- a/ast/binary.go +++ b/ast/binary.go @@ -328,6 +328,7 @@ func (a *BinaryOperation) ParseEqualityComparison( return a } +// ParseOr is a method that parses or comparison operations. func (a *BinaryOperation) ParseOr( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/body.go b/ast/body.go index eca3c7da..88896afc 100644 --- a/ast/body.go +++ b/ast/body.go @@ -72,7 +72,10 @@ func (b *BodyNode) IsImplemented() bool { // GetTypeDescription returns the type description of the body node. // As BodyNode does not have a type description, it returns nil. func (b *BodyNode) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "block", + TypeIdentifier: "$_t_block", + } } // GetNodes returns the nodes associated with the body node. diff --git a/ast/break.go b/ast/break.go index 86947e7a..efe71ded 100644 --- a/ast/break.go +++ b/ast/break.go @@ -46,13 +46,16 @@ func (b *BreakStatement) GetSrc() SrcNode { // GetTypeDescription returns the type description of the break statement. // As the break statement doesn't have a type description, it returns nil. func (b *BreakStatement) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "break", + TypeIdentifier: "$_t_magic_break", + } } // GetNodes returns the child nodes of the break statement. // As the break statement doesn't have any child nodes, it returns nil. func (b *BreakStatement) GetNodes() []Node[NodeType] { - return nil + return []Node[NodeType]{} } // ToProto returns the protobuf representation of the break statement. diff --git a/ast/builder.go b/ast/builder.go index bfb049fc..f6cb7ecf 100644 --- a/ast/builder.go +++ b/ast/builder.go @@ -2,7 +2,6 @@ package ast import ( "encoding/json" - "os" ast_pb "github.com/txpull/protos/dist/go/ast" "github.com/txpull/solgo" @@ -84,25 +83,6 @@ func (b *ASTBuilder) InterfaceToJSON(data interface{}) ([]byte, error) { return json.Marshal(data) } -// ToPrettyJSON converts the provided data to a pretty (indented) JSON byte array. -func (b *ASTBuilder) ToPrettyJSON(data interface{}) ([]byte, error) { - return json.MarshalIndent(data, "", " ") -} - -// WriteJSONToFile writes the root node of the AST as a JSON byte array to a file at the provided path. -func (b *ASTBuilder) WriteJSONToFile(path string) error { - bts, err := b.ToJSON() - if err != nil { - return err - } - return os.WriteFile(path, bts, 0600) -} - -// WriteToFile writes the provided data byte array to a file at the provided path. -func (b *ASTBuilder) WriteToFile(path string, data []byte) error { - return os.WriteFile(path, data, 0600) -} - // ResolveReferences resolves the references in the AST using the Resolver of the ASTBuilder. func (b *ASTBuilder) ResolveReferences() []error { if err := b.resolver.Resolve(); err != nil { diff --git a/ast/builder_test.go b/ast/builder_test.go index 2ca861ee..f67de311 100644 --- a/ast/builder_test.go +++ b/ast/builder_test.go @@ -2,12 +2,13 @@ package ast import ( "context" + "fmt" "path/filepath" "testing" "github.com/stretchr/testify/assert" "github.com/txpull/solgo" - "github.com/txpull/solgo/tests" + "github.com/txpull/solgo/utils" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) @@ -21,237 +22,8 @@ func TestAstBuilderFromSourceAsString(t *testing.T) { // Replace the global logger. zap.ReplaceGlobals(logger) - // Define multiple test cases - testCases := []struct { - name string - outputPath string - sources *solgo.Sources - expectedAst string - expectedProto string - unresolvedReferences int64 - }{ - { - name: "Empty Contract Test", - outputPath: "ast/", - sources: &solgo.Sources{ - SourceUnits: []*solgo.SourceUnit{ - { - Name: "Empty", - Path: tests.ReadContractFileForTest(t, "Empty").Path, - Content: tests.ReadContractFileForTest(t, "Empty").Content, - }, - }, - EntrySourceUnitName: "Empty", - LocalSourcesPath: buildFullPath("../sources/"), - }, - expectedAst: tests.ReadJsonBytesForTest(t, "ast/Empty.solgo.ast").Content, - expectedProto: tests.ReadJsonBytesForTest(t, "ast/Empty.solgo.ast.proto").Content, - unresolvedReferences: 0, - }, - { - name: "Simple Storage Contract Test", - outputPath: "ast/", - sources: &solgo.Sources{ - SourceUnits: []*solgo.SourceUnit{ - { - Name: "MathLib", - Path: "MathLib.sol", - Content: tests.ReadContractFileForTest(t, "ast/MathLib").Content, - }, - { - Name: "SimpleStorage", - Path: "SimpleStorage.sol", - Content: tests.ReadContractFileForTest(t, "ast/SimpleStorage").Content, - }, - }, - EntrySourceUnitName: "SimpleStorage", - LocalSourcesPath: buildFullPath("../sources/"), - }, - expectedAst: tests.ReadJsonBytesForTest(t, "ast/SimpleStorage.solgo.ast").Content, - expectedProto: tests.ReadJsonBytesForTest(t, "ast/SimpleStorage.solgo.ast.proto").Content, - unresolvedReferences: 0, - }, - { - name: "OpenZeppelin ERC20 Test", - outputPath: "ast/", - sources: &solgo.Sources{ - SourceUnits: []*solgo.SourceUnit{ - { - Name: "SafeMath", - Path: "SafeMath.sol", - Content: tests.ReadContractFileForTest(t, "ast/SafeMath").Content, - }, - { - Name: "IERC20", - Path: "IERC20.sol", - Content: tests.ReadContractFileForTest(t, "ast/IERC20").Content, - }, - { - Name: "IERC20Metadata", - Path: "IERC20Metadata.sol", - Content: tests.ReadContractFileForTest(t, "ast/IERC20Metadata").Content, - }, - { - Name: "Context", - Path: "Context.sol", - Content: tests.ReadContractFileForTest(t, "ast/Context").Content, - }, - { - Name: "ERC20", - Path: "ERC20.sol", - Content: tests.ReadContractFileForTest(t, "ast/ERC20").Content, - }, - }, - EntrySourceUnitName: "ERC20", - LocalSourcesPath: buildFullPath("../sources/"), - }, - expectedAst: tests.ReadJsonBytesForTest(t, "ast/ERC20.solgo.ast").Content, - expectedProto: tests.ReadJsonBytesForTest(t, "ast/ERC20.solgo.ast.proto").Content, - unresolvedReferences: 0, - }, - { - name: "Token With Reference Resolution", - outputPath: "ast/", - sources: &solgo.Sources{ - SourceUnits: []*solgo.SourceUnit{ - { - Name: "Token", - Path: "Token.sol", - Content: tests.ReadContractFileForTest(t, "ast/Token").Content, - }, - }, - EntrySourceUnitName: "Token", - LocalSourcesPath: buildFullPath("../sources/"), - }, - expectedAst: tests.ReadJsonBytesForTest(t, "ast/Token.solgo.ast").Content, - expectedProto: tests.ReadJsonBytesForTest(t, "ast/Token.solgo.ast.proto").Content, - unresolvedReferences: 0, - }, - { - name: "Token Sale ERC20 Test", - outputPath: "ast/", - sources: &solgo.Sources{ - SourceUnits: []*solgo.SourceUnit{ - { - Name: "TokenSale", - Path: "TokenSale.sol", - Content: tests.ReadContractFileForTest(t, "ast/TokenSale").Content, - }, - { - Name: "SafeMath", - Path: "SafeMath.sol", - Content: tests.ReadContractFileForTest(t, "ast/SafeMath").Content, - }, - { - Name: "IERC20", - Path: "IERC20.sol", - Content: tests.ReadContractFileForTest(t, "ast/IERC20").Content, - }, - }, - EntrySourceUnitName: "TokenSale", - LocalSourcesPath: buildFullPath("../sources/"), - }, - expectedAst: tests.ReadJsonBytesForTest(t, "ast/TokenSale.solgo.ast").Content, - expectedProto: tests.ReadJsonBytesForTest(t, "ast/TokenSale.solgo.ast.proto").Content, - unresolvedReferences: 0, - }, - { - name: "Lottery Test", - outputPath: "ast/", - sources: &solgo.Sources{ - SourceUnits: []*solgo.SourceUnit{ - { - Name: "Lottery", - Path: "Lottery.sol", - Content: tests.ReadContractFileForTest(t, "ast/Lottery").Content, - }, - }, - EntrySourceUnitName: "Lottery", - LocalSourcesPath: buildFullPath("../sources/"), - }, - expectedAst: tests.ReadJsonBytesForTest(t, "ast/Lottery.solgo.ast").Content, - expectedProto: tests.ReadJsonBytesForTest(t, "ast/Lottery.solgo.ast.proto").Content, - unresolvedReferences: 0, - }, - { - name: "Cheelee Test", // Took this one as I could discover ipfs metadata :joy: - outputPath: "contracts/cheelee/", - sources: &solgo.Sources{ - SourceUnits: []*solgo.SourceUnit{ - { - Name: "Import", - Path: "Import.sol", - Content: tests.ReadContractFileForTest(t, "contracts/cheelee/Import").Content, - }, - { - Name: "BeaconProxy", - Path: "BeaconProxy.sol", - Content: tests.ReadContractFileForTest(t, "contracts/cheelee/BeaconProxy").Content, - }, - { - Name: "UpgradeableBeacon", - Path: "UpgradeableBeacon.sol", - Content: tests.ReadContractFileForTest(t, "contracts/cheelee/UpgradeableBeacon").Content, - }, - { - Name: "ERC1967Proxy", - Path: "ERC1967Proxy.sol", - Content: tests.ReadContractFileForTest(t, "contracts/cheelee/ERC1967Proxy").Content, - }, - { - Name: "TransparentUpgradeableProxy", - Path: "TransparentUpgradeableProxy.sol", - Content: tests.ReadContractFileForTest(t, "contracts/cheelee/TransparentUpgradeableProxy").Content, - }, - { - Name: "ProxyAdmin", - Path: "ProxyAdmin.sol", - Content: tests.ReadContractFileForTest(t, "contracts/cheelee/ProxyAdmin").Content, - }, - { - Name: "IBeacon", - Path: "IBeacon.sol", - Content: tests.ReadContractFileForTest(t, "contracts/cheelee/IBeacon").Content, - }, - { - Name: "Proxy", - Path: "Proxy.sol", - Content: tests.ReadContractFileForTest(t, "contracts/cheelee/Proxy").Content, - }, - { - Name: "ERC1967Upgrade", - Path: "ERC1967Upgrade.sol", - Content: tests.ReadContractFileForTest(t, "contracts/cheelee/ERC1967Upgrade").Content, - }, - { - Name: "Address", - Path: "Address.sol", - Content: tests.ReadContractFileForTest(t, "contracts/cheelee/Address").Content, - }, - { - Name: "StorageSlot", - Path: "StorageSlot.sol", - Content: tests.ReadContractFileForTest(t, "contracts/cheelee/StorageSlot").Content, - }, - { - Name: "Ownable", - Path: "Ownable.sol", - Content: tests.ReadContractFileForTest(t, "contracts/cheelee/Ownable").Content, - }, - { - Name: "Context", - Path: "Context.sol", - Content: tests.ReadContractFileForTest(t, "contracts/cheelee/Context").Content, - }, - }, - EntrySourceUnitName: "TransparentUpgradeableProxy", - LocalSourcesPath: buildFullPath("../sources/"), - }, - expectedAst: tests.ReadJsonBytesForTest(t, "contracts/cheelee/TransparentUpgradeableProxy.solgo.ast").Content, - expectedProto: tests.ReadJsonBytesForTest(t, "contracts/cheelee/TransparentUpgradeableProxy.solgo.ast.proto").Content, - unresolvedReferences: 0, - }, - } + // All of the defined test cases can be discovered in sources_test.go file + testCases := getSourceTestCases(t) for _, testCase := range testCases { t.Run(testCase.name, func(t *testing.T) { @@ -282,13 +54,13 @@ func TestAstBuilderFromSourceAsString(t *testing.T) { var errsExpected []error assert.Equal(t, errsExpected, errs) assert.Equal(t, int(testCase.unresolvedReferences), astBuilder.GetResolver().GetUnprocessedCount()) - + assert.Equal(t, len(astBuilder.GetResolver().GetUnprocessedNodes()), astBuilder.GetResolver().GetUnprocessedCount()) for _, sourceUnit := range astBuilder.GetRoot().GetSourceUnits() { - prettyJson, err := astBuilder.ToPrettyJSON(sourceUnit) + prettyJson, err := utils.ToJSONPretty(sourceUnit) assert.NoError(t, err) assert.NotEmpty(t, prettyJson) - err = astBuilder.WriteToFile( + err = utils.WriteToFile( "../data/tests/"+testCase.outputPath+sourceUnit.GetName()+".solgo.ast.json", prettyJson, ) @@ -298,7 +70,7 @@ func TestAstBuilderFromSourceAsString(t *testing.T) { prettyJson, err := astBuilder.ToJSON() assert.NoError(t, err) assert.NotEmpty(t, prettyJson) - err = astBuilder.WriteToFile( + err = utils.WriteToFile( "../data/tests/"+testCase.outputPath+testCase.sources.EntrySourceUnitName+".solgo.ast.json", prettyJson, ) @@ -309,8 +81,8 @@ func TestAstBuilderFromSourceAsString(t *testing.T) { assert.NoError(t, err) assert.NotEmpty(t, astJson) - astPretty, _ := astBuilder.ToPrettyJSON(astBuilder.ToProto()) - err = astBuilder.WriteToFile( + astPretty, _ := utils.ToJSONPretty(astBuilder.ToProto()) + err = utils.WriteToFile( "../data/tests/"+testCase.outputPath+testCase.sources.EntrySourceUnitName+".solgo.ast.proto.json", astPretty, ) @@ -318,21 +90,269 @@ func TestAstBuilderFromSourceAsString(t *testing.T) { assert.NotEmpty(t, astPretty) //assert.Equal(t, testCase.expectedProto, string(astPretty)) + // Basic check for root + astRoot := astBuilder.GetRoot() + + assert.NotNil(t, astRoot.GetSrc()) + assert.NotNil(t, astRoot.GetTypeDescription()) + assert.NotNil(t, astRoot.GetComments()) + assert.GreaterOrEqual(t, astRoot.GetSourceUnitCount(), int32(0)) + // Zero is here for the first contract that's empty... - assert.GreaterOrEqual(t, astBuilder.GetRoot().EntrySourceUnit, int64(0)) + assert.GreaterOrEqual(t, astRoot.EntrySourceUnit, int64(0)) // We need to check that the entry source unit name is correct. - for _, sourceUnit := range astBuilder.GetRoot().GetSourceUnits() { - if astBuilder.GetRoot().EntrySourceUnit == sourceUnit.GetId() { + for _, sourceUnit := range astRoot.GetSourceUnits() { + if astRoot.GetEntrySourceUnit() == sourceUnit.GetId() { assert.Equal(t, sourceUnit.GetName(), testCase.sources.EntrySourceUnitName) } + + assert.True(t, astRoot.HasSourceUnits()) + assert.NotNil(t, astRoot.GetSourceUnitByName(sourceUnit.GetName())) + assert.NotNil(t, astRoot.GetSourceUnitById(sourceUnit.GetId())) + + assert.GreaterOrEqual(t, len(sourceUnit.GetImports()), 0) + assert.GreaterOrEqual(t, len(sourceUnit.GetPragmas()), 0) + assert.NotNil(t, sourceUnit.GetContract()) + assert.NotEmpty(t, sourceUnit.GetLicense()) + + // Recursive test against all nodes. A common place where we can add tests to check + // if the AST is correct. + recursiveTest(t, sourceUnit) } }) } } +func recursiveTest(t *testing.T, node Node[NodeType]) { + assert.NotNil(t, node.GetNodes(), fmt.Sprintf("Node %T has nil nodes", node)) + assert.GreaterOrEqual(t, node.GetId(), int64(0), fmt.Sprintf("Node %T has empty id", node)) + assert.NotNil(t, node.GetType(), fmt.Sprintf("Node %T has empty type", node)) + assert.NotNil(t, node.GetSrc(), fmt.Sprintf("Node %T has empty GetSrc()", node)) + assert.NotNil(t, node.GetTypeDescription(), fmt.Sprintf("Node %T has not defined GetTypeDescription()", node)) + + if contract, ok := node.(*Contract); ok { + assert.GreaterOrEqual(t, len(contract.GetBaseContracts()), 0) + assert.GreaterOrEqual(t, len(contract.GetStateVariables()), 0) + assert.GreaterOrEqual(t, len(contract.GetStructs()), 0) + assert.GreaterOrEqual(t, len(contract.GetEnums()), 0) + assert.GreaterOrEqual(t, len(contract.GetErrors()), 0) + assert.GreaterOrEqual(t, len(contract.GetEvents()), 0) + assert.GreaterOrEqual(t, len(contract.GetFunctions()), 0) + assert.GreaterOrEqual(t, len(contract.GetContractDependencies()), 0) + assert.GreaterOrEqual(t, len(contract.GetLinearizedBaseContracts()), 0) + assert.NotNil(t, contract.IsAbstract()) + assert.NotNil(t, contract.GetKind()) + assert.NotNil(t, contract.IsFullyImplemented()) + + if contract.GetConstructor() != nil { + assert.NotNil(t, contract.GetConstructor().GetSrc()) + } + + if contract.GetReceive() != nil { + assert.NotNil(t, contract.GetReceive().GetSrc()) + } + + if contract.GetFallback() != nil { + assert.NotNil(t, contract.GetFallback().GetSrc()) + } + + for _, base := range contract.GetBaseContracts() { + assert.GreaterOrEqual(t, base.GetId(), int64(0)) + assert.NotNil(t, base.GetType()) + assert.NotNil(t, base.GetSrc()) + } + + } + + if contract, ok := node.(*Library); ok { + assert.GreaterOrEqual(t, len(contract.GetBaseContracts()), 0) + assert.GreaterOrEqual(t, len(contract.GetStateVariables()), 0) + assert.GreaterOrEqual(t, len(contract.GetStructs()), 0) + assert.GreaterOrEqual(t, len(contract.GetEnums()), 0) + assert.GreaterOrEqual(t, len(contract.GetErrors()), 0) + assert.GreaterOrEqual(t, len(contract.GetEvents()), 0) + assert.GreaterOrEqual(t, len(contract.GetFunctions()), 0) + assert.GreaterOrEqual(t, len(contract.GetContractDependencies()), 0) + assert.GreaterOrEqual(t, len(contract.GetLinearizedBaseContracts()), 0) + + if contract.GetConstructor() != nil { + assert.NotNil(t, contract.GetConstructor().GetSrc()) + } + + if contract.GetReceive() != nil { + assert.NotNil(t, contract.GetReceive().GetSrc()) + } + + if contract.GetFallback() != nil { + assert.NotNil(t, contract.GetFallback().GetSrc()) + } + + for _, base := range contract.GetBaseContracts() { + assert.GreaterOrEqual(t, base.GetId(), int64(0)) + assert.NotNil(t, base.GetType()) + assert.NotNil(t, base.GetSrc()) + } + } + + if contract, ok := node.(*Interface); ok { + assert.GreaterOrEqual(t, len(contract.GetBaseContracts()), 0) + assert.GreaterOrEqual(t, len(contract.GetStateVariables()), 0) + assert.GreaterOrEqual(t, len(contract.GetStructs()), 0) + assert.GreaterOrEqual(t, len(contract.GetEnums()), 0) + assert.GreaterOrEqual(t, len(contract.GetErrors()), 0) + assert.GreaterOrEqual(t, len(contract.GetEvents()), 0) + assert.GreaterOrEqual(t, len(contract.GetFunctions()), 0) + assert.GreaterOrEqual(t, len(contract.GetContractDependencies()), 0) + assert.GreaterOrEqual(t, len(contract.GetLinearizedBaseContracts()), 0) + + if contract.GetConstructor() != nil { + assert.NotNil(t, contract.GetConstructor().GetSrc()) + } + + if contract.GetReceive() != nil { + assert.NotNil(t, contract.GetReceive().GetSrc()) + } + + if contract.GetFallback() != nil { + assert.NotNil(t, contract.GetFallback().GetSrc()) + } + + for _, base := range contract.GetBaseContracts() { + assert.GreaterOrEqual(t, base.GetId(), int64(0)) + assert.NotNil(t, base.GetType()) + assert.NotNil(t, base.GetSrc()) + } + } + + if while, ok := node.(*WhileStatement); ok { + assert.NotNil(t, while.GetCondition()) + assert.NotNil(t, while.GetBody()) + } + + if variable, ok := node.(*StateVariableDeclaration); ok { + assert.GreaterOrEqual(t, variable.GetReferencedDeclaration(), int64(0)) + } + + if variable, ok := node.(*VariableDeclaration); ok { + assert.GreaterOrEqual(t, len(variable.GetAssignments()), 0) + } + + if using, ok := node.(*UsingDirective); ok { + if using.GetPathNode() != nil { + assert.NotEmpty(t, using.GetPathNode().Name) + } + assert.GreaterOrEqual(t, using.GetReferencedDeclaration(), int64(0)) + assert.NotNil(t, using.GetLibraryName()) + } + + if typeName, ok := node.(*TypeName); ok { + assert.GreaterOrEqual(t, typeName.GetReferencedDeclaration(), int64(0)) + assert.NotNil(t, typeName.GetStateMutability()) + assert.NotNil(t, typeName.GetTypeDescription().GetIdentifier()) + assert.NotNil(t, typeName.GetTypeDescription().GetString()) + } + + if try, ok := node.(*TryStatement); ok { + assert.NotNil(t, try.GetImplemented()) + } + + if strct, ok := node.(*StructDefinition); ok { + assert.NotEmpty(t, strct.GetSourceUnitName()) + } + + if revert, ok := node.(*RevertStatement); ok { + assert.GreaterOrEqual(t, len(revert.GetArguments()), 0) + if revert.GetExpression() != nil { + assert.NotNil(t, revert.GetExpression().GetSrc()) + } + } + + if enum, ok := node.(*EnumDefinition); ok { + assert.NotEmpty(t, enum.GetSourceUnitName()) + } + + if errNode, ok := node.(*ErrorDefinition); ok { + assert.NotEmpty(t, errNode.GetSourceUnitName()) + } + + for _, childNode := range node.GetNodes() { + recursiveTest(t, childNode) + } +} + func buildFullPath(relativePath string) string { absPath, _ := filepath.Abs(relativePath) return absPath } + +func TestAstReferenceSetDescriptor(t *testing.T) { + config := zap.NewDevelopmentConfig() + config.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder + logger, err := config.Build() + assert.NoError(t, err) + + // Replace the global logger. + zap.ReplaceGlobals(logger) + + // All of the defined test cases can be discovered in sources_test.go file + testCases := getSourceTestCases(t) + + for _, testCase := range testCases { + t.Run(testCase.name, func(t *testing.T) { + parser, err := solgo.NewParserFromSources(context.TODO(), testCase.sources) + assert.NoError(t, err) + assert.NotNil(t, parser) + + astBuilder := NewAstBuilder( + // We need to provide parser to the ast builder so that it can + // access comments and other information from the parser. + parser.GetParser(), + + // We need to provide sources to the ast builder so that it can + // access the source code of the contracts. + parser.GetSources(), + ) + + err = parser.RegisterListener(solgo.ListenerAst, astBuilder) + assert.NoError(t, err) + + syntaxErrs := parser.Parse() + assert.Empty(t, syntaxErrs) + + assert.NotNil(t, astBuilder.GetParser()) + assert.NotNil(t, astBuilder.GetTree()) + + // This step is actually quite important as it resolves all the + // references in the AST. Without this step, the AST will be + // incomplete. + errs := astBuilder.ResolveReferences() + var errsExpected []error + assert.Equal(t, errsExpected, errs) + assert.Equal(t, int(testCase.unresolvedReferences), astBuilder.GetResolver().GetUnprocessedCount()) + + astBuilder.GetRoot().SetReferenceDescriptor(0, nil) + astBuilder.GetRoot().SetReferenceDescriptor(0, &TypeDescription{}) + + // We need to check that the entry source unit name is correct. + for _, sourceUnit := range astBuilder.GetRoot().GetSourceUnits() { + recursiveReferenceDescriptorSetTest(t, sourceUnit) + } + + }) + } +} + +// recursiveReferenceDescriptorSetTest is a recursive test that checks if all the reference descriptors +// functions exist and won't return any panics of some sort... It's just basic test. +func recursiveReferenceDescriptorSetTest(t *testing.T, node Node[NodeType]) { + node.SetReferenceDescriptor(0, nil) + node.SetReferenceDescriptor(0, &TypeDescription{}) + + for _, childNode := range node.GetNodes() { + childNode.SetReferenceDescriptor(0, nil) + childNode.SetReferenceDescriptor(0, &TypeDescription{}) + recursiveReferenceDescriptorSetTest(t, childNode) + } +} diff --git a/ast/catch.go b/ast/catch.go index a47ff097..d87e9437 100644 --- a/ast/catch.go +++ b/ast/catch.go @@ -78,7 +78,10 @@ func (t *CatchStatement) GetParameters() *ParameterList { // GetTypeDescription returns the type description of the 'catch' clause, which is nil as 'catch' clauses do not have a type description. func (t *CatchStatement) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "catch", + TypeIdentifier: "$_t_catch", + } } // GetNodes returns the statements in the body of the 'catch' clause. diff --git a/ast/comments.go b/ast/comments.go index d3217851..53945e22 100644 --- a/ast/comments.go +++ b/ast/comments.go @@ -8,46 +8,48 @@ import ( "github.com/txpull/solgo/parser" ) +// Comment represents a comment in an abstract syntax tree. type Comment struct { - // Id is the unique identifier of the comment node. - Id int64 `json:"id"` - // Src is the source node locations of the comment node. - Src SrcNode `json:"src"` - // NodeType is the type of the AST node. + Id int64 `json:"id"` + Src SrcNode `json:"src"` NodeType ast_pb.NodeType `json:"node_type"` - // Value is the value of the comment node. - Text string `json:"text"` + Text string `json:"text"` } +// GetId returns the ID of the Comment. func (c *Comment) GetId() int64 { return c.Id } +// GetType returns the NodeType of the Comment. func (c *Comment) GetType() ast_pb.NodeType { return c.NodeType } +// GetSrc returns the source information of the Comment. func (c *Comment) GetSrc() SrcNode { return c.Src } +// GetText returns the text value of the Comment. func (c *Comment) GetText() string { return c.Text } +// ToProto converts the Comment to its corresponding protocol buffer representation. func (c *Comment) ToProto() *ast_pb.Comment { return &ast_pb.Comment{ - Id: c.Id, - NodeType: c.NodeType, - Src: c.Src.ToProto(), - Text: c.Text, + Id: c.GetId(), + NodeType: c.GetType(), + Src: c.GetSrc().ToProto(), + Text: c.GetText(), } } // EnterEveryRule is called when the parser enters any rule in the grammar. -// It is used to search for license and any comments that code has. -// ANTLR parser by default have comments disabled to be parsed as tokens, so we need to -// search for them manually using the CommonTokenStream. +// It is used to search for licenses and comments in the code. +// ANTLR parser, by default, has comments disabled to be parsed as tokens. +// Therefore, we manually search for them using the CommonTokenStream. func (b *ASTBuilder) EnterEveryRule(ctx antlr.ParserRuleContext) { if !b.commentsParsed { stream := b.parser.GetTokenStream().(*antlr.CommonTokenStream) diff --git a/ast/conditional.go b/ast/conditional.go new file mode 100644 index 00000000..1b6b9092 --- /dev/null +++ b/ast/conditional.go @@ -0,0 +1,141 @@ +package ast + +import ( + v3 "github.com/cncf/xds/go/xds/type/v3" + ast_pb "github.com/txpull/protos/dist/go/ast" + "github.com/txpull/solgo/parser" +) + +// Conditional represents a conditional expression in an abstract syntax tree. +type Conditional struct { + *ASTBuilder + + Id int64 `json:"id"` + NodeType ast_pb.NodeType `json:"node_type"` + Src SrcNode `json:"src"` + Expressions []Node[NodeType] `json:"expressions"` + TypeDescriptions []*TypeDescription `json:"type_descriptions"` + TypeDescription *TypeDescription `json:"type_description"` +} + +// NewConditionalExpression creates a new Conditional instance. +func NewConditionalExpression(b *ASTBuilder) *Conditional { + return &Conditional{ + ASTBuilder: b, + Id: b.GetNextID(), + NodeType: ast_pb.NodeType_CONDITIONAL_EXPRESSION, + TypeDescriptions: make([]*TypeDescription, 0), + } +} + +// SetReferenceDescriptor sets the reference descriptions of the Conditional node. +// This function always returns false for now. +func (b *Conditional) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { + return false +} + +// GetId returns the ID of the Conditional. +func (f *Conditional) GetId() int64 { + return f.Id +} + +// GetType returns the NodeType of the Conditional. +func (f *Conditional) GetType() ast_pb.NodeType { + return f.NodeType +} + +// GetSrc returns the source information of the Conditional. +func (f *Conditional) GetSrc() SrcNode { + return f.Src +} + +// GetTypeDescription returns the type description associated with the Conditional. +func (f *Conditional) GetTypeDescription() *TypeDescription { + return f.TypeDescriptions[0] +} + +// GetNodes returns the child nodes of the Conditional. +func (f *Conditional) GetNodes() []Node[NodeType] { + toReturn := []Node[NodeType]{} + toReturn = append(toReturn, f.Expressions...) + return toReturn +} + +// GetExpressions returns the right expressions within the Conditional. +func (f *Conditional) GetExpressions() []Node[NodeType] { + return f.Expressions +} + +// ToProto converts the Conditional to its corresponding protocol buffer representation. +func (f *Conditional) ToProto() NodeType { + proto := ast_pb.Conditional{ + Id: f.GetId(), + NodeType: f.GetType(), + Src: f.GetSrc().ToProto(), + Expressions: make([]*v3.TypedStruct, 0), + TypeDescriptions: make([]*ast_pb.TypeDescription, 0), + } + + for _, exp := range f.GetExpressions() { + proto.Expressions = append(proto.Expressions, exp.ToProto().(*v3.TypedStruct)) + } + + for _, typeDesc := range f.TypeDescriptions { + proto.TypeDescriptions = append(proto.TypeDescriptions, typeDesc.ToProto()) + } + + return NewTypedStruct(nil, "Conditional") +} + +// Parse parses the Conditional node from the parsing context and associates it with other nodes. +func (f *Conditional) Parse( + unit *SourceUnit[Node[ast_pb.SourceUnit]], + contractNode Node[NodeType], + fnNode Node[NodeType], + bodyNode *BodyNode, + vDeclar *VariableDeclaration, + expNode Node[NodeType], + ctx *parser.ConditionalContext, +) Node[NodeType] { + f.Id = f.GetNextID() + f.Src = SrcNode{ + Id: f.GetNextID(), + Line: int64(ctx.GetStart().GetLine()), + Column: int64(ctx.GetStart().GetColumn()), + Start: int64(ctx.GetStart().GetStart()), + End: int64(ctx.GetStop().GetStop()), + Length: int64(ctx.GetStop().GetStop() - ctx.GetStart().GetStart() + 1), + ParentIndex: func() int64 { + if vDeclar != nil { + return vDeclar.GetId() + } + + if expNode != nil { + return expNode.GetId() + } + + if bodyNode != nil { + return bodyNode.GetId() + } + + if fnNode != nil { + return fnNode.GetId() + } + + return contractNode.GetId() + }(), + } + + expression := NewExpression(f.ASTBuilder) + + for _, expr := range ctx.AllExpression() { + parsedExp := expression.Parse(unit, contractNode, fnNode, bodyNode, vDeclar, f, expr) + f.Expressions = append( + f.Expressions, + parsedExp, + ) + f.TypeDescriptions = append(f.TypeDescriptions, parsedExp.GetTypeDescription()) + } + + return f +} diff --git a/ast/constructor.go b/ast/constructor.go index 8f946e21..9125bbd3 100644 --- a/ast/constructor.go +++ b/ast/constructor.go @@ -81,12 +81,24 @@ func (c *Constructor) GetType() ast_pb.NodeType { // GetNodes returns the statements in the body of the constructor. func (c *Constructor) GetNodes() []Node[NodeType] { - return c.Body.Statements + toReturn := []Node[NodeType]{} + toReturn = append(toReturn, c.Body.GetNodes()...) + toReturn = append(toReturn, c.GetParameters().GetNodes()...) + toReturn = append(toReturn, c.GetReturnParameters().GetNodes()...) + + for _, m := range c.GetModifiers() { + toReturn = append(toReturn, m.GetNodes()...) + } + + return toReturn } // GetTypeDescription returns the type description of the constructor, which is nil as constructors do not have a type description. func (c *Constructor) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "constructor", + TypeIdentifier: "$_t_constructor", + } } func (c *Constructor) GetModifiers() []*ModifierInvocation { diff --git a/ast/continue.go b/ast/continue.go index 471e796a..2914ab6f 100644 --- a/ast/continue.go +++ b/ast/continue.go @@ -5,6 +5,7 @@ import ( "github.com/txpull/solgo/parser" ) +// ContinueStatement represents a 'continue' statement in the abstract syntax tree. type ContinueStatement struct { *ASTBuilder @@ -13,6 +14,7 @@ type ContinueStatement struct { Src SrcNode `json:"src"` } +// NewContinueStatement creates a new instance of ContinueStatement. func NewContinueStatement(b *ASTBuilder) *ContinueStatement { return &ContinueStatement{ ASTBuilder: b, @@ -22,30 +24,40 @@ func NewContinueStatement(b *ASTBuilder) *ContinueStatement { } // SetReferenceDescriptor sets the reference descriptions of the ContinueStatement node. +// This function always returns false for now. func (b *ContinueStatement) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { return false } +// GetId returns the ID of the ContinueStatement. func (b *ContinueStatement) GetId() int64 { return b.Id } +// GetType returns the NodeType of the ContinueStatement. func (b *ContinueStatement) GetType() ast_pb.NodeType { return b.NodeType } +// GetSrc returns the source information of the ContinueStatement. func (b *ContinueStatement) GetSrc() SrcNode { return b.Src } +// GetTypeDescription returns the type description associated with the ContinueStatement. func (b *ContinueStatement) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "continue", + TypeIdentifier: "$_t_continue", + } } +// GetNodes returns an empty list of child nodes for the ContinueStatement. func (b *ContinueStatement) GetNodes() []Node[NodeType] { - return nil + return []Node[NodeType]{} } +// ToProto converts the ContinueStatement to its corresponding protocol buffer representation. func (b *ContinueStatement) ToProto() NodeType { proto := ast_pb.Continue{ Id: b.GetId(), @@ -56,6 +68,7 @@ func (b *ContinueStatement) ToProto() NodeType { return NewTypedStruct(&proto, "Continue") } +// Parse parses the ContinueStatement node from the parsing context and associates it with other nodes. func (b *ContinueStatement) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/continue_test.go b/ast/continue_test.go deleted file mode 100644 index 7a5f8945..00000000 --- a/ast/continue_test.go +++ /dev/null @@ -1,70 +0,0 @@ -package ast - -import ( - "testing" - - "github.com/stretchr/testify/assert" - ast_pb "github.com/txpull/protos/dist/go/ast" - "github.com/txpull/solgo" -) - -func TestContinueStatement(t *testing.T) { - // Initialize the ASTBuilder and ContinueStatement - b := NewAstBuilder(nil, &solgo.Sources{}) - cs := NewContinueStatement(b) - - // Define test cases - testCases := []struct { - name string - test func(t *testing.T) - }{ - { - name: "Test NewContinueStatement", - test: func(t *testing.T) { - assert.Equal(t, b.GetNextID(), cs.GetId()+1) - assert.Equal(t, ast_pb.NodeType_CONTINUE, cs.GetType()) - }, - }, - { - name: "Test GetId", - test: func(t *testing.T) { - assert.Equal(t, cs.Id, cs.GetId()) - }, - }, - { - name: "Test GetType", - test: func(t *testing.T) { - assert.Equal(t, cs.NodeType, cs.GetType()) - }, - }, - { - name: "Test GetSrc", - test: func(t *testing.T) { - assert.Equal(t, cs.Src, cs.GetSrc()) - }, - }, - { - name: "Test GetTypeDescription", - test: func(t *testing.T) { - assert.Nil(t, cs.GetTypeDescription()) - }, - }, - { - name: "Test GetNodes", - test: func(t *testing.T) { - assert.Nil(t, cs.GetNodes()) - }, - }, - { - name: "Test ToProto", - test: func(t *testing.T) { - //assert.Equal(t, ast_pb.Continue{}, cs.ToProto()) - }, - }, - } - - // Run test cases - for _, tc := range testCases { - t.Run(tc.name, tc.test) - } -} diff --git a/ast/contract.go b/ast/contract.go index 6a19a651..74631c2b 100644 --- a/ast/contract.go +++ b/ast/contract.go @@ -1,11 +1,14 @@ package ast import ( + "fmt" + v3 "github.com/cncf/xds/go/xds/type/v3" ast_pb "github.com/txpull/protos/dist/go/ast" "github.com/txpull/solgo/parser" ) +// Contract represents a Solidity contract in the abstract syntax tree. type Contract struct { *ASTBuilder @@ -22,6 +25,7 @@ type Contract struct { ContractDependencies []int64 `json:"contract_dependencies"` } +// NewContractDefinition creates a new instance of Contract. func NewContractDefinition(b *ASTBuilder) *Contract { return &Contract{ ASTBuilder: b, @@ -29,58 +33,75 @@ func NewContractDefinition(b *ASTBuilder) *Contract { } // SetReferenceDescriptor sets the reference descriptions of the Contract node. +// This function always returns false for now. func (c *Contract) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { return false } +// GetId returns the ID of the Contract. func (c *Contract) GetId() int64 { return c.Id } +// GetType returns the NodeType of the Contract. func (c *Contract) GetType() ast_pb.NodeType { return c.NodeType } +// GetSrc returns the source information of the Contract. func (c *Contract) GetSrc() SrcNode { return c.Src } +// GetName returns the name of the Contract. func (c *Contract) GetName() string { return c.Name } +// IsAbstract returns whether the Contract is abstract. func (c *Contract) IsAbstract() bool { return c.Abstract } +// GetKind returns the kind of the Contract. func (c *Contract) GetKind() ast_pb.NodeType { return c.Kind } +// IsFullyImplemented returns whether the Contract is fully implemented. func (c *Contract) IsFullyImplemented() bool { return c.FullyImplemented } +// GetNodes returns the child nodes of the Contract. func (c *Contract) GetNodes() []Node[NodeType] { return c.Nodes } +// GetLinearizedBaseContracts returns the linearized base contracts of the Contract. func (c *Contract) GetLinearizedBaseContracts() []int64 { return c.LinearizedBaseContracts } +// GetBaseContracts returns the base contracts of the Contract. func (c *Contract) GetBaseContracts() []*BaseContract { return c.BaseContracts } +// GetContractDependencies returns the contract dependencies of the Contract. func (c *Contract) GetContractDependencies() []int64 { return c.ContractDependencies } +// GetTypeDescription returns the type description associated with the Contract. func (c *Contract) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: fmt.Sprintf("contract %s", c.Name), + TypeIdentifier: fmt.Sprintf("$_t_contract_%s_%d", c.GetName(), c.GetId()), + } } +// GetStateVariables returns the state variables defined in the Contract. func (s *Contract) GetStateVariables() []*StateVariableDeclaration { toReturn := make([]*StateVariableDeclaration, 0) @@ -93,6 +114,7 @@ func (s *Contract) GetStateVariables() []*StateVariableDeclaration { return toReturn } +// GetStructs returns the struct definitions defined in the Contract. func (s *Contract) GetStructs() []*StructDefinition { toReturn := make([]*StructDefinition, 0) @@ -105,6 +127,7 @@ func (s *Contract) GetStructs() []*StructDefinition { return toReturn } +// GetEnums returns the enum definitions defined in the Contract. func (s *Contract) GetEnums() []*EnumDefinition { toReturn := make([]*EnumDefinition, 0) @@ -117,6 +140,7 @@ func (s *Contract) GetEnums() []*EnumDefinition { return toReturn } +// GetErrors returns the error definitions defined in the Contract. func (s *Contract) GetErrors() []*ErrorDefinition { toReturn := make([]*ErrorDefinition, 0) @@ -129,6 +153,7 @@ func (s *Contract) GetErrors() []*ErrorDefinition { return toReturn } +// GetEvents returns the event definitions defined in the Contract. func (s *Contract) GetEvents() []*EventDefinition { toReturn := make([]*EventDefinition, 0) @@ -141,6 +166,7 @@ func (s *Contract) GetEvents() []*EventDefinition { return toReturn } +// GetConstructor returns the constructor definition of the Contract. func (s *Contract) GetConstructor() *Constructor { for _, node := range s.GetNodes() { if constructor, ok := node.(*Constructor); ok { @@ -151,6 +177,7 @@ func (s *Contract) GetConstructor() *Constructor { return nil } +// GetFunctions returns the function definitions defined in the Contract. func (s *Contract) GetFunctions() []*Function { toReturn := make([]*Function, 0) @@ -163,6 +190,7 @@ func (s *Contract) GetFunctions() []*Function { return toReturn } +// GetFallback returns the fallback definition of the Contract. func (s *Contract) GetFallback() *Fallback { for _, node := range s.GetNodes() { if function, ok := node.(*Fallback); ok { @@ -173,6 +201,7 @@ func (s *Contract) GetFallback() *Fallback { return nil } +// GetReceive returns the receive definition of the Contract. func (s *Contract) GetReceive() *Receive { for _, node := range s.GetNodes() { if function, ok := node.(*Receive); ok { @@ -183,32 +212,34 @@ func (s *Contract) GetReceive() *Receive { return nil } +// ToProto converts the Contract to its corresponding protocol buffer representation. func (c *Contract) ToProto() NodeType { proto := ast_pb.Contract{ - Id: c.Id, - NodeType: c.NodeType, - Kind: c.Kind, - Src: c.Src.ToProto(), - Name: c.Name, - Abstract: c.Abstract, - FullyImplemented: c.FullyImplemented, - LinearizedBaseContracts: c.LinearizedBaseContracts, - ContractDependencies: c.ContractDependencies, + Id: c.GetId(), + NodeType: c.GetType(), + Kind: c.GetKind(), + Src: c.GetSrc().ToProto(), + Name: c.GetName(), + Abstract: c.IsAbstract(), + FullyImplemented: c.IsFullyImplemented(), + LinearizedBaseContracts: c.GetLinearizedBaseContracts(), + ContractDependencies: c.GetContractDependencies(), Nodes: make([]*v3.TypedStruct, 0), BaseContracts: make([]*ast_pb.BaseContract, 0), } - for _, baseContract := range c.BaseContracts { + for _, baseContract := range c.GetBaseContracts() { proto.BaseContracts = append(proto.BaseContracts, baseContract.ToProto()) } - for _, node := range c.Nodes { + for _, node := range c.GetNodes() { proto.Nodes = append(proto.Nodes, node.ToProto().(*v3.TypedStruct)) } return NewTypedStruct(&proto, "Contract") } +// Parse parses the Contract node from the parsing context and associates it with other nodes. func (c *Contract) Parse(unitCtx *parser.SourceUnitContext, ctx *parser.ContractDefinitionContext, rootNode *RootNode, unit *SourceUnit[Node[ast_pb.SourceUnit]]) { unit.Src = SrcNode{ Id: c.GetNextID(), diff --git a/ast/declaration.go b/ast/declaration.go index fb524540..65835a27 100644 --- a/ast/declaration.go +++ b/ast/declaration.go @@ -5,6 +5,7 @@ import ( "github.com/txpull/solgo/parser" ) +// Declaration is a struct that contains information about a variable declaration in the AST. type Declaration struct { *ASTBuilder @@ -21,6 +22,7 @@ type Declaration struct { Visibility ast_pb.Visibility `json:"visibility"` } +// NewDeclaration creates a new Declaration instance. func NewDeclaration(b *ASTBuilder) *Declaration { return &Declaration{ ASTBuilder: b, @@ -39,50 +41,62 @@ func (v *Declaration) SetReferenceDescriptor(refId int64, refDesc *TypeDescripti return false } +// GetId returns the ID of the Declaration. func (d *Declaration) GetId() int64 { return d.Id } +// GetType returns the NodeType of the Declaration. func (d *Declaration) GetType() ast_pb.NodeType { return d.NodeType } +// GetSrc returns the SrcNode of the Declaration. func (d *Declaration) GetSrc() SrcNode { return d.Src } +// GetName returns the name of the Declaration. func (d *Declaration) GetName() string { return d.Name } +// GetTypeName returns the TypeName of the Declaration. func (d *Declaration) GetTypeName() *TypeName { return d.TypeName } +// GetScope returns the scope of the Declaration. func (d *Declaration) GetScope() int64 { return d.Scope } +// GetStateMutability returns the state mutability of the Declaration. func (d *Declaration) GetStateMutability() ast_pb.Mutability { return d.StateMutability } +// GetVisibility returns the visibility of the Declaration. func (d *Declaration) GetVisibility() ast_pb.Visibility { return d.Visibility } +// GetStorageLocation returns the storage location of the Declaration. func (d *Declaration) GetStorageLocation() ast_pb.StorageLocation { return d.StorageLocation } +// GetIsConstant returns whether or not the Declaration is constant. func (d *Declaration) GetIsConstant() bool { return d.IsConstant } +// GetIsStateVariable returns whether or not the Declaration is a state variable. func (d *Declaration) GetIsStateVariable() bool { return d.IsStateVariable } +// GetTypeDescription returns the TypeDescription of the Declaration. func (d *Declaration) GetTypeDescription() *TypeDescription { if d.TypeName != nil { return d.TypeName.GetTypeDescription() @@ -90,6 +104,7 @@ func (d *Declaration) GetTypeDescription() *TypeDescription { return nil } +// GetNodes returns the nodes associated with the Declaration. func (d *Declaration) GetNodes() []Node[NodeType] { if d.TypeName != nil { return []Node[NodeType]{d.TypeName} @@ -98,18 +113,19 @@ func (d *Declaration) GetNodes() []Node[NodeType] { return nil } +// ToProto converts the Declaration to its corresponding protocol buffer representation. func (d *Declaration) ToProto() NodeType { toReturn := &ast_pb.Declaration{ - Id: d.Id, - Name: d.Name, - NodeType: d.NodeType, - Scope: d.Scope, - Src: d.Src.ToProto(), - Mutability: d.StateMutability, - StorageLocation: d.StorageLocation, - Visibility: d.Visibility, - IsConstant: d.IsConstant, - IsStateVariable: d.IsStateVariable, + Id: d.GetId(), + Name: d.GetName(), + NodeType: d.GetType(), + Scope: d.GetScope(), + Src: d.GetSrc().ToProto(), + Mutability: d.GetStateMutability(), + StorageLocation: d.GetStorageLocation(), + Visibility: d.GetVisibility(), + IsConstant: d.GetIsConstant(), + IsStateVariable: d.GetIsStateVariable(), TypeDescription: d.GetTypeDescription().ToProto(), } @@ -120,6 +136,7 @@ func (d *Declaration) ToProto() NodeType { return toReturn } +// ParseVariableDeclaration parses a VariableDeclaration and stores the relevant information in the Declaration. func (d *Declaration) ParseVariableDeclaration( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], @@ -152,4 +169,6 @@ func (d *Declaration) ParseVariableDeclaration( typeName := NewTypeName(d.ASTBuilder) typeName.Parse(unit, fnNode, d.GetId(), ctx.TypeName()) d.TypeName = typeName + + d.currentVariables = append(d.currentVariables, d) } diff --git a/ast/do.go b/ast/do.go index f13fc9c2..35245f8b 100644 --- a/ast/do.go +++ b/ast/do.go @@ -6,16 +6,18 @@ import ( "github.com/txpull/solgo/parser" ) +// DoWhileStatement represents a do-while loop statement node in the abstract syntax tree (AST). +// It encapsulates information about the condition and body of the loop. type DoWhileStatement struct { - *ASTBuilder - - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - Condition Node[NodeType] `json:"condition"` - Body *BodyNode `json:"body"` + *ASTBuilder // Embedded ASTBuilder for building the AST. + Id int64 `json:"id"` // Unique identifier for the DoWhileStatement node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the AST node. + Src SrcNode `json:"src"` // Source location information. + Condition Node[NodeType] `json:"condition"` // Condition expression for the do-while loop. + Body *BodyNode `json:"body"` // Body of the do-while loop. } +// NewDoWhileStatement creates a new DoWhileStatement node with default values and returns it. func NewDoWhileStatement(b *ASTBuilder) *DoWhileStatement { return &DoWhileStatement{ ASTBuilder: b, @@ -25,40 +27,52 @@ func NewDoWhileStatement(b *ASTBuilder) *DoWhileStatement { } // SetReferenceDescriptor sets the reference descriptions of the DoWhileStatement node. +// This function currently returns false, as no reference description updates are performed. func (d *DoWhileStatement) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { return false } +// GetId returns the unique identifier of the DoWhileStatement node. func (d *DoWhileStatement) GetId() int64 { return d.Id } +// GetType returns the type of the AST node, which is NodeType_DO_WHILE_STATEMENT for a do-while loop. func (d *DoWhileStatement) GetType() ast_pb.NodeType { return d.NodeType } +// GetSrc returns the source location information of the DoWhileStatement node. func (d *DoWhileStatement) GetSrc() SrcNode { return d.Src } +// GetCondition returns the condition expression of the do-while loop. func (d *DoWhileStatement) GetCondition() Node[NodeType] { return d.Condition } +// GetBody returns the body of the do-while loop. func (d *DoWhileStatement) GetBody() *BodyNode { return d.Body } +// GetNodes returns a slice of child nodes within the do-while loop. func (d *DoWhileStatement) GetNodes() []Node[NodeType] { toReturn := []Node[NodeType]{d.Condition} toReturn = append(toReturn, d.Body.GetNodes()...) return toReturn } +// GetTypeDescription returns the type description associated with the DoWhileStatement node. func (d *DoWhileStatement) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "dowhile", + TypeIdentifier: "$_t_do_while", + } } +// ToProto converts the DoWhileStatement node to its corresponding protocol buffer representation. func (d *DoWhileStatement) ToProto() NodeType { protos := ast_pb.Do{ Id: d.GetId(), @@ -71,6 +85,7 @@ func (d *DoWhileStatement) ToProto() NodeType { return NewTypedStruct(&protos, "Do") } +// Parse is responsible for parsing the do-while loop statement from the context and populating the DoWhileStatement node. func (d *DoWhileStatement) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/emit.go b/ast/emit.go index 3a86f959..bbfa0de8 100644 --- a/ast/emit.go +++ b/ast/emit.go @@ -6,16 +6,18 @@ import ( "github.com/txpull/solgo/parser" ) +// Emit represents an emit statement node in the abstract syntax tree. type Emit struct { *ASTBuilder - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - Arguments []Node[NodeType] `json:"arguments"` - Expression Node[NodeType] `json:"expression"` + Id int64 `json:"id"` // Unique identifier of the emit statement node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node. + Src SrcNode `json:"src"` // Source location information. + Arguments []Node[NodeType] `json:"arguments"` // List of arguments for the emit statement. + Expression Node[NodeType] `json:"expression"` // Expression node associated with the emit statement. } +// NewEmitStatement creates a new instance of Emit with the provided ASTBuilder. func NewEmitStatement(b *ASTBuilder) *Emit { return &Emit{ ASTBuilder: b, @@ -25,35 +27,45 @@ func NewEmitStatement(b *ASTBuilder) *Emit { } } -// SetReferenceDescriptor sets the reference descriptions of the Emit node. +// SetReferenceDescriptor sets the reference descriptors of the Emit node. func (e *Emit) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { return false } +// GetId returns the unique identifier of the emit statement node. func (e *Emit) GetId() int64 { return e.Id } +// GetType returns the type of the node. func (e *Emit) GetType() ast_pb.NodeType { return e.NodeType } +// GetSrc returns the source location information of the emit statement node. func (e *Emit) GetSrc() SrcNode { return e.Src } +// GetArguments returns the list of arguments associated with the emit statement. func (e *Emit) GetArguments() []Node[NodeType] { return e.Arguments } +// GetExpression returns the expression node associated with the emit statement. func (e *Emit) GetExpression() Node[NodeType] { return e.Expression } +// GetTypeDescription returns the type description of the emit statement. func (e *Emit) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "emit", + TypeIdentifier: "$_t_emit", + } } +// GetNodes returns a list of nodes associated with the emit statement (arguments and expression). func (e *Emit) GetNodes() []Node[NodeType] { toReturn := make([]Node[NodeType], 0) toReturn = append(toReturn, e.Arguments...) @@ -61,6 +73,7 @@ func (e *Emit) GetNodes() []Node[NodeType] { return toReturn } +// ToProto converts the Emit node to its corresponding protobuf representation. func (e *Emit) ToProto() NodeType { proto := ast_pb.Emit{ Id: e.GetId(), @@ -77,6 +90,7 @@ func (e *Emit) ToProto() NodeType { return NewTypedStruct(&proto, "Emit") } +// Parse parses the emit statement context and populates the Emit fields. func (e *Emit) Parse(unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], fnNode Node[NodeType], diff --git a/ast/enum.go b/ast/enum.go index 586ef68b..176ec13f 100644 --- a/ast/enum.go +++ b/ast/enum.go @@ -7,18 +7,20 @@ import ( "github.com/txpull/solgo/parser" ) +// EnumDefinition represents an enumeration definition in the Solidity abstract syntax tree (AST). type EnumDefinition struct { - *ASTBuilder + *ASTBuilder // Embedding the ASTBuilder for common functionality SourceUnitName string `json:"-"` - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - Name string `json:"name"` - CanonicalName string `json:"canonical_name"` - TypeDescription *TypeDescription `json:"type_description"` - Members []Node[NodeType] `json:"members"` + Id int64 `json:"id"` // Unique identifier for the enumeration definition + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node (ENUM_DEFINITION for enumeration definition) + Src SrcNode `json:"src"` // Source information about the enumeration definition + Name string `json:"name"` // Name of the enumeration + CanonicalName string `json:"canonical_name"` // Canonical name of the enumeration + TypeDescription *TypeDescription `json:"type_description"` // Type description of the enumeration + Members []Node[NodeType] `json:"members"` // Members of the enumeration } +// NewEnumDefinition creates a new EnumDefinition instance. func NewEnumDefinition(b *ASTBuilder) *EnumDefinition { return &EnumDefinition{ ASTBuilder: b, @@ -33,30 +35,37 @@ func (e *EnumDefinition) SetReferenceDescriptor(refId int64, refDesc *TypeDescri return false } +// GetId returns the unique identifier of the enumeration definition. func (e *EnumDefinition) GetId() int64 { return e.Id } +// GetType returns the type of the node, which is 'ENUM_DEFINITION' for an enumeration definition. func (e *EnumDefinition) GetType() ast_pb.NodeType { return e.NodeType } +// GetSrc returns the source information about the enumeration definition. func (e *EnumDefinition) GetSrc() SrcNode { return e.Src } +// GetName returns the name of the enumeration. func (e *EnumDefinition) GetName() string { return e.Name } +// GetTypeDescription returns the type description of the enumeration. func (e *EnumDefinition) GetTypeDescription() *TypeDescription { return e.TypeDescription } +// GetCanonicalName returns the canonical name of the enumeration. func (e *EnumDefinition) GetCanonicalName() string { return e.CanonicalName } +// GetMembers returns the members of the enumeration. func (e *EnumDefinition) GetMembers() []*Parameter { toReturn := make([]*Parameter, 0) @@ -67,10 +76,12 @@ func (e *EnumDefinition) GetMembers() []*Parameter { return toReturn } +// GetSourceUnitName returns the name of the source unit containing the enumeration. func (e *EnumDefinition) GetSourceUnitName() string { return e.SourceUnitName } +// ToProto returns the protobuf representation of the enumeration definition. func (e *EnumDefinition) ToProto() NodeType { proto := ast_pb.Enum{ Id: e.GetId(), @@ -92,10 +103,12 @@ func (e *EnumDefinition) ToProto() NodeType { return NewTypedStruct(&proto, "Enum") } +// GetNodes returns the members of the enumeration. func (e *EnumDefinition) GetNodes() []Node[NodeType] { return e.Members } +// Parse parses an enumeration definition from the provided parser.EnumDefinitionContext and updates the current instance. func (e *EnumDefinition) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/error.go b/ast/error.go index 2099be88..2ca50fff 100644 --- a/ast/error.go +++ b/ast/error.go @@ -7,17 +7,19 @@ import ( "github.com/txpull/solgo/parser" ) +// ErrorDefinition represents an error definition node in the abstract syntax tree. type ErrorDefinition struct { *ASTBuilder - SourceUnitName string `json:"-"` - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - Name string `json:"name"` - Parameters *ParameterList `json:"parameters"` - TypeDescription *TypeDescription `json:"type_description"` + SourceUnitName string `json:"-"` // Source unit name. + Id int64 `json:"id"` // Unique identifier of the error definition node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node. + Src SrcNode `json:"src"` // Source location information. + Name string `json:"name"` // Name of the error definition. + Parameters *ParameterList `json:"parameters"` // List of error parameters. + TypeDescription *TypeDescription `json:"type_description"` // Type description of the error definition. } +// NewErrorDefinition creates a new instance of ErrorDefinition with the provided ASTBuilder. func NewErrorDefinition(b *ASTBuilder) *ErrorDefinition { return &ErrorDefinition{ ASTBuilder: b, @@ -26,44 +28,52 @@ func NewErrorDefinition(b *ASTBuilder) *ErrorDefinition { } } -// SetReferenceDescriptor sets the reference descriptions of the ErrorDefinition node. -// We don't need to do any reference description updates here, at least for now... +// SetReferenceDescriptor sets the reference descriptors of the ErrorDefinition node. func (e *ErrorDefinition) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { return false } +// GetId returns the unique identifier of the error definition node. func (e *ErrorDefinition) GetId() int64 { return e.Id } +// GetType returns the type of the node. func (e *ErrorDefinition) GetType() ast_pb.NodeType { return e.NodeType } +// GetSrc returns the source location information of the error definition node. func (e *ErrorDefinition) GetSrc() SrcNode { return e.Src } +// GetName returns the name of the error definition. func (e *ErrorDefinition) GetName() string { return e.Name } +// GetTypeDescription returns the type description of the error definition. func (e *ErrorDefinition) GetTypeDescription() *TypeDescription { return e.TypeDescription } +// GetParameters returns the list of error parameters. func (e *ErrorDefinition) GetParameters() *ParameterList { return e.Parameters } +// GetSourceUnitName returns the source unit name associated with the error definition. func (e *ErrorDefinition) GetSourceUnitName() string { return e.SourceUnitName } +// GetNodes returns an empty slice of nodes associated with the error definition. func (e *ErrorDefinition) GetNodes() []Node[NodeType] { - return nil + return []Node[NodeType]{} } +// ToProto converts the ErrorDefinition node to its corresponding protobuf representation. func (e *ErrorDefinition) ToProto() NodeType { proto := ast_pb.Error{ Id: e.GetId(), @@ -77,6 +87,7 @@ func (e *ErrorDefinition) ToProto() NodeType { return NewTypedStruct(&proto, "Error") } +// Parse parses the error definition context and populates the ErrorDefinition fields. func (e *ErrorDefinition) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/event.go b/ast/event.go index 361d7cd0..1ae2d4a4 100644 --- a/ast/event.go +++ b/ast/event.go @@ -7,17 +7,19 @@ import ( "github.com/txpull/solgo/parser" ) +// EventDefinition represents an event definition in the Solidity abstract syntax tree (AST). type EventDefinition struct { - *ASTBuilder + *ASTBuilder // Embedding the ASTBuilder for common functionality SourceUnitName string `json:"-"` - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - Parameters *ParameterList `json:"parameters"` - Name string `json:"name"` - Anonymous bool `json:"anonymous"` + Id int64 `json:"id"` // Unique identifier for the event definition + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node (EVENT_DEFINITION for event definition) + Src SrcNode `json:"src"` // Source information about the event definition + Parameters *ParameterList `json:"parameters"` // Parameters of the event + Name string `json:"name"` // Name of the event + Anonymous bool `json:"anonymous"` // Indicates if the event is anonymous } +// NewEventDefinition creates a new EventDefinition instance. func NewEventDefinition(b *ASTBuilder) *EventDefinition { return &EventDefinition{ ASTBuilder: b, @@ -32,26 +34,32 @@ func (e *EventDefinition) SetReferenceDescriptor(refId int64, refDesc *TypeDescr return false } +// GetId returns the unique identifier of the event definition. func (e *EventDefinition) GetId() int64 { return e.Id } +// GetType returns the type of the node, which is 'EVENT_DEFINITION' for an event definition. func (e *EventDefinition) GetType() ast_pb.NodeType { return e.NodeType } +// GetSrc returns the source information about the event definition. func (e *EventDefinition) GetSrc() SrcNode { return e.Src } +// GetName returns the name of the event. func (e *EventDefinition) GetName() string { return e.Name } +// IsAnonymous returns whether the event is anonymous. func (e *EventDefinition) IsAnonymous() bool { return e.Anonymous } +// GetTypeDescription returns the type description of the event. func (e *EventDefinition) GetTypeDescription() *TypeDescription { return &TypeDescription{ TypeIdentifier: fmt.Sprintf( @@ -63,14 +71,17 @@ func (e *EventDefinition) GetTypeDescription() *TypeDescription { } } +// GetParameters returns the parameters of the event. func (e *EventDefinition) GetParameters() *ParameterList { return e.Parameters } +// GetNodes returns the nodes representing the parameters of the event. func (e *EventDefinition) GetNodes() []Node[NodeType] { return e.Parameters.GetNodes() } +// ToProto returns the protobuf representation of the event definition. func (e *EventDefinition) ToProto() NodeType { proto := ast_pb.Event{ Id: e.GetId(), @@ -85,6 +96,7 @@ func (e *EventDefinition) ToProto() NodeType { return NewTypedStruct(&proto, "Event") } +// Parse parses an event definition from the provided parser.EventDefinitionContext and updates the current instance. func (e *EventDefinition) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/expr_operation.go b/ast/expr_operation.go index 8511d836..5e7cc929 100644 --- a/ast/expr_operation.go +++ b/ast/expr_operation.go @@ -6,17 +6,19 @@ import ( "github.com/txpull/solgo/parser" ) +// ExprOperation represents an expression operation in the Solidity abstract syntax tree (AST). type ExprOperation struct { *ASTBuilder - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - LeftExpression Node[NodeType] `json:"left_expression"` - RightExpression Node[NodeType] `json:"right_expression"` - TypeDescriptions []*TypeDescription `json:"type_descriptions"` + Id int64 `json:"id"` // Unique identifier for the expression operation + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node (EXPRESSION_OPERATION for expression operation) + Src SrcNode `json:"src"` // Source information about the expression operation + LeftExpression Node[NodeType] `json:"left_expression"` // Left expression in the operation + RightExpression Node[NodeType] `json:"right_expression"` // Right expression in the operation + TypeDescriptions []*TypeDescription `json:"type_descriptions"` // Type descriptions of the expressions } +// NewExprOperationExpression creates a new ExprOperation instance. func NewExprOperationExpression(b *ASTBuilder) *ExprOperation { return &ExprOperation{ ASTBuilder: b, @@ -31,34 +33,42 @@ func (b *ExprOperation) SetReferenceDescriptor(refId int64, refDesc *TypeDescrip return false } +// GetId returns the unique identifier of the expression operation. func (f *ExprOperation) GetId() int64 { return f.Id } +// GetType returns the type of the node, which is 'EXPRESSION_OPERATION' for an expression operation. func (f *ExprOperation) GetType() ast_pb.NodeType { return f.NodeType } +// GetSrc returns the source information about the expression operation. func (f *ExprOperation) GetSrc() SrcNode { return f.Src } +// GetTypeDescription returns the type description of the expression operation. func (f *ExprOperation) GetTypeDescription() *TypeDescription { return f.TypeDescriptions[0] } +// GetNodes returns the nodes representing the left and right expressions of the operation. func (f *ExprOperation) GetNodes() []Node[NodeType] { return []Node[NodeType]{f.LeftExpression, f.RightExpression} } +// GetLeftExpression returns the left expression in the operation. func (f *ExprOperation) GetLeftExpression() Node[NodeType] { return f.LeftExpression } +// GetRightExpression returns the right expression in the operation. func (f *ExprOperation) GetRightExpression() Node[NodeType] { return f.RightExpression } +// ToProto returns the protobuf representation of the expression operation. func (f *ExprOperation) ToProto() NodeType { proto := ast_pb.ExprOperation{ Id: f.GetId(), @@ -72,6 +82,7 @@ func (f *ExprOperation) ToProto() NodeType { return NewTypedStruct(&proto, "ExprOperation") } +// Parse parses an expression operation from the provided parser.ExpOperationContext and updates the current instance. func (f *ExprOperation) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/expression.go b/ast/expression.go index 1359948b..42c1820d 100644 --- a/ast/expression.go +++ b/ast/expression.go @@ -5,18 +5,39 @@ import ( ast_pb "github.com/txpull/protos/dist/go/ast" "github.com/txpull/solgo/parser" + "go.uber.org/zap" ) +// Expression represents an AST node for an expression in Solidity. type Expression struct { *ASTBuilder } +// NewExpression creates a new Expression instance with the provided ASTBuilder. +// The ASTBuilder is used to facilitate the construction of the AST. func NewExpression(b *ASTBuilder) *Expression { return &Expression{ ASTBuilder: b, } } +// Parse analyzes the provided parser.IExpressionContext and constructs the +// corresponding AST node. It supports various types of expressions in Solidity +// such as binary operations, assignments, function calls, member accesses, etc. +// If the expression type is not supported, a warning is logged. +// +// Parameters: +// - unit: The source unit node. +// - contractNode: The contract node within the source. +// - fnNode: The function node within the contract. +// - bodyNode: The body node of the function. +// - vDecar: The variable declaration node. +// - exprNode: The expression node. +// - ctx: The context representing the expression to be parsed. +// +// Returns: +// - Node[NodeType]: The constructed AST node for the parsed expression. If the +// expression type is not supported, it returns nil. func (e *Expression) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], @@ -84,12 +105,18 @@ func (e *Expression) Parse( case *parser.ExpOperationContext: expOperation := NewExprOperationExpression(e.ASTBuilder) return expOperation.Parse(unit, contractNode, fnNode, bodyNode, vDecar, exprNode, ctxType) + case *parser.ConditionalContext: + conditional := NewConditionalExpression(e.ASTBuilder) + return conditional.Parse(unit, contractNode, fnNode, bodyNode, vDecar, exprNode, ctxType) + case *parser.AndOperationContext: + andOperation := NewAndOperationExpression(e.ASTBuilder) + return andOperation.Parse(unit, contractNode, fnNode, bodyNode, vDecar, exprNode, ctxType) default: - panic( - fmt.Sprintf( - "Expression type not supported @ Expression.Parse: %T", - ctx, - ), + zap.L().Warn( + "Expression type not supported @ Expression.Parse", + zap.String("type", fmt.Sprintf("%T", ctx)), ) } + + return nil } diff --git a/ast/expression_statement.go b/ast/expression_statement.go index 05e78df8..be80b955 100644 --- a/ast/expression_statement.go +++ b/ast/expression_statement.go @@ -6,8 +6,10 @@ import ( "github.com/antlr4-go/antlr/v4" ast_pb "github.com/txpull/protos/dist/go/ast" "github.com/txpull/solgo/parser" + "go.uber.org/zap" ) +// parseExpressionStatement is a utility function to parse an expression statement based on the provided context and parent node. func parseExpressionStatement( b *ASTBuilder, unit *SourceUnit[Node[ast_pb.SourceUnit]], @@ -40,16 +42,14 @@ func parseExpressionStatement( binaryExp := NewBinaryOperationExpression(b) return binaryExp.ParseOrderComparison(unit, contractNode, fnNode, bodyNode, nil, parentNode, childCtx) case *antlr.TerminalNodeImpl: - // @TODO: Not sure what to do with this... It's usually just a semicolon. Perhaps to + // @TODO: Not sure what to do with this... It's usually just a semicolon (;). Perhaps to // add to each expression statement semicolon_found? // Not important right now at all... continue default: - panic( - fmt.Sprintf( - "Expression statement child not recognized @ ExpressionStatement.Parse: %T", - childCtx, - ), + zap.L().Warn( + "Expression statement child not recognized @ ExpressionStatement.Parse", + zap.String("child_type", fmt.Sprintf("%T", childCtx)), ) } } diff --git a/ast/fallback.go b/ast/fallback.go index 274bca68..260d1d03 100644 --- a/ast/fallback.go +++ b/ast/fallback.go @@ -1,28 +1,32 @@ +// Package ast defines data structures and methods for abstract syntax tree nodes used in a specific programming language. +// The package contains definitions for various AST nodes that represent different elements of the programming language's syntax. package ast import ( - ast_pb "github.com/txpull/protos/dist/go/ast" - "github.com/txpull/solgo/parser" + ast_pb "github.com/txpull/protos/dist/go/ast" // Import for AST protocol buffer definitions. + "github.com/txpull/solgo/parser" // Import for the solgo parser. ) +// Fallback represents a fallback function definition node in the abstract syntax tree (AST). +// It encapsulates information about the characteristics and properties of a fallback function within a contract. type Fallback struct { - *ASTBuilder - - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Kind ast_pb.NodeType `json:"kind"` - Src SrcNode `json:"src"` - Implemented bool `json:"implemented"` - Visibility ast_pb.Visibility `json:"visibility"` - StateMutability ast_pb.Mutability `json:"state_mutability"` - Modifiers []*ModifierInvocation `json:"modifiers"` - Overrides []*OverrideSpecifier `json:"overrides"` - Parameters *ParameterList `json:"parameters"` - ReturnParameters *ParameterList `json:"return_parameters"` - Body *BodyNode `json:"body"` - Virtual bool `json:"virtual"` + *ASTBuilder // Embedded ASTBuilder for building the AST. + Id int64 `json:"id"` // Unique identifier for the Fallback node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the AST node. + Kind ast_pb.NodeType `json:"kind"` // Kind of the fallback function. + Src SrcNode `json:"src"` // Source location information. + Implemented bool `json:"implemented"` // Indicates whether the function is implemented. + Visibility ast_pb.Visibility `json:"visibility"` // Visibility of the fallback function. + StateMutability ast_pb.Mutability `json:"state_mutability"` // State mutability of the fallback function. + Modifiers []*ModifierInvocation `json:"modifiers"` // List of modifier invocations applied to the fallback function. + Overrides []*OverrideSpecifier `json:"overrides"` // List of override specifiers for the fallback function. + Parameters *ParameterList `json:"parameters"` // List of parameters for the fallback function. + ReturnParameters *ParameterList `json:"return_parameters"` // List of return parameters for the fallback function. + Body *BodyNode `json:"body"` // Body of the fallback function. + Virtual bool `json:"virtual"` // Indicates whether the function is virtual. } +// NewFallbackDefinition creates a new Fallback node with default values and returns it. func NewFallbackDefinition(b *ASTBuilder) *Fallback { return &Fallback{ ASTBuilder: b, @@ -36,71 +40,90 @@ func NewFallbackDefinition(b *ASTBuilder) *Fallback { } // SetReferenceDescriptor sets the reference descriptions of the Fallback node. -// We don't need to do any reference description updates here, at least for now... +// This function currently returns false, as no reference description updates are performed. func (f *Fallback) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { return false } +// GetId returns the unique identifier of the Fallback node. func (f *Fallback) GetId() int64 { return f.Id } +// GetSrc returns the source location information of the Fallback node. func (f *Fallback) GetSrc() SrcNode { return f.Src } +// GetType returns the type of the AST node, which is NodeType_FUNCTION_DEFINITION for a fallback function. func (f *Fallback) GetType() ast_pb.NodeType { return f.NodeType } +// GetNodes returns a slice of child nodes within the body of the fallback function. func (f *Fallback) GetNodes() []Node[NodeType] { return f.Body.Statements } +// GetTypeDescription returns the type description associated with the Fallback node. func (f *Fallback) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "fallback", + TypeIdentifier: "$_t_fallback", + } } +// GetModifiers returns a list of modifier invocations applied to the Fallback node. func (f *Fallback) GetModifiers() []*ModifierInvocation { return f.Modifiers } +// GetOverrides returns a list of override specifiers for the Fallback node. func (f *Fallback) GetOverrides() []*OverrideSpecifier { return f.Overrides } +// GetParameters returns the list of parameters for the Fallback node. func (f *Fallback) GetParameters() *ParameterList { return f.Parameters } +// GetReturnParameters returns the list of return parameters for the Fallback node. func (f *Fallback) GetReturnParameters() *ParameterList { return f.ReturnParameters } +// GetBody returns the body of the Fallback node. func (f *Fallback) GetBody() *BodyNode { return f.Body } +// GetKind returns the kind of the Fallback node, which is NodeType_FALLBACK. func (f *Fallback) GetKind() ast_pb.NodeType { return f.Kind } +// GetVisibility returns the visibility of the Fallback function. func (f *Fallback) GetVisibility() ast_pb.Visibility { return f.Visibility } +// GetStateMutability returns the state mutability of the Fallback function. func (f *Fallback) GetStateMutability() ast_pb.Mutability { return f.StateMutability } +// IsVirtual returns true if the Fallback function is virtual, false otherwise. func (f *Fallback) IsVirtual() bool { return f.Virtual } +// IsImplemented returns true if the Fallback function is implemented, false otherwise. func (f *Fallback) IsImplemented() bool { return f.Implemented } +// ToProto converts the Fallback node to its corresponding protocol buffer representation. func (f *Fallback) ToProto() NodeType { proto := ast_pb.Fallback{ Id: f.GetId(), @@ -127,6 +150,8 @@ func (f *Fallback) ToProto() NodeType { return NewTypedStruct(&proto, "Fallback") } +// Parse populates the properties of the Fallback node by parsing the corresponding context and information. +// It returns the populated Fallback node. func (f *Fallback) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], @@ -200,6 +225,7 @@ func (f *Fallback) Parse( return f } +// getVisibilityFromCtx determines the visibility of the Fallback function based on the context. func (f *Fallback) getVisibilityFromCtx(ctx *parser.FallbackFunctionDefinitionContext) ast_pb.Visibility { for _, visibility := range ctx.AllExternal() { if visibility.GetText() == "external" { @@ -210,6 +236,7 @@ func (f *Fallback) getVisibilityFromCtx(ctx *parser.FallbackFunctionDefinitionCo return ast_pb.Visibility_INTERNAL } +// getStateMutabilityFromCtx determines the state mutability of the Fallback function based on the context. func (f *Fallback) getStateMutabilityFromCtx(ctx *parser.FallbackFunctionDefinitionContext) ast_pb.Mutability { mutabilityMap := map[string]ast_pb.Mutability{ "payable": ast_pb.Mutability_PAYABLE, diff --git a/ast/for.go b/ast/for.go index 84c4a214..a05f44c2 100644 --- a/ast/for.go +++ b/ast/for.go @@ -6,18 +6,20 @@ import ( "github.com/txpull/solgo/parser" ) +// ForStatement represents a for loop statement in the AST. type ForStatement struct { *ASTBuilder - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - Initialiser Node[NodeType] `json:"initialiser"` - Condition Node[NodeType] `json:"condition"` - Closure Node[NodeType] `json:"closure"` - Body *BodyNode `json:"body"` + Id int64 `json:"id"` // Unique identifier for the ForStatement node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the AST node. + Src SrcNode `json:"src"` // Source location information. + Initialiser Node[NodeType] `json:"initialiser"` // Initialiser expression. + Condition Node[NodeType] `json:"condition"` // Condition expression. + Closure Node[NodeType] `json:"closure"` // Closure expression. + Body *BodyNode `json:"body"` // Body of the for loop. } +// NewForStatement creates a new ForStatement node with a given ASTBuilder. func NewForStatement(b *ASTBuilder) *ForStatement { return &ForStatement{ ASTBuilder: b, @@ -32,44 +34,57 @@ func (f *ForStatement) SetReferenceDescriptor(refId int64, refDesc *TypeDescript return false } +// GetId returns the ID of the ForStatement node. func (f *ForStatement) GetId() int64 { return f.Id } +// GetType returns the NodeType of the ForStatement node. func (f *ForStatement) GetType() ast_pb.NodeType { return f.NodeType } +// GetSrc returns the SrcNode of the ForStatement node. func (f *ForStatement) GetSrc() SrcNode { return f.Src } +// GetInitialiser returns the initialiser expression. func (f *ForStatement) GetInitialiser() Node[NodeType] { return f.Initialiser } +// GetCondition returns the condition expression. func (f *ForStatement) GetCondition() Node[NodeType] { return f.Condition } +// GetClosure returns the closure expression. func (f *ForStatement) GetClosure() Node[NodeType] { return f.Closure } +// GetBody returns the body of the for loop. func (f *ForStatement) GetBody() *BodyNode { return f.Body } +// GetNodes returns the child nodes of the ForStatement node. func (f *ForStatement) GetNodes() []Node[NodeType] { toReturn := []Node[NodeType]{f.Initialiser, f.Condition, f.Closure} toReturn = append(toReturn, f.Body.GetNodes()...) return toReturn } +// GetTypeDescription returns the TypeDescription of the ForStatement node. func (f *ForStatement) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "for", + TypeIdentifier: "$_t_for", + } } +// ToProto returns a protobuf representation of the ForStatement node. func (f *ForStatement) ToProto() NodeType { proto := ast_pb.For{ Id: f.GetId(), @@ -96,7 +111,8 @@ func (f *ForStatement) ToProto() NodeType { return NewTypedStruct(&proto, "For") } -// https://docs.soliditylang.org/en/v0.8.19/grammar.html#a4.SolidityParser.forStatement +// Parse parses a for loop statement context into the ForStatement node. +// Documentation: https://docs.soliditylang.org/en/v0.8.19/grammar.html#a4.SolidityParser.forStatement func (f *ForStatement) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/function.go b/ast/function.go index 28fba080..71990781 100644 --- a/ast/function.go +++ b/ast/function.go @@ -1,15 +1,19 @@ package ast import ( + "fmt" + "regexp" "strings" ast_pb "github.com/txpull/protos/dist/go/ast" "github.com/txpull/solgo/parser" ) +// Function represents a Solidity function definition within an abstract syntax tree. type Function struct { - *ASTBuilder + *ASTBuilder // Embedded ASTBuilder for creating the AST. + // Core properties of a function node. Id int64 `json:"id"` Name string `json:"name"` NodeType ast_pb.NodeType `json:"node_type"` @@ -29,6 +33,7 @@ type Function struct { TypeDescription *TypeDescription `json:"type_description"` } +// NewFunction creates and initializes a new Function node. func NewFunction(b *ASTBuilder) *Function { return &Function{ ASTBuilder: b, @@ -47,85 +52,110 @@ func (f *Function) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) return false } +// GetId returns the unique identifier of the Function node. func (f *Function) GetId() int64 { return f.Id } +// GetType returns the type of the Function node. func (f *Function) GetType() ast_pb.NodeType { return f.NodeType } +// GetSrc returns the source location information of the Function node. func (f *Function) GetSrc() SrcNode { return f.Src } +// GetParameters returns the list of parameters of the Function node. func (f *Function) GetParameters() *ParameterList { return f.Parameters } +// GetReturnParameters returns the list of return parameters of the Function node. func (f *Function) GetReturnParameters() *ParameterList { return f.ReturnParameters } +// GetBody returns the body of the Function node. func (f *Function) GetBody() *BodyNode { return f.Body } +// GetKind returns the kind of the Function node. func (f *Function) GetKind() ast_pb.NodeType { return f.Kind } +// IsImplemented returns true if the Function node is implemented, false otherwise. func (f *Function) IsImplemented() bool { return f.Implemented } +// GetModifiers returns the list of modifier invocations applied to the Function node. func (f *Function) GetModifiers() []*ModifierInvocation { return f.Modifiers } +// GetOverrides returns the list of override specifiers associated with the Function node. func (f *Function) GetOverrides() []*OverrideSpecifier { return f.Overrides } +// GetVisibility returns the visibility of the Function node. func (f *Function) GetVisibility() ast_pb.Visibility { return f.Visibility } +// GetStateMutability returns the state mutability of the Function node. func (f *Function) GetStateMutability() ast_pb.Mutability { return f.StateMutability } +// IsVirtual returns true if the Function node is declared as virtual, false otherwise. func (f *Function) IsVirtual() bool { return f.Virtual } +// GetScope returns the scope of the Function node. func (f *Function) GetScope() int64 { return f.Scope } +// GetName returns the name of the Function node. func (f *Function) GetName() string { return f.Name } +// GetTypeDescription returns the type description of the Function node. func (f *Function) GetTypeDescription() *TypeDescription { return f.TypeDescription } +// GetNodes returns a list of child nodes within the Function node. func (f *Function) GetNodes() []Node[NodeType] { toReturn := []Node[NodeType]{} toReturn = append(toReturn, f.GetBody().GetNodes()...) + toReturn = append(toReturn, f.GetParameters().GetNodes()...) + toReturn = append(toReturn, f.GetReturnParameters().GetNodes()...) for _, override := range f.GetOverrides() { toReturn = append(toReturn, override) } + for _, modifier := range f.GetModifiers() { + toReturn = append(toReturn, modifier) + } + return toReturn } +// GetReferencedDeclaration returns the referenced declaration identifier associated with the Function node. func (f *Function) GetReferencedDeclaration() int64 { return f.ReferencedDeclaration } +// ToProto converts the Function node to its corresponding protobuf representation. func (f *Function) ToProto() NodeType { proto := ast_pb.Function{ Id: f.GetId(), @@ -161,12 +191,14 @@ func (f *Function) ToProto() NodeType { return NewTypedStruct(&proto, "Function") } +// Parse parses the source code and constructs the Function node. func (f *Function) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], bodyCtx parser.IContractBodyElementContext, ctx *parser.FunctionDefinitionContext, ) Node[NodeType] { + // Initialize basic properties. f.Id = f.GetNextID() f.Scope = contractNode.GetId() if ctx.Identifier() != nil { @@ -264,6 +296,7 @@ func (f *Function) Parse( return f } +// buildTypeDescription constructs the type description of the Function node. func (f *Function) buildTypeDescription() *TypeDescription { typeString := "function(" typeIdentifier := "t_function_" @@ -271,18 +304,32 @@ func (f *Function) buildTypeDescription() *TypeDescription { typeIdentifiers := make([]string, 0) for _, paramType := range f.GetParameters().GetParameterTypes() { + if paramType == nil { + typeStrings = append(typeStrings, fmt.Sprintf("unknown_%d", f.GetId())) + typeIdentifiers = append(typeIdentifiers, fmt.Sprintf("$_t_unknown_%d", f.GetId())) + continue + } + typeStrings = append(typeStrings, paramType.TypeString) typeIdentifiers = append(typeIdentifiers, "$_"+paramType.TypeIdentifier) } typeString += strings.Join(typeStrings, ",") + ")" typeIdentifier += strings.Join(typeIdentifiers, "$") + if !strings.HasSuffix(typeIdentifier, "$") { + typeIdentifier += "$" + } + + re := regexp.MustCompile(`\${2,}`) + typeIdentifier = re.ReplaceAllString(typeIdentifier, "$") + return &TypeDescription{ TypeString: typeString, TypeIdentifier: typeIdentifier, } } +// getVisibilityFromCtx extracts the visibility of the Function node from the parser context. func (f *Function) getVisibilityFromCtx(ctx *parser.FunctionDefinitionContext) ast_pb.Visibility { visibilityMap := map[string]ast_pb.Visibility{ "public": ast_pb.Visibility_PUBLIC, @@ -300,6 +347,7 @@ func (f *Function) getVisibilityFromCtx(ctx *parser.FunctionDefinitionContext) a return ast_pb.Visibility_INTERNAL } +// getStateMutabilityFromCtx extracts the state mutability of the Function node from the parser context. func (f *Function) getStateMutabilityFromCtx(ctx *parser.FunctionDefinitionContext) ast_pb.Mutability { mutabilityMap := map[string]ast_pb.Mutability{ "payable": ast_pb.Mutability_PAYABLE, @@ -316,6 +364,7 @@ func (f *Function) getStateMutabilityFromCtx(ctx *parser.FunctionDefinitionConte return ast_pb.Mutability_NONPAYABLE } +// getVirtualState determines if the Function node is declared as virtual from the parser context. func (f *Function) getVirtualState(ctx *parser.FunctionDefinitionContext) bool { for _, virtual := range ctx.AllVirtual() { if virtual.GetText() == "virtual" { diff --git a/ast/function_call.go b/ast/function_call.go index c829b0d1..841565cc 100644 --- a/ast/function_call.go +++ b/ast/function_call.go @@ -1,6 +1,8 @@ package ast import ( + "fmt" + "regexp" "strings" v3 "github.com/cncf/xds/go/xds/type/v3" @@ -170,6 +172,12 @@ func (f *FunctionCall) Parse( expression := NewExpression(f.ASTBuilder) + if ctx.Expression() != nil { + f.Expression = expression.Parse( + unit, contractNode, fnNode, bodyNode, nil, f, ctx.Expression(), + ) + } + if ctx.CallArgumentList() != nil { for _, expressionCtx := range ctx.CallArgumentList().AllExpression() { expr := expression.Parse(unit, contractNode, fnNode, bodyNode, nil, f, expressionCtx) @@ -185,16 +193,11 @@ func (f *FunctionCall) Parse( } } - if ctx.Expression() != nil { - f.Expression = expression.Parse( - unit, contractNode, fnNode, bodyNode, nil, f, ctx.Expression(), - ) - } - f.TypeDescription = f.buildTypeDescription() return f } +// buildTypeDescription constructs and returns the TypeDescription of the FunctionCall. func (f *FunctionCall) buildTypeDescription() *TypeDescription { typeString := "function(" typeIdentifier := "t_function_" @@ -202,10 +205,18 @@ func (f *FunctionCall) buildTypeDescription() *TypeDescription { typeIdentifiers := make([]string, 0) for _, paramType := range f.GetArgumentTypes() { - if strings.Contains(paramType.TypeString, "literal_string") { + if paramType == nil { + typeStrings = append(typeStrings, fmt.Sprintf("unknown_%d", f.GetId())) + typeIdentifiers = append(typeIdentifiers, fmt.Sprintf("$_t_unknown_%d", f.GetId())) + continue + } else if strings.Contains(paramType.TypeString, "literal_string") { typeStrings = append(typeStrings, "string memory") typeIdentifiers = append(typeIdentifiers, "_"+paramType.TypeIdentifier) continue + } else if strings.Contains(paramType.TypeString, "contract") { + typeStrings = append(typeStrings, "address") + typeIdentifiers = append(typeIdentifiers, "$_t_address") + continue } typeStrings = append(typeStrings, paramType.TypeString) @@ -213,7 +224,14 @@ func (f *FunctionCall) buildTypeDescription() *TypeDescription { } typeString += strings.Join(typeStrings, ",") + ")" - typeIdentifier += strings.Join(typeIdentifiers, "$") + "$" + typeIdentifier += strings.Join(typeIdentifiers, "$") + + if !strings.HasSuffix(typeIdentifier, "$") { + typeIdentifier += "$" + } + + re := regexp.MustCompile(`\${2,}`) + typeIdentifier = re.ReplaceAllString(typeIdentifier, "$") return &TypeDescription{ TypeString: typeString, @@ -311,6 +329,9 @@ func (f *FunctionCallOption) ToProto() NodeType { return NewTypedStruct(&proto, "FunctionCallOption") } +// Parse takes a parser.FunctionCallOptionsContext and parses it into a FunctionCallOption node. +// It sets the Id, Src, Expression, and TypeDescription of the FunctionCallOption node. +// It returns the created FunctionCallOption node. func (f *FunctionCallOption) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/helpers.go b/ast/helpers.go index 9ad8cb59..bf9801a4 100644 --- a/ast/helpers.go +++ b/ast/helpers.go @@ -2,7 +2,6 @@ package ast import ( "fmt" - "os" "regexp" "strings" @@ -10,6 +9,7 @@ import ( "github.com/txpull/solgo/parser" ) +// getLiterals extracts individual words from a given literal string. func getLiterals(literal string) []string { // This regular expression matches sequences of word characters (letters, digits, underscores) // and sequences of non-word characters. It treats each match as a separate word. @@ -26,7 +26,9 @@ func getLiterals(literal string) []string { return literals } +// normalizeTypeName normalizes Solidity type names by handling array, slice, and common type variations. func normalizeTypeName(typeName string) string { + // Check if the type is an array. isArray, _ := regexp.MatchString(`\[\d+\]`, typeName) isSlice := strings.HasPrefix(typeName, "[]") @@ -67,61 +69,59 @@ func normalizeTypeName(typeName string) string { } } +// normalizeTypeDescription normalizes type names and generates corresponding type identifiers. func normalizeTypeDescription(typeName string) (string, string) { - isArray, _ := regexp.MatchString(`\[\d+\]`, typeName) - isSlice := strings.HasPrefix(typeName, "[]") + isArray := strings.Contains(typeName, "[") && strings.Contains(typeName, "]") + isSlice := strings.HasSuffix(typeName, "[]") switch { case isArray: numberPart := typeName[strings.Index(typeName, "[")+1 : strings.Index(typeName, "]")] - typePart := typeName[strings.Index(typeName, "]")+1:] + typePart := typeName[:strings.Index(typeName, "[")] normalizedTypePart := normalizeTypeName(typePart) - return "[" + numberPart + "]" + normalizedTypePart, fmt.Sprintf("t_%s_array", normalizedTypePart) + return normalizedTypePart + "[" + numberPart + "]", fmt.Sprintf("t_%s_array", normalizedTypePart) case isSlice: - typePart := typeName[2:] - return "[]" + normalizeTypeName(typePart), fmt.Sprintf("t_%s_slice", normalizeTypeName(typePart)) + typePart := typeName[:len(typeName)-2] + normalizedTypePart := normalizeTypeName(typePart) + return normalizedTypePart + "[]", fmt.Sprintf("t_%s_slice", normalizedTypePart) case strings.HasPrefix(typeName, "uint"): if typeName == "uint" { return "uint256", "t_uint256" } return typeName, fmt.Sprintf("t_%s", typeName) + case strings.HasPrefix(typeName, "int"): if typeName == "int" { return "int256", "t_int256" } return typeName, fmt.Sprintf("t_%s", typeName) + case strings.HasPrefix(typeName, "bool"): return typeName, fmt.Sprintf("t_%s", typeName) + case strings.HasPrefix(typeName, "bytes"): return typeName, fmt.Sprintf("t_%s", typeName) + case typeName == "string": return "string", "t_string" + case typeName == "address": return "address", "t_address" + case typeName == "addresspayable": return "address", "t_address_payable" + case typeName == "tuple": return "tuple", "t_tuple" + default: return typeName, fmt.Sprintf("t_%s", typeName) } } -// nolint:unused -func (b *ASTBuilder) dumpNode(whatever interface{}) { - j, _ := b.ToPrettyJSON(whatever) - fmt.Println(string(j)) - os.Exit(1) -} - -// nolint:unused -func (b *ASTBuilder) dumpNodeNoExit(whatever interface{}) { - j, _ := b.ToPrettyJSON(whatever) - fmt.Println(string(j)) -} - +// getStorageLocationFromDataLocationCtx extracts the storage location from the given data location context. func getStorageLocationFromDataLocationCtx(ctx parser.IDataLocationContext) ast_pb.StorageLocation { if ctx != nil { if ctx.Memory() != nil { diff --git a/ast/ids.go b/ast/ids.go index d5e0b9c0..38877f14 100644 --- a/ast/ids.go +++ b/ast/ids.go @@ -2,6 +2,9 @@ package ast import "sync/atomic" +// GetNextID generates the next unique identifier for nodes in the abstract syntax tree (AST). +// It uses an atomic operation to ensure thread safety. func (b *ASTBuilder) GetNextID() int64 { + // Increment the value of b.nextID atomically and then subtract 1 to get the next unique ID. return atomic.AddInt64(&b.nextID, 1) - 1 } diff --git a/ast/if.go b/ast/if.go index f3a81d7e..4427c2fc 100644 --- a/ast/if.go +++ b/ast/if.go @@ -6,16 +6,18 @@ import ( "github.com/txpull/solgo/parser" ) +// IfStatement represents an if statement node in the abstract syntax tree. type IfStatement struct { *ASTBuilder - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - Condition Node[NodeType] `json:"condition"` - Body Node[NodeType] `json:"body"` + Id int64 `json:"id"` // Unique identifier of the if statement node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node. + Src SrcNode `json:"src"` // Source location information. + Condition Node[NodeType] `json:"condition"` // Condition node. + Body Node[NodeType] `json:"body"` // Body node. } +// NewIfStatement creates a new instance of IfStatement with the provided ASTBuilder. func NewIfStatement(b *ASTBuilder) *IfStatement { return &IfStatement{ ASTBuilder: b, @@ -24,39 +26,50 @@ func NewIfStatement(b *ASTBuilder) *IfStatement { } } -// SetReferenceDescriptor sets the reference descriptions of the IfStatement node. +// SetReferenceDescriptor sets the reference descriptors of the IfStatement node. func (i *IfStatement) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { return false } +// GetId returns the unique identifier of the if statement node. func (i *IfStatement) GetId() int64 { return i.Id } +// GetType returns the type of the node. func (i *IfStatement) GetType() ast_pb.NodeType { return i.NodeType } +// GetSrc returns the source location information of the if statement node. func (i *IfStatement) GetSrc() SrcNode { return i.Src } +// GetCondition returns the condition node of the if statement. func (i *IfStatement) GetCondition() Node[NodeType] { return i.Condition } +// GetTypeDescription returns the type description of the if statement. func (i *IfStatement) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "if", + TypeIdentifier: "$_t_if", + } } +// GetNodes returns a list of nodes associated with the if statement (condition and body). func (i *IfStatement) GetNodes() []Node[NodeType] { return []Node[NodeType]{i.Condition, i.Body} } +// GetBody returns the body node of the if statement. func (i *IfStatement) GetBody() Node[NodeType] { return i.Body } +// ToProto converts the IfStatement node to its corresponding protobuf representation. func (i *IfStatement) ToProto() NodeType { proto := ast_pb.If{ Id: i.GetId(), @@ -72,6 +85,7 @@ func (i *IfStatement) ToProto() NodeType { return NewTypedStruct(&proto, "If") } +// Parse parses the if statement context and populates the IfStatement fields. func (i *IfStatement) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], @@ -92,8 +106,6 @@ func (i *IfStatement) Parse( i.Condition = expression.Parse(unit, contractNode, fnNode, bodyNode, nil, i, ctx.Expression()) - // i.Body set is just ridicolous as there are so many different ways for parsed ast to show nil - // instead of empty []. This was the way I've sorted it out. Future can decide if cleanup is necessary. body := NewBodyNode(i.ASTBuilder) if len(ctx.AllStatement()) > 0 { for _, statementCtx := range ctx.AllStatement() { diff --git a/ast/imports.go b/ast/imports.go index a467253e..92eb99fb 100644 --- a/ast/imports.go +++ b/ast/imports.go @@ -1,6 +1,7 @@ package ast import ( + "fmt" "path/filepath" "strings" @@ -8,77 +9,89 @@ import ( "github.com/txpull/solgo/parser" ) +// Import represents an import node in the abstract syntax tree. type Import struct { - // Id is the unique identifier of the import node. - Id int64 `json:"id"` - - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - AbsolutePath string `json:"absolute_path"` - File string `json:"file"` - Scope int64 `json:"scope"` - UnitAlias string `json:"unit_alias"` - SourceUnit int64 `json:"source_unit"` + Id int64 `json:"id"` // Unique identifier of the import node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node. + Src SrcNode `json:"src"` // Source location information. + AbsolutePath string `json:"absolute_path"` // Absolute path of the imported file. + File string `json:"file"` // Filepath of the import statement. + Scope int64 `json:"scope"` // Scope of the import. + UnitAlias string `json:"unit_alias"` // Alias of the imported unit. + SourceUnit int64 `json:"source_unit"` // Source unit identifier. } // SetReferenceDescriptor sets the reference descriptions of the Import node. func (i *Import) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { - // Reasoning behind is a hack in resolver to set the source unit of the import - // as forward declaration of the source units occurred. + // This function sets the source unit of the import in the resolver as a forward declaration hack. if refId > 0 && refDesc == nil { i.SourceUnit = refId return true } - return false } +// GetId returns the unique identifier of the import node. func (i *Import) GetId() int64 { return i.Id } +// GetType returns the type of the node. func (i *Import) GetType() ast_pb.NodeType { return i.NodeType } +// GetSrc returns the source location information of the import node. func (i *Import) GetSrc() SrcNode { return i.Src } +// GetTypeDescription returns the type description of the import node. func (i *Import) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "import", + TypeIdentifier: fmt.Sprintf("$_t_import_%s_%d", i.AbsolutePath, i.Id), + } } +// GetAbsolutePath returns the absolute path of the imported file. func (i *Import) GetAbsolutePath() string { return i.AbsolutePath } +// GetFile returns the filepath of the import statement. func (i *Import) GetFile() string { return i.File } +// GetScope returns the scope of the import. func (i *Import) GetScope() int64 { return i.Scope } +// GetUnitAlias returns the alias of the imported unit. func (i *Import) GetUnitAlias() string { return i.UnitAlias } +// GetSourceUnit returns the source unit identifier of the import. func (i *Import) GetSourceUnit() int64 { return i.SourceUnit } +// GetNodes returns an empty slice of nodes associated with the import. func (i *Import) GetNodes() []Node[NodeType] { - return nil + return []Node[NodeType]{} } +// GetName returns the name of the imported file (excluding extension). func (i *Import) GetName() string { base := filepath.Base(i.AbsolutePath) ext := filepath.Ext(base) return strings.TrimSuffix(base, ext) } +// ToProto converts the Import node to its corresponding protobuf representation. func (i *Import) ToProto() NodeType { proto := ast_pb.Import{ Id: i.GetId(), @@ -94,6 +107,8 @@ func (i *Import) ToProto() NodeType { return NewTypedStruct(&proto, "Import") } +// parseImportPathsForSourceUnit is a utility function for parsing import paths within a source unit. +// It returns a slice of Import nodes corresponding to the imported paths. func parseImportPathsForSourceUnit( b *ASTBuilder, unitCtx *parser.SourceUnitContext, @@ -184,11 +199,7 @@ func parseImportPathsForSourceUnit( if symbol.AbsolutePath == importNode.AbsolutePath { unit.ExportedSymbols = append( unit.ExportedSymbols, - Symbol{ - Id: symbol.Id, - Name: symbol.Name, - AbsolutePath: symbol.AbsolutePath, - }, + NewSymbol(symbol.Id, symbol.Name, symbol.AbsolutePath), ) } diff --git a/ast/index_access.go b/ast/index_access.go index 59a852f5..d84a511d 100644 --- a/ast/index_access.go +++ b/ast/index_access.go @@ -1,24 +1,30 @@ package ast import ( + "fmt" + "regexp" + "strings" + v3 "github.com/cncf/xds/go/xds/type/v3" ast_pb "github.com/txpull/protos/dist/go/ast" "github.com/txpull/solgo/parser" ) +// IndexAccess represents an index access expression in the AST. type IndexAccess struct { *ASTBuilder - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - IndexExpression Node[NodeType] `json:"index_expression"` - BaseExpression Node[NodeType] `json:"base_expression"` - TypeDescriptions []*TypeDescription `json:"type_descriptions"` - ReferencedDeclaration int64 `json:"referenced_declaration,omitempty"` - TypeDescription *TypeDescription `json:"type_description"` + Id int64 `json:"id"` // Unique identifier for the IndexAccess node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the AST node. + Src SrcNode `json:"src"` // Source location information. + IndexExpression Node[NodeType] `json:"index_expression"` // Index expression. + BaseExpression Node[NodeType] `json:"base_expression"` // Base expression. + TypeDescriptions []*TypeDescription `json:"type_descriptions"` // Type descriptions. + ReferencedDeclaration int64 `json:"referenced_declaration,omitempty"` // Referenced declaration. + TypeDescription *TypeDescription `json:"type_description"` // Type description. } +// NewIndexAccess creates a new IndexAccess node with a given ASTBuilder. func NewIndexAccess(b *ASTBuilder) *IndexAccess { return &IndexAccess{ ASTBuilder: b, @@ -28,60 +34,90 @@ func NewIndexAccess(b *ASTBuilder) *IndexAccess { } // SetReferenceDescriptor sets the reference descriptions of the IndexAccess node. +// Here we are going to just do some magic stuff in order to figure out descriptions across the board... func (i *IndexAccess) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { - i.ReferencedDeclaration = refId - i.TypeDescription = refDesc - return false + // It is usually only index expression that is affected, so for now fixing that one... + if i.IndexExpression.GetTypeDescription() != nil { + i.TypeDescriptions[0] = i.IndexExpression.GetTypeDescription() + i.TypeDescription = i.buildTypeDescription() + return true + } + return true +} + +// GetName returns the name of the IndexAccess node. +func (i *IndexAccess) GetName() string { + return fmt.Sprintf("index_access_%d", i.Id) } +// GetId returns the ID of the IndexAccess node. func (i *IndexAccess) GetId() int64 { return i.Id } +// GetType returns the NodeType of the IndexAccess node. func (i *IndexAccess) GetType() ast_pb.NodeType { return i.NodeType } +// GetSrc returns the SrcNode of the IndexAccess node. func (i *IndexAccess) GetSrc() SrcNode { return i.Src } +// GetIndexExpression returns the index expression. func (i *IndexAccess) GetIndexExpression() Node[NodeType] { return i.IndexExpression } +// GetBaseExpression returns the base expression. func (i *IndexAccess) GetBaseExpression() Node[NodeType] { return i.BaseExpression } +// GetTypeDescription returns the type description. func (i *IndexAccess) GetTypeDescription() *TypeDescription { return i.TypeDescription } +// GetTypeDescriptions returns the list of type descriptions. func (i *IndexAccess) GetTypeDescriptions() []*TypeDescription { return i.TypeDescriptions } +// GetNodes returns the child nodes of the IndexAccess node. func (i *IndexAccess) GetNodes() []Node[NodeType] { - return []Node[NodeType]{i.IndexExpression, i.BaseExpression} + toReturn := []Node[NodeType]{i.IndexExpression} + if i.BaseExpression != nil { + toReturn = append(toReturn, i.BaseExpression) + } + return toReturn } +// GetReferencedDeclaration returns the referenced declaration. func (i *IndexAccess) GetReferencedDeclaration() int64 { return i.ReferencedDeclaration } +// ToProto returns a protobuf representation of the IndexAccess node. func (i *IndexAccess) ToProto() NodeType { proto := ast_pb.IndexAccess{ Id: i.GetId(), NodeType: i.GetType(), Src: i.Src.ToProto(), - IndexExpression: i.GetIndexExpression().ToProto().(*v3.TypedStruct), - BaseExpression: i.GetBaseExpression().ToProto().(*v3.TypedStruct), TypeDescriptions: make([]*ast_pb.TypeDescription, 0), ReferencedDeclaration: i.GetReferencedDeclaration(), TypeDescription: i.GetTypeDescription().ToProto(), } + if i.GetIndexExpression() != nil { + proto.IndexExpression = i.GetIndexExpression().ToProto().(*v3.TypedStruct) + } + + if i.GetBaseExpression() != nil { + proto.BaseExpression = i.GetBaseExpression().ToProto().(*v3.TypedStruct) + } + for _, td := range i.GetTypeDescriptions() { proto.TypeDescriptions = append(proto.TypeDescriptions, td.ToProto()) } @@ -89,6 +125,7 @@ func (i *IndexAccess) ToProto() NodeType { return NewTypedStruct(&proto, "IndexAccess") } +// Parse parses an index access context into the IndexAccess node. func (i *IndexAccess) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], @@ -125,14 +162,63 @@ func (i *IndexAccess) Parse( ) i.TypeDescription = i.IndexExpression.GetTypeDescription() - i.BaseExpression = expression.Parse( - unit, contractNode, fnNode, bodyNode, vDeclar, i, ctx.Expression(1), - ) - i.TypeDescriptions = []*TypeDescription{ i.IndexExpression.GetTypeDescription(), - i.BaseExpression.GetTypeDescription(), } + if ctx.Expression(1) != nil { + i.BaseExpression = expression.Parse( + unit, contractNode, fnNode, bodyNode, vDeclar, i, ctx.Expression(1), + ) + i.TypeDescriptions = append(i.TypeDescriptions, i.BaseExpression.GetTypeDescription()) + } + + if i.IndexExpression.GetTypeDescription() == nil || (i.BaseExpression != nil && i.BaseExpression.GetTypeDescription() == nil) { + if refId, refTypeDescription := i.GetResolver().ResolveByNode(i, fmt.Sprintf("index_access_%d", i.Id)); refTypeDescription != nil { + i.ReferencedDeclaration = refId + i.TypeDescription = refTypeDescription + i.TypeDescription = i.buildTypeDescription() + } + } + + i.TypeDescription = i.buildTypeDescription() return i } + +// buildTypeDescription creates a type description for the IndexAccess node. +func (i *IndexAccess) buildTypeDescription() *TypeDescription { + typeString := "index[" + typeIdentifier := "t_[_[" + typeStrings := make([]string, 0) + typeIdentifiers := make([]string, 0) + + for _, paramType := range i.GetTypeDescriptions() { + if strings.Contains(paramType.TypeString, "literal_string") { + typeStrings = append(typeStrings, "string memory") + typeIdentifiers = append(typeIdentifiers, "_"+paramType.TypeIdentifier) + continue + } else if strings.Contains(paramType.TypeString, "contract") { + typeStrings = append(typeStrings, "address") + typeIdentifiers = append(typeIdentifiers, "$_t_address") + continue + } + + typeStrings = append(typeStrings, paramType.TypeString) + typeIdentifiers = append(typeIdentifiers, "$_"+paramType.TypeIdentifier) + } + + typeString += strings.Join(typeStrings, ":") + "]" + typeIdentifier += strings.Join(typeIdentifiers, "]$") + + if !strings.HasSuffix(typeIdentifier, "$") { + typeIdentifier += "]$" + } + + re := regexp.MustCompile(`\${2,}`) + typeIdentifier = re.ReplaceAllString(typeIdentifier, "$") + + return &TypeDescription{ + TypeString: typeString, + TypeIdentifier: typeIdentifier, + } +} diff --git a/ast/index_range.go b/ast/index_range.go index de06b3c2..d8d38e02 100644 --- a/ast/index_range.go +++ b/ast/index_range.go @@ -6,6 +6,7 @@ import ( "github.com/txpull/solgo/parser" ) +// IndexRange represents an Index Range expression in the AST. type IndexRange struct { *ASTBuilder @@ -17,6 +18,7 @@ type IndexRange struct { TypeDescriptions []*TypeDescription `json:"type_descriptions"` } +// NewIndexRange creates a new instance of IndexRange with initialized values. func NewIndexRangeAccessExpression(b *ASTBuilder) *IndexRange { return &IndexRange{ ASTBuilder: b, @@ -26,39 +28,48 @@ func NewIndexRangeAccessExpression(b *ASTBuilder) *IndexRange { } } -// SetReferenceDescriptor sets the reference descriptions of the IndexRange node. +// SetReferenceDescriptor is used to set reference descriptions for the IndexRange node. +// However, this function always returns false. func (b *IndexRange) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { return false } +// GetId returns the unique identifier of the IndexRange node. func (f *IndexRange) GetId() int64 { return f.Id } +// GetType returns the node type of the IndexRange. func (f *IndexRange) GetType() ast_pb.NodeType { return f.NodeType } +// GetSrc returns the source information of the IndexRange node. func (f *IndexRange) GetSrc() SrcNode { return f.Src } +// GetTypeDescription returns the type description associated with the IndexRange. func (f *IndexRange) GetTypeDescription() *TypeDescription { return f.TypeDescriptions[0] } +// GetNodes returns the list of nodes within the IndexRange. func (f *IndexRange) GetNodes() []Node[NodeType] { return []Node[NodeType]{f.LeftExpression, f.RightExpression} } +// GetLeftExpression returns the left expression of the IndexRange. func (f *IndexRange) GetLeftExpression() Node[NodeType] { return f.LeftExpression } +// GetRightExpression returns the right expression of the IndexRange. func (f *IndexRange) GetRightExpression() Node[NodeType] { return f.RightExpression } +// ToProto converts the IndexRange node to its Protocol Buffers representation. func (f *IndexRange) ToProto() NodeType { proto := ast_pb.IndexRange{ Id: f.GetId(), @@ -72,6 +83,7 @@ func (f *IndexRange) ToProto() NodeType { return NewTypedStruct(&proto, "IndexRange") } +// Parse parses the IndexRange expression from the provided context and constructs the IndexRange node. func (f *IndexRange) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/inheritance.go b/ast/inheritance.go index 497c6f6e..15e6ebbc 100644 --- a/ast/inheritance.go +++ b/ast/inheritance.go @@ -5,6 +5,8 @@ import ( "github.com/txpull/solgo/parser" ) +// parseInheritanceFromCtx parses inheritance specifiers from the given context and constructs BaseContract instances. +// It returns a slice of constructed BaseContract instances. func parseInheritanceFromCtx(b *ASTBuilder, unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], ctx parser.IInheritanceSpecifierListContext) []*BaseContract { toReturn := []*BaseContract{} diff --git a/ast/interface.go b/ast/interface.go index c7051c10..56c77442 100644 --- a/ast/interface.go +++ b/ast/interface.go @@ -1,27 +1,33 @@ +// Package ast defines data structures and methods for abstract syntax tree nodes used in a specific programming language. +// The package contains definitions for various AST nodes that represent different elements of the programming language's syntax. package ast import ( + "fmt" + v3 "github.com/cncf/xds/go/xds/type/v3" ast_pb "github.com/txpull/protos/dist/go/ast" "github.com/txpull/solgo/parser" ) +// Interface represents an interface definition node in the abstract syntax tree (AST). +// It encapsulates information about the characteristics and properties of an interface within the contract. type Interface struct { - *ASTBuilder - - Id int64 `json:"id"` - Name string `json:"name"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - Abstract bool `json:"abstract"` - Kind ast_pb.NodeType `json:"kind"` - FullyImplemented bool `json:"fully_implemented"` - Nodes []Node[NodeType] `json:"nodes"` - LinearizedBaseContracts []int64 `json:"linearized_base_contracts"` - BaseContracts []*BaseContract `json:"base_contracts"` - ContractDependencies []int64 `json:"contract_dependencies"` + *ASTBuilder // Embedded ASTBuilder for building the AST. + Id int64 `json:"id"` // Unique identifier for the Interface node. + Name string `json:"name"` // Name of the interface. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the AST node. + Src SrcNode `json:"src"` // Source location information. + Abstract bool `json:"abstract"` // Indicates whether the interface is abstract. + Kind ast_pb.NodeType `json:"kind"` // Kind of the interface. + FullyImplemented bool `json:"fully_implemented"` // Indicates whether the interface is fully implemented. + Nodes []Node[NodeType] `json:"nodes"` // List of child nodes within the interface. + LinearizedBaseContracts []int64 `json:"linearized_base_contracts"` // List of linearized base contract identifiers. + BaseContracts []*BaseContract `json:"base_contracts"` // List of base contracts. + ContractDependencies []int64 `json:"contract_dependencies"` // List of contract dependency identifiers. } +// NewInterfaceDefinition creates a new Interface node with default values and returns it. func NewInterfaceDefinition(b *ASTBuilder) *Interface { return &Interface{ ASTBuilder: b, @@ -32,58 +38,75 @@ func NewInterfaceDefinition(b *ASTBuilder) *Interface { } // SetReferenceDescriptor sets the reference descriptions of the Interface node. +// This function currently returns false, as no reference description updates are performed. func (l *Interface) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { return false } +// GetId returns the unique identifier of the Interface node. func (l *Interface) GetId() int64 { return l.Id } +// GetType returns the type of the AST node, which is NodeType_CONTRACT_DEFINITION for an interface. func (l *Interface) GetType() ast_pb.NodeType { return l.NodeType } +// GetSrc returns the source location information of the Interface node. func (l *Interface) GetSrc() SrcNode { return l.Src } +// GetTypeDescription returns the type description associated with the Interface node. func (l *Interface) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: fmt.Sprintf("contract %s", l.Name), + TypeIdentifier: fmt.Sprintf("$_t_contract_%s_%d", l.GetName(), l.GetId()), + } } +// GetName returns the name of the interface. func (l *Interface) GetName() string { return l.Name } +// IsAbstract returns true if the Interface is abstract, false otherwise. func (l *Interface) IsAbstract() bool { return l.Abstract } +// GetKind returns the kind of the Interface node. func (l *Interface) GetKind() ast_pb.NodeType { return l.Kind } +// IsFullyImplemented returns true if the Interface is fully implemented, false otherwise. func (l *Interface) IsFullyImplemented() bool { return l.FullyImplemented } +// GetNodes returns a slice of child nodes within the interface. func (l *Interface) GetNodes() []Node[NodeType] { return l.Nodes } +// GetBaseContracts returns a list of base contracts associated with the Interface. func (l *Interface) GetBaseContracts() []*BaseContract { return l.BaseContracts } +// GetContractDependencies returns a list of contract dependency identifiers for the Interface. func (l *Interface) GetContractDependencies() []int64 { return l.ContractDependencies } +// GetLinearizedBaseContracts returns a list of linearized base contract identifiers for the Interface. func (l *Interface) GetLinearizedBaseContracts() []int64 { return l.LinearizedBaseContracts } +// GetStateVariables returns a list of state variable declarations within the Interface. func (l *Interface) GetStateVariables() []*StateVariableDeclaration { toReturn := make([]*StateVariableDeclaration, 0) @@ -96,6 +119,7 @@ func (l *Interface) GetStateVariables() []*StateVariableDeclaration { return toReturn } +// GetStructs returns a list of struct definitions within the Interface. func (l *Interface) GetStructs() []*StructDefinition { toReturn := make([]*StructDefinition, 0) @@ -108,6 +132,7 @@ func (l *Interface) GetStructs() []*StructDefinition { return toReturn } +// GetEnums returns a list of enum definitions within the Interface. func (l *Interface) GetEnums() []*EnumDefinition { toReturn := make([]*EnumDefinition, 0) @@ -120,6 +145,7 @@ func (l *Interface) GetEnums() []*EnumDefinition { return toReturn } +// GetErrors returns a list of error definitions within the Interface. func (l *Interface) GetErrors() []*ErrorDefinition { toReturn := make([]*ErrorDefinition, 0) @@ -132,6 +158,7 @@ func (l *Interface) GetErrors() []*ErrorDefinition { return toReturn } +// GetEvents returns a list of event definitions within the Interface. func (l *Interface) GetEvents() []*EventDefinition { toReturn := make([]*EventDefinition, 0) @@ -144,6 +171,7 @@ func (l *Interface) GetEvents() []*EventDefinition { return toReturn } +// GetConstructor returns the constructor node within the Interface, if present. func (l *Interface) GetConstructor() *Constructor { for _, node := range l.GetNodes() { if constructor, ok := node.(*Constructor); ok { @@ -154,6 +182,7 @@ func (l *Interface) GetConstructor() *Constructor { return nil } +// GetFunctions returns a list of function definitions within the Interface. func (l *Interface) GetFunctions() []*Function { toReturn := make([]*Function, 0) @@ -166,6 +195,7 @@ func (l *Interface) GetFunctions() []*Function { return toReturn } +// GetFallback returns the fallback function node within the Interface, if present. func (l *Interface) GetFallback() *Fallback { for _, node := range l.GetNodes() { if function, ok := node.(*Fallback); ok { @@ -176,6 +206,7 @@ func (l *Interface) GetFallback() *Fallback { return nil } +// GetReceive returns the receive function node within the Interface, if present. func (l *Interface) GetReceive() *Receive { for _, node := range l.GetNodes() { if function, ok := node.(*Receive); ok { @@ -186,33 +217,36 @@ func (l *Interface) GetReceive() *Receive { return nil } +// ToProto converts the Interface node to its corresponding protocol buffer representation. func (l *Interface) ToProto() NodeType { proto := ast_pb.Contract{ - Id: l.Id, - NodeType: l.NodeType, - Kind: l.Kind, - Src: l.Src.ToProto(), - Name: l.Name, - Abstract: l.Abstract, - FullyImplemented: l.FullyImplemented, - LinearizedBaseContracts: l.LinearizedBaseContracts, - ContractDependencies: l.ContractDependencies, + Id: l.GetId(), + NodeType: l.GetType(), + Kind: l.GetKind(), + Src: l.GetSrc().ToProto(), + Name: l.GetName(), + Abstract: l.IsAbstract(), + FullyImplemented: l.IsFullyImplemented(), + LinearizedBaseContracts: l.GetLinearizedBaseContracts(), + ContractDependencies: l.GetContractDependencies(), Nodes: make([]*v3.TypedStruct, 0), BaseContracts: make([]*ast_pb.BaseContract, 0), } - for _, baseContract := range l.BaseContracts { + for _, baseContract := range l.GetBaseContracts() { proto.BaseContracts = append(proto.BaseContracts, baseContract.ToProto()) } - for _, node := range l.Nodes { + for _, node := range l.GetNodes() { proto.Nodes = append(proto.Nodes, node.ToProto().(*v3.TypedStruct)) } return NewTypedStruct(&proto, "Contract") } +// Parse is responsible for parsing the interface definition from the source unit context and populating the Interface node. func (l *Interface) Parse(unitCtx *parser.SourceUnitContext, ctx *parser.InterfaceDefinitionContext, rootNode *RootNode, unit *SourceUnit[Node[ast_pb.SourceUnit]]) { + // Set the source location information for the source unit. unit.Src = SrcNode{ Id: l.GetNextID(), Line: int64(ctx.GetStart().GetLine()), @@ -224,28 +258,22 @@ func (l *Interface) Parse(unitCtx *parser.SourceUnitContext, ctx *parser.Interfa } // Set the absolute path of the source unit from provided sources map. - // We are not dynamically loading files like the solc compiler does so we need to - // provide the absolute path of the source unit from the sources map. + // The absolute path is used to locate the source unit. unit.SetAbsolutePathFromSources(l.sources) + // Add the exported symbol information for the source unit. unit.ExportedSymbols = append(unit.ExportedSymbols, Symbol{ Id: unit.Id, Name: unit.Name, AbsolutePath: unit.AbsolutePath, }) - // Now we are going to resolve pragmas for current source unit... - unit.Nodes = append( - unit.Nodes, - parsePragmasForSourceUnit(l.ASTBuilder, unitCtx, unit, nil, nil, ctx)..., - ) - - // Now we are going to resolve import paths for current source unit... + // Resolve pragmas for the source unit. + unit.Nodes = append(unit.Nodes, parsePragmasForSourceUnit(l.ASTBuilder, unitCtx, unit, nil, nil, ctx)...) + // Resolve import paths for the source unit. nodeImports := parseImportPathsForSourceUnit(l.ASTBuilder, unitCtx, unit, nil, nil, ctx) - unit.Nodes = append( - unit.Nodes, - nodeImports..., - ) + unit.Nodes = append(unit.Nodes, nodeImports...) + // Create a new Interface node. interfaceNode := &Interface{ Id: l.GetNextID(), Name: ctx.Identifier().GetText(), @@ -267,31 +295,19 @@ func (l *Interface) Parse(unitCtx *parser.SourceUnitContext, ctx *parser.Interfa FullyImplemented: true, } - interfaceNode.BaseContracts = append( - interfaceNode.BaseContracts, - parseInheritanceFromCtx( - l.ASTBuilder, unit, interfaceNode, ctx.InheritanceSpecifierList(), - )..., - ) + // Resolve and add base contracts. + interfaceNode.BaseContracts = append(interfaceNode.BaseContracts, + parseInheritanceFromCtx(l.ASTBuilder, unit, interfaceNode, ctx.InheritanceSpecifierList())...) unit.BaseContracts = interfaceNode.BaseContracts - interfaceNode.LinearizedBaseContracts = append( - interfaceNode.LinearizedBaseContracts, - interfaceNode.GetId(), - ) - + // Add linearized base contracts and contract dependencies. + interfaceNode.LinearizedBaseContracts = append(interfaceNode.LinearizedBaseContracts, interfaceNode.GetId()) for _, nodeImport := range nodeImports { - interfaceNode.LinearizedBaseContracts = append( - interfaceNode.LinearizedBaseContracts, - nodeImport.GetId(), - ) - - interfaceNode.ContractDependencies = append( - interfaceNode.ContractDependencies, - nodeImport.GetId(), - ) + interfaceNode.LinearizedBaseContracts = append(interfaceNode.LinearizedBaseContracts, nodeImport.GetId()) + interfaceNode.ContractDependencies = append(interfaceNode.ContractDependencies, nodeImport.GetId()) } + // Parse contract body elements. for _, bodyElement := range ctx.AllContractBodyElement() { if bodyElement.IsEmpty() { interfaceNode.FullyImplemented = false @@ -301,11 +317,8 @@ func (l *Interface) Parse(unitCtx *parser.SourceUnitContext, ctx *parser.Interfa bodyNode := NewBodyNode(l.ASTBuilder) childNode := bodyNode.ParseDefinitions(unit, interfaceNode, bodyElement) if childNode != nil { - interfaceNode.Nodes = append( - interfaceNode.Nodes, - childNode, - ) - + interfaceNode.Nodes = append(interfaceNode.Nodes, childNode) + // Check if the body node is a function definition and if it's not implemented, mark the interface as not fully implemented. if bodyNode.NodeType == ast_pb.NodeType_FUNCTION_DEFINITION { if !bodyNode.Implemented { interfaceNode.FullyImplemented = false diff --git a/ast/library.go b/ast/library.go index 03a62650..f9013c8d 100644 --- a/ast/library.go +++ b/ast/library.go @@ -1,6 +1,7 @@ package ast import ( + "fmt" "reflect" v3 "github.com/cncf/xds/go/xds/type/v3" @@ -59,7 +60,10 @@ func (l *Library) GetSrc() SrcNode { // GetTypeDescription returns the type description of the library node. // Currently, it returns nil and needs to be implemented. func (l *Library) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: fmt.Sprintf("contract %s", l.Name), + TypeIdentifier: fmt.Sprintf("$_t_contract_%s_%d", l.GetName(), l.GetId()), + } } // GetName returns the name of the library. @@ -107,6 +111,7 @@ func (l *Library) GetContractDependencies() []int64 { return l.ContractDependencies } +// GetStateVariables returns an array of state variable declarations in the library. func (l *Library) GetStateVariables() []*StateVariableDeclaration { toReturn := make([]*StateVariableDeclaration, 0) @@ -119,6 +124,7 @@ func (l *Library) GetStateVariables() []*StateVariableDeclaration { return toReturn } +// GetStructs returns an array of struct definitions in the library. func (l *Library) GetStructs() []*StructDefinition { toReturn := make([]*StructDefinition, 0) @@ -131,6 +137,7 @@ func (l *Library) GetStructs() []*StructDefinition { return toReturn } +// GetEnums returns an array of enum definitions in the library. func (l *Library) GetEnums() []*EnumDefinition { toReturn := make([]*EnumDefinition, 0) @@ -143,6 +150,7 @@ func (l *Library) GetEnums() []*EnumDefinition { return toReturn } +// GetErrors returns an array of error definitions in the library. func (l *Library) GetErrors() []*ErrorDefinition { toReturn := make([]*ErrorDefinition, 0) @@ -155,6 +163,7 @@ func (l *Library) GetErrors() []*ErrorDefinition { return toReturn } +// GetEvents returns an array of event definitions in the library. func (l *Library) GetEvents() []*EventDefinition { toReturn := make([]*EventDefinition, 0) @@ -167,6 +176,7 @@ func (l *Library) GetEvents() []*EventDefinition { return toReturn } +// GetConstructor returns the constructor definition in the library. func (l *Library) GetConstructor() *Constructor { for _, node := range l.GetNodes() { if constructor, ok := node.(*Constructor); ok { @@ -177,6 +187,7 @@ func (l *Library) GetConstructor() *Constructor { return nil } +// GetFunctions returns an array of function definitions in the library. func (l *Library) GetFunctions() []*Function { toReturn := make([]*Function, 0) @@ -189,6 +200,7 @@ func (l *Library) GetFunctions() []*Function { return toReturn } +// GetFallback returns the fallback function definition in the library. func (l *Library) GetFallback() *Fallback { for _, node := range l.GetNodes() { if function, ok := node.(*Fallback); ok { @@ -199,6 +211,7 @@ func (l *Library) GetFallback() *Fallback { return nil } +// GetReceive returns the receive function definition in the library. func (l *Library) GetReceive() *Receive { for _, node := range l.GetNodes() { if function, ok := node.(*Receive); ok { @@ -213,24 +226,24 @@ func (l *Library) GetReceive() *Receive { // Currently, it returns an empty Contract and needs to be implemented. func (l *Library) ToProto() NodeType { proto := ast_pb.Contract{ - Id: l.Id, - NodeType: l.NodeType, - Kind: l.Kind, - Src: l.Src.ToProto(), - Name: l.Name, - Abstract: l.Abstract, - FullyImplemented: l.FullyImplemented, - LinearizedBaseContracts: l.LinearizedBaseContracts, - ContractDependencies: l.ContractDependencies, + Id: l.GetId(), + NodeType: l.GetType(), + Kind: l.GetKind(), + Src: l.GetSrc().ToProto(), + Name: l.GetName(), + Abstract: l.IsAbstract(), + FullyImplemented: l.IsFullyImplemented(), + LinearizedBaseContracts: l.GetLinearizedBaseContracts(), + ContractDependencies: l.GetContractDependencies(), Nodes: make([]*v3.TypedStruct, 0), BaseContracts: make([]*ast_pb.BaseContract, 0), } - for _, baseContract := range l.BaseContracts { + for _, baseContract := range l.GetBaseContracts() { proto.BaseContracts = append(proto.BaseContracts, baseContract.ToProto()) } - for _, node := range l.Nodes { + for _, node := range l.GetNodes() { proto.Nodes = append(proto.Nodes, node.ToProto().(*v3.TypedStruct)) } diff --git a/ast/marshaler.go b/ast/marshaler.go index 78fb134b..6c94e652 100644 --- a/ast/marshaler.go +++ b/ast/marshaler.go @@ -10,6 +10,10 @@ import ( "google.golang.org/protobuf/types/known/structpb" ) +// NewTypedStruct creates a new v3.TypedStruct instance based on the provided protoreflect.ProtoMessage and protoType. +// It marshals the given ProtoMessage into JSON, then unmarshals it into a structpb.Struct, and constructs a TypedStruct +// with the appropriate type URL and structpb.Value. +// It returns the created TypedStruct instance or nil in case of errors during marshaling or unmarshaling. func NewTypedStruct(m protoreflect.ProtoMessage, protoType string) *v3.TypedStruct { jsonBytes, err := protojson.Marshal(m) if err != nil { diff --git a/ast/member_access.go b/ast/member_access.go index cc7b0c64..b8fd1719 100644 --- a/ast/member_access.go +++ b/ast/member_access.go @@ -6,6 +6,8 @@ import ( "github.com/txpull/solgo/parser" ) +// MemberAccessExpression represents a member access expression node in the AST. +// It contains information about the accessed member, expression, type description, and related metadata. type MemberAccessExpression struct { *ASTBuilder @@ -23,6 +25,7 @@ type MemberAccessExpression struct { TypeDescription *TypeDescription `json:"type_description"` } +// NewMemberAccessExpression creates a new MemberAccessExpression instance with initial values. func NewMemberAccessExpression(b *ASTBuilder) *MemberAccessExpression { return &MemberAccessExpression{ ASTBuilder: b, @@ -39,58 +42,72 @@ func (m *MemberAccessExpression) SetReferenceDescriptor(refId int64, refDesc *Ty return true } +// GetId returns the ID of the MemberAccessExpression node. func (m *MemberAccessExpression) GetId() int64 { return m.Id } +// GetType returns the NodeType of the MemberAccessExpression node. func (m *MemberAccessExpression) GetType() ast_pb.NodeType { return m.NodeType } +// GetSrc returns the source information of the MemberAccessExpression node. func (m *MemberAccessExpression) GetSrc() SrcNode { return m.Src } +// GetExpression returns the expression being accessed in the member access. func (m *MemberAccessExpression) GetExpression() Node[NodeType] { return m.Expression } +// GetMemberName returns the name of the accessed member. func (m *MemberAccessExpression) GetMemberName() string { return m.MemberName } +// GetTypeDescription returns the type description associated with the member access. func (m *MemberAccessExpression) GetTypeDescription() *TypeDescription { return m.TypeDescription } +// GetArgumentTypes returns the type descriptions of arguments in case of function call member access. func (m *MemberAccessExpression) GetArgumentTypes() []*TypeDescription { return m.ArgumentTypes } +// GetNodes returns the list of child nodes of the MemberAccessExpression node. func (m *MemberAccessExpression) GetNodes() []Node[NodeType] { return []Node[NodeType]{m.Expression} } +// GetReferencedDeclaration returns the ID of the referenced declaration in the context of member access. func (m *MemberAccessExpression) GetReferencedDeclaration() int64 { return m.ReferencedDeclaration } +// IsConstant returns whether the member access is constant. func (m *MemberAccessExpression) IsConstant() bool { return m.Constant } +// IsLValue returns whether the member access is an l-value. func (m *MemberAccessExpression) IsLValue() bool { return m.LValue } +// IsPure returns whether the member access is pure. func (m *MemberAccessExpression) IsPure() bool { return m.Pure } +// IsLValueRequested returns whether an l-value is requested in the context of member access. func (m *MemberAccessExpression) IsLValueRequested() bool { return m.LValueRequested } +// ToProto converts the MemberAccessExpression node to its corresponding protobuf representation. func (m *MemberAccessExpression) ToProto() NodeType { proto := ast_pb.MemberAccess{ Id: m.GetId(), @@ -114,6 +131,7 @@ func (m *MemberAccessExpression) ToProto() NodeType { return NewTypedStruct(&proto, "MemberAccess") } +// Parse populates the MemberAccessExpression node based on the provided context and other information. func (m *MemberAccessExpression) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], @@ -145,6 +163,7 @@ func (m *MemberAccessExpression) Parse( m.NodeType = ast_pb.NodeType_MEMBER_ACCESS m.MemberName = ctx.Identifier().GetText() + // Parsing the expression in the member access. if ctx.Expression() != nil { expression := NewExpression(m.ASTBuilder) m.Expression = expression.Parse( @@ -153,9 +172,22 @@ func (m *MemberAccessExpression) Parse( m.TypeDescription = m.Expression.GetTypeDescription() - // Forward type declaration for non magic messages... - // That's why we have nil check here. Magic messages will still be set - // as they are calculated in TypeName. + // Handling edge case in type discovery. + if m.Expression != nil && m.Expression.GetTypeDescription() == nil { + if refId, refTypeDescription := m.GetResolver().ResolveByNode(m, m.MemberName); refTypeDescription != nil { + m.ReferencedDeclaration = refId + m.TypeDescription = refTypeDescription + } else { + if primary, ok := m.Expression.(*PrimaryExpression); ok { + if refId, refTypeDescription := m.GetResolver().ResolveByNode(primary, primary.GetName()); refTypeDescription != nil { + m.ReferencedDeclaration = refId + m.TypeDescription = refTypeDescription + } + } + } + } + + // Forward type declaration for specific cases. if m.TypeDescription != nil { if m.TypeDescription.TypeIdentifier == "t_magic_message" { switch m.MemberName { @@ -194,6 +226,7 @@ func (m *MemberAccessExpression) Parse( } } + // Handling function call argument types. if expNode != nil { if expNode.GetType() == ast_pb.NodeType_FUNCTION_CALL { fcNode := expNode.(*FunctionCall) diff --git a/ast/meta_type.go b/ast/meta_type.go index 0401a633..82f397d6 100644 --- a/ast/meta_type.go +++ b/ast/meta_type.go @@ -5,17 +5,19 @@ import ( "github.com/txpull/solgo/parser" ) +// MetaType represents a meta-type node in the abstract syntax tree. type MetaType struct { *ASTBuilder - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Name string `json:"name"` - Src SrcNode `json:"src"` - ReferencedDeclaration int64 `json:"referenced_declaration,omitempty"` - TypeDescription *TypeDescription `json:"type_description"` + Id int64 `json:"id"` // Unique identifier of the meta-type node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node. + Name string `json:"name"` // Name of the meta-type. + Src SrcNode `json:"src"` // Source location information. + ReferencedDeclaration int64 `json:"referenced_declaration,omitempty"` // Referenced declaration identifier. + TypeDescription *TypeDescription `json:"type_description"` // Type description of the meta-type. } +// NewMetaTypeExpression creates a new instance of MetaType with the provided ASTBuilder. func NewMetaTypeExpression(b *ASTBuilder) *MetaType { return &MetaType{ ASTBuilder: b, @@ -24,41 +26,49 @@ func NewMetaTypeExpression(b *ASTBuilder) *MetaType { } } -// SetReferenceDescriptor sets the reference descriptions of the MetaType node. +// SetReferenceDescriptor sets the reference descriptors of the MetaType node. func (m *MetaType) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { m.ReferencedDeclaration = refId m.TypeDescription = refDesc return false } +// GetId returns the unique identifier of the meta-type node. func (m *MetaType) GetId() int64 { return m.Id } +// GetType returns the type of the node. func (m *MetaType) GetType() ast_pb.NodeType { return m.NodeType } +// GetSrc returns the source location information of the meta-type node. func (m *MetaType) GetSrc() SrcNode { return m.Src } +// GetName returns the name of the meta-type. func (m *MetaType) GetName() string { return m.Name } +// GetTypeDescription returns the type description of the meta-type. func (m *MetaType) GetTypeDescription() *TypeDescription { return m.TypeDescription } +// GetNodes returns a slice of nodes associated with the meta-type. func (m *MetaType) GetNodes() []Node[NodeType] { - return nil + return []Node[NodeType]{} } +// GetReferencedDeclaration returns the referenced declaration identifier of the meta-type. func (m *MetaType) GetReferencedDeclaration() int64 { return m.ReferencedDeclaration } +// ToProto converts the MetaType node to its corresponding protobuf representation. func (m *MetaType) ToProto() NodeType { proto := ast_pb.MetaType{ Id: m.GetId(), @@ -72,6 +82,7 @@ func (m *MetaType) ToProto() NodeType { return NewTypedStruct(&proto, "MetaType") } +// Parse parses the meta-type context and populates the MetaType fields. func (m *MetaType) Parse(unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], fnNode Node[NodeType], diff --git a/ast/modifier.go b/ast/modifier.go index 4f3e6cb0..8e13c584 100644 --- a/ast/modifier.go +++ b/ast/modifier.go @@ -5,19 +5,21 @@ import ( "github.com/txpull/solgo/parser" ) +// ModifierDefinition represents a modifier definition node in the abstract syntax tree. type ModifierDefinition struct { *ASTBuilder - Id int64 `json:"id"` - Name string `json:"name"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - Visibility ast_pb.Visibility `json:"visibility"` - Virtual bool `json:"virtual"` - Parameters *ParameterList `json:"parameters"` - Body *BodyNode `json:"body"` + Id int64 `json:"id"` // Unique identifier of the modifier definition node. + Name string `json:"name"` // Name of the modifier. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node. + Src SrcNode `json:"src"` // Source location information. + Visibility ast_pb.Visibility `json:"visibility"` // Visibility of the modifier. + Virtual bool `json:"virtual"` // Indicates if the modifier is virtual. + Parameters *ParameterList `json:"parameters"` // List of parameters for the modifier. + Body *BodyNode `json:"body"` // Body node of the modifier. } +// NewModifierDefinition creates a new instance of ModifierDefinition with the provided ASTBuilder. func NewModifierDefinition(b *ASTBuilder) *ModifierDefinition { return &ModifierDefinition{ ASTBuilder: b, @@ -27,51 +29,65 @@ func NewModifierDefinition(b *ASTBuilder) *ModifierDefinition { } } -// SetReferenceDescriptor sets the reference descriptions of the ModifierDefinition node. +// SetReferenceDescriptor sets the reference descriptors of the ModifierDefinition node. func (m *ModifierDefinition) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { return false } +// GetId returns the unique identifier of the modifier definition node. func (m *ModifierDefinition) GetId() int64 { return m.Id } +// GetType returns the type of the node. func (m *ModifierDefinition) GetType() ast_pb.NodeType { return m.NodeType } +// GetSrc returns the source location information of the modifier definition node. func (m *ModifierDefinition) GetSrc() SrcNode { return m.Src } +// GetName returns the name of the modifier. func (m *ModifierDefinition) GetName() string { return m.Name } +// GetTypeDescription returns the type description of the modifier definition. func (m *ModifierDefinition) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "modifier", + TypeIdentifier: "$_t_modifier", + } } +// GetNodes returns a list of nodes associated with the modifier definition (body statements). func (m *ModifierDefinition) GetNodes() []Node[NodeType] { return m.Body.GetNodes() } +// IsVirtual returns true if the modifier is virtual. func (m *ModifierDefinition) IsVirtual() bool { return m.Virtual } +// GetVisibility returns the visibility of the modifier. func (m *ModifierDefinition) GetVisibility() ast_pb.Visibility { return m.Visibility } +// GetParameters returns the parameter list of the modifier. func (m *ModifierDefinition) GetParameters() *ParameterList { return m.Parameters } +// GetBody returns the body node of the modifier. func (m *ModifierDefinition) GetBody() *BodyNode { return m.Body } +// ToProto converts the ModifierDefinition node to its corresponding protobuf representation. func (m *ModifierDefinition) ToProto() NodeType { proto := ast_pb.Modifier{ Id: m.GetId(), @@ -87,6 +103,7 @@ func (m *ModifierDefinition) ToProto() NodeType { return NewTypedStruct(&proto, "Modifier") } +// ParseDefinition parses the modifier definition context and populates the ModifierDefinition fields. func (m *ModifierDefinition) ParseDefinition( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/modifier_invocation.go b/ast/modifier_invocation.go index d8fabb24..4794c941 100644 --- a/ast/modifier_invocation.go +++ b/ast/modifier_invocation.go @@ -6,13 +6,15 @@ import ( "github.com/txpull/solgo/parser" ) +// ModifierName represents the name of a modifier in the abstract syntax tree. type ModifierName struct { - Id int64 `json:"id"` - Name string `json:"name"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` + Id int64 `json:"id"` // Unique identifier of the modifier name node. + Name string `json:"name"` // Name of the modifier. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node. + Src SrcNode `json:"src"` // Source location information. } +// ToProto converts the ModifierName node to its corresponding protobuf representation. func (m *ModifierName) ToProto() *ast_pb.ModifierName { return &ast_pb.ModifierName{ Id: m.Id, @@ -22,19 +24,21 @@ func (m *ModifierName) ToProto() *ast_pb.ModifierName { } } +// ModifierInvocation represents a modifier invocation node in the abstract syntax tree. type ModifierInvocation struct { *ASTBuilder - Id int64 `json:"id"` - Name string `json:"name"` - NodeType ast_pb.NodeType `json:"node_type"` - Kind ast_pb.NodeType `json:"kind"` - Src SrcNode `json:"src"` - ArgumentTypes []*TypeDescription `json:"argument_types"` - Arguments []Node[NodeType] `json:"arguments"` - ModifierName *ModifierName `json:"modifier_name,omitempty"` + Id int64 `json:"id"` // Unique identifier of the modifier invocation node. + Name string `json:"name"` // Name of the modifier invocation. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node. + Kind ast_pb.NodeType `json:"kind"` // Kind of the modifier invocation. + Src SrcNode `json:"src"` // Source location information. + ArgumentTypes []*TypeDescription `json:"argument_types"` // Types of the arguments. + Arguments []Node[NodeType] `json:"arguments"` // Argument nodes. + ModifierName *ModifierName `json:"modifier_name,omitempty"` // Modifier name node. } +// NewModifierInvocation creates a new instance of ModifierInvocation with the provided ASTBuilder. func NewModifierInvocation(b *ASTBuilder) *ModifierInvocation { return &ModifierInvocation{ ASTBuilder: b, @@ -46,47 +50,57 @@ func NewModifierInvocation(b *ASTBuilder) *ModifierInvocation { } } -// SetReferenceDescriptor sets the reference descriptions of the ModifierInvocation node. +// SetReferenceDescriptor sets the reference descriptors of the ModifierInvocation node. func (m *ModifierInvocation) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { return false } +// GetId returns the unique identifier of the modifier invocation node. func (m *ModifierInvocation) GetId() int64 { return m.Id } +// GetType returns the type of the node. func (m *ModifierInvocation) GetType() ast_pb.NodeType { return m.NodeType } +// GetKind returns the kind of the modifier invocation. func (m *ModifierInvocation) GetKind() ast_pb.NodeType { return m.Kind } +// GetSrc returns the source location information of the modifier invocation node. func (m *ModifierInvocation) GetSrc() SrcNode { return m.Src } +// GetName returns the name of the modifier invocation. func (m *ModifierInvocation) GetName() string { return m.Name } +// GetTypeDescription returns the type description of the modifier invocation (returns nil). func (m *ModifierInvocation) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{} } +// GetNodes returns a slice of nodes associated with the modifier invocation (arguments). func (m *ModifierInvocation) GetNodes() []Node[NodeType] { return m.Arguments } +// GetArguments returns a slice of argument nodes of the modifier invocation. func (m *ModifierInvocation) GetArguments() []Node[NodeType] { return m.Arguments } +// GetArgumentTypes returns a slice of argument types of the modifier invocation. func (m *ModifierInvocation) GetArgumentTypes() []*TypeDescription { return m.ArgumentTypes } +// ToProto converts the ModifierInvocation node to its corresponding protobuf representation. func (m *ModifierInvocation) ToProto() NodeType { toReturn := &ast_pb.ModifierInvocation{ Id: m.GetId(), @@ -114,6 +128,7 @@ func (m *ModifierInvocation) ToProto() NodeType { return toReturn } +// Parse parses the modifier invocation context and populates the ModifierInvocation fields. func (m *ModifierInvocation) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/new.go b/ast/new.go index ac0c1859..341147b2 100644 --- a/ast/new.go +++ b/ast/new.go @@ -5,6 +5,8 @@ import ( "github.com/txpull/solgo/parser" ) +// NewExpr represents a new expression node in the AST. +// It contains information about the type being instantiated, type description, and related metadata. type NewExpr struct { *ASTBuilder @@ -17,6 +19,7 @@ type NewExpr struct { TypeDescription *TypeDescription `json:"type_description"` } +// NewExprExpression creates a new NewExpr instance with initial values. func NewExprExpression(b *ASTBuilder) *NewExpr { return &NewExpr{ ASTBuilder: b, @@ -27,44 +30,55 @@ func NewExprExpression(b *ASTBuilder) *NewExpr { } // SetReferenceDescriptor sets the reference descriptions of the NewExpr node. -func (m *NewExpr) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { - m.ReferencedDeclaration = refId - m.TypeDescription = refDesc +func (n *NewExpr) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { + n.ReferencedDeclaration = refId + n.TypeDescription = refDesc return false } +// GetId returns the ID of the NewExpr node. func (n *NewExpr) GetId() int64 { return n.Id } +// GetType returns the NodeType of the NewExpr node. func (n *NewExpr) GetType() ast_pb.NodeType { return n.NodeType } +// GetSrc returns the source information of the NewExpr node. func (n *NewExpr) GetSrc() SrcNode { return n.Src } +// GetArgumentTypes returns the type descriptions of arguments in the new expression. func (n *NewExpr) GetArgumentTypes() []*TypeDescription { return n.ArgumentTypes } +// GetTypeName returns the type name associated with the new expression. func (n *NewExpr) GetTypeName() *TypeName { return n.TypeName } +// GetTypeDescription returns the type description associated with the new expression. func (n *NewExpr) GetTypeDescription() *TypeDescription { return n.TypeDescription } +// GetNodes returns the list of child nodes of the NewExpr node. func (n *NewExpr) GetNodes() []Node[NodeType] { - return nil + return []Node[NodeType]{ + n.GetTypeName(), + } } +// GetReferencedDeclaration returns the ID of the referenced declaration in the context of new expression. func (n *NewExpr) GetReferencedDeclaration() int64 { return n.ReferencedDeclaration } +// ToProto converts the NewExpr node to its corresponding protobuf representation. func (n *NewExpr) ToProto() NodeType { protos := ast_pb.NewExpression{ Id: n.GetId(), @@ -83,6 +97,7 @@ func (n *NewExpr) ToProto() NodeType { return NewTypedStruct(&protos, "NewExpression") } +// Parse populates the NewExpr node based on the provided context and other information. func (n *NewExpr) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], @@ -112,6 +127,7 @@ func (n *NewExpr) Parse( }(), } + // Parsing the type name associated with the new expression. typeName := NewTypeName(n.ASTBuilder) typeName.Parse(unit, fnNode, n.GetId(), ctx.TypeName()) n.TypeName = typeName diff --git a/ast/node.go b/ast/node.go index cdc42546..d60e295c 100644 --- a/ast/node.go +++ b/ast/node.go @@ -2,6 +2,7 @@ package ast import ast_pb "github.com/txpull/protos/dist/go/ast" +// Node is an interface that defines methods common to all AST nodes. type Node[T NodeType] interface { GetId() int64 GetType() ast_pb.NodeType @@ -12,7 +13,9 @@ type Node[T NodeType] interface { SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool } +// NodeType is an alias type that represents the union of various AST node types. type NodeType interface { + // List of supported AST node types. ast_pb.Pragma | ast_pb.Import | ast_pb.Modifier | ast_pb.SourceUnit | ast_pb.Function | ast_pb.Contract | ast_pb.Statement | ast_pb.Body | ast_pb.Variable | ast_pb.PrimaryExpression | ast_pb.Expression | ast_pb.Using | diff --git a/ast/override.go b/ast/override.go index 6fe7600f..90939f24 100644 --- a/ast/override.go +++ b/ast/override.go @@ -6,62 +6,68 @@ import ( "go.uber.org/zap" ) +// OverrideSpecifier represents an override specifier node in the abstract syntax tree. type OverrideSpecifier struct { *ASTBuilder - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Name string `json:"name"` - Src SrcNode `json:"src"` - ReferencedDeclaration int64 `json:"referenced_declaration"` - TypeDescription *TypeDescription `json:"type_descriptions"` + Id int64 `json:"id"` // Unique identifier of the override specifier node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node. + Name string `json:"name"` // Name of the overridden identifier. + Src SrcNode `json:"src"` // Source location information. + ReferencedDeclaration int64 `json:"referenced_declaration"` // Referenced declaration identifier. + TypeDescription *TypeDescription `json:"type_descriptions"` // Type description of the override specifier. } +// NewOverrideSpecifier creates a new instance of OverrideSpecifier with the provided ASTBuilder. func NewOverrideSpecifier(b *ASTBuilder) *OverrideSpecifier { return &OverrideSpecifier{ ASTBuilder: b, } } -// SetReferenceDescriptor sets the reference descriptor +// SetReferenceDescriptor sets the reference descriptor of the OverrideSpecifier. func (o *OverrideSpecifier) SetReferenceDescriptor(refId int64, refType *TypeDescription) bool { o.ReferencedDeclaration = refId o.TypeDescription = refType return true } +// GetId returns the unique identifier of the override specifier node. func (o *OverrideSpecifier) GetId() int64 { return o.Id } +// GetType returns the type of the node. func (o *OverrideSpecifier) GetType() ast_pb.NodeType { return o.NodeType } +// GetSrc returns the source location information of the override specifier node. func (o *OverrideSpecifier) GetSrc() SrcNode { return o.Src } +// GetNodes returns an empty slice of nodes associated with the override specifier. func (o *OverrideSpecifier) GetNodes() []Node[NodeType] { - return nil + return []Node[NodeType]{} } -// GetTypeDescription returns the type description +// GetTypeDescription returns the type description of the override specifier. func (o *OverrideSpecifier) GetTypeDescription() *TypeDescription { return o.TypeDescription } -// GetReferencedDeclaration returns the referenced declaration +// GetReferencedDeclaration returns the referenced declaration identifier of the override specifier. func (o *OverrideSpecifier) GetReferencedDeclaration() int64 { return o.ReferencedDeclaration } -// GetName returns the name of the identifier that is being overridden +// GetName returns the name of the identifier that is being overridden. func (o *OverrideSpecifier) GetName() string { return o.Name } -// ToProto converts the node to its proto representation +// ToProto converts the OverrideSpecifier node to its corresponding protobuf representation. func (o *OverrideSpecifier) ToProto() NodeType { return &ast_pb.OverrideSpecifier{ Id: o.GetId(), @@ -73,6 +79,7 @@ func (o *OverrideSpecifier) ToProto() NodeType { } } +// Parse parses the override specifier context and populates the OverrideSpecifier fields. func (o *OverrideSpecifier) Parse(unit *SourceUnit[Node[ast_pb.SourceUnit]], fnNode Node[NodeType], ctx parser.IOverrideSpecifierContext) { o.Id = o.GetNextID() o.Src = SrcNode{ diff --git a/ast/parameter.go b/ast/parameter.go index d678a03c..a607f457 100644 --- a/ast/parameter.go +++ b/ast/parameter.go @@ -5,24 +5,26 @@ import ( "github.com/txpull/solgo/parser" ) +// Parameter represents a parameter node in the abstract syntax tree. type Parameter struct { *ASTBuilder - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - Scope int64 `json:"scope,omitempty"` - Name string `json:"name"` - TypeName *TypeName `json:"type_name,omitempty"` - StorageLocation ast_pb.StorageLocation `json:"storage_location,omitempty"` - Visibility ast_pb.Visibility `json:"visibility,omitempty"` - StateMutability ast_pb.Mutability `json:"state_mutability,omitempty"` - Constant bool `json:"constant,omitempty"` - StateVariable bool `json:"state_variable,omitempty"` - TypeDescription *TypeDescription `json:"type_description,omitempty"` - Indexed bool `json:"indexed,omitempty"` + Id int64 `json:"id"` // Unique identifier of the parameter node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node. + Src SrcNode `json:"src"` // Source location information. + Scope int64 `json:"scope,omitempty"` // Scope of the parameter. + Name string `json:"name"` // Name of the parameter. + TypeName *TypeName `json:"type_name,omitempty"` // Type name of the parameter. + StorageLocation ast_pb.StorageLocation `json:"storage_location,omitempty"` // Storage location of the parameter. + Visibility ast_pb.Visibility `json:"visibility,omitempty"` // Visibility of the parameter. + StateMutability ast_pb.Mutability `json:"state_mutability,omitempty"` // State mutability of the parameter. + Constant bool `json:"constant,omitempty"` // Whether the parameter is constant. + StateVariable bool `json:"state_variable,omitempty"` // Whether the parameter is a state variable. + TypeDescription *TypeDescription `json:"type_description,omitempty"` // Type description of the parameter. + Indexed bool `json:"indexed,omitempty"` // Whether the parameter is indexed. } +// NewParameter creates a new instance of Parameter with the provided ASTBuilder. func NewParameter(b *ASTBuilder) *Parameter { return &Parameter{ ASTBuilder: b, @@ -32,75 +34,89 @@ func NewParameter(b *ASTBuilder) *Parameter { } } -// SetReferenceDescriptor sets the reference descriptions of the Parameter node. +// SetReferenceDescriptor sets the reference descriptors of the Parameter node. func (p *Parameter) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { return false } +// GetId returns the unique identifier of the parameter node. func (p *Parameter) GetId() int64 { return p.Id } +// GetType returns the type of the node. func (p *Parameter) GetType() ast_pb.NodeType { return p.NodeType } +// GetSrc returns the source location information of the parameter node. func (p *Parameter) GetSrc() SrcNode { return p.Src } +// GetName returns the name of the parameter. func (p *Parameter) GetName() string { return p.Name } +// GetScope returns the scope of the parameter. func (p *Parameter) GetScope() int64 { return p.Id } +// GetTypeDescription returns the type description of the parameter. func (p *Parameter) GetTypeDescription() *TypeDescription { - // Enum value type can have type name as nil if p.TypeName != nil { return p.TypeName.TypeDescription } return p.TypeDescription } +// GetVisibility returns the visibility of the parameter. func (p *Parameter) GetVisibility() ast_pb.Visibility { return p.Visibility } +// GetStateMutability returns the state mutability of the parameter. func (p *Parameter) GetStateMutability() ast_pb.Mutability { return p.StateMutability } +// GetStorageLocation returns the storage location of the parameter. func (p *Parameter) GetStorageLocation() ast_pb.StorageLocation { return p.StorageLocation } +// IsConstant returns whether the parameter is constant. func (p *Parameter) IsConstant() bool { return p.Constant } +// IsStateVariable returns whether the parameter is a state variable. func (p *Parameter) IsStateVariable() bool { return p.StateVariable } +// GetTypeName returns the type name of the parameter. func (p *Parameter) GetTypeName() *TypeName { return p.TypeName } +// IsIndexed returns whether the parameter is indexed. func (p *Parameter) IsIndexed() bool { return p.Indexed } +// GetNodes returns a slice of nodes associated with the parameter. func (p *Parameter) GetNodes() []Node[NodeType] { if p.TypeName != nil { return []Node[NodeType]{p.TypeName} } - return nil + return []Node[NodeType]{} } +// ToProto converts the Parameter node to its corresponding protobuf representation. func (p *Parameter) ToProto() NodeType { toReturn := &ast_pb.Parameter{ Id: p.GetId(), @@ -127,6 +143,7 @@ func (p *Parameter) ToProto() NodeType { return toReturn } +// Parse parses the parameter declaration context and populates the Parameter fields. func (p *Parameter) Parse(unit *SourceUnit[Node[ast_pb.SourceUnit]], fnNode Node[NodeType], plNode Node[*ast_pb.ParameterList], ctx *parser.ParameterDeclarationContext) { p.Id = p.GetNextID() p.Src = SrcNode{ @@ -159,8 +176,10 @@ func (p *Parameter) Parse(unit *SourceUnit[Node[ast_pb.SourceUnit]], fnNode Node } p.TypeName = typeName + p.currentVariables = append(p.currentVariables, p) } +// ParseEventParameter parses the event parameter context and populates the Parameter fields for event parameters. func (p *Parameter) ParseEventParameter(unit *SourceUnit[Node[ast_pb.SourceUnit]], fnNode Node[NodeType], plNode Node[*ast_pb.ParameterList], ctx parser.IEventParameterContext) { p.Id = p.GetNextID() p.Src = SrcNode{ @@ -194,8 +213,10 @@ func (p *Parameter) ParseEventParameter(unit *SourceUnit[Node[ast_pb.SourceUnit] } p.TypeName = typeName + p.currentVariables = append(p.currentVariables, p) } +// ParseStructParameter parses the struct parameter context and populates the Parameter fields for struct members. func (p *Parameter) ParseStructParameter(unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], structNode *StructDefinition, ctx parser.IStructMemberContext) { p.Id = p.GetNextID() p.Src = SrcNode{ @@ -213,8 +234,6 @@ func (p *Parameter) ParseStructParameter(unit *SourceUnit[Node[ast_pb.SourceUnit p.Name = ctx.Identifier().GetText() } - //p.StorageLocation = p.getStorageLocationFromCtx(ctx) - typeName := NewTypeName(p.ASTBuilder) typeName.Parse(unit, contractNode, p.GetId(), ctx.TypeName()) @@ -228,8 +247,10 @@ func (p *Parameter) ParseStructParameter(unit *SourceUnit[Node[ast_pb.SourceUnit } p.TypeName = typeName + p.currentVariables = append(p.currentVariables, p) } +// ParseErrorParameter parses the error parameter context and populates the Parameter fields for error definitions. func (p *Parameter) ParseErrorParameter(unit *SourceUnit[Node[ast_pb.SourceUnit]], fnNode Node[NodeType], plNode Node[*ast_pb.ParameterList], ctx parser.IErrorParameterContext) { p.Id = p.GetNextID() p.Src = SrcNode{ @@ -262,8 +283,10 @@ func (p *Parameter) ParseErrorParameter(unit *SourceUnit[Node[ast_pb.SourceUnit] } p.TypeName = typeName + p.currentVariables = append(p.currentVariables, p) } +// getStorageLocationFromCtx extracts the storage location information from the parameter declaration context. func (p *Parameter) getStorageLocationFromCtx(ctx *parser.ParameterDeclarationContext) ast_pb.StorageLocation { storageLocationMap := map[string]ast_pb.StorageLocation{ "memory": ast_pb.StorageLocation_MEMORY, diff --git a/ast/parameter_list.go b/ast/parameter_list.go index c3350ea0..2cc018bc 100644 --- a/ast/parameter_list.go +++ b/ast/parameter_list.go @@ -5,6 +5,7 @@ import ( "github.com/txpull/solgo/parser" ) +// ParameterList represents a list of function or event parameters in the AST. type ParameterList struct { *ASTBuilder @@ -15,6 +16,7 @@ type ParameterList struct { ParameterTypes []*TypeDescription `json:"parameter_types"` } +// NewParameterList creates a new instance of ParameterList using the provided ASTBuilder. func NewParameterList(b *ASTBuilder) *ParameterList { return &ParameterList{ ASTBuilder: b, @@ -30,30 +32,37 @@ func (p *ParameterList) SetReferenceDescriptor(refId int64, refDesc *TypeDescrip return false } +// GetId returns the ID of the ParameterList node. func (p *ParameterList) GetId() int64 { return p.Id } +// GetType returns the NodeType of the ParameterList node. func (p *ParameterList) GetType() ast_pb.NodeType { return p.NodeType } +// GetSrc returns the source information of the ParameterList node. func (p *ParameterList) GetSrc() SrcNode { return p.Src } +// GetTypeDescription returns the type description of the ParameterList node. func (p *ParameterList) GetTypeDescription() *TypeDescription { return nil } +// GetParameters returns the list of parameters in the ParameterList. func (p *ParameterList) GetParameters() []*Parameter { return p.Parameters } +// GetParameterTypes returns the list of parameter types in the ParameterList. func (p *ParameterList) GetParameterTypes() []*TypeDescription { return p.ParameterTypes } +// GetNodes returns a list of child nodes contained in the ParameterList. func (p *ParameterList) GetNodes() []Node[NodeType] { toReturn := make([]Node[NodeType], 0) @@ -64,6 +73,7 @@ func (p *ParameterList) GetNodes() []Node[NodeType] { return toReturn } +// ToProto converts the ParameterList into its corresponding Protocol Buffers representation. func (p *ParameterList) ToProto() *ast_pb.ParameterList { toReturn := &ast_pb.ParameterList{ Id: p.GetId(), @@ -81,6 +91,7 @@ func (p *ParameterList) ToProto() *ast_pb.ParameterList { return toReturn } +// Parse parses the ParameterList node from the provided context. func (p *ParameterList) Parse(unit *SourceUnit[Node[ast_pb.SourceUnit]], fNode Node[NodeType], ctx parser.IParameterListContext) { p.Src = SrcNode{ Id: p.GetNextID(), @@ -105,6 +116,7 @@ func (p *ParameterList) Parse(unit *SourceUnit[Node[ast_pb.SourceUnit]], fNode N } } +// ParseEventParameters parses event parameters from the provided context. func (p *ParameterList) ParseEventParameters(unit *SourceUnit[Node[ast_pb.SourceUnit]], eNode Node[NodeType], ctx []parser.IEventParameterContext) { p.Src = eNode.GetSrc() p.Src.ParentIndex = eNode.GetId() @@ -117,6 +129,7 @@ func (p *ParameterList) ParseEventParameters(unit *SourceUnit[Node[ast_pb.Source } } +// ParseErrorParameters parses error parameters from the provided context. func (p *ParameterList) ParseErrorParameters(unit *SourceUnit[Node[ast_pb.SourceUnit]], eNode Node[NodeType], ctx []parser.IErrorParameterContext) { p.Src = eNode.GetSrc() p.Src.ParentIndex = eNode.GetId() diff --git a/ast/payable_conversion.go b/ast/payable_conversion.go index a9623771..1db6050b 100644 --- a/ast/payable_conversion.go +++ b/ast/payable_conversion.go @@ -9,6 +9,7 @@ import ( "github.com/txpull/solgo/parser" ) +// PayableConversion represents a payable conversion expression in the AST. type PayableConversion struct { *ASTBuilder @@ -22,6 +23,7 @@ type PayableConversion struct { Payable bool `json:"payable"` } +// NewPayableConversionExpression creates a new instance of PayableConversion using the provided ASTBuilder. func NewPayableConversionExpression(b *ASTBuilder) *PayableConversion { return &PayableConversion{ ASTBuilder: b, @@ -39,42 +41,52 @@ func (p *PayableConversion) SetReferenceDescriptor(refId int64, refDesc *TypeDes return false } +// GetId returns the ID of the PayableConversion node. func (p *PayableConversion) GetId() int64 { return p.Id } +// GetType returns the NodeType of the PayableConversion node. func (p *PayableConversion) GetType() ast_pb.NodeType { return p.NodeType } +// GetSrc returns the source information of the PayableConversion node. func (p *PayableConversion) GetSrc() SrcNode { return p.Src } +// GetTypeDescription returns the type description of the PayableConversion node. func (p *PayableConversion) GetTypeDescription() *TypeDescription { return p.TypeDescription } +// GetArgumentTypes returns the list of argument types in the PayableConversion node. func (p *PayableConversion) GetArgumentTypes() []*TypeDescription { return p.ArgumentTypes } +// GetArguments returns the list of arguments in the PayableConversion node. func (p *PayableConversion) GetArguments() []Node[NodeType] { return p.Arguments } +// IsPayable returns whether the PayableConversion is marked as payable. func (p *PayableConversion) IsPayable() bool { return p.Payable } +// GetNodes returns a list of child nodes contained in the PayableConversion. func (p *PayableConversion) GetNodes() []Node[NodeType] { return p.Arguments } +// GetReferencedDeclaration returns the ID of the referenced declaration. func (p *PayableConversion) GetReferencedDeclaration() int64 { return p.ReferencedDeclaration } +// ToProto converts the PayableConversion into its corresponding Protocol Buffers representation. func (p *PayableConversion) ToProto() NodeType { proto := ast_pb.PayableConversion{ Id: p.GetId(), @@ -97,6 +109,7 @@ func (p *PayableConversion) ToProto() NodeType { return NewTypedStruct(&proto, "PayableConversion") } +// Parse parses the PayableConversion node from the provided context. func (p *PayableConversion) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/pragma.go b/ast/pragma.go index 8ed6ca81..7f840505 100644 --- a/ast/pragma.go +++ b/ast/pragma.go @@ -45,7 +45,7 @@ func (p *Pragma) GetSrc() SrcNode { // GetTypeDescription returns the type description of the node. For a Pragma, this is always nil. func (p *Pragma) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{} } // GetLiterals returns a slice of strings that represent the literals of the pragma directive. @@ -60,16 +60,17 @@ func (p *Pragma) GetText() string { // GetNodes returns the child nodes of the node. For a Pragma, this is always nil. func (p *Pragma) GetNodes() []Node[NodeType] { - return nil + return []Node[NodeType]{} } // ToProto returns the protobuf representation of the node. func (p *Pragma) ToProto() NodeType { proto := ast_pb.Pragma{ - Id: p.Id, - NodeType: p.NodeType, - Src: p.Src.ToProto(), - Literals: p.Literals, + Id: p.GetId(), + NodeType: p.GetType(), + Src: p.GetSrc().ToProto(), + Literals: p.GetLiterals(), + Text: p.GetText(), } return NewTypedStruct(&proto, "Pragma") diff --git a/ast/primary_expression.go b/ast/primary_expression.go index 9c3a76cb..ea0c0a5b 100644 --- a/ast/primary_expression.go +++ b/ast/primary_expression.go @@ -46,7 +46,7 @@ func NewPrimaryExpression(b *ASTBuilder) *PrimaryExpression { func (p *PrimaryExpression) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { p.ReferencedDeclaration = refId p.TypeDescription = refDesc - return false + return true } // GetId returns the unique identifier of the PrimaryExpression node. @@ -86,7 +86,11 @@ func (p *PrimaryExpression) GetReferencedDeclaration() int64 { // GetNodes returns a slice of nodes that includes the expression of the PrimaryExpression node. func (p *PrimaryExpression) GetNodes() []Node[NodeType] { - return nil + if p.TypeName != nil { + return []Node[NodeType]{p.TypeName} + } + + return []Node[NodeType]{} } // GetKind returns the kind of the PrimaryExpression node. @@ -250,9 +254,10 @@ func (p *PrimaryExpression) Parse( if ctx.ElementaryTypeName() != nil { typeName := NewTypeName(p.ASTBuilder) - typeName.ParseElementary(unit, fnNode, p.GetId(), ctx.ElementaryTypeName()) + typeName.ParseElementaryType(unit, fnNode, p.GetId(), ctx.ElementaryTypeName()) p.TypeName = typeName p.TypeDescription = typeName.GetTypeDescription() + p.Name = ctx.GetText() } if expNode != nil { @@ -261,6 +266,11 @@ func (p *PrimaryExpression) Parse( for _, argument := range expNodeCtx.GetArguments() { p.ArgumentTypes = append(p.ArgumentTypes, argument.GetTypeDescription()) } + + if p.TypeName != nil { + p.ArgumentTypes = append(p.ArgumentTypes, p.TypeName.GetTypeDescription()) + } + p.TypeDescription = p.buildArgumentTypeDescription() } } @@ -430,15 +440,121 @@ func (p *PrimaryExpression) Parse( } } + if fnNode != nil && p.TypeDescription == nil { + if fn, ok := fnNode.(*Function); ok { + for _, param := range fn.GetParameters().GetParameters() { + if param.GetName() == p.Name { + p.TypeDescription = param.GetTypeName().GetTypeDescription() + p.ReferencedDeclaration = fn.GetId() + break + } + } + } + + if fn, ok := fnNode.(*ForStatement); ok { + found := false + if varD, ok := fn.GetInitialiser().(*VariableDeclaration); ok { + for _, declar := range varD.GetDeclarations() { + if declar.GetName() == p.Name { + p.TypeDescription = declar.GetTypeName().GetTypeDescription() + p.ReferencedDeclaration = varD.GetId() + found = true + break + } + } + } + + // Seek the condition... + if !found { + if binOp, ok := fn.GetCondition().(*BinaryOperation); ok { + if left, ok := binOp.GetLeftExpression().(*PrimaryExpression); ok { + if left.GetName() == p.Name { + p.TypeDescription = left.GetTypeDescription() + p.ReferencedDeclaration = left.GetId() + found = true + } + } + + if p.TypeDescription == nil { + if right, ok := binOp.GetRightExpression().(*BinaryOperation); ok { + if left, ok := right.GetLeftExpression().(*MemberAccessExpression); ok { + if left.GetMemberName() == p.Name { + p.TypeDescription = left.GetTypeDescription() + p.ReferencedDeclaration = left.GetId() + found = true + } + + if p.TypeDescription == nil { + if left, ok := left.GetExpression().(*PrimaryExpression); ok { + if left.GetName() == p.Name { + p.TypeDescription = left.GetTypeDescription() + p.ReferencedDeclaration = left.GetId() + found = true + } + } + } + } + + if p.TypeDescription == nil { + if left, ok := right.GetRightExpression().(*PrimaryExpression); ok { + if left.GetName() == p.Name { + p.TypeDescription = left.GetTypeDescription() + p.ReferencedDeclaration = left.GetId() + found = true + } + } + } + } + } + } + } + } + } + + // If we still do not have type description set... Let's do one hack to search body node... + // @TODO: Improve this in the future to search recursively... + if bodyNode != nil && p.TypeDescription == nil { + for _, statement := range bodyNode.GetStatements() { + if expr, ok := statement.(*Assignment); ok { + for _, node := range expr.GetNodes() { + if pExpr, ok := node.(*PrimaryExpression); ok { + if pExpr.GetName() == p.Name { + p.TypeDescription = pExpr.GetTypeDescription() + p.ReferencedDeclaration = pExpr.GetId() + break + } + } + + for _, subnode := range node.GetNodes() { + if pExpr, ok := subnode.(*PrimaryExpression); ok { + if pExpr.GetName() == p.Name { + p.TypeDescription = pExpr.GetTypeDescription() + p.ReferencedDeclaration = pExpr.GetId() + break + } + } + } + } + } + } + } + return p } +// buildArgumentTypeDescription constructs and returns a TypeDescription for the PrimaryExpression's argument types. func (p *PrimaryExpression) buildArgumentTypeDescription() *TypeDescription { typeString := "function(" typeIdentifier := "t_function_" typeStrings := make([]string, 0) typeIdentifiers := make([]string, 0) + // If the PrimaryExpression is referring to "this", return the already set type description of the current expression scope. + if p.GetName() == "this" { + return p.GetTypeDescription() + } + + // Loop through the argument types and construct type strings and identifiers. for _, paramType := range p.GetArgumentTypes() { if paramType == nil { typeStrings = append(typeStrings, "unknown") @@ -450,7 +566,7 @@ func (p *PrimaryExpression) buildArgumentTypeDescription() *TypeDescription { typeIdentifiers = append(typeIdentifiers, "$_"+paramType.TypeIdentifier) } typeString += strings.Join(typeStrings, ",") + ")" - typeIdentifier += strings.Join(typeIdentifiers, "$") + typeIdentifier += strings.Join(typeIdentifiers, "$") + "$" return &TypeDescription{ TypeString: typeString, diff --git a/ast/receive.go b/ast/receive.go index 82bec9c7..ea76cf58 100644 --- a/ast/receive.go +++ b/ast/receive.go @@ -1,29 +1,31 @@ package ast import ( - ast_pb "github.com/txpull/protos/dist/go/ast" - "github.com/txpull/solgo/parser" + ast_pb "github.com/txpull/protos/dist/go/ast" // Import for AST protocol buffer definitions. + "github.com/txpull/solgo/parser" // Import for the solgo parser. ) +// Receive represents a receive function definition node in the abstract syntax tree (AST). +// It encapsulates information about the characteristics and properties of a receive function within a contract. type Receive struct { - *ASTBuilder - - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Kind ast_pb.NodeType `json:"kind"` - Src SrcNode `json:"src"` - Implemented bool `json:"implemented"` - Visibility ast_pb.Visibility `json:"visibility"` - StateMutability ast_pb.Mutability `json:"state_mutability"` - Modifiers []*ModifierInvocation `json:"modifiers"` - Overrides []*OverrideSpecifier `json:"overrides"` - Parameters *ParameterList `json:"parameters"` - ReturnParameters *ParameterList `json:"return_parameters"` - Body *BodyNode `json:"body"` - Virtual bool `json:"virtual"` - Payable bool `json:"payable"` -} - + *ASTBuilder // Embedded ASTBuilder for building the AST. + Id int64 `json:"id"` // Unique identifier for the Receive node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the AST node. + Kind ast_pb.NodeType `json:"kind"` // Kind of the receive function. + Src SrcNode `json:"src"` // Source location information. + Implemented bool `json:"implemented"` // Indicates whether the function is implemented. + Visibility ast_pb.Visibility `json:"visibility"` // Visibility of the receive function. + StateMutability ast_pb.Mutability `json:"state_mutability"` // State mutability of the receive function. + Modifiers []*ModifierInvocation `json:"modifiers"` // List of modifier invocations applied to the receive function. + Overrides []*OverrideSpecifier `json:"overrides"` // List of override specifiers for the receive function. + Parameters *ParameterList `json:"parameters"` // List of parameters for the receive function. + ReturnParameters *ParameterList `json:"return_parameters"` // List of return parameters for the receive function. + Body *BodyNode `json:"body"` // Body of the receive function. + Virtual bool `json:"virtual"` // Indicates whether the function is virtual. + Payable bool `json:"payable"` // Indicates whether the function is payable. +} + +// NewReceiveDefinition creates a new Receive node with default values and returns it. func NewReceiveDefinition(b *ASTBuilder) *Receive { return &Receive{ ASTBuilder: b, @@ -37,70 +39,90 @@ func NewReceiveDefinition(b *ASTBuilder) *Receive { } // SetReferenceDescriptor sets the reference descriptions of the Receive node. +// This function is not yet implemented and returns false. func (f *Receive) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { return false } +// GetId returns the unique identifier of the Receive node. func (f *Receive) GetId() int64 { return f.Id } +// GetSrc returns the source location information of the Receive node. func (f *Receive) GetSrc() SrcNode { return f.Src } +// GetType returns the type of the AST node, which is NodeType_FUNCTION_DEFINITION for a receive function. func (f *Receive) GetType() ast_pb.NodeType { return f.NodeType } +// GetNodes returns a slice of child nodes within the body of the receive function. func (f *Receive) GetNodes() []Node[NodeType] { return f.Body.Statements } +// GetTypeDescription returns the type description associated with the Receive node (currently returns nil). func (f *Receive) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "receive", + TypeIdentifier: "$_t_receive", + } } +// GetModifiers returns a list of modifier invocations applied to the Receive node. func (f *Receive) GetModifiers() []*ModifierInvocation { return f.Modifiers } +// GetOverrides returns a list of override specifiers for the Receive node. func (f *Receive) GetOverrides() []*OverrideSpecifier { return f.Overrides } +// GetParameters returns the list of parameters for the Receive node. func (f *Receive) GetParameters() *ParameterList { return f.Parameters } +// GetReturnParameters returns the list of return parameters for the Receive node. func (f *Receive) GetReturnParameters() *ParameterList { return f.ReturnParameters } +// GetBody returns the body of the Receive node. func (f *Receive) GetBody() *BodyNode { return f.Body } +// GetKind returns the kind of the Receive node, which is NodeType_RECEIVE. func (f *Receive) GetKind() ast_pb.NodeType { return f.Kind } +// IsImplemented returns true if the Receive function is implemented, false otherwise. func (f *Receive) IsImplemented() bool { return f.Implemented } +// IsVirtual returns true if the Receive function is virtual, false otherwise. func (f *Receive) IsVirtual() bool { return f.Virtual } +// GetVisibility returns the visibility of the Receive function. func (f *Receive) GetVisibility() ast_pb.Visibility { return f.Visibility } +// GetStateMutability returns the state mutability of the Receive function. func (f *Receive) GetStateMutability() ast_pb.Mutability { return f.StateMutability } +// ToProto converts the Receive node to its corresponding protocol buffer representation. func (f *Receive) ToProto() NodeType { proto := ast_pb.Receive{ Id: f.GetId(), @@ -127,6 +149,8 @@ func (f *Receive) ToProto() NodeType { return NewTypedStruct(&proto, "Receive") } +// Parse populates the properties of the Receive node by parsing the corresponding context and information. +// It returns the populated Receive node. func (f *Receive) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], @@ -192,6 +216,7 @@ func (f *Receive) Parse( return f } +// getVisibilityFromCtx determines the visibility of the Receive function based on the context. func (f *Receive) getVisibilityFromCtx(ctx *parser.ReceiveFunctionDefinitionContext) ast_pb.Visibility { for _, visibility := range ctx.AllExternal() { if visibility.GetText() == "external" { @@ -202,6 +227,7 @@ func (f *Receive) getVisibilityFromCtx(ctx *parser.ReceiveFunctionDefinitionCont return ast_pb.Visibility_INTERNAL } +// getStateMutabilityFromCtx determines the state mutability of the Receive function based on the context. func (f *Receive) getStateMutabilityFromCtx(ctx *parser.ReceiveFunctionDefinitionContext) ast_pb.Mutability { for _, stateMutability := range ctx.AllPayable() { if stateMutability.GetText() == "payable" { diff --git a/ast/reference.go b/ast/reference.go index 8e65301c..8607b1fc 100644 --- a/ast/reference.go +++ b/ast/reference.go @@ -68,7 +68,6 @@ func (r *Resolver) ResolveByNode(node Node[NodeType], name string) (int64, *Type // resolveByNode is a helper function that attempts to resolve a node by its name by checking various node types. // It returns the resolved Node and its TypeDescription, or nil if the node cannot be found. func (r *Resolver) resolveByNode(name string, baseNode Node[NodeType]) (int64, *TypeDescription) { - if node, nodeType := r.bySourceUnit(name); nodeType != nil { return node, nodeType } @@ -104,6 +103,7 @@ func (r *Resolver) resolveByNode(name string, baseNode Node[NodeType]) (int64, * if node, nodeType := r.byFunction(name); nodeType != nil { return node, nodeType } + return 0, nil } @@ -144,8 +144,8 @@ func (r *Resolver) Resolve() []error { errors = append( errors, fmt.Errorf( - "unable to update node reference by id %d - name: %s - type: %v", - nodeId, node.Name, rNodeType, + "unable to update node reference by id %d - name: %s - type: %v - reflect: %T", + nodeId, node.Name, rNodeType, node.Node, ), ) } @@ -171,6 +171,7 @@ func (r *Resolver) Resolve() []error { return errors } +// resolveImportDirectives resolves import directives in the AST. func (r *Resolver) resolveImportDirectives() { for _, sourceNode := range r.sourceUnits { // In case any imports are available and they are not exported @@ -190,6 +191,7 @@ func (r *Resolver) resolveImportDirectives() { } } +// resolveBaseContracts resolves base contracts in the AST. func (r *Resolver) resolveBaseContracts() { for _, sourceNode := range r.sourceUnits { for _, baseContract := range sourceNode.GetBaseContracts() { @@ -205,6 +207,8 @@ func (r *Resolver) resolveBaseContracts() { } } } + +// resolveExportedSymbols resolves exported symbols in the AST. func (r *Resolver) resolveExportedSymbols() { for _, sourceNode := range r.sourceUnits { @@ -216,11 +220,7 @@ func (r *Resolver) resolveExportedSymbols() { if !r.symbolExists(importNode.GetName(), sourceNode.GetExportedSymbols()) { sourceNode.ExportedSymbols = append( sourceNode.ExportedSymbols, - Symbol{ - Id: importNode.GetSourceUnit(), - Name: importNode.GetName(), - AbsolutePath: importNode.GetAbsolutePath(), - }, + NewSymbol(importNode.GetSourceUnit(), importNode.GetName(), importNode.GetAbsolutePath()), ) } } @@ -242,6 +242,7 @@ func (r *Resolver) resolveExportedSymbols() { } } +// symbolExists checks if a symbol with a given name exists in a list of symbols. func (r *Resolver) symbolExists(name string, symbols []Symbol) bool { for _, symbol := range symbols { if symbol.GetName() == name { @@ -252,6 +253,7 @@ func (r *Resolver) symbolExists(name string, symbols []Symbol) bool { return false } +// resolveEntrySourceUnit resolves the entry source unit in the AST. func (r *Resolver) resolveEntrySourceUnit() { // Entry source unit is already calculated, we are going to skip the check. // Note if you are reading this, it's the best practice to always set it as @@ -287,6 +289,8 @@ func (r *Resolver) resolveEntrySourceUnit() { func (r *Resolver) bySourceUnit(name string) (int64, *TypeDescription) { for _, node := range r.sourceUnits { + //fmt.Println(node.GetName()) + if node.GetName() == name { return node.GetId(), node.GetTypeDescription() } @@ -314,13 +318,21 @@ func (r *Resolver) byStateVariables(name string) (int64, *TypeDescription) { func (r *Resolver) byVariables(name string) (int64, *TypeDescription) { for _, node := range r.currentVariables { - variable := node.(*VariableDeclaration) - - for _, declaration := range variable.Declarations { - if declaration.GetName() == name { - return node.GetId(), declaration.GetTypeDescription() + if variable, ok := node.(*VariableDeclaration); ok { + for _, declaration := range variable.Declarations { + if declaration.GetName() == name { + return node.GetId(), declaration.GetTypeDescription() + } + } + } + if variable, ok := node.(*Parameter); ok { + if variable.GetName() == name { + return node.GetId(), variable.GetTypeDescription() } + if variable.GetTypeName() != nil && variable.GetTypeName().GetName() == name { + return node.GetId(), variable.GetTypeDescription() + } } } @@ -467,6 +479,10 @@ func (r *Resolver) byRecursiveSearch(node Node[NodeType], name string) (Node[Nod } } } + case *IndexAccess: + if nodeCtx.GetName() == name { + return nodeCtx, nodeCtx.GetTypeDescription() + } } for _, n := range node.GetNodes() { diff --git a/ast/reference_test.go b/ast/reference_test.go index 02c07ae2..413aad42 100644 --- a/ast/reference_test.go +++ b/ast/reference_test.go @@ -7,6 +7,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/txpull/solgo" "github.com/txpull/solgo/tests" + "github.com/txpull/solgo/utils" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) @@ -127,19 +128,19 @@ func TestResolver(t *testing.T) { // Leaving it here for now to make unit tests pass... // This will be removed before final push to the main branch astData, _ := astBuilder.ToJSON() - err = astBuilder.WriteToFile( + err = utils.WriteToFile( "../data/tests/ast/resolver/"+testCase.sources.EntrySourceUnitName+".json", astData, ) assert.NoError(t, err) for _, sourceUnit := range astBuilder.GetRoot().GetSourceUnits() { - prettyJson, err := astBuilder.ToPrettyJSON(sourceUnit) + prettyJson, err := utils.ToJSONPretty(sourceUnit) assert.NoError(t, err) assert.NotEmpty(t, prettyJson) } - prettyJson, err := astBuilder.ToPrettyJSON(astBuilder.GetRoot()) + prettyJson, err := utils.ToJSONPretty(astBuilder.GetRoot()) assert.NoError(t, err) assert.NotEmpty(t, prettyJson) diff --git a/ast/return.go b/ast/return.go index 4be39468..1640ac39 100644 --- a/ast/return.go +++ b/ast/return.go @@ -6,6 +6,7 @@ import ( "github.com/txpull/solgo/parser" ) +// ReturnStatement represents a return statement in the AST. type ReturnStatement struct { *ASTBuilder @@ -16,6 +17,7 @@ type ReturnStatement struct { Expression Node[NodeType] `json:"expression"` } +// NewReturnStatement creates a new instance of ReturnStatement using the provided ASTBuilder. func NewReturnStatement(b *ASTBuilder) *ReturnStatement { return &ReturnStatement{ ASTBuilder: b, @@ -29,26 +31,32 @@ func (r *ReturnStatement) SetReferenceDescriptor(refId int64, refDesc *TypeDescr return false } +// GetId returns the ID of the ReturnStatement node. func (r *ReturnStatement) GetId() int64 { return r.Id } +// GetType returns the NodeType of the ReturnStatement node. func (r *ReturnStatement) GetType() ast_pb.NodeType { return r.NodeType } +// GetSrc returns the source information of the ReturnStatement node. func (r *ReturnStatement) GetSrc() SrcNode { return r.Src } +// GetExpression returns the expression associated with the ReturnStatement node. func (r *ReturnStatement) GetExpression() Node[NodeType] { return r.Expression } +// GetFunctionReturnParameters returns the ID of the function's return parameters. func (r *ReturnStatement) GetFunctionReturnParameters() int64 { return r.FunctionReturnParameters } +// GetTypeDescription returns the type description of the ReturnStatement's expression. func (r *ReturnStatement) GetTypeDescription() *TypeDescription { if r.Expression != nil { return r.Expression.GetTypeDescription() @@ -56,10 +64,12 @@ func (r *ReturnStatement) GetTypeDescription() *TypeDescription { return nil } +// GetNodes returns a list of child nodes contained in the ReturnStatement. func (r *ReturnStatement) GetNodes() []Node[NodeType] { return []Node[NodeType]{r.Expression} } +// ToProto converts the ReturnStatement into its corresponding Protocol Buffers representation. func (r *ReturnStatement) ToProto() NodeType { proto := ast_pb.Return{ Id: r.GetId(), @@ -73,6 +83,7 @@ func (r *ReturnStatement) ToProto() NodeType { return NewTypedStruct(&proto, "Return") } +// Parse parses the ReturnStatement node from the provided context. func (r *ReturnStatement) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/revert.go b/ast/revert.go index 811bd7f0..5808bf70 100644 --- a/ast/revert.go +++ b/ast/revert.go @@ -6,16 +6,18 @@ import ( "github.com/txpull/solgo/parser" ) +// RevertStatement represents a revert statement in the AST. type RevertStatement struct { *ASTBuilder - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - Arguments []Node[NodeType] `json:"arguments"` - Expression Node[NodeType] `json:"expression"` + Id int64 `json:"id"` // Unique identifier for the RevertStatement node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the AST node. + Src SrcNode `json:"src"` // Source location information. + Arguments []Node[NodeType] `json:"arguments"` // List of argument expressions. + Expression Node[NodeType] `json:"expression"` // Expression within the revert statement. } +// NewRevertStatement creates a new RevertStatement node with a given ASTBuilder. func NewRevertStatement(b *ASTBuilder) *RevertStatement { return &RevertStatement{ ASTBuilder: b, @@ -31,26 +33,32 @@ func (r *RevertStatement) SetReferenceDescriptor(refId int64, refDesc *TypeDescr return false } +// GetId returns the ID of the RevertStatement node. func (r *RevertStatement) GetId() int64 { return r.Id } +// GetType returns the NodeType of the RevertStatement node. func (r *RevertStatement) GetType() ast_pb.NodeType { return r.NodeType } +// GetSrc returns the SrcNode of the RevertStatement node. func (r *RevertStatement) GetSrc() SrcNode { return r.Src } +// GetArguments returns the list of argument expressions. func (r *RevertStatement) GetArguments() []Node[NodeType] { return r.Arguments } +// GetExpression returns the expression within the revert statement. func (r *RevertStatement) GetExpression() Node[NodeType] { return r.Expression } +// GetNodes returns the child nodes of the RevertStatement node. func (r *RevertStatement) GetNodes() []Node[NodeType] { toReturn := make([]Node[NodeType], 0) toReturn = append(toReturn, r.Arguments...) @@ -58,6 +66,7 @@ func (r *RevertStatement) GetNodes() []Node[NodeType] { return toReturn } +// ToProto returns a protobuf representation of the RevertStatement node. func (r *RevertStatement) ToProto() NodeType { proto := ast_pb.Revert{ Id: r.Id, @@ -74,10 +83,15 @@ func (r *RevertStatement) ToProto() NodeType { return NewTypedStruct(&proto, "Revert") } +// GetTypeDescription returns the TypeDescription of the RevertStatement node. func (r *RevertStatement) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "revert", + TypeIdentifier: "$_t_revert", + } } +// Parse parses a revert statement context into the RevertStatement node. func (r *RevertStatement) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/root_node.go b/ast/root_node.go index 3367e345..d1f62f79 100644 --- a/ast/root_node.go +++ b/ast/root_node.go @@ -51,7 +51,10 @@ func (r *RootNode) GetSrc() SrcNode { // GetTypeDescription returns the type description of the RootNode node. // RootNode nodes do not have type descriptions. func (r *RootNode) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "root", + TypeIdentifier: "t_root", + } } // SetReferenceDescriptor sets the reference descriptions of the RootNode node. @@ -133,9 +136,9 @@ func (r *RootNode) ToProto() *ast_pb.RootSourceUnit { } return &ast_pb.RootSourceUnit{ - Id: r.Id, - NodeType: r.NodeType, - EntrySourceUnit: r.EntrySourceUnit, + Id: r.GetId(), + NodeType: r.GetType(), + EntrySourceUnit: r.GetEntrySourceUnit(), SourceUnits: sourceUnits, Comments: comments, } diff --git a/ast/simple.go b/ast/simple.go index 82f444a2..af2938eb 100644 --- a/ast/simple.go +++ b/ast/simple.go @@ -5,8 +5,10 @@ import ( ast_pb "github.com/txpull/protos/dist/go/ast" "github.com/txpull/solgo/parser" + "go.uber.org/zap" ) +// SimpleStatement represents a simple statement in the AST. type SimpleStatement struct { *ASTBuilder @@ -15,41 +17,15 @@ type SimpleStatement struct { Src SrcNode `json:"src"` } +// NewSimpleStatement creates a new instance of SimpleStatement using the provided ASTBuilder. +// This instance is more like a placeholder for the actual statements that are returned from Parse() func NewSimpleStatement(b *ASTBuilder) *SimpleStatement { return &SimpleStatement{ ASTBuilder: b, } } -// SetReferenceDescriptor sets the reference descriptions of the SimpleStatement node. -func (s *SimpleStatement) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { - return false -} - -func (s *SimpleStatement) GetId() int64 { - return s.Id -} - -func (s *SimpleStatement) GetType() ast_pb.NodeType { - return s.NodeType -} - -func (s *SimpleStatement) GetSrc() SrcNode { - return s.Src -} - -func (s *SimpleStatement) GetTypeDescription() *TypeDescription { - return nil -} - -func (s *SimpleStatement) GetNodes() []Node[NodeType] { - return nil -} - -func (s *SimpleStatement) ToProto() NodeType { - return nil -} - +// Parse parses the SimpleStatement node from the provided context. func (s *SimpleStatement) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], @@ -70,25 +46,12 @@ func (s *SimpleStatement) Parse( unit, contractNode, fnNode, bodyNode, parentNode, childCtx, ) default: - panic( - fmt.Sprintf( - "Unknown simple statement child type @ SimpleStatement.Parse: %T", - childCtx, - ), + zap.L().Warn( + "Unknown simple statement child type @ SimpleStatement.Parse", + zap.String("child", fmt.Sprintf("%T", childCtx)), ) } } - s.Id = s.GetNextID() - s.Src = SrcNode{ - Id: s.GetNextID(), - Line: int64(ctx.GetStart().GetLine()), - Column: int64(ctx.GetStart().GetColumn()), - Start: int64(ctx.GetStart().GetStart()), - End: int64(ctx.GetStop().GetStop()), - Length: int64(ctx.GetStop().GetStop() - ctx.GetStart().GetStart() + 1), - ParentIndex: bodyNode.GetId(), - } - - return s + return nil } diff --git a/ast/sources_test.go b/ast/sources_test.go new file mode 100644 index 00000000..7a7a36a6 --- /dev/null +++ b/ast/sources_test.go @@ -0,0 +1,382 @@ +package ast + +import ( + "testing" + + "github.com/txpull/solgo" + "github.com/txpull/solgo/tests" +) + +// getSourceTestCases returns the test cases (bunch of contracts) for the ast builder. +func getSourceTestCases(t *testing.T) []struct { + name string + outputPath string + sources *solgo.Sources + expectedAst string + expectedProto string + unresolvedReferences int64 +} { + return []struct { + name string + outputPath string + sources *solgo.Sources + expectedAst string + expectedProto string + unresolvedReferences int64 + }{ + { + name: "Empty Contract Test", + outputPath: "ast/", + sources: &solgo.Sources{ + SourceUnits: []*solgo.SourceUnit{ + { + Name: "Empty", + Path: tests.ReadContractFileForTest(t, "Empty").Path, + Content: tests.ReadContractFileForTest(t, "Empty").Content, + }, + }, + EntrySourceUnitName: "Empty", + LocalSourcesPath: buildFullPath("../sources/"), + }, + expectedAst: tests.ReadJsonBytesForTest(t, "ast/Empty.solgo.ast").Content, + expectedProto: tests.ReadJsonBytesForTest(t, "ast/Empty.solgo.ast.proto").Content, + unresolvedReferences: 0, + }, + { + name: "Simple Storage Contract Test", + outputPath: "ast/", + sources: &solgo.Sources{ + SourceUnits: []*solgo.SourceUnit{ + { + Name: "MathLib", + Path: "MathLib.sol", + Content: tests.ReadContractFileForTest(t, "ast/MathLib").Content, + }, + { + Name: "SimpleStorage", + Path: "SimpleStorage.sol", + Content: tests.ReadContractFileForTest(t, "ast/SimpleStorage").Content, + }, + }, + EntrySourceUnitName: "SimpleStorage", + LocalSourcesPath: buildFullPath("../sources/"), + }, + expectedAst: tests.ReadJsonBytesForTest(t, "ast/SimpleStorage.solgo.ast").Content, + expectedProto: tests.ReadJsonBytesForTest(t, "ast/SimpleStorage.solgo.ast.proto").Content, + unresolvedReferences: 0, + }, + { + name: "OpenZeppelin ERC20 Test", + outputPath: "ast/", + sources: &solgo.Sources{ + SourceUnits: []*solgo.SourceUnit{ + { + Name: "SafeMath", + Path: "SafeMath.sol", + Content: tests.ReadContractFileForTest(t, "ast/SafeMath").Content, + }, + { + Name: "IERC20", + Path: "IERC20.sol", + Content: tests.ReadContractFileForTest(t, "ast/IERC20").Content, + }, + { + Name: "IERC20Metadata", + Path: "IERC20Metadata.sol", + Content: tests.ReadContractFileForTest(t, "ast/IERC20Metadata").Content, + }, + { + Name: "Context", + Path: "Context.sol", + Content: tests.ReadContractFileForTest(t, "ast/Context").Content, + }, + { + Name: "ERC20", + Path: "ERC20.sol", + Content: tests.ReadContractFileForTest(t, "ast/ERC20").Content, + }, + }, + EntrySourceUnitName: "ERC20", + LocalSourcesPath: buildFullPath("../sources/"), + }, + expectedAst: tests.ReadJsonBytesForTest(t, "ast/ERC20.solgo.ast").Content, + expectedProto: tests.ReadJsonBytesForTest(t, "ast/ERC20.solgo.ast.proto").Content, + unresolvedReferences: 0, + }, + { + name: "Token With Reference Resolution", + outputPath: "ast/", + sources: &solgo.Sources{ + SourceUnits: []*solgo.SourceUnit{ + { + Name: "Token", + Path: "Token.sol", + Content: tests.ReadContractFileForTest(t, "ast/Token").Content, + }, + }, + EntrySourceUnitName: "Token", + LocalSourcesPath: buildFullPath("../sources/"), + }, + expectedAst: tests.ReadJsonBytesForTest(t, "ast/Token.solgo.ast").Content, + expectedProto: tests.ReadJsonBytesForTest(t, "ast/Token.solgo.ast.proto").Content, + unresolvedReferences: 0, + }, + { + name: "Token Sale ERC20 Test", + outputPath: "ast/", + sources: &solgo.Sources{ + SourceUnits: []*solgo.SourceUnit{ + { + Name: "TokenSale", + Path: "TokenSale.sol", + Content: tests.ReadContractFileForTest(t, "ast/TokenSale").Content, + }, + { + Name: "SafeMath", + Path: "SafeMath.sol", + Content: tests.ReadContractFileForTest(t, "ast/SafeMath").Content, + }, + { + Name: "IERC20", + Path: "IERC20.sol", + Content: tests.ReadContractFileForTest(t, "ast/IERC20").Content, + }, + }, + EntrySourceUnitName: "TokenSale", + LocalSourcesPath: buildFullPath("../sources/"), + }, + expectedAst: tests.ReadJsonBytesForTest(t, "ast/TokenSale.solgo.ast").Content, + expectedProto: tests.ReadJsonBytesForTest(t, "ast/TokenSale.solgo.ast.proto").Content, + unresolvedReferences: 0, + }, + { + name: "Lottery Test", + outputPath: "ast/", + sources: &solgo.Sources{ + SourceUnits: []*solgo.SourceUnit{ + { + Name: "Lottery", + Path: "Lottery.sol", + Content: tests.ReadContractFileForTest(t, "ast/Lottery").Content, + }, + }, + EntrySourceUnitName: "Lottery", + LocalSourcesPath: buildFullPath("../sources/"), + }, + expectedAst: tests.ReadJsonBytesForTest(t, "ast/Lottery.solgo.ast").Content, + expectedProto: tests.ReadJsonBytesForTest(t, "ast/Lottery.solgo.ast.proto").Content, + unresolvedReferences: 0, + }, + { + name: "Cheelee Test", // Took this one as I could discover ipfs metadata :joy: + outputPath: "contracts/cheelee/", + sources: &solgo.Sources{ + SourceUnits: []*solgo.SourceUnit{ + { + Name: "Import", + Path: "Import.sol", + Content: tests.ReadContractFileForTest(t, "contracts/cheelee/Import").Content, + }, + { + Name: "BeaconProxy", + Path: "BeaconProxy.sol", + Content: tests.ReadContractFileForTest(t, "contracts/cheelee/BeaconProxy").Content, + }, + { + Name: "UpgradeableBeacon", + Path: "UpgradeableBeacon.sol", + Content: tests.ReadContractFileForTest(t, "contracts/cheelee/UpgradeableBeacon").Content, + }, + { + Name: "ERC1967Proxy", + Path: "ERC1967Proxy.sol", + Content: tests.ReadContractFileForTest(t, "contracts/cheelee/ERC1967Proxy").Content, + }, + { + Name: "TransparentUpgradeableProxy", + Path: "TransparentUpgradeableProxy.sol", + Content: tests.ReadContractFileForTest(t, "contracts/cheelee/TransparentUpgradeableProxy").Content, + }, + { + Name: "ProxyAdmin", + Path: "ProxyAdmin.sol", + Content: tests.ReadContractFileForTest(t, "contracts/cheelee/ProxyAdmin").Content, + }, + { + Name: "IBeacon", + Path: "IBeacon.sol", + Content: tests.ReadContractFileForTest(t, "contracts/cheelee/IBeacon").Content, + }, + { + Name: "Proxy", + Path: "Proxy.sol", + Content: tests.ReadContractFileForTest(t, "contracts/cheelee/Proxy").Content, + }, + { + Name: "ERC1967Upgrade", + Path: "ERC1967Upgrade.sol", + Content: tests.ReadContractFileForTest(t, "contracts/cheelee/ERC1967Upgrade").Content, + }, + { + Name: "Address", + Path: "Address.sol", + Content: tests.ReadContractFileForTest(t, "contracts/cheelee/Address").Content, + }, + { + Name: "StorageSlot", + Path: "StorageSlot.sol", + Content: tests.ReadContractFileForTest(t, "contracts/cheelee/StorageSlot").Content, + }, + { + Name: "Ownable", + Path: "Ownable.sol", + Content: tests.ReadContractFileForTest(t, "contracts/cheelee/Ownable").Content, + }, + { + Name: "Context", + Path: "Context.sol", + Content: tests.ReadContractFileForTest(t, "contracts/cheelee/Context").Content, + }, + }, + EntrySourceUnitName: "TransparentUpgradeableProxy", + LocalSourcesPath: buildFullPath("../sources/"), + }, + expectedAst: tests.ReadJsonBytesForTest(t, "contracts/cheelee/TransparentUpgradeableProxy.solgo.ast").Content, + expectedProto: tests.ReadJsonBytesForTest(t, "contracts/cheelee/TransparentUpgradeableProxy.solgo.ast.proto").Content, + unresolvedReferences: 0, + }, + { + name: "SushiXSwap Nightmare Test", + outputPath: "contracts/sushixswap/", + sources: &solgo.Sources{ + SourceUnits: []*solgo.SourceUnit{ + { + Name: "Address", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/Address").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/Address").Content, + }, + { + Name: "BentoAdapter", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/BentoAdapter").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/BentoAdapter").Content, + }, + { + Name: "IBentoBoxMinimal", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/IBentoBoxMinimal").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/IBentoBoxMinimal").Content, + }, + { + Name: "IERC20", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/IERC20").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/IERC20").Content, + }, + { + Name: "IImmutableState", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/IImmutableState").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/IImmutableState").Content, + }, + { + Name: "ImmutableState", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/ImmutableState").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/ImmutableState").Content, + }, + { + Name: "IPool", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/IPool").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/IPool").Content, + }, + { + Name: "IStargateAdapter", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/IStargateAdapter").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/IStargateAdapter").Content, + }, + { + Name: "IStargateReceiver", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/IStargateReceiver").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/IStargateReceiver").Content, + }, + { + Name: "IStargateRouter", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/IStargateRouter").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/IStargateRouter").Content, + }, + { + Name: "IStargateWidget", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/IStargateWidget").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/IStargateWidget").Content, + }, + { + Name: "ISushiXSwap", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/ISushiXSwap").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/ISushiXSwap").Content, + }, + { + Name: "ITridentRouter", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/ITridentRouter").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/ITridentRouter").Content, + }, + { + Name: "ITridentSwapAdapter", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/ITridentSwapAdapter").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/ITridentSwapAdapter").Content, + }, + { + Name: "IUniswapV2Pair", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/IUniswapV2Pair").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/IUniswapV2Pair").Content, + }, + { + Name: "IWETH", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/IWETH").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/IWETH").Content, + }, + { + Name: "SafeERC20", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/SafeERC20").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/SafeERC20").Content, + }, + { + Name: "SafeMath", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/SafeMath").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/SafeMath").Content, + }, + { + Name: "StargateAdapter", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/StargateAdapter").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/StargateAdapter").Content, + }, + { + Name: "SushiLegacyAdapter", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/SushiLegacyAdapter").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/SushiLegacyAdapter").Content, + }, + { + Name: "SushiXSwap", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/SushiXSwap").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/SushiXSwap").Content, + }, + { + Name: "TokenAdapter", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/TokenAdapter").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/TokenAdapter").Content, + }, + { + Name: "TridentSwapAdapter", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/TridentSwapAdapter").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/TridentSwapAdapter").Content, + }, + { + Name: "UniswapV2Library", + Path: tests.ReadContractFileForTest(t, "contracts/sushixswap/UniswapV2Library").Path, + Content: tests.ReadContractFileForTest(t, "contracts/sushixswap/UniswapV2Library").Content, + }, + }, + EntrySourceUnitName: "SushiXSwap", + LocalSourcesPath: buildFullPath("../sources/"), + }, + expectedAst: tests.ReadJsonBytesForTest(t, "contracts/sushixswap/SushiXSwap.solgo.ast").Content, + expectedProto: tests.ReadJsonBytesForTest(t, "contracts/sushixswap/SushiXSwap.solgo.ast.proto").Content, + unresolvedReferences: 0, + }, + } +} diff --git a/ast/state_variable.go b/ast/state_variable.go index b95da78b..77feb1c2 100644 --- a/ast/state_variable.go +++ b/ast/state_variable.go @@ -5,23 +5,24 @@ import ( "github.com/txpull/solgo/parser" ) +// StateVariableDeclaration represents a state variable declaration in the Solidity abstract syntax tree (AST). type StateVariableDeclaration struct { - *ASTBuilder - - Id int64 `json:"id"` - Name string `json:"name"` - Constant bool `json:"is_constant"` - StateVariable bool `json:"is_state_variable"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - Scope int64 `json:"scope"` - TypeDescription *TypeDescription `json:"type_description"` - Visibility ast_pb.Visibility `json:"visibility"` - StorageLocation ast_pb.StorageLocation `json:"storage_location"` - StateMutability ast_pb.Mutability `json:"mutability"` - TypeName *TypeName `json:"type_name"` -} - + *ASTBuilder // Embedding the ASTBuilder for common functionality + Id int64 `json:"id"` // Unique identifier for the state variable declaration + Name string `json:"name"` // Name of the state variable + Constant bool `json:"is_constant"` // Indicates if the state variable is constant + StateVariable bool `json:"is_state_variable"` // Indicates if the declaration is a state variable + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node (VARIABLE_DECLARATION for state variable declaration) + Src SrcNode `json:"src"` // Source information about the state variable declaration + Scope int64 `json:"scope"` // Scope of the state variable declaration + TypeDescription *TypeDescription `json:"type_description"` // Type description of the state variable declaration + Visibility ast_pb.Visibility `json:"visibility"` // Visibility of the state variable declaration + StorageLocation ast_pb.StorageLocation `json:"storage_location"` // Storage location of the state variable declaration + StateMutability ast_pb.Mutability `json:"mutability"` // State mutability of the state variable declaration + TypeName *TypeName `json:"type_name"` // Type name of the state variable +} + +// NewStateVariableDeclaration creates a new StateVariableDeclaration instance. func NewStateVariableDeclaration(b *ASTBuilder) *StateVariableDeclaration { return &StateVariableDeclaration{ ASTBuilder: b, @@ -42,74 +43,89 @@ func (v *StateVariableDeclaration) SetReferenceDescriptor(refId int64, refDesc * return false } +// GetId returns the unique identifier of the state variable declaration. func (v *StateVariableDeclaration) GetId() int64 { return v.Id } +// GetType returns the type of the node, which is 'VARIABLE_DECLARATION' for a state variable declaration. func (v *StateVariableDeclaration) GetType() ast_pb.NodeType { return v.NodeType } +// GetSrc returns the source information about the state variable declaration. func (v *StateVariableDeclaration) GetSrc() SrcNode { return v.Src } +// GetTypeDescription returns the type description of the state variable declaration. func (v *StateVariableDeclaration) GetTypeDescription() *TypeDescription { return v.TypeDescription } +// GetName returns the name of the state variable. func (v *StateVariableDeclaration) GetName() string { return v.Name } +// GetVisibility returns the visibility of the state variable declaration. func (v *StateVariableDeclaration) GetVisibility() ast_pb.Visibility { return v.Visibility } +// GetStorageLocation returns the storage location of the state variable declaration. func (v *StateVariableDeclaration) GetStorageLocation() ast_pb.StorageLocation { return v.StorageLocation } +// GetStateMutability returns the state mutability of the state variable declaration. func (v *StateVariableDeclaration) GetStateMutability() ast_pb.Mutability { return v.StateMutability } +// GetTypeName returns the type name of the state variable declaration. func (v *StateVariableDeclaration) GetTypeName() *TypeName { return v.TypeName } +// GetReferencedDeclaration returns the referenced declaration of the type name in the state variable declaration. func (v *StateVariableDeclaration) GetReferencedDeclaration() int64 { return v.TypeName.ReferencedDeclaration } +// GetNodes returns the type name node in the state variable declaration. func (v *StateVariableDeclaration) GetNodes() []Node[NodeType] { return []Node[NodeType]{v.TypeName} } +// GetScope returns the scope of the state variable declaration. func (v *StateVariableDeclaration) GetScope() int64 { return v.Scope } +// IsConstant returns whether the state variable declaration is constant. func (v *StateVariableDeclaration) IsConstant() bool { return v.Constant } +// IsStateVariable returns whether the declaration is a state variable. func (v *StateVariableDeclaration) IsStateVariable() bool { return v.StateVariable } +// ToProto returns the protobuf representation of the state variable declaration. func (v *StateVariableDeclaration) ToProto() NodeType { proto := ast_pb.StateVariable{ - Id: v.Id, - NodeType: v.NodeType, - Src: v.Src.ToProto(), - Name: v.Name, - Visibility: v.Visibility, - StorageLocation: v.StorageLocation, - StateMutability: v.StateMutability, - Scope: v.Scope, - IsConstant: v.Constant, - IsStateVariable: v.StateVariable, + Id: v.GetId(), + NodeType: v.GetType(), + Src: v.GetSrc().ToProto(), + Name: v.GetName(), + Visibility: v.GetVisibility(), + StorageLocation: v.GetStorageLocation(), + StateMutability: v.GetStateMutability(), + Scope: v.GetScope(), + IsConstant: v.IsConstant(), + IsStateVariable: v.IsStateVariable(), } if v.GetTypeName() != nil { @@ -123,6 +139,7 @@ func (v *StateVariableDeclaration) ToProto() NodeType { return NewTypedStruct(&proto, "Variable") } +// Parse parses a state variable declaration from the provided parser.StateVariableDeclarationContext and updates the current instance. func (v *StateVariableDeclaration) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], @@ -160,6 +177,7 @@ func (v *StateVariableDeclaration) Parse( v.currentStateVariables = append(v.currentStateVariables, v) } +// getVisibilityFromCtx extracts visibility information from the parser context. func (v *StateVariableDeclaration) getVisibilityFromCtx(ctx *parser.StateVariableDeclarationContext) ast_pb.Visibility { visibilityMap := map[string]ast_pb.Visibility{ "public": ast_pb.Visibility_PUBLIC, diff --git a/ast/struct.go b/ast/struct.go index 564afd5b..0e776540 100644 --- a/ast/struct.go +++ b/ast/struct.go @@ -7,23 +7,24 @@ import ( "github.com/txpull/solgo/parser" ) +// StructDefinition represents a struct definition in the Solidity abstract syntax tree (AST). type StructDefinition struct { - *ASTBuilder - - SourceUnitName string `json:"-"` - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - Kind ast_pb.NodeType `json:"kind,omitempty"` - Name string `json:"name"` - CanonicalName string `json:"canonical_name"` - ReferencedDeclaration int64 `json:"referenced_declaration,omitempty"` - TypeDescription *TypeDescription `json:"type_description"` - Members []Node[NodeType] `json:"members"` - Visibility ast_pb.Visibility `json:"visibility"` - StorageLocation ast_pb.StorageLocation `json:"storage_location"` -} - + *ASTBuilder // Embedding the ASTBuilder for common functionality + SourceUnitName string `json:"-"` // Name of the source unit + Id int64 `json:"id"` // Unique identifier for the struct definition + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node (STRUCT_DEFINITION for struct definition) + Src SrcNode `json:"src"` // Source information about the struct definition + Kind ast_pb.NodeType `json:"kind,omitempty"` // Kind of the struct definition (e.g., "contract") + Name string `json:"name"` // Name of the struct + CanonicalName string `json:"canonical_name"` // Canonical name of the struct + ReferencedDeclaration int64 `json:"referenced_declaration,omitempty"` // Referenced declaration of the struct definition + TypeDescription *TypeDescription `json:"type_description"` // Type description of the struct definition + Members []Node[NodeType] `json:"members"` // Members of the struct definition + Visibility ast_pb.Visibility `json:"visibility"` // Visibility of the struct definition + StorageLocation ast_pb.StorageLocation `json:"storage_location"` // Storage location of the struct definition +} + +// NewStructDefinition creates a new StructDefinition instance. func NewStructDefinition(b *ASTBuilder) *StructDefinition { return &StructDefinition{ ASTBuilder: b, @@ -41,30 +42,37 @@ func (s *StructDefinition) SetReferenceDescriptor(refId int64, refDesc *TypeDesc return false } +// GetId returns the unique identifier of the struct definition. func (s *StructDefinition) GetId() int64 { return s.Id } +// GetType returns the type of the node, which is 'STRUCT_DEFINITION' for a struct definition. func (s *StructDefinition) GetType() ast_pb.NodeType { return s.NodeType } +// GetSrc returns the source information about the struct definition. func (s *StructDefinition) GetSrc() SrcNode { return s.Src } +// GetName returns the name of the struct definition. func (s *StructDefinition) GetName() string { return s.Name } +// GetTypeDescription returns the type description of the struct definition. func (s *StructDefinition) GetTypeDescription() *TypeDescription { return s.TypeDescription } +// GetCanonicalName returns the canonical name of the struct definition. func (s *StructDefinition) GetCanonicalName() string { return s.CanonicalName } +// GetMembers returns the members of the struct definition. func (s *StructDefinition) GetMembers() []*Parameter { toReturn := make([]*Parameter, 0) @@ -76,30 +84,37 @@ func (s *StructDefinition) GetMembers() []*Parameter { return toReturn } +// GetSourceUnitName returns the name of the source unit. func (s *StructDefinition) GetSourceUnitName() string { return s.SourceUnitName } +// GetKind returns the kind of the struct definition. func (s *StructDefinition) GetKind() ast_pb.NodeType { return s.Kind } +// GetVisibility returns the visibility of the struct definition. func (s *StructDefinition) GetVisibility() ast_pb.Visibility { return s.Visibility } +// GetStorageLocation returns the storage location of the struct definition. func (s *StructDefinition) GetStorageLocation() ast_pb.StorageLocation { return s.StorageLocation } +// GetNodes returns the members of the struct definition. func (s *StructDefinition) GetNodes() []Node[NodeType] { return s.Members } +// GetReferencedDeclaration returns the referenced declaration of the struct definition. func (s *StructDefinition) GetReferencedDeclaration() int64 { return s.ReferencedDeclaration } +// ToProto returns the protobuf representation of the struct definition. func (s *StructDefinition) ToProto() NodeType { proto := ast_pb.Struct{ Id: s.GetId(), @@ -122,6 +137,7 @@ func (s *StructDefinition) ToProto() NodeType { return NewTypedStruct(&proto, "Struct") } +// Parse parses a struct definition from the provided parser.StructDefinitionContext and returns the corresponding StructDefinition. func (s *StructDefinition) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/symbols.go b/ast/symbols.go index 5ae825af..edcbc1f4 100644 --- a/ast/symbols.go +++ b/ast/symbols.go @@ -1,11 +1,13 @@ package ast +// Symbol represents a symbol in the Solidity abstract syntax tree (AST). type Symbol struct { - Id int64 `json:"id"` - Name string `json:"name"` - AbsolutePath string `json:"absolute_path"` + Id int64 `json:"id"` // Unique identifier for the symbol + Name string `json:"name"` // Name of the symbol + AbsolutePath string `json:"absolute_path"` // Absolute path to the symbol } +// NewSymbol creates a new Symbol instance with the provided attributes. func NewSymbol(id int64, name string, absolutePath string) Symbol { return Symbol{ Id: id, @@ -14,14 +16,17 @@ func NewSymbol(id int64, name string, absolutePath string) Symbol { } } +// GetId returns the unique identifier of the symbol. func (s Symbol) GetId() int64 { return s.Id } +// GetName returns the name of the symbol. func (s Symbol) GetName() string { return s.Name } +// GetAbsolutePath returns the absolute path to the symbol. func (s Symbol) GetAbsolutePath() string { return s.AbsolutePath } diff --git a/ast/tree.go b/ast/tree.go index ed1decf0..11453849 100644 --- a/ast/tree.go +++ b/ast/tree.go @@ -80,10 +80,6 @@ func (t *Tree) UpdateNodeReferenceById(nodeId int64, nodeRefId int64, typeRef *T func (t *Tree) byRecursiveReferenceUpdate(child Node[NodeType], nodeId int64, nodeRefId int64, typeRef *TypeDescription) bool { // Sometimes, child can be nil so we need to make sure we check for that. // For example in Assignment, not all of the expressions are always set. - if child == nil { - return false - } - if child.GetId() == nodeId { child.SetReferenceDescriptor(nodeRefId, typeRef) t.updateParentReference(child, nodeRefId, typeRef) @@ -91,6 +87,12 @@ func (t *Tree) byRecursiveReferenceUpdate(child Node[NodeType], nodeId int64, no } for _, c := range child.GetNodes() { + if child.GetId() == nodeId { + child.SetReferenceDescriptor(nodeRefId, typeRef) + t.updateParentReference(child, nodeRefId, typeRef) + return true + } + if n := t.byRecursiveReferenceUpdate(c, nodeId, nodeRefId, typeRef); n { return n } diff --git a/ast/try.go b/ast/try.go index 067c6fec..6ade4561 100644 --- a/ast/try.go +++ b/ast/try.go @@ -6,18 +6,20 @@ import ( "github.com/txpull/solgo/parser" ) +// TryStatement represents a try-catch statement in the AST. type TryStatement struct { *ASTBuilder - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - Body *BodyNode `json:"body"` - Kind ast_pb.NodeType `json:"kind"` - Expression Node[NodeType] `json:"expression"` - Clauses []Node[NodeType] `json:"clauses"` + Id int64 `json:"id"` // Unique identifier for the TryStatement node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the AST node. + Src SrcNode `json:"src"` // Source location information. + Body *BodyNode `json:"body"` // Body of the try block. + Kind ast_pb.NodeType `json:"kind"` // Kind of try statement. + Expression Node[NodeType] `json:"expression"` // Expression within the try block. + Clauses []Node[NodeType] `json:"clauses"` // List of catch clauses. } +// NewTryStatement creates a new TryStatement node with a given ASTBuilder. func NewTryStatement(b *ASTBuilder) *TryStatement { return &TryStatement{ ASTBuilder: b, @@ -32,34 +34,45 @@ func (t *TryStatement) SetReferenceDescriptor(refId int64, refDesc *TypeDescript return false } +// GetId returns the ID of the TryStatement node. func (t *TryStatement) GetId() int64 { return t.Id } +// GetType returns the NodeType of the TryStatement node. func (t *TryStatement) GetType() ast_pb.NodeType { return t.NodeType } +// GetSrc returns the SrcNode of the TryStatement node. func (t *TryStatement) GetSrc() SrcNode { return t.Src } +// GetBody returns the body of the TryStatement node. func (t *TryStatement) GetBody() *BodyNode { return t.Body } +// GetKind returns the kind of the try statement. func (t *TryStatement) GetKind() ast_pb.NodeType { return t.Kind } +// GetImplemented returns true if the try statement is implemented. func (t *TryStatement) GetImplemented() bool { return true } +// GetTypeDescription returns the TypeDescription of the TryStatement node. func (t *TryStatement) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "try", + TypeIdentifier: "$_t_try", + } } +// GetNodes returns the child nodes of the TryStatement node. func (t *TryStatement) GetNodes() []Node[NodeType] { toReturn := make([]Node[NodeType], 0) toReturn = append(toReturn, t.Body) @@ -68,14 +81,17 @@ func (t *TryStatement) GetNodes() []Node[NodeType] { return toReturn } +// GetExpression returns the expression within the try block. func (t *TryStatement) GetExpression() Node[NodeType] { return t.Expression } +// GetClauses returns the list of catch clauses. func (t *TryStatement) GetClauses() []Node[NodeType] { return t.Clauses } +// ToProto returns a protobuf representation of the TryStatement node. func (t *TryStatement) ToProto() NodeType { proto := ast_pb.Try{ Id: t.GetId(), @@ -101,6 +117,7 @@ func (t *TryStatement) ToProto() NodeType { return NewTypedStruct(&proto, "Try") } +// Parse parses a try-catch statement context into the TryStatement node. func (t *TryStatement) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/tuple.go b/ast/tuple.go index 5c2e2512..7b695220 100644 --- a/ast/tuple.go +++ b/ast/tuple.go @@ -8,34 +8,17 @@ import ( "github.com/txpull/solgo/parser" ) -// The TupleExpression struct represents a tuple expression in Solidity. +// TupleExpression represents a tuple expression in Solidity. type TupleExpression struct { - // Embedding the ASTBuilder to provide common functionality - *ASTBuilder - - // The unique identifier for the tuple expression - Id int64 `json:"id"` - - // The type of the node, which is 'TUPLE_EXPRESSION' for a tuple expression - NodeType ast_pb.NodeType `json:"node_type"` - - // The source information about the tuple expression, such as its line and column numbers in the source file - Src SrcNode `json:"src"` - - // Whether the tuple expression is constant - Constant bool `json:"is_constant"` - - // Whether the tuple expression is pure - Pure bool `json:"is_pure"` - - // The components of the tuple expression - Components []Node[NodeType] `json:"components"` - - // The referenced declaration of the tuple expression - ReferencedDeclaration int64 `json:"referenced_declaration,omitempty"` - - // The type description of the tuple expression - TypeDescription *TypeDescription `json:"type_description"` + *ASTBuilder // Embedding the ASTBuilder to provide common functionality + Id int64 `json:"id"` // Unique identifier for the tuple expression + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node (TUPLE_EXPRESSION for a tuple expression) + Src SrcNode `json:"src"` // Source information about the tuple expression + Constant bool `json:"is_constant"` // Whether the tuple expression is constant + Pure bool `json:"is_pure"` // Whether the tuple expression is pure + Components []Node[NodeType] `json:"components"` // Components of the tuple expression + ReferencedDeclaration int64 `json:"referenced_declaration,omitempty"` // Referenced declaration of the tuple expression + TypeDescription *TypeDescription `json:"type_description"` // Type description of the tuple expression } // NewTupleExpression creates a new TupleExpression instance. @@ -169,6 +152,7 @@ func (t *TupleExpression) Parse( return t } +// buildTypeDescription constructs the type description of the tuple expression. func (t *TupleExpression) buildTypeDescription() *TypeDescription { typeString := "tuple(" typeIdentifier := "t_tuple_" diff --git a/ast/type_name.go b/ast/type_name.go index 464b3548..3ebc22d8 100644 --- a/ast/type_name.go +++ b/ast/type_name.go @@ -8,6 +8,7 @@ import ( "go.uber.org/zap" ) +// TypeName represents a type name used in Solidity code. type TypeName struct { *ASTBuilder @@ -23,6 +24,7 @@ type TypeName struct { ReferencedDeclaration int64 `json:"referenced_declaration"` } +// NewTypeName creates a new TypeName instance with the given ASTBuilder. func NewTypeName(b *ASTBuilder) *TypeName { return &TypeName{ ASTBuilder: b, @@ -36,50 +38,72 @@ func (t *TypeName) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) return true } +// GetId returns the unique identifier of the TypeName. func (t *TypeName) GetId() int64 { return t.Id } +// GetType returns the node type of the TypeName. func (t *TypeName) GetType() ast_pb.NodeType { return t.NodeType } +// GetSrc returns the source location information of the TypeName. func (t *TypeName) GetSrc() SrcNode { return t.Src } +// GetName returns the name of the type. func (t *TypeName) GetName() string { return t.Name } +// GetTypeDescription returns the type description associated with the TypeName. func (t *TypeName) GetTypeDescription() *TypeDescription { return t.TypeDescription } +// GetPathNode returns the path node associated with the TypeName. func (t *TypeName) GetPathNode() *PathNode { return t.PathNode } +// GetReferencedDeclaration returns the referenced declaration of the TypeName. func (t *TypeName) GetReferencedDeclaration() int64 { return t.ReferencedDeclaration } +// GetKeyType returns the key type for mapping types. func (t *TypeName) GetKeyType() *TypeName { return t.KeyType } +// GetValueType returns the value type for mapping types. func (t *TypeName) GetValueType() *TypeName { return t.ValueType } +// GetStateMutability returns the state mutability of the TypeName. func (t *TypeName) GetStateMutability() ast_pb.Mutability { return t.StateMutability } +// GetNodes returns a list of child nodes for traversal within the TypeName. func (t *TypeName) GetNodes() []Node[NodeType] { - return nil + toReturn := []Node[NodeType]{} + + if t.KeyType != nil { + toReturn = append(toReturn, t.KeyType) + } + + if t.ValueType != nil { + toReturn = append(toReturn, t.ValueType) + } + + return toReturn } +// ToProto converts the TypeName instance to its corresponding protocol buffer representation. func (t *TypeName) ToProto() NodeType { toReturn := &ast_pb.TypeName{ Id: t.GetId(), @@ -113,6 +137,7 @@ func (t *TypeName) ToProto() NodeType { return toReturn } +// parseTypeName parses the TypeName from the given TypeNameContext. func (t *TypeName) parseTypeName(unit *SourceUnit[Node[ast_pb.SourceUnit]], parentNodeId int64, ctx *parser.TypeNameContext) { t.Name = ctx.GetText() t.Src = SrcNode{ @@ -140,7 +165,7 @@ func (t *TypeName) parseTypeName(unit *SourceUnit[Node[ast_pb.SourceUnit]], pare } else if ctx.FunctionTypeName() != nil { panic(fmt.Sprintf("Function type name is not supported yet @ TypeName.generateTypeName: %T", ctx)) } else { - // It seems to be a user defined type but that does not exist as type in parser... + // It seems to be a user-defined type but that does not exist as a type in the parser... t.NodeType = ast_pb.NodeType_USER_DEFINED_PATH_NAME pathCtx := ctx.IdentifierPath() @@ -159,19 +184,23 @@ func (t *TypeName) parseTypeName(unit *SourceUnit[Node[ast_pb.SourceUnit]], pare }, NodeType: ast_pb.NodeType_IDENTIFIER_PATH, } - } - if refId, refTypeDescription := t.GetResolver().ResolveByNode(t, pathCtx.GetText()); refTypeDescription != nil { - if t.PathNode != nil { - t.PathNode.ReferencedDeclaration = refId + if refId, refTypeDescription := t.GetResolver().ResolveByNode(t, pathCtx.GetText()); refTypeDescription != nil { + if t.PathNode != nil { + t.PathNode.ReferencedDeclaration = refId + } + t.ReferencedDeclaration = refId + t.TypeDescription = refTypeDescription } - t.ReferencedDeclaration = refId - t.TypeDescription = refTypeDescription } } + if t.GetType() == ast_pb.NodeType_NT_DEFAULT { + t.NodeType = ast_pb.NodeType_IDENTIFIER + } } +// parseElementaryTypeName parses the ElementaryTypeName from the given ElementaryTypeNameContext. func (t *TypeName) parseElementaryTypeName(unit *SourceUnit[Node[ast_pb.SourceUnit]], parentNodeId int64, ctx *parser.ElementaryTypeNameContext) { t.Name = ctx.GetText() t.NodeType = ast_pb.NodeType_ELEMENTARY_TYPE_NAME @@ -193,6 +222,7 @@ func (t *TypeName) parseElementaryTypeName(unit *SourceUnit[Node[ast_pb.SourceUn } } +// parseIdentifierPath parses the IdentifierPath from the given IdentifierPathContext. func (t *TypeName) parseIdentifierPath(unit *SourceUnit[Node[ast_pb.SourceUnit]], parentNodeId int64, ctx *parser.IdentifierPathContext) { t.NodeType = ast_pb.NodeType_USER_DEFINED_PATH_NAME if len(ctx.AllIdentifier()) > 0 { @@ -220,6 +250,7 @@ func (t *TypeName) parseIdentifierPath(unit *SourceUnit[Node[ast_pb.SourceUnit]] } } +// parseMappingTypeName parses the MappingTypeName from the given MappingTypeContext. func (t *TypeName) parseMappingTypeName(unit *SourceUnit[Node[ast_pb.SourceUnit]], parentNodeId int64, ctx *parser.MappingTypeContext) { keyCtx := ctx.GetKey() valueCtx := ctx.GetValue() @@ -237,6 +268,7 @@ func (t *TypeName) parseMappingTypeName(unit *SourceUnit[Node[ast_pb.SourceUnit] } } +// generateTypeName generates the TypeName based on the given context. func (t *TypeName) generateTypeName(sourceUnit *SourceUnit[Node[ast_pb.SourceUnit]], ctx interface{}, parentNode *TypeName, typeNameNode *TypeName) *TypeName { typeName := &TypeName{ ASTBuilder: t.ASTBuilder, @@ -326,6 +358,7 @@ func (t *TypeName) generateTypeName(sourceUnit *SourceUnit[Node[ast_pb.SourceUni return typeName } +// Parse parses the TypeName from the given TypeNameContext. func (t *TypeName) Parse(unit *SourceUnit[Node[ast_pb.SourceUnit]], fnNode Node[NodeType], parentNodeId int64, ctx parser.ITypeNameContext) { t.Id = t.GetNextID() t.Src = SrcNode{ @@ -359,7 +392,8 @@ func (t *TypeName) Parse(unit *SourceUnit[Node[ast_pb.SourceUnit]], fnNode Node[ } } -func (t *TypeName) ParseElementary(unit *SourceUnit[Node[ast_pb.SourceUnit]], fnNode Node[NodeType], parentNodeId int64, ctx parser.IElementaryTypeNameContext) { +// ParseElementaryType parses the ElementaryTypeName from the given ElementaryTypeNameContext. +func (t *TypeName) ParseElementaryType(unit *SourceUnit[Node[ast_pb.SourceUnit]], fnNode Node[NodeType], parentNodeId int64, ctx parser.IElementaryTypeNameContext) { t.Id = t.GetNextID() t.Src = SrcNode{ Id: t.GetNextID(), @@ -385,12 +419,17 @@ func (t *TypeName) ParseElementary(unit *SourceUnit[Node[ast_pb.SourceUnit]], fn t.StateMutability = ast_pb.Mutability_PAYABLE } + if ctx.Payable() != nil { + t.StateMutability = ast_pb.Mutability_PAYABLE + } + t.TypeDescription = &TypeDescription{ TypeIdentifier: normalizedTypeIdentifier, TypeString: normalizedTypeName, } } +// PathNode represents a path node within a TypeName. type PathNode struct { Id int64 `json:"id"` Name string `json:"name"` @@ -399,6 +438,7 @@ type PathNode struct { Src SrcNode `json:"src"` } +// ToProto converts the PathNode instance to its corresponding protocol buffer representation. func (pn *PathNode) ToProto() *ast_pb.PathNode { return &ast_pb.PathNode{ Id: pn.Id, @@ -409,19 +449,23 @@ func (pn *PathNode) ToProto() *ast_pb.PathNode { } } +// TypeDescription represents a description of a type. type TypeDescription struct { TypeIdentifier string `json:"type_identifier"` TypeString string `json:"type_string"` } +// GetIdentifier returns the type identifier of the TypeDescription. func (td *TypeDescription) GetIdentifier() string { return td.TypeIdentifier } +// GetString returns the type string of the TypeDescription. func (td *TypeDescription) GetString() string { return td.TypeString } +// ToProto converts the TypeDescription instance to its corresponding protocol buffer representation. func (td TypeDescription) ToProto() *ast_pb.TypeDescription { return &ast_pb.TypeDescription{ TypeString: td.TypeString, diff --git a/ast/unary_prefix.go b/ast/unary_prefix.go index 612a329d..0134d960 100644 --- a/ast/unary_prefix.go +++ b/ast/unary_prefix.go @@ -6,6 +6,7 @@ import ( "github.com/txpull/solgo/parser" ) +// UnaryPrefix represents a unary operation applied as a prefix to an expression. type UnaryPrefix struct { *ASTBuilder @@ -23,6 +24,7 @@ type UnaryPrefix struct { TypeDescription *TypeDescription `json:"type_description"` } +// NewUnaryPrefixExpression creates a new UnaryPrefix instance with the given ASTBuilder. func NewUnaryPrefixExpression(b *ASTBuilder) *UnaryPrefix { return &UnaryPrefix{ ASTBuilder: b, @@ -38,58 +40,72 @@ func (u *UnaryPrefix) SetReferenceDescriptor(refId int64, refDesc *TypeDescripti return false } +// GetId returns the unique identifier of the UnaryPrefix. func (u *UnaryPrefix) GetId() int64 { return u.Id } +// GetType returns the node type of the UnaryPrefix. func (u *UnaryPrefix) GetType() ast_pb.NodeType { return u.NodeType } +// GetSrc returns the source location information of the UnaryPrefix. func (u *UnaryPrefix) GetSrc() SrcNode { return u.Src } +// GetOperator returns the unary operator applied to the expression. func (u *UnaryPrefix) GetOperator() ast_pb.Operator { return u.Operator } +// GetExpression returns the expression to which the unary operation is applied. func (u *UnaryPrefix) GetExpression() Node[NodeType] { return u.Expression } +// GetTypeDescription returns the type description associated with the UnaryPrefix. func (u *UnaryPrefix) GetTypeDescription() *TypeDescription { return u.TypeDescription } +// GetNodes returns a list of child nodes for traversal within the UnaryPrefix. func (u *UnaryPrefix) GetNodes() []Node[NodeType] { return []Node[NodeType]{u.Expression} } +// GetPrefix returns true if the unary operation is a prefix operation. func (u *UnaryPrefix) GetPrefix() bool { return u.Prefix } +// IsConstant returns true if the operation's result is a constant. func (u *UnaryPrefix) IsConstant() bool { return u.Constant } +// IsLValue returns true if the expression is an l-value. func (u *UnaryPrefix) IsLValue() bool { return u.LValue } +// IsPure returns true if the operation is pure, i.e., it doesn't modify state. func (u *UnaryPrefix) IsPure() bool { return u.Pure } +// IsLValueRequested returns true if an l-value is requested from the operation. func (u *UnaryPrefix) IsLValueRequested() bool { return u.LValueRequested } +// GetReferencedDeclaration returns the referenced declaration of the UnaryPrefix. func (u *UnaryPrefix) GetReferencedDeclaration() int64 { return u.ReferencedDeclaration } +// ToProto converts the UnaryPrefix instance to its corresponding protocol buffer representation. func (u *UnaryPrefix) ToProto() NodeType { proto := ast_pb.UnaryPrefix{ Id: u.GetId(), @@ -109,6 +125,7 @@ func (u *UnaryPrefix) ToProto() NodeType { return NewTypedStruct(&proto, "UnaryPrefix") } +// Parse populates the UnaryPrefix instance with information parsed from the provided contexts. func (u *UnaryPrefix) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/unary_suffix.go b/ast/unary_suffix.go index 9b3ee978..8b896191 100644 --- a/ast/unary_suffix.go +++ b/ast/unary_suffix.go @@ -6,6 +6,7 @@ import ( "github.com/txpull/solgo/parser" ) +// UnarySuffix represents a unary operation applied as a suffix to an expression. type UnarySuffix struct { *ASTBuilder @@ -23,6 +24,7 @@ type UnarySuffix struct { LValueRequested bool `json:"l_value_requested"` } +// NewUnarySuffixExpression creates a new UnarySuffix instance with the given ASTBuilder. func NewUnarySuffixExpression(b *ASTBuilder) *UnarySuffix { return &UnarySuffix{ ASTBuilder: b, @@ -38,58 +40,72 @@ func (u *UnarySuffix) SetReferenceDescriptor(refId int64, refDesc *TypeDescripti return false } +// GetId returns the unique identifier of the UnarySuffix. func (u *UnarySuffix) GetId() int64 { return u.Id } +// GetType returns the node type of the UnarySuffix. func (u *UnarySuffix) GetType() ast_pb.NodeType { return u.NodeType } +// GetSrc returns the source location information of the UnarySuffix. func (u *UnarySuffix) GetSrc() SrcNode { return u.Src } +// GetOperator returns the unary operator applied to the expression. func (u *UnarySuffix) GetOperator() ast_pb.Operator { return u.Operator } +// GetExpression returns the expression to which the unary operation is applied. func (u *UnarySuffix) GetExpression() Node[NodeType] { return u.Expression } +// GetTypeDescription returns the type description associated with the UnarySuffix. func (u *UnarySuffix) GetTypeDescription() *TypeDescription { return u.TypeDescription } +// GetNodes returns a list of child nodes for traversal within the UnarySuffix. func (u *UnarySuffix) GetNodes() []Node[NodeType] { return []Node[NodeType]{u.Expression} } +// GetPrefix returns true if the unary operation is a prefix operation. func (u *UnarySuffix) GetPrefix() bool { return u.Prefix } +// IsConstant returns true if the operation's result is a constant. func (u *UnarySuffix) IsConstant() bool { return u.Constant } +// IsLValue returns true if the expression is an l-value. func (u *UnarySuffix) IsLValue() bool { return u.LValue } +// IsPure returns true if the operation is pure, i.e., it doesn't modify state. func (u *UnarySuffix) IsPure() bool { return u.Pure } +// IsLValueRequested returns true if an l-value is requested from the operation. func (u *UnarySuffix) IsLValueRequested() bool { return u.LValueRequested } +// GetReferencedDeclaration returns the referenced declaration of the UnarySuffix. func (u *UnarySuffix) GetReferencedDeclaration() int64 { return u.ReferencedDeclaration } +// ToProto converts the UnarySuffix instance to its corresponding protocol buffer representation. func (u *UnarySuffix) ToProto() NodeType { proto := ast_pb.UnarySuffix{ Id: u.GetId(), @@ -109,6 +125,7 @@ func (u *UnarySuffix) ToProto() NodeType { return NewTypedStruct(&proto, "UnarySuffix") } +// Parse populates the UnarySuffix instance with information parsed from the provided contexts. func (u *UnarySuffix) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/using.go b/ast/using.go index b004f635..430881f8 100644 --- a/ast/using.go +++ b/ast/using.go @@ -5,6 +5,7 @@ import ( "github.com/txpull/solgo/parser" ) +// UsingDirective represents a Solidity using directive, which is used to import and use symbols from external libraries. type UsingDirective struct { *ASTBuilder @@ -16,6 +17,7 @@ type UsingDirective struct { LibraryName *LibraryName `json:"library_name"` } +// LibraryName represents the name of an external library referenced in a using directive. type LibraryName struct { *ASTBuilder @@ -26,6 +28,7 @@ type LibraryName struct { ReferencedDeclaration int64 `json:"referenced_declaration"` } +// ToProto converts the LibraryName instance to its corresponding protocol buffer representation. func (ln *LibraryName) ToProto() *ast_pb.LibraryName { return &ast_pb.LibraryName{ Id: ln.Id, @@ -36,6 +39,7 @@ func (ln *LibraryName) ToProto() *ast_pb.LibraryName { } } +// NewUsingDirective creates a new UsingDirective instance with the given ASTBuilder. func NewUsingDirective(b *ASTBuilder) *UsingDirective { return &UsingDirective{ ASTBuilder: b, @@ -51,42 +55,54 @@ func (u *UsingDirective) SetReferenceDescriptor(refId int64, refDesc *TypeDescri return false } +// GetId returns the unique identifier of the UsingDirective. func (u *UsingDirective) GetId() int64 { return u.Id } +// GetType returns the node type of the UsingDirective. func (u *UsingDirective) GetType() ast_pb.NodeType { return u.NodeType } +// GetSrc returns the source location information of the UsingDirective. func (u *UsingDirective) GetSrc() SrcNode { return u.Src } +// GetTypeDescription returns the type description associated with the UsingDirective. func (u *UsingDirective) GetTypeDescription() *TypeDescription { return u.TypeDescription } +// GetTypeName returns the type name associated with the UsingDirective. func (u *UsingDirective) GetTypeName() *TypeName { return u.TypeName } +// GetLibraryName returns the library name associated with the UsingDirective. func (u *UsingDirective) GetLibraryName() *LibraryName { return u.LibraryName } +// GetReferencedDeclaration returns the referenced declaration of the UsingDirective. func (u *UsingDirective) GetReferencedDeclaration() int64 { return u.TypeName.ReferencedDeclaration } +// GetPathNode returns the path node associated with the UsingDirective. func (u *UsingDirective) GetPathNode() *PathNode { return u.TypeName.PathNode } +// GetNodes returns a list of child nodes for traversal within the UsingDirective. func (u *UsingDirective) GetNodes() []Node[NodeType] { - return nil + return []Node[NodeType]{ + u.GetTypeName(), + } } +// ToProto converts the UsingDirective instance to its corresponding protocol buffer representation. func (u *UsingDirective) ToProto() NodeType { proto := ast_pb.Using{ Id: u.Id, @@ -100,6 +116,7 @@ func (u *UsingDirective) ToProto() NodeType { return NewTypedStruct(&proto, "Using") } +// Parse populates the UsingDirective instance with information parsed from the provided contexts. func (u *UsingDirective) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], @@ -122,6 +139,7 @@ func (u *UsingDirective) Parse( u.LibraryName = u.getLibraryName(ctx.IdentifierPath(0)) } +// getLibraryName extracts and returns the LibraryName instance from the provided identifier context. func (u *UsingDirective) getLibraryName(identifierCtx parser.IIdentifierPathContext) *LibraryName { return &LibraryName{ Id: u.GetNextID(), diff --git a/ast/variable.go b/ast/variable.go index 688c3290..3519b4d9 100644 --- a/ast/variable.go +++ b/ast/variable.go @@ -6,17 +6,19 @@ import ( "github.com/txpull/solgo/parser" ) +// VariableDeclaration represents a variable declaration node in the abstract syntax tree. type VariableDeclaration struct { *ASTBuilder - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Src SrcNode `json:"src"` - Assignments []int64 `json:"assignments"` - Declarations []*Declaration `json:"declarations"` - InitialValue Node[NodeType] `json:"initial_value,omitempty"` + Id int64 `json:"id"` // Unique identifier of the variable declaration node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the node. + Src SrcNode `json:"src"` // Source location information. + Assignments []int64 `json:"assignments"` // List of assignment identifiers. + Declarations []*Declaration `json:"declarations"` // List of declaration nodes. + InitialValue Node[NodeType] `json:"initial_value,omitempty"` // Initial value node. } +// NewVariableDeclarationStatement creates a new instance of VariableDeclaration with the provided ASTBuilder. func NewVariableDeclarationStatement(b *ASTBuilder) *VariableDeclaration { return &VariableDeclaration{ ASTBuilder: b, @@ -27,43 +29,51 @@ func NewVariableDeclarationStatement(b *ASTBuilder) *VariableDeclaration { } } -// SetReferenceDescriptor sets the reference descriptions of the VariableDeclaration node. +// SetReferenceDescriptor sets the reference descriptors of the VariableDeclaration node. func (v *VariableDeclaration) SetReferenceDescriptor(refId int64, refDesc *TypeDescription) bool { return false } +// GetId returns the unique identifier of the variable declaration node. func (v *VariableDeclaration) GetId() int64 { return v.Id } +// GetType returns the type of the node. func (v *VariableDeclaration) GetType() ast_pb.NodeType { return v.NodeType } +// GetSrc returns the source location information of the variable declaration node. func (v *VariableDeclaration) GetSrc() SrcNode { return v.Src } +// GetAssignments returns a list of assignment identifiers associated with the variable declaration. func (v *VariableDeclaration) GetAssignments() []int64 { return v.Assignments } +// GetDeclarations returns a list of declaration nodes associated with the variable declaration. func (v *VariableDeclaration) GetDeclarations() []*Declaration { return v.Declarations } +// GetInitialValue returns the initial value node associated with the variable declaration. func (v *VariableDeclaration) GetInitialValue() Node[NodeType] { return v.InitialValue } +// GetTypeDescription returns the type description associated with the variable declaration. func (v *VariableDeclaration) GetTypeDescription() *TypeDescription { if len(v.Declarations) > 0 { return v.Declarations[0].GetTypeDescription() } - return nil + return &TypeDescription{} } +// GetNodes returns a list of nodes associated with the variable declaration (initial value and declarations). func (v *VariableDeclaration) GetNodes() []Node[NodeType] { toReturn := []Node[NodeType]{} if v.GetInitialValue() != nil { @@ -77,6 +87,7 @@ func (v *VariableDeclaration) GetNodes() []Node[NodeType] { return toReturn } +// ToProto converts the VariableDeclaration node to its corresponding protobuf representation. func (v *VariableDeclaration) ToProto() NodeType { proto := ast_pb.Variable{ Id: v.Id, @@ -100,6 +111,7 @@ func (v *VariableDeclaration) ToProto() NodeType { return NewTypedStruct(&proto, "Variable") } +// Parse parses the variable declaration statement context and populates the VariableDeclaration fields. func (v *VariableDeclaration) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], diff --git a/ast/while.go b/ast/while.go index 31227dab..498cd974 100644 --- a/ast/while.go +++ b/ast/while.go @@ -6,17 +6,19 @@ import ( "github.com/txpull/solgo/parser" ) +// WhileStatement represents a while loop statement in the AST. type WhileStatement struct { *ASTBuilder - Id int64 `json:"id"` - NodeType ast_pb.NodeType `json:"node_type"` - Kind ast_pb.NodeType `json:"kind"` - Src SrcNode `json:"src"` - Condition Node[NodeType] `json:"condition"` - Body *BodyNode `json:"body"` + Id int64 `json:"id"` // Unique identifier for the WhileStatement node. + NodeType ast_pb.NodeType `json:"node_type"` // Type of the AST node. + Kind ast_pb.NodeType `json:"kind"` // Kind of while loop. + Src SrcNode `json:"src"` // Source location information. + Condition Node[NodeType] `json:"condition"` // Condition expression of the while loop. + Body *BodyNode `json:"body"` // Body of the while loop. } +// NewWhileStatement creates a new WhileStatement node with a given ASTBuilder. func NewWhileStatement(b *ASTBuilder) *WhileStatement { return &WhileStatement{ ASTBuilder: b, @@ -30,34 +32,45 @@ func (w *WhileStatement) SetReferenceDescriptor(refId int64, refDesc *TypeDescri return false } +// GetId returns the ID of the WhileStatement node. func (w *WhileStatement) GetId() int64 { return w.Id } +// GetType returns the NodeType of the WhileStatement node. func (w *WhileStatement) GetType() ast_pb.NodeType { return w.NodeType } +// GetSrc returns the SrcNode of the WhileStatement node. func (w *WhileStatement) GetSrc() SrcNode { return w.Src } +// GetCondition returns the condition expression of the WhileStatement node. func (w *WhileStatement) GetCondition() Node[NodeType] { return w.Condition } +// GetBody returns the body of the WhileStatement node. func (w *WhileStatement) GetBody() *BodyNode { return w.Body } +// GetKind returns the kind of the while loop. func (w *WhileStatement) GetKind() ast_pb.NodeType { return w.Kind } +// GetTypeDescription returns the TypeDescription of the WhileStatement node. func (w *WhileStatement) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{ + TypeString: "while", + TypeIdentifier: "$_t_while", + } } +// GetNodes returns the child nodes of the WhileStatement node. func (w *WhileStatement) GetNodes() []Node[NodeType] { toReturn := make([]Node[NodeType], 0) toReturn = append(toReturn, w.Condition) @@ -65,6 +78,7 @@ func (w *WhileStatement) GetNodes() []Node[NodeType] { return toReturn } +// ToProto returns a protobuf representation of the WhileStatement node. func (w *WhileStatement) ToProto() NodeType { proto := ast_pb.While{ Id: w.GetId(), @@ -78,6 +92,7 @@ func (w *WhileStatement) ToProto() NodeType { return NewTypedStruct(&proto, "While") } +// Parse parses a while loop statement context into the WhileStatement node. func (w *WhileStatement) Parse( unit *SourceUnit[Node[ast_pb.SourceUnit]], contractNode Node[NodeType], @@ -85,6 +100,7 @@ func (w *WhileStatement) Parse( bodyNode *BodyNode, ctx *parser.WhileStatementContext, ) Node[NodeType] { + // Setting the source location information. w.Src = SrcNode{ Id: w.GetNextID(), Line: int64(ctx.GetStart().GetLine()), @@ -94,14 +110,17 @@ func (w *WhileStatement) Parse( ParentIndex: bodyNode.Id, } + // Parsing the condition expression. expression := NewExpression(w.ASTBuilder) w.Condition = expression.Parse(unit, contractNode, fnNode, bodyNode, nil, w, ctx.Expression()) + // Parsing the body of the while loop. if ctx.Statement() != nil && ctx.Statement().Block() != nil && !ctx.Statement().Block().IsEmpty() { bodyNode := NewBodyNode(w.ASTBuilder) bodyNode.ParseBlock(unit, contractNode, w, ctx.Statement().Block()) w.Body = bodyNode + // Parsing unchecked blocks within the body. if ctx.Statement().Block() != nil && ctx.Statement().Block().AllUncheckedBlock() != nil { for _, uncheckedCtx := range ctx.Statement().Block().AllUncheckedBlock() { bodyNode := NewBodyNode(w.ASTBuilder) diff --git a/ast/yul.go b/ast/yul.go index 67535d69..47f5e382 100644 --- a/ast/yul.go +++ b/ast/yul.go @@ -45,7 +45,7 @@ func (y *YulStatement) GetNodes() []Node[NodeType] { } func (y *YulStatement) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{} } func (y *YulStatement) ToProto() NodeType { diff --git a/ast/yul_assignment.go b/ast/yul_assignment.go index 8975e387..48b7618e 100644 --- a/ast/yul_assignment.go +++ b/ast/yul_assignment.go @@ -1,5 +1,6 @@ package ast +/* import ( ast_pb "github.com/txpull/protos/dist/go/ast" "github.com/txpull/solgo/parser" @@ -52,7 +53,7 @@ func (y *YulAssignment) GetNodes() []Node[NodeType] { } func (y *YulAssignment) GetTypeDescription() *TypeDescription { - return nil + return &TypeDescription{} } func (y *YulAssignment) ToProto() NodeType { @@ -79,3 +80,4 @@ func (y *YulAssignment) Parse( } return y } +*/ diff --git a/audit/auditor_test.go b/audit/auditor_test.go index 7c702690..f313905a 100644 --- a/audit/auditor_test.go +++ b/audit/auditor_test.go @@ -80,12 +80,13 @@ func TestAuditor(t *testing.T) { assert.IsType(t, testCase.sources, auditor.GetSources()) assert.IsType(t, slitherConfig, auditor.GetConfig()) assert.IsType(t, &Slither{}, auditor.GetSlither()) - - response, err := auditor.Analyze() + report, err := auditor.Analyze() assert.NoError(t, err) if testCase.wantErr { - assert.NotEmpty(t, response.Error) - assert.False(t, response.Success) + assert.NotEmpty(t, report.Error) + assert.False(t, report.Success) + } else { + assert.NotNil(t, report.ToProto()) } }) } diff --git a/audit/config.go b/audit/config.go index be331494..2d76d6e8 100644 --- a/audit/config.go +++ b/audit/config.go @@ -7,9 +7,13 @@ import ( // allowedArgs defines a list of allowed arguments for slither. var allowedArgs = map[string]bool{ - "--json": true, - "-": true, - "--codex": true, + "--json": true, + "-": true, + "--codex": true, + "--solc-disable-warnings": true, + "--ignore-compile": true, + "--fail-none": true, + "--buidler-ignore-compile": true, } // requiredArgs defines a list of required arguments for slither. @@ -34,7 +38,7 @@ func NewDefaultConfig(tempDir string) (*Config, error) { toReturn := &Config{ tempDir: tempDir, Arguments: []string{ - "--json", "-", // Output to stdout. + "--ignore-compile", "--buidler-ignore-compile", "--fail-none", "--solc-disable-warnings", "--json", "-", // Output to stdout. }, } diff --git a/audit/report.go b/audit/report.go index b88cd3a5..fd1fdfaf 100644 --- a/audit/report.go +++ b/audit/report.go @@ -43,7 +43,7 @@ func (r *Report) FilterDetectorsByImpact(impact ImpactLevel) []Detector { // HasError determines if the audit response contains any error messages. func (r *Report) HasError() bool { - return r.Error != nil && *r.Error != "" + return r.Error != "" } // ElementsByType retrieves all elements of a specified type from the audit results. diff --git a/audit/report_test.go b/audit/report_test.go index ad2ef089..4a75e439 100644 --- a/audit/report_test.go +++ b/audit/report_test.go @@ -77,7 +77,7 @@ func TestResponse(t *testing.T) { // Test HasError function if resp.HasError() { assert.NotNil(t, resp.Error) - assert.NotEmpty(t, *resp.Error) + assert.NotEmpty(t, resp.Error) } // Test ElementsByType function diff --git a/audit/types.go b/audit/types.go index 7de567d5..ac4cc726 100644 --- a/audit/types.go +++ b/audit/types.go @@ -1,17 +1,41 @@ package audit +import ( + audit_pb "github.com/txpull/protos/dist/go/audit" +) + // Report represents the top-level structure of the Slither JSON output. type Report struct { Success bool `json:"success"` // Indicates the success status of the audit. - Error *string `json:"error"` // Contains any error messages, if present. + Error string `json:"error"` // Contains any error messages, if present. Results *Results `json:"results"` // Contains the results of the audit. } +// ToProto converts the Report struct to its protobuf representation. +func (r *Report) ToProto() *audit_pb.Report { + return &audit_pb.Report{ + Success: r.Success, + Error: r.Error, + Results: r.Results.ToProto(), + } +} + // Results encapsulates the list of detected vulnerabilities or issues. type Results struct { Detectors []Detector `json:"detectors"` // List of detected vulnerabilities or issues. } +// ToProto converts the Results struct to its protobuf representation. +func (r *Results) ToProto() *audit_pb.Results { + var detectors []*audit_pb.Detector + for _, d := range r.Detectors { + detectors = append(detectors, d.ToProto()) + } + return &audit_pb.Results{ + Detectors: detectors, + } +} + // Detector represents a single detected vulnerability or issue. type Detector struct { Elements []Element `json:"elements"` // Elements associated with the detected issue. @@ -24,6 +48,24 @@ type Detector struct { Confidence string `json:"confidence"` // The confidence level of the detected issue. } +// ToProto converts the Detector struct to its protobuf representation. +func (d *Detector) ToProto() *audit_pb.Detector { + var elements []*audit_pb.Element + for _, e := range d.Elements { + elements = append(elements, e.ToProto()) + } + return &audit_pb.Detector{ + Elements: elements, + Description: d.Description, + Markdown: d.Markdown, + FirstMarkdownElement: d.FirstMarkdownElement, + Id: d.ID, + Check: d.Check, + Impact: d.Impact, + Confidence: d.Confidence, + } +} + // Element represents a specific element (e.g., function, contract) associated with a detected issue. type Element struct { Type string `json:"type"` // Type of the element (e.g., "function", "contract"). @@ -34,17 +76,49 @@ type Element struct { AdditionalFields *AdditionalFields `json:"additional_fields,omitempty"` // Additional fields associated with the element. } +// ToProto converts the Element struct to its protobuf representation. +func (e *Element) ToProto() *audit_pb.Element { + toReturn := &audit_pb.Element{ + Type: e.Type, + Name: e.Name, + SourceMapping: e.SourceMapping.ToProto(), + TypeSpecificFields: e.TypeSpecificFields.ToProto(), + Signature: e.Signature, + } + + if e.AdditionalFields != nil { + toReturn.AdditionalFields = e.AdditionalFields.ToProto() + } + + return toReturn +} + // SourceMapping provides details about the source code location of an element. type SourceMapping struct { - Start int `json:"start"` // Start position in the source code. - Length int `json:"length"` // Length of the code segment. - FilenameRelative string `json:"filename_relative"` // Relative path to the source file. - FilenameAbsolute string `json:"filename_absolute"` // Absolute path to the source file. - FilenameShort string `json:"filename_short"` // Short name of the source file. - IsDependency bool `json:"is_dependency"` // Indicates if the element is a dependency. - Lines []int `json:"lines"` // Line numbers associated with the code segment. - StartingColumn int `json:"starting_column"` // Starting column of the code segment. - EndingColumn int `json:"ending_column"` // Ending column of the code segment. + Start int `json:"start"` // Start position in the source code. + Length int `json:"length"` // Length of the code segment. + FilenameRelative string `json:"filename_relative"` // Relative path to the source file. + FilenameAbsolute string `json:"filename_absolute"` // Absolute path to the source file. + FilenameShort string `json:"filename_short"` // Short name of the source file. + IsDependency bool `json:"is_dependency"` // Indicates if the element is a dependency. + Lines []int32 `json:"lines"` // Line numbers associated with the code segment. + StartingColumn int `json:"starting_column"` // Starting column of the code segment. + EndingColumn int `json:"ending_column"` // Ending column of the code segment. +} + +// ToProto converts the SourceMapping struct to its protobuf representation. +func (sm *SourceMapping) ToProto() *audit_pb.SourceMapping { + return &audit_pb.SourceMapping{ + Start: int32(sm.Start), + Length: int32(sm.Length), + FilenameRelative: sm.FilenameRelative, + FilenameAbsolute: sm.FilenameAbsolute, + FilenameShort: sm.FilenameShort, + IsDependency: sm.IsDependency, + Lines: sm.Lines, + StartingColumn: int32(sm.StartingColumn), + EndingColumn: int32(sm.EndingColumn), + } } // TypeSpecificFields contains fields that are specific to the type of an element. @@ -53,8 +127,29 @@ type TypeSpecificFields struct { Directive []string `json:"directive,omitempty"` // Directive associated with the element, if applicable. } +// ToProto converts the TypeSpecificFields struct to its protobuf representation. +func (tsf *TypeSpecificFields) ToProto() *audit_pb.TypeSpecificFields { + toReturn := &audit_pb.TypeSpecificFields{ + Directive: tsf.Directive, + } + + if tsf.Parent != nil { + toReturn.Parent = tsf.Parent.ToProto() + } + + return toReturn +} + // AdditionalFields provides additional information about an element. type AdditionalFields struct { UnderlyingType string `json:"underlying_type"` // Underlying type of the element. VariableName string `json:"variable_name,omitempty"` // Name of the variable, if applicable. } + +// ToProto converts the AdditionalFields struct to its protobuf representation. +func (af *AdditionalFields) ToProto() *audit_pb.AdditionalFields { + return &audit_pb.AdditionalFields{ + UnderlyingType: af.UnderlyingType, + VariableName: af.VariableName, + } +} diff --git a/bytecode/metadata.go b/bytecode/metadata.go index 9d5afe08..838a59e0 100644 --- a/bytecode/metadata.go +++ b/bytecode/metadata.go @@ -82,6 +82,21 @@ func (m *Metadata) GetCborLength() int16 { return m.cborLength } +// GetUrls returns the URLs of the contract's metadata. +func (m *Metadata) GetUrls() []string { + urls := make([]string, 0) + if len(m.GetIPFS()) > 7 { + urls = append(urls, m.GetIPFS()) + } + if len(m.GetBzzr0()) > 6 { + urls = append(urls, m.GetBzzr1()) + } + if len(m.GetBzzr1()) > 6 { + urls = append(urls, m.GetBzzr0()) + } + return urls +} + // DecodeContractMetadata decodes the metadata from Ethereum contract creation bytecode. // It returns a Metadata object and an error, if any occurred during decoding. func DecodeContractMetadata(bytecode []byte) (*Metadata, error) { diff --git a/bytecode/metadata_test.go b/bytecode/metadata_test.go index 23bbe077..f190b150 100644 --- a/bytecode/metadata_test.go +++ b/bytecode/metadata_test.go @@ -65,6 +65,7 @@ func TestDecodeContractCreationMetadata(t *testing.T) { assert.Equal(t, tt.want.GetRawMetadata(), got.GetRawMetadata()) assert.Equal(t, tt.want.GetCborLength(), got.GetCborLength()) assert.NotNil(t, got.ToProto()) + assert.GreaterOrEqual(t, len(got.GetUrls()), 0) got.Experimental = []byte("true") assert.True(t, got.GetExperimental()) diff --git a/data/tests/ast/Context.solgo.ast.json b/data/tests/ast/Context.solgo.ast.json index f40bb1f2..a3c82b0a 100644 --- a/data/tests/ast/Context.solgo.ast.json +++ b/data/tests/ast/Context.solgo.ast.json @@ -1,511 +1,511 @@ { - "id": 271, - "base_contracts": [], - "license": "MIT", - "exported_symbols": [ - { - "id": 271, - "name": "Context", - "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/utils/Context.sol" - } - ], - "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/utils/Context.sol", - "name": "Context", - "node_type": 1, - "nodes": [ - { - "id": 277, - "node_type": 10, - "src": { - "id": 278, - "line": 114, - "column": 0, - "start": 3510, - "end": 3532, - "length": 23, - "parent_index": 271 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 280, - "name": "Context", - "node_type": 35, - "src": { - "id": 0, - "line": 126, - "column": 0, - "start": 4032, - "end": 4266, - "length": 235, - "parent_index": 271 - }, - "abstract": false, - "kind": 36, - "fully_implemented": true, - "nodes": [ - { - "id": 282, - "name": "_msgSender", - "node_type": 42, - "kind": 41, - "src": { - "id": 283, - "line": 127, - "column": 4, - "start": 4064, - "end": 4159, - "length": 96, - "parent_index": 280 - }, - "body": { - "id": 296, - "node_type": 46, - "kind": 0, - "src": { - "id": 297, - "line": 127, - "column": 66, - "start": 4126, - "end": 4159, - "length": 34, - "parent_index": 282 - }, - "implemented": true, - "statements": [ - { - "id": 298, - "node_type": 47, - "src": { - "id": 299, - "line": 128, - "column": 8, - "start": 4136, - "end": 4153, - "length": 18, - "parent_index": 282 - }, - "function_return_parameters": 282, - "expression": { - "id": 300, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 301, - "line": 128, - "column": 15, - "start": 4143, - "end": 4152, - "length": 10, - "parent_index": 296 - }, - "expression": { - "id": 302, - "node_type": 16, - "src": { - "id": 303, - "line": 128, - "column": 15, - "start": 4143, - "end": 4145, - "length": 3, - "parent_index": 300 - }, - "name": "msg", - "type_description": { - "type_identifier": "t_magic_message", - "type_string": "msg" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "member_name": "sender", - "argument_types": [], - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 284, - "node_type": 43, - "src": { - "id": 285, - "line": 127, - "column": 57, - "start": 4117, - "end": 4123, - "length": 7, - "parent_index": 282 - }, - "parameters": [ - { - "id": 286, - "node_type": 44, - "src": { - "id": 287, - "line": 127, - "column": 57, - "start": 4117, - "end": 4123, - "length": 7, - "parent_index": 284 - }, - "scope": 282, - "name": "", - "type_name": { - "id": 288, - "node_type": 30, - "src": { - "id": 289, - "line": 127, - "column": 57, - "start": 4117, - "end": 4123, - "length": 7, - "parent_index": 286 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 290, - "node_type": 43, - "src": { - "id": 291, - "line": 127, - "column": 57, - "start": 4117, - "end": 4123, - "length": 7, - "parent_index": 282 - }, - "parameters": [ - { - "id": 292, - "node_type": 44, - "src": { - "id": 293, - "line": 127, - "column": 57, - "start": 4117, - "end": 4123, - "length": 7, - "parent_index": 290 - }, - "scope": 282, - "name": "", - "type_name": { - "id": 294, - "node_type": 30, - "src": { - "id": 295, - "line": 127, - "column": 57, - "start": 4117, - "end": 4123, - "length": 7, - "parent_index": 292 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "scope": 280, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 305, - "name": "_msgData", - "node_type": 42, - "kind": 41, - "src": { - "id": 306, - "line": 131, - "column": 4, - "start": 4166, - "end": 4264, - "length": 99, - "parent_index": 280 - }, - "body": { - "id": 319, - "node_type": 46, - "kind": 0, - "src": { - "id": 320, - "line": 131, - "column": 71, - "start": 4233, - "end": 4264, - "length": 32, - "parent_index": 305 - }, - "implemented": true, - "statements": [ - { - "id": 321, - "node_type": 47, - "src": { - "id": 322, - "line": 132, - "column": 8, - "start": 4243, - "end": 4258, - "length": 16, - "parent_index": 305 - }, - "function_return_parameters": 305, - "expression": { - "id": 323, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 324, - "line": 132, - "column": 15, - "start": 4250, - "end": 4257, - "length": 8, - "parent_index": 319 - }, - "expression": { - "id": 325, - "node_type": 16, - "src": { - "id": 326, - "line": 132, - "column": 15, - "start": 4250, - "end": 4252, - "length": 3, - "parent_index": 323 - }, - "name": "msg", - "type_description": { - "type_identifier": "t_magic_message", - "type_string": "msg" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "member_name": "data", - "argument_types": [], - "type_description": { - "type_identifier": "t_bytes_calldata_ptr", - "type_string": "bytes calldata" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 307, - "node_type": 43, - "src": { - "id": 308, - "line": 131, - "column": 55, - "start": 4217, - "end": 4230, - "length": 14, - "parent_index": 305 - }, - "parameters": [ - { - "id": 309, - "node_type": 44, - "src": { - "id": 310, - "line": 131, - "column": 55, - "start": 4217, - "end": 4230, - "length": 14, - "parent_index": 307 - }, - "scope": 305, - "name": "", - "type_name": { - "id": 311, - "node_type": 30, - "src": { - "id": 312, - "line": 131, - "column": 55, - "start": 4217, - "end": 4221, - "length": 5, - "parent_index": 309 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 4, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "return_parameters": { - "id": 313, - "node_type": 43, - "src": { - "id": 314, - "line": 131, - "column": 55, - "start": 4217, - "end": 4230, - "length": 14, - "parent_index": 305 - }, - "parameters": [ - { - "id": 315, - "node_type": 44, - "src": { - "id": 316, - "line": 131, - "column": 55, - "start": 4217, - "end": 4230, - "length": 14, - "parent_index": 313 - }, - "scope": 305, - "name": "", - "type_name": { - "id": 317, - "node_type": 30, - "src": { - "id": 318, - "line": 131, - "column": 55, - "start": 4217, - "end": 4221, - "length": 5, - "parent_index": 315 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 4, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "scope": 280, - "type_description": { - "type_identifier": "t_function_$_t_bytes", - "type_string": "function(bytes)" - } - } - ], - "linearized_base_contracts": [ - 280 - ], - "base_contracts": [], - "contract_dependencies": [] - } - ], - "src": { - "id": 272, - "line": 126, - "column": 0, - "start": 4032, - "end": 4266, - "length": 235, - "parent_index": 48 - } + "id": 271, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 271, + "name": "Context", + "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/utils/Context.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/utils/Context.sol", + "name": "Context", + "node_type": 1, + "nodes": [ + { + "id": 277, + "node_type": 10, + "src": { + "id": 278, + "line": 114, + "column": 0, + "start": 3510, + "end": 3532, + "length": 23, + "parent_index": 271 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 280, + "name": "Context", + "node_type": 35, + "src": { + "id": 0, + "line": 126, + "column": 0, + "start": 4032, + "end": 4266, + "length": 235, + "parent_index": 271 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 282, + "name": "_msgSender", + "node_type": 42, + "kind": 41, + "src": { + "id": 283, + "line": 127, + "column": 4, + "start": 4064, + "end": 4159, + "length": 96, + "parent_index": 280 + }, + "body": { + "id": 296, + "node_type": 46, + "kind": 0, + "src": { + "id": 297, + "line": 127, + "column": 66, + "start": 4126, + "end": 4159, + "length": 34, + "parent_index": 282 + }, + "implemented": true, + "statements": [ + { + "id": 298, + "node_type": 47, + "src": { + "id": 299, + "line": 128, + "column": 8, + "start": 4136, + "end": 4153, + "length": 18, + "parent_index": 282 + }, + "function_return_parameters": 282, + "expression": { + "id": 300, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 301, + "line": 128, + "column": 15, + "start": 4143, + "end": 4152, + "length": 10, + "parent_index": 296 + }, + "expression": { + "id": 302, + "node_type": 16, + "src": { + "id": 303, + "line": 128, + "column": 15, + "start": 4143, + "end": 4145, + "length": 3, + "parent_index": 300 + }, + "name": "msg", + "type_description": { + "type_identifier": "t_magic_message", + "type_string": "msg" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "sender", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 284, + "node_type": 43, + "src": { + "id": 285, + "line": 127, + "column": 57, + "start": 4117, + "end": 4123, + "length": 7, + "parent_index": 282 + }, + "parameters": [ + { + "id": 286, + "node_type": 44, + "src": { + "id": 287, + "line": 127, + "column": 57, + "start": 4117, + "end": 4123, + "length": 7, + "parent_index": 284 + }, + "scope": 282, + "name": "", + "type_name": { + "id": 288, + "node_type": 30, + "src": { + "id": 289, + "line": 127, + "column": 57, + "start": 4117, + "end": 4123, + "length": 7, + "parent_index": 286 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 290, + "node_type": 43, + "src": { + "id": 291, + "line": 127, + "column": 57, + "start": 4117, + "end": 4123, + "length": 7, + "parent_index": 282 + }, + "parameters": [ + { + "id": 292, + "node_type": 44, + "src": { + "id": 293, + "line": 127, + "column": 57, + "start": 4117, + "end": 4123, + "length": 7, + "parent_index": 290 + }, + "scope": 282, + "name": "", + "type_name": { + "id": 294, + "node_type": 30, + "src": { + "id": 295, + "line": 127, + "column": 57, + "start": 4117, + "end": 4123, + "length": 7, + "parent_index": 292 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 280, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 305, + "name": "_msgData", + "node_type": 42, + "kind": 41, + "src": { + "id": 306, + "line": 131, + "column": 4, + "start": 4166, + "end": 4264, + "length": 99, + "parent_index": 280 + }, + "body": { + "id": 319, + "node_type": 46, + "kind": 0, + "src": { + "id": 320, + "line": 131, + "column": 71, + "start": 4233, + "end": 4264, + "length": 32, + "parent_index": 305 + }, + "implemented": true, + "statements": [ + { + "id": 321, + "node_type": 47, + "src": { + "id": 322, + "line": 132, + "column": 8, + "start": 4243, + "end": 4258, + "length": 16, + "parent_index": 305 + }, + "function_return_parameters": 305, + "expression": { + "id": 323, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 324, + "line": 132, + "column": 15, + "start": 4250, + "end": 4257, + "length": 8, + "parent_index": 319 + }, + "expression": { + "id": 325, + "node_type": 16, + "src": { + "id": 326, + "line": 132, + "column": 15, + "start": 4250, + "end": 4252, + "length": 3, + "parent_index": 323 + }, + "name": "msg", + "type_description": { + "type_identifier": "t_magic_message", + "type_string": "msg" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "data", + "argument_types": [], + "type_description": { + "type_identifier": "t_bytes_calldata_ptr", + "type_string": "bytes calldata" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 307, + "node_type": 43, + "src": { + "id": 308, + "line": 131, + "column": 55, + "start": 4217, + "end": 4230, + "length": 14, + "parent_index": 305 + }, + "parameters": [ + { + "id": 309, + "node_type": 44, + "src": { + "id": 310, + "line": 131, + "column": 55, + "start": 4217, + "end": 4230, + "length": 14, + "parent_index": 307 + }, + "scope": 305, + "name": "", + "type_name": { + "id": 311, + "node_type": 30, + "src": { + "id": 312, + "line": 131, + "column": 55, + "start": 4217, + "end": 4221, + "length": 5, + "parent_index": 309 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 4, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 313, + "node_type": 43, + "src": { + "id": 314, + "line": 131, + "column": 55, + "start": 4217, + "end": 4230, + "length": 14, + "parent_index": 305 + }, + "parameters": [ + { + "id": 315, + "node_type": 44, + "src": { + "id": 316, + "line": 131, + "column": 55, + "start": 4217, + "end": 4230, + "length": 14, + "parent_index": 313 + }, + "scope": 305, + "name": "", + "type_name": { + "id": 317, + "node_type": 30, + "src": { + "id": 318, + "line": 131, + "column": 55, + "start": 4217, + "end": 4221, + "length": 5, + "parent_index": 315 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 4, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 280, + "type_description": { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + } + } + ], + "linearized_base_contracts": [ + 280 + ], + "base_contracts": [], + "contract_dependencies": [] + } + ], + "src": { + "id": 272, + "line": 126, + "column": 0, + "start": 4032, + "end": 4266, + "length": 235, + "parent_index": 48 + } } \ No newline at end of file diff --git a/data/tests/ast/ERC20.solgo.ast.json b/data/tests/ast/ERC20.solgo.ast.json index 92f51af6..af114b0d 100644 --- a/data/tests/ast/ERC20.solgo.ast.json +++ b/data/tests/ast/ERC20.solgo.ast.json @@ -1,11828 +1,11578 @@ { - "id": 327, - "base_contracts": [ - { - "id": 342, - "node_type": 62, - "src": { - "id": 343, - "line": 174, - "column": 18, - "start": 5820, - "end": 5826, - "length": 7, - "parent_index": 341 - }, - "base_name": { - "id": 344, - "node_type": 52, - "src": { - "id": 345, - "line": 174, - "column": 18, - "start": 5820, - "end": 5826, - "length": 7, - "parent_index": 341 - }, - "name": "Context", - "referenced_declaration": 271 - } - }, - { - "id": 346, - "node_type": 62, - "src": { - "id": 347, - "line": 174, - "column": 27, - "start": 5829, - "end": 5834, - "length": 6, - "parent_index": 341 - }, - "base_name": { - "id": 348, - "node_type": 52, - "src": { - "id": 349, - "line": 174, - "column": 27, - "start": 5829, - "end": 5834, - "length": 6, - "parent_index": 341 - }, - "name": "IERC20", - "referenced_declaration": 49 - } - }, - { - "id": 350, - "node_type": 62, - "src": { - "id": 351, - "line": 174, - "column": 35, - "start": 5837, - "end": 5850, - "length": 14, - "parent_index": 341 - }, - "base_name": { - "id": 352, - "node_type": 52, - "src": { - "id": 353, - "line": 174, - "column": 35, - "start": 5837, - "end": 5850, - "length": 14, - "parent_index": 341 - }, - "name": "IERC20Metadata", - "referenced_declaration": 207 - } - } - ], - "license": "MIT", - "exported_symbols": [ - { - "id": 327, - "name": "ERC20", - "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/ERC20.sol" - }, - { - "id": 342, - "name": "Context", - "absolute_path": "" - }, - { - "id": 346, - "name": "IERC20", - "absolute_path": "" - }, - { - "id": 350, - "name": "IERC20Metadata", - "absolute_path": "" - } - ], - "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/ERC20.sol", - "name": "ERC20", - "node_type": 1, - "nodes": [ - { - "id": 335, - "node_type": 10, - "src": { - "id": 336, - "line": 140, - "column": 0, - "start": 4375, - "end": 4397, - "length": 23, - "parent_index": 327 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 341, - "name": "ERC20", - "node_type": 35, - "src": { - "id": 0, - "line": 174, - "column": 0, - "start": 5802, - "end": 17113, - "length": 11312, - "parent_index": 327 - }, - "abstract": false, - "kind": 36, - "fully_implemented": true, - "nodes": [ - { - "id": 355, - "name": "_balances", - "is_constant": false, - "is_state_variable": true, - "node_type": 44, - "src": { - "id": 356, - "line": 175, - "column": 4, - "start": 5858, - "end": 5903, - "length": 46, - "parent_index": 341 - }, - "scope": 341, - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - }, - "visibility": 2, - "storage_location": 1, - "mutability": 1, - "type_name": { - "id": 357, - "node_type": 0, - "src": { - "id": 358, - "line": 175, - "column": 4, - "start": 5858, - "end": 5884, - "length": 27, - "parent_index": 355 - }, - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - }, - "key_type": { - "id": 359, - "node_type": 30, - "src": { - "id": 360, - "line": 175, - "column": 12, - "start": 5866, - "end": 5872, - "length": 7, - "parent_index": 357 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "referenced_declaration": 0 - }, - "value_type": { - "id": 361, - "node_type": 30, - "src": { - "id": 362, - "line": 175, - "column": 23, - "start": 5877, - "end": 5883, - "length": 7, - "parent_index": 357 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "referenced_declaration": 0 - } - }, - { - "id": 364, - "name": "_allowances", - "is_constant": false, - "is_state_variable": true, - "node_type": 44, - "src": { - "id": 365, - "line": 177, - "column": 4, - "start": 5910, - "end": 5977, - "length": 68, - "parent_index": 341 - }, - "scope": 341, - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003emapping(address=\u003euint256))" - }, - "visibility": 2, - "storage_location": 1, - "mutability": 1, - "type_name": { - "id": 366, - "node_type": 0, - "src": { - "id": 367, - "line": 177, - "column": 4, - "start": 5910, - "end": 5956, - "length": 47, - "parent_index": 364 - }, - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003emapping(address=\u003euint256))" - }, - "key_type": { - "id": 368, - "node_type": 30, - "src": { - "id": 369, - "line": 177, - "column": 12, - "start": 5918, - "end": 5924, - "length": 7, - "parent_index": 366 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "referenced_declaration": 0 - }, - "value_type": { - "id": 370, - "node_type": 53, - "src": { - "id": 371, - "line": 177, - "column": 23, - "start": 5929, - "end": 5955, - "length": 27, - "parent_index": 366 - }, - "name": "mapping(address=\u003euint256)", - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256", - "type_string": "mapping(address=\u003euint256)" - }, - "key_type": { - "id": 373, - "node_type": 30, - "src": { - "id": 374, - "line": 177, - "column": 31, - "start": 5937, - "end": 5943, - "length": 7, - "parent_index": 366 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "referenced_declaration": 0 - }, - "value_type": { - "id": 375, - "node_type": 30, - "src": { - "id": 376, - "line": 177, - "column": 42, - "start": 5948, - "end": 5954, - "length": 7, - "parent_index": 366 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "referenced_declaration": 0 - }, - "referenced_declaration": 0 - } - }, - { - "id": 378, - "name": "_totalSupply", - "is_constant": false, - "is_state_variable": true, - "node_type": 44, - "src": { - "id": 379, - "line": 179, - "column": 4, - "start": 5984, - "end": 6012, - "length": 29, - "parent_index": 341 - }, - "scope": 341, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "visibility": 2, - "storage_location": 1, - "mutability": 1, - "type_name": { - "id": 380, - "node_type": 30, - "src": { - "id": 381, - "line": 179, - "column": 4, - "start": 5984, - "end": 5990, - "length": 7, - "parent_index": 378 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - } - }, - { - "id": 383, - "name": "_name", - "is_constant": false, - "is_state_variable": true, - "node_type": 44, - "src": { - "id": 384, - "line": 181, - "column": 4, - "start": 6019, - "end": 6039, - "length": 21, - "parent_index": 341 - }, - "scope": 341, - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "visibility": 2, - "storage_location": 1, - "mutability": 1, - "type_name": { - "id": 385, - "node_type": 30, - "src": { - "id": 386, - "line": 181, - "column": 4, - "start": 6019, - "end": 6024, - "length": 6, - "parent_index": 383 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - } - }, - { - "id": 388, - "name": "_symbol", - "is_constant": false, - "is_state_variable": true, - "node_type": 44, - "src": { - "id": 389, - "line": 182, - "column": 4, - "start": 6045, - "end": 6067, - "length": 23, - "parent_index": 341 - }, - "scope": 341, - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "visibility": 2, - "storage_location": 1, - "mutability": 1, - "type_name": { - "id": 390, - "node_type": 30, - "src": { - "id": 391, - "line": 182, - "column": 4, - "start": 6045, - "end": 6050, - "length": 6, - "parent_index": 388 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - } - }, - { - "id": 393, - "node_type": 42, - "src": { - "id": 394, - "line": 190, - "column": 4, - "start": 6250, - "end": 6362, - "length": 113, - "parent_index": 341 - }, - "kind": 11, - "state_mutability": 4, - "visibility": 1, - "implemented": true, - "modifiers": [], - "parameters": { - "id": 395, - "node_type": 43, - "src": { - "id": 396, - "line": 190, - "column": 16, - "start": 6262, - "end": 6303, - "length": 42, - "parent_index": 393 - }, - "parameters": [ - { - "id": 397, - "node_type": 44, - "src": { - "id": 398, - "line": 190, - "column": 16, - "start": 6262, - "end": 6280, - "length": 19, - "parent_index": 395 - }, - "scope": 393, - "name": "name_", - "type_name": { - "id": 399, - "node_type": 30, - "src": { - "id": 400, - "line": 190, - "column": 16, - "start": 6262, - "end": 6267, - "length": 6, - "parent_index": 397 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 401, - "node_type": 44, - "src": { - "id": 402, - "line": 190, - "column": 37, - "start": 6283, - "end": 6303, - "length": 21, - "parent_index": 395 - }, - "scope": 393, - "name": "symbol_", - "type_name": { - "id": 403, - "node_type": 30, - "src": { - "id": 404, - "line": 190, - "column": 37, - "start": 6283, - "end": 6288, - "length": 6, - "parent_index": 401 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_string", - "type_string": "string" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "return_parameters": { - "id": 405, - "node_type": 43, - "src": { - "id": 394, - "line": 190, - "column": 4, - "start": 6250, - "end": 6362, - "length": 113, - "parent_index": 393 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 341, - "body": { - "id": 406, - "node_type": 46, - "kind": 0, - "src": { - "id": 407, - "line": 190, - "column": 60, - "start": 6306, - "end": 6362, - "length": 57, - "parent_index": 393 - }, - "implemented": true, - "statements": [ - { - "id": 408, - "node_type": 81, - "src": { - "id": 409, - "line": 191, - "column": 8, - "start": 6316, - "end": 6329, - "length": 14, - "parent_index": 406 - }, - "expression": { - "id": 410, - "node_type": 27, - "src": { - "id": 411, - "line": 191, - "column": 8, - "start": 6316, - "end": 6328, - "length": 13, - "parent_index": 406 - }, - "operator": 11, - "left_expression": { - "id": 412, - "node_type": 16, - "src": { - "id": 413, - "line": 191, - "column": 8, - "start": 6316, - "end": 6320, - "length": 5, - "parent_index": 410 - }, - "name": "_name", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "overloaded_declarations": [], - "referenced_declaration": 383, - "is_pure": false - }, - "right_expression": { - "id": 414, - "node_type": 16, - "src": { - "id": 415, - "line": 191, - "column": 16, - "start": 6324, - "end": 6328, - "length": 5, - "parent_index": 410 - }, - "name": "name_", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "overloaded_declarations": [], - "referenced_declaration": 414, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - } - } - }, - { - "id": 416, - "node_type": 81, - "src": { - "id": 417, - "line": 192, - "column": 8, - "start": 6339, - "end": 6356, - "length": 18, - "parent_index": 406 - }, - "expression": { - "id": 418, - "node_type": 27, - "src": { - "id": 419, - "line": 192, - "column": 8, - "start": 6339, - "end": 6355, - "length": 17, - "parent_index": 406 - }, - "operator": 11, - "left_expression": { - "id": 420, - "node_type": 16, - "src": { - "id": 421, - "line": 192, - "column": 8, - "start": 6339, - "end": 6345, - "length": 7, - "parent_index": 418 - }, - "name": "_symbol", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "overloaded_declarations": [], - "referenced_declaration": 388, - "is_pure": false - }, - "right_expression": { - "id": 422, - "node_type": 16, - "src": { - "id": 423, - "line": 192, - "column": 18, - "start": 6349, - "end": 6355, - "length": 7, - "parent_index": 418 - }, - "name": "symbol_", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "overloaded_declarations": [], - "referenced_declaration": 422, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - } - } - } - ] - } - }, - { - "id": 425, - "name": "name", - "node_type": 42, - "kind": 41, - "src": { - "id": 426, - "line": 198, - "column": 4, - "start": 6428, - "end": 6525, - "length": 98, - "parent_index": 341 - }, - "body": { - "id": 441, - "node_type": 46, - "kind": 0, - "src": { - "id": 442, - "line": 198, - "column": 73, - "start": 6497, - "end": 6525, - "length": 29, - "parent_index": 425 - }, - "implemented": true, - "statements": [ - { - "id": 443, - "node_type": 47, - "src": { - "id": 444, - "line": 199, - "column": 8, - "start": 6507, - "end": 6519, - "length": 13, - "parent_index": 425 - }, - "function_return_parameters": 425, - "expression": { - "id": 445, - "node_type": 16, - "src": { - "id": 446, - "line": 199, - "column": 15, - "start": 6514, - "end": 6518, - "length": 5, - "parent_index": 441 - }, - "name": "_name", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "overloaded_declarations": [], - "referenced_declaration": 383, - "is_pure": false - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [ - { - "id": 427, - "node_type": 63, - "name": "name", - "src": { - "id": 428, - "line": 198, - "column": 40, - "start": 6464, - "end": 6471, - "length": 8, - "parent_index": 425 - }, - "referenced_declaration": 224, - "type_descriptions": { - "type_identifier": "t_function_$_t_string", - "type_string": "function(string)" - } - } - ], - "parameters": { - "id": 429, - "node_type": 43, - "src": { - "id": 430, - "line": 198, - "column": 58, - "start": 6482, - "end": 6494, - "length": 13, - "parent_index": 425 - }, - "parameters": [ - { - "id": 431, - "node_type": 44, - "src": { - "id": 432, - "line": 198, - "column": 58, - "start": 6482, - "end": 6494, - "length": 13, - "parent_index": 429 - }, - "scope": 425, - "name": "", - "type_name": { - "id": 433, - "node_type": 30, - "src": { - "id": 434, - "line": 198, - "column": 58, - "start": 6482, - "end": 6487, - "length": 6, - "parent_index": 431 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "return_parameters": { - "id": 435, - "node_type": 43, - "src": { - "id": 436, - "line": 198, - "column": 58, - "start": 6482, - "end": 6494, - "length": 13, - "parent_index": 425 - }, - "parameters": [ - { - "id": 437, - "node_type": 44, - "src": { - "id": 438, - "line": 198, - "column": 58, - "start": 6482, - "end": 6494, - "length": 13, - "parent_index": 435 - }, - "scope": 425, - "name": "", - "type_name": { - "id": 439, - "node_type": 30, - "src": { - "id": 440, - "line": 198, - "column": 58, - "start": 6482, - "end": 6487, - "length": 6, - "parent_index": 437 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_string", - "type_string": "function(string)" - } - }, - { - "id": 448, - "name": "symbol", - "node_type": 42, - "kind": 41, - "src": { - "id": 449, - "line": 206, - "column": 4, - "start": 6639, - "end": 6740, - "length": 102, - "parent_index": 341 - }, - "body": { - "id": 464, - "node_type": 46, - "kind": 0, - "src": { - "id": 465, - "line": 206, - "column": 75, - "start": 6710, - "end": 6740, - "length": 31, - "parent_index": 448 - }, - "implemented": true, - "statements": [ - { - "id": 466, - "node_type": 47, - "src": { - "id": 467, - "line": 207, - "column": 8, - "start": 6720, - "end": 6734, - "length": 15, - "parent_index": 448 - }, - "function_return_parameters": 448, - "expression": { - "id": 468, - "node_type": 16, - "src": { - "id": 469, - "line": 207, - "column": 15, - "start": 6727, - "end": 6733, - "length": 7, - "parent_index": 464 - }, - "name": "_symbol", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "overloaded_declarations": [], - "referenced_declaration": 388, - "is_pure": false - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [ - { - "id": 450, - "node_type": 63, - "name": "symbol", - "src": { - "id": 451, - "line": 206, - "column": 42, - "start": 6677, - "end": 6684, - "length": 8, - "parent_index": 448 - }, - "referenced_declaration": 240, - "type_descriptions": { - "type_identifier": "t_function_$_t_string", - "type_string": "function(string)" - } - } - ], - "parameters": { - "id": 452, - "node_type": 43, - "src": { - "id": 453, - "line": 206, - "column": 60, - "start": 6695, - "end": 6707, - "length": 13, - "parent_index": 448 - }, - "parameters": [ - { - "id": 454, - "node_type": 44, - "src": { - "id": 455, - "line": 206, - "column": 60, - "start": 6695, - "end": 6707, - "length": 13, - "parent_index": 452 - }, - "scope": 448, - "name": "", - "type_name": { - "id": 456, - "node_type": 30, - "src": { - "id": 457, - "line": 206, - "column": 60, - "start": 6695, - "end": 6700, - "length": 6, - "parent_index": 454 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "return_parameters": { - "id": 458, - "node_type": 43, - "src": { - "id": 459, - "line": 206, - "column": 60, - "start": 6695, - "end": 6707, - "length": 13, - "parent_index": 448 - }, - "parameters": [ - { - "id": 460, - "node_type": 44, - "src": { - "id": 461, - "line": 206, - "column": 60, - "start": 6695, - "end": 6707, - "length": 13, - "parent_index": 458 - }, - "scope": 448, - "name": "", - "type_name": { - "id": 462, - "node_type": 30, - "src": { - "id": 463, - "line": 206, - "column": 60, - "start": 6695, - "end": 6700, - "length": 6, - "parent_index": 460 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_string", - "type_string": "function(string)" - } - }, - { - "id": 471, - "name": "decimals", - "node_type": 42, - "kind": 41, - "src": { - "id": 472, - "line": 223, - "column": 4, - "start": 7374, - "end": 7464, - "length": 91, - "parent_index": 341 - }, - "body": { - "id": 487, - "node_type": 46, - "kind": 0, - "src": { - "id": 488, - "line": 223, - "column": 69, - "start": 7439, - "end": 7464, - "length": 26, - "parent_index": 471 - }, - "implemented": true, - "statements": [ - { - "id": 489, - "node_type": 47, - "src": { - "id": 490, - "line": 224, - "column": 8, - "start": 7449, - "end": 7458, - "length": 10, - "parent_index": 471 - }, - "function_return_parameters": 471, - "expression": { - "id": 491, - "node_type": 17, - "kind": 49, - "value": "18", - "hex_value": "3138", - "src": { - "id": 492, - "line": 224, - "column": 15, - "start": 7456, - "end": 7457, - "length": 2, - "parent_index": 487 - }, - "type_description": { - "type_identifier": "t_rational_18_by_1", - "type_string": "int_const 18" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [ - { - "id": 473, - "node_type": 63, - "name": "decimals", - "src": { - "id": 474, - "line": 223, - "column": 44, - "start": 7414, - "end": 7421, - "length": 8, - "parent_index": 471 - }, - "referenced_declaration": 256, - "type_descriptions": { - "type_identifier": "t_function_$_t_uint8", - "type_string": "function(uint8)" - } - } - ], - "parameters": { - "id": 475, - "node_type": 43, - "src": { - "id": 476, - "line": 223, - "column": 62, - "start": 7432, - "end": 7436, - "length": 5, - "parent_index": 471 - }, - "parameters": [ - { - "id": 477, - "node_type": 44, - "src": { - "id": 478, - "line": 223, - "column": 62, - "start": 7432, - "end": 7436, - "length": 5, - "parent_index": 475 - }, - "scope": 471, - "name": "", - "type_name": { - "id": 479, - "node_type": 30, - "src": { - "id": 480, - "line": 223, - "column": 62, - "start": 7432, - "end": 7436, - "length": 5, - "parent_index": 477 - }, - "name": "uint8", - "type_description": { - "type_identifier": "t_uint8", - "type_string": "uint8" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint8", - "type_string": "uint8" - } - ] - }, - "return_parameters": { - "id": 481, - "node_type": 43, - "src": { - "id": 482, - "line": 223, - "column": 62, - "start": 7432, - "end": 7436, - "length": 5, - "parent_index": 471 - }, - "parameters": [ - { - "id": 483, - "node_type": 44, - "src": { - "id": 484, - "line": 223, - "column": 62, - "start": 7432, - "end": 7436, - "length": 5, - "parent_index": 481 - }, - "scope": 471, - "name": "", - "type_name": { - "id": 485, - "node_type": 30, - "src": { - "id": 486, - "line": 223, - "column": 62, - "start": 7432, - "end": 7436, - "length": 5, - "parent_index": 483 - }, - "name": "uint8", - "type_description": { - "type_identifier": "t_uint8", - "type_string": "uint8" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint8", - "type_string": "uint8" - } - ] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_uint8", - "type_string": "function(uint8)" - } - }, - { - "id": 494, - "name": "totalSupply", - "node_type": 42, - "kind": 41, - "src": { - "id": 495, - "line": 230, - "column": 4, - "start": 7525, - "end": 7630, - "length": 106, - "parent_index": 341 - }, - "body": { - "id": 510, - "node_type": 46, - "kind": 0, - "src": { - "id": 511, - "line": 230, - "column": 74, - "start": 7595, - "end": 7630, - "length": 36, - "parent_index": 494 - }, - "implemented": true, - "statements": [ - { - "id": 512, - "node_type": 47, - "src": { - "id": 513, - "line": 231, - "column": 8, - "start": 7605, - "end": 7624, - "length": 20, - "parent_index": 494 - }, - "function_return_parameters": 494, - "expression": { - "id": 514, - "node_type": 16, - "src": { - "id": 515, - "line": 231, - "column": 15, - "start": 7612, - "end": 7623, - "length": 12, - "parent_index": 510 - }, - "name": "_totalSupply", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 378, - "is_pure": false - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [ - { - "id": 496, - "node_type": 63, - "name": "totalSupply", - "src": { - "id": 497, - "line": 230, - "column": 47, - "start": 7568, - "end": 7575, - "length": 8, - "parent_index": 494 - }, - "referenced_declaration": 92, - "type_descriptions": { - "type_identifier": "t_function_$_t_uint256", - "type_string": "function(uint256)" - } - } - ], - "parameters": { - "id": 498, - "node_type": 43, - "src": { - "id": 499, - "line": 230, - "column": 65, - "start": 7586, - "end": 7592, - "length": 7, - "parent_index": 494 - }, - "parameters": [ - { - "id": 500, - "node_type": 44, - "src": { - "id": 501, - "line": 230, - "column": 65, - "start": 7586, - "end": 7592, - "length": 7, - "parent_index": 498 - }, - "scope": 494, - "name": "", - "type_name": { - "id": 502, - "node_type": 30, - "src": { - "id": 503, - "line": 230, - "column": 65, - "start": 7586, - "end": 7592, - "length": 7, - "parent_index": 500 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 504, - "node_type": 43, - "src": { - "id": 505, - "line": 230, - "column": 65, - "start": 7586, - "end": 7592, - "length": 7, - "parent_index": 494 - }, - "parameters": [ - { - "id": 506, - "node_type": 44, - "src": { - "id": 507, - "line": 230, - "column": 65, - "start": 7586, - "end": 7592, - "length": 7, - "parent_index": 504 - }, - "scope": 494, - "name": "", - "type_name": { - "id": 508, - "node_type": 30, - "src": { - "id": 509, - "line": 230, - "column": 65, - "start": 7586, - "end": 7592, - "length": 7, - "parent_index": 506 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_uint256", - "type_string": "function(uint256)" - } - }, - { - "id": 517, - "name": "balanceOf", - "node_type": 42, - "kind": 41, - "src": { - "id": 518, - "line": 237, - "column": 4, - "start": 7689, - "end": 7813, - "length": 125, - "parent_index": 341 - }, - "body": { - "id": 533, - "node_type": 46, - "kind": 0, - "src": { - "id": 534, - "line": 237, - "column": 87, - "start": 7772, - "end": 7813, - "length": 42, - "parent_index": 517 - }, - "implemented": true, - "statements": [ - { - "id": 535, - "node_type": 47, - "src": { - "id": 536, - "line": 238, - "column": 8, - "start": 7782, - "end": 7807, - "length": 26, - "parent_index": 517 - }, - "function_return_parameters": 517, - "expression": { - "id": 537, - "node_type": 22, - "src": { - "id": 538, - "line": 238, - "column": 15, - "start": 7789, - "end": 7806, - "length": 18, - "parent_index": 533 - }, - "index_expression": { - "id": 539, - "node_type": 16, - "src": { - "id": 540, - "line": 238, - "column": 15, - "start": 7789, - "end": 7797, - "length": 9, - "parent_index": 537 - }, - "name": "_balances", - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 355, - "is_pure": false - }, - "base_expression": { - "id": 541, - "node_type": 16, - "src": { - "id": 542, - "line": 238, - "column": 25, - "start": 7799, - "end": 7805, - "length": 7, - "parent_index": 537 - }, - "name": "account", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 541, - "is_pure": false - }, - "type_descriptions": [ - { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - } - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [ - { - "id": 519, - "node_type": 63, - "name": "balanceOf", - "src": { - "id": 520, - "line": 237, - "column": 60, - "start": 7745, - "end": 7752, - "length": 8, - "parent_index": 517 - }, - "referenced_declaration": 108, - "type_descriptions": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - } - ], - "parameters": { - "id": 521, - "node_type": 43, - "src": { - "id": 522, - "line": 237, - "column": 23, - "start": 7708, - "end": 7722, - "length": 15, - "parent_index": 517 - }, - "parameters": [ - { - "id": 523, - "node_type": 44, - "src": { - "id": 524, - "line": 237, - "column": 23, - "start": 7708, - "end": 7722, - "length": 15, - "parent_index": 521 - }, - "scope": 517, - "name": "account", - "type_name": { - "id": 525, - "node_type": 30, - "src": { - "id": 526, - "line": 237, - "column": 23, - "start": 7708, - "end": 7714, - "length": 7, - "parent_index": 523 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 527, - "node_type": 43, - "src": { - "id": 528, - "line": 237, - "column": 78, - "start": 7763, - "end": 7769, - "length": 7, - "parent_index": 517 - }, - "parameters": [ - { - "id": 529, - "node_type": 44, - "src": { - "id": 530, - "line": 237, - "column": 78, - "start": 7763, - "end": 7769, - "length": 7, - "parent_index": 527 - }, - "scope": 517, - "name": "", - "type_name": { - "id": 531, - "node_type": 30, - "src": { - "id": 532, - "line": 237, - "column": 78, - "start": 7763, - "end": 7769, - "length": 7, - "parent_index": 529 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 544, - "name": "transfer", - "node_type": 42, - "kind": 41, - "src": { - "id": 545, - "line": 249, - "column": 4, - "start": 8010, - "end": 8198, - "length": 189, - "parent_index": 341 - }, - "body": { - "id": 564, - "node_type": 46, - "kind": 0, - "src": { - "id": 565, - "line": 249, - "column": 89, - "start": 8095, - "end": 8198, - "length": 104, - "parent_index": 544 - }, - "implemented": true, - "statements": [ - { - "id": 566, - "node_type": 44, - "src": { - "id": 567, - "line": 250, - "column": 8, - "start": 8105, - "end": 8133, - "length": 29, - "parent_index": 564 - }, - "assignments": [ - 568 - ], - "declarations": [ - { - "is_constant": false, - "id": 568, - "state_mutability": 1, - "name": "owner", - "node_type": 44, - "scope": 564, - "src": { - "id": 569, - "line": 250, - "column": 8, - "start": 8105, - "end": 8117, - "length": 13, - "parent_index": 566 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 570, - "node_type": 30, - "src": { - "id": 571, - "line": 250, - "column": 8, - "start": 8105, - "end": 8111, - "length": 7, - "parent_index": 568 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 572, - "node_type": 24, - "kind": 24, - "src": { - "id": 573, - "line": 250, - "column": 24, - "start": 8121, - "end": 8132, - "length": 12, - "parent_index": 566 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 574, - "node_type": 16, - "src": { - "id": 575, - "line": 250, - "column": 24, - "start": 8121, - "end": 8130, - "length": 10, - "parent_index": 572 - }, - "name": "_msgSender", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - } - }, - { - "id": 576, - "node_type": 24, - "kind": 24, - "src": { - "id": 577, - "line": 251, - "column": 8, - "start": 8143, - "end": 8170, - "length": 28, - "parent_index": 564 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ], - "arguments": [ - { - "id": 578, - "node_type": 16, - "src": { - "id": 579, - "line": 251, - "column": 18, - "start": 8153, - "end": 8157, - "length": 5, - "parent_index": 576 - }, - "name": "owner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 566, - "is_pure": false - }, - { - "id": 580, - "node_type": 16, - "src": { - "id": 581, - "line": 251, - "column": 25, - "start": 8160, - "end": 8161, - "length": 2, - "parent_index": 576 - }, - "name": "to", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 580, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - { - "id": 582, - "node_type": 16, - "src": { - "id": 583, - "line": 251, - "column": 29, - "start": 8164, - "end": 8169, - "length": 6, - "parent_index": 576 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 582, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - } - ], - "expression": { - "id": 584, - "node_type": 16, - "src": { - "id": 585, - "line": 251, - "column": 8, - "start": 8143, - "end": 8151, - "length": 9, - "parent_index": 576 - }, - "name": "_transfer", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "type_string": "function(address,address,uint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "type_string": "function(address,address,uint256)" - } - }, - { - "id": 586, - "node_type": 47, - "src": { - "id": 587, - "line": 252, - "column": 8, - "start": 8181, - "end": 8192, - "length": 12, - "parent_index": 544 - }, - "function_return_parameters": 544, - "expression": { - "id": 588, - "node_type": 17, - "kind": 61, - "value": "true", - "hex_value": "74727565", - "src": { - "id": 589, - "line": 252, - "column": 15, - "start": 8188, - "end": 8191, - "length": 4, - "parent_index": 564 - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 4, - "virtual": true, - "modifiers": [], - "overrides": [ - { - "id": 546, - "node_type": 63, - "name": "transfer", - "src": { - "id": 547, - "line": 249, - "column": 65, - "start": 8071, - "end": 8078, - "length": 8, - "parent_index": 544 - }, - "referenced_declaration": 124, - "type_descriptions": { - "type_identifier": "t_function_$_t_address$$_t_uint256", - "type_string": "function(address,uint256)" - } - } - ], - "parameters": { - "id": 548, - "node_type": 43, - "src": { - "id": 549, - "line": 249, - "column": 22, - "start": 8028, - "end": 8053, - "length": 26, - "parent_index": 544 - }, - "parameters": [ - { - "id": 550, - "node_type": 44, - "src": { - "id": 551, - "line": 249, - "column": 22, - "start": 8028, - "end": 8037, - "length": 10, - "parent_index": 548 - }, - "scope": 544, - "name": "to", - "type_name": { - "id": 552, - "node_type": 30, - "src": { - "id": 553, - "line": 249, - "column": 22, - "start": 8028, - "end": 8034, - "length": 7, - "parent_index": 550 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 554, - "node_type": 44, - "src": { - "id": 555, - "line": 249, - "column": 34, - "start": 8040, - "end": 8053, - "length": 14, - "parent_index": 548 - }, - "scope": 544, - "name": "amount", - "type_name": { - "id": 556, - "node_type": 30, - "src": { - "id": 557, - "line": 249, - "column": 34, - "start": 8040, - "end": 8046, - "length": 7, - "parent_index": 554 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 558, - "node_type": 43, - "src": { - "id": 559, - "line": 249, - "column": 83, - "start": 8089, - "end": 8092, - "length": 4, - "parent_index": 544 - }, - "parameters": [ - { - "id": 560, - "node_type": 44, - "src": { - "id": 561, - "line": 249, - "column": 83, - "start": 8089, - "end": 8092, - "length": 4, - "parent_index": 558 - }, - "scope": 544, - "name": "", - "type_name": { - "id": 562, - "node_type": 30, - "src": { - "id": 563, - "line": 249, - "column": 83, - "start": 8089, - "end": 8092, - "length": 4, - "parent_index": 560 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_uint256", - "type_string": "function(address,uint256)" - } - }, - { - "id": 591, - "name": "allowance", - "node_type": 42, - "kind": 41, - "src": { - "id": 592, - "line": 258, - "column": 4, - "start": 8257, - "end": 8405, - "length": 149, - "parent_index": 341 - }, - "body": { - "id": 611, - "node_type": 46, - "kind": 0, - "src": { - "id": 612, - "line": 258, - "column": 102, - "start": 8355, - "end": 8405, - "length": 51, - "parent_index": 591 - }, - "implemented": true, - "statements": [ - { - "id": 613, - "node_type": 47, - "src": { - "id": 614, - "line": 259, - "column": 8, - "start": 8365, - "end": 8399, - "length": 35, - "parent_index": 591 - }, - "function_return_parameters": 591, - "expression": { - "id": 615, - "node_type": 22, - "src": { - "id": 616, - "line": 259, - "column": 15, - "start": 8372, - "end": 8398, - "length": 27, - "parent_index": 611 - }, - "index_expression": { - "id": 617, - "node_type": 22, - "src": { - "id": 618, - "line": 259, - "column": 15, - "start": 8372, - "end": 8389, - "length": 18, - "parent_index": 615 - }, - "index_expression": { - "id": 619, - "node_type": 16, - "src": { - "id": 620, - "line": 259, - "column": 15, - "start": 8372, - "end": 8382, - "length": 11, - "parent_index": 617 - }, - "name": "_allowances", - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003emapping(address=\u003euint256))" - }, - "overloaded_declarations": [], - "referenced_declaration": 364, - "is_pure": false - }, - "base_expression": { - "id": 621, - "node_type": 16, - "src": { - "id": 622, - "line": 259, - "column": 27, - "start": 8384, - "end": 8388, - "length": 5, - "parent_index": 617 - }, - "name": "owner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 621, - "is_pure": false - }, - "type_descriptions": [ - { - "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003emapping(address=\u003euint256))" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003emapping(address=\u003euint256))" - } - }, - "base_expression": { - "id": 623, - "node_type": 16, - "src": { - "id": 624, - "line": 259, - "column": 34, - "start": 8391, - "end": 8397, - "length": 7, - "parent_index": 615 - }, - "name": "spender", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 623, - "is_pure": false - }, - "type_descriptions": [ - { - "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003emapping(address=\u003euint256))" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003emapping(address=\u003euint256))" - } - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [ - { - "id": 593, - "node_type": 63, - "name": "allowance", - "src": { - "id": 594, - "line": 258, - "column": 75, - "start": 8328, - "end": 8335, - "length": 8, - "parent_index": 591 - }, - "referenced_declaration": 144, - "type_descriptions": { - "type_identifier": "t_function_$_t_address$$_t_address", - "type_string": "function(address,address)" - } - } - ], - "parameters": { - "id": 595, - "node_type": 43, - "src": { - "id": 596, - "line": 258, - "column": 23, - "start": 8276, - "end": 8305, - "length": 30, - "parent_index": 591 - }, - "parameters": [ - { - "id": 597, - "node_type": 44, - "src": { - "id": 598, - "line": 258, - "column": 23, - "start": 8276, - "end": 8288, - "length": 13, - "parent_index": 595 - }, - "scope": 591, - "name": "owner", - "type_name": { - "id": 599, - "node_type": 30, - "src": { - "id": 600, - "line": 258, - "column": 23, - "start": 8276, - "end": 8282, - "length": 7, - "parent_index": 597 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 601, - "node_type": 44, - "src": { - "id": 602, - "line": 258, - "column": 38, - "start": 8291, - "end": 8305, - "length": 15, - "parent_index": 595 - }, - "scope": 591, - "name": "spender", - "type_name": { - "id": 603, - "node_type": 30, - "src": { - "id": 604, - "line": 258, - "column": 38, - "start": 8291, - "end": 8297, - "length": 7, - "parent_index": 601 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 605, - "node_type": 43, - "src": { - "id": 606, - "line": 258, - "column": 93, - "start": 8346, - "end": 8352, - "length": 7, - "parent_index": 591 - }, - "parameters": [ - { - "id": 607, - "node_type": 44, - "src": { - "id": 608, - "line": 258, - "column": 93, - "start": 8346, - "end": 8352, - "length": 7, - "parent_index": 605 - }, - "scope": 591, - "name": "", - "type_name": { - "id": 609, - "node_type": 30, - "src": { - "id": 610, - "line": 258, - "column": 93, - "start": 8346, - "end": 8352, - "length": 7, - "parent_index": 607 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address", - "type_string": "function(address,address)" - } - }, - { - "id": 626, - "name": "approve", - "node_type": 42, - "kind": 41, - "src": { - "id": 627, - "line": 272, - "column": 4, - "start": 8714, - "end": 8910, - "length": 197, - "parent_index": 341 - }, - "body": { - "id": 646, - "node_type": 46, - "kind": 0, - "src": { - "id": 647, - "line": 272, - "column": 93, - "start": 8803, - "end": 8910, - "length": 108, - "parent_index": 626 - }, - "implemented": true, - "statements": [ - { - "id": 648, - "node_type": 44, - "src": { - "id": 649, - "line": 273, - "column": 8, - "start": 8813, - "end": 8841, - "length": 29, - "parent_index": 646 - }, - "assignments": [ - 650 - ], - "declarations": [ - { - "is_constant": false, - "id": 650, - "state_mutability": 1, - "name": "owner", - "node_type": 44, - "scope": 646, - "src": { - "id": 651, - "line": 273, - "column": 8, - "start": 8813, - "end": 8825, - "length": 13, - "parent_index": 648 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 652, - "node_type": 30, - "src": { - "id": 653, - "line": 273, - "column": 8, - "start": 8813, - "end": 8819, - "length": 7, - "parent_index": 650 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 654, - "node_type": 24, - "kind": 24, - "src": { - "id": 655, - "line": 273, - "column": 24, - "start": 8829, - "end": 8840, - "length": 12, - "parent_index": 648 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 656, - "node_type": 16, - "src": { - "id": 657, - "line": 273, - "column": 24, - "start": 8829, - "end": 8838, - "length": 10, - "parent_index": 654 - }, - "name": "_msgSender", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - } - }, - { - "id": 658, - "node_type": 24, - "kind": 24, - "src": { - "id": 659, - "line": 274, - "column": 8, - "start": 8851, - "end": 8882, - "length": 32, - "parent_index": 646 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ], - "arguments": [ - { - "id": 660, - "node_type": 16, - "src": { - "id": 661, - "line": 274, - "column": 17, - "start": 8860, - "end": 8864, - "length": 5, - "parent_index": 658 - }, - "name": "owner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 648, - "is_pure": false - }, - { - "id": 662, - "node_type": 16, - "src": { - "id": 663, - "line": 274, - "column": 24, - "start": 8867, - "end": 8873, - "length": 7, - "parent_index": 658 - }, - "name": "spender", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 662, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - { - "id": 664, - "node_type": 16, - "src": { - "id": 665, - "line": 274, - "column": 33, - "start": 8876, - "end": 8881, - "length": 6, - "parent_index": 658 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 664, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - } - ], - "expression": { - "id": 666, - "node_type": 16, - "src": { - "id": 667, - "line": 274, - "column": 8, - "start": 8851, - "end": 8858, - "length": 8, - "parent_index": 658 - }, - "name": "_approve", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "type_string": "function(address,address,uint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "type_string": "function(address,address,uint256)" - } - }, - { - "id": 668, - "node_type": 47, - "src": { - "id": 669, - "line": 275, - "column": 8, - "start": 8893, - "end": 8904, - "length": 12, - "parent_index": 626 - }, - "function_return_parameters": 626, - "expression": { - "id": 670, - "node_type": 17, - "kind": 61, - "value": "true", - "hex_value": "74727565", - "src": { - "id": 671, - "line": 275, - "column": 15, - "start": 8900, - "end": 8903, - "length": 4, - "parent_index": 646 - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 4, - "virtual": true, - "modifiers": [], - "overrides": [ - { - "id": 628, - "node_type": 63, - "name": "approve", - "src": { - "id": 629, - "line": 272, - "column": 69, - "start": 8779, - "end": 8786, - "length": 8, - "parent_index": 626 - }, - "referenced_declaration": 164, - "type_descriptions": { - "type_identifier": "t_function_$_t_address$$_t_uint256", - "type_string": "function(address,uint256)" - } - } - ], - "parameters": { - "id": 630, - "node_type": 43, - "src": { - "id": 631, - "line": 272, - "column": 21, - "start": 8731, - "end": 8761, - "length": 31, - "parent_index": 626 - }, - "parameters": [ - { - "id": 632, - "node_type": 44, - "src": { - "id": 633, - "line": 272, - "column": 21, - "start": 8731, - "end": 8745, - "length": 15, - "parent_index": 630 - }, - "scope": 626, - "name": "spender", - "type_name": { - "id": 634, - "node_type": 30, - "src": { - "id": 635, - "line": 272, - "column": 21, - "start": 8731, - "end": 8737, - "length": 7, - "parent_index": 632 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 636, - "node_type": 44, - "src": { - "id": 637, - "line": 272, - "column": 38, - "start": 8748, - "end": 8761, - "length": 14, - "parent_index": 630 - }, - "scope": 626, - "name": "amount", - "type_name": { - "id": 638, - "node_type": 30, - "src": { - "id": 639, - "line": 272, - "column": 38, - "start": 8748, - "end": 8754, - "length": 7, - "parent_index": 636 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 640, - "node_type": 43, - "src": { - "id": 641, - "line": 272, - "column": 87, - "start": 8797, - "end": 8800, - "length": 4, - "parent_index": 626 - }, - "parameters": [ - { - "id": 642, - "node_type": 44, - "src": { - "id": 643, - "line": 272, - "column": 87, - "start": 8797, - "end": 8800, - "length": 4, - "parent_index": 640 - }, - "scope": 626, - "name": "", - "type_name": { - "id": 644, - "node_type": 30, - "src": { - "id": 645, - "line": 272, - "column": 87, - "start": 8797, - "end": 8800, - "length": 4, - "parent_index": 642 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_uint256", - "type_string": "function(address,uint256)" - } - }, - { - "id": 673, - "name": "transferFrom", - "node_type": 42, - "kind": 41, - "src": { - "id": 674, - "line": 294, - "column": 4, - "start": 9473, - "end": 9728, - "length": 256, - "parent_index": 341 - }, - "body": { - "id": 697, - "node_type": 46, - "kind": 0, - "src": { - "id": 698, - "line": 294, - "column": 107, - "start": 9576, - "end": 9728, - "length": 153, - "parent_index": 673 - }, - "implemented": true, - "statements": [ - { - "id": 699, - "node_type": 44, - "src": { - "id": 700, - "line": 295, - "column": 8, - "start": 9586, - "end": 9616, - "length": 31, - "parent_index": 697 - }, - "assignments": [ - 701 - ], - "declarations": [ - { - "is_constant": false, - "id": 701, - "state_mutability": 1, - "name": "spender", - "node_type": 44, - "scope": 697, - "src": { - "id": 702, - "line": 295, - "column": 8, - "start": 9586, - "end": 9600, - "length": 15, - "parent_index": 699 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 703, - "node_type": 30, - "src": { - "id": 704, - "line": 295, - "column": 8, - "start": 9586, - "end": 9592, - "length": 7, - "parent_index": 701 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 705, - "node_type": 24, - "kind": 24, - "src": { - "id": 706, - "line": 295, - "column": 26, - "start": 9604, - "end": 9615, - "length": 12, - "parent_index": 699 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 707, - "node_type": 16, - "src": { - "id": 708, - "line": 295, - "column": 26, - "start": 9604, - "end": 9613, - "length": 10, - "parent_index": 705 - }, - "name": "_msgSender", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - } - }, - { - "id": 709, - "node_type": 24, - "kind": 24, - "src": { - "id": 710, - "line": 296, - "column": 8, - "start": 9626, - "end": 9663, - "length": 38, - "parent_index": 697 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ], - "arguments": [ - { - "id": 711, - "node_type": 16, - "src": { - "id": 712, - "line": 296, - "column": 24, - "start": 9642, - "end": 9645, - "length": 4, - "parent_index": 709 - }, - "name": "from", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 711, - "is_pure": false - }, - { - "id": 713, - "node_type": 16, - "src": { - "id": 714, - "line": 296, - "column": 30, - "start": 9648, - "end": 9654, - "length": 7, - "parent_index": 709 - }, - "name": "spender", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 699, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - { - "id": 715, - "node_type": 16, - "src": { - "id": 716, - "line": 296, - "column": 39, - "start": 9657, - "end": 9662, - "length": 6, - "parent_index": 709 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 715, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - } - ], - "expression": { - "id": 717, - "node_type": 16, - "src": { - "id": 718, - "line": 296, - "column": 8, - "start": 9626, - "end": 9640, - "length": 15, - "parent_index": 709 - }, - "name": "_spendAllowance", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "type_string": "function(address,address,uint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "type_string": "function(address,address,uint256)" - } - }, - { - "id": 719, - "node_type": 24, - "kind": 24, - "src": { - "id": 720, - "line": 297, - "column": 8, - "start": 9674, - "end": 9700, - "length": 27, - "parent_index": 697 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ], - "arguments": [ - { - "id": 721, - "node_type": 16, - "src": { - "id": 722, - "line": 297, - "column": 18, - "start": 9684, - "end": 9687, - "length": 4, - "parent_index": 719 - }, - "name": "from", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 721, - "is_pure": false - }, - { - "id": 723, - "node_type": 16, - "src": { - "id": 724, - "line": 297, - "column": 24, - "start": 9690, - "end": 9691, - "length": 2, - "parent_index": 719 - }, - "name": "to", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 723, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - { - "id": 725, - "node_type": 16, - "src": { - "id": 726, - "line": 297, - "column": 28, - "start": 9694, - "end": 9699, - "length": 6, - "parent_index": 719 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 725, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - } - ], - "expression": { - "id": 727, - "node_type": 16, - "src": { - "id": 728, - "line": 297, - "column": 8, - "start": 9674, - "end": 9682, - "length": 9, - "parent_index": 719 - }, - "name": "_transfer", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "type_string": "function(address,address,uint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "type_string": "function(address,address,uint256)" - } - }, - { - "id": 729, - "node_type": 47, - "src": { - "id": 730, - "line": 298, - "column": 8, - "start": 9711, - "end": 9722, - "length": 12, - "parent_index": 673 - }, - "function_return_parameters": 673, - "expression": { - "id": 731, - "node_type": 17, - "kind": 61, - "value": "true", - "hex_value": "74727565", - "src": { - "id": 732, - "line": 298, - "column": 15, - "start": 9718, - "end": 9721, - "length": 4, - "parent_index": 697 - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 4, - "virtual": true, - "modifiers": [], - "overrides": [ - { - "id": 675, - "node_type": 63, - "name": "transferFrom", - "src": { - "id": 676, - "line": 294, - "column": 83, - "start": 9552, - "end": 9559, - "length": 8, - "parent_index": 673 - }, - "referenced_declaration": 184, - "type_descriptions": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "type_string": "function(address,address,uint256)" - } - } - ], - "parameters": { - "id": 677, - "node_type": 43, - "src": { - "id": 678, - "line": 294, - "column": 26, - "start": 9495, - "end": 9534, - "length": 40, - "parent_index": 673 - }, - "parameters": [ - { - "id": 679, - "node_type": 44, - "src": { - "id": 680, - "line": 294, - "column": 26, - "start": 9495, - "end": 9506, - "length": 12, - "parent_index": 677 - }, - "scope": 673, - "name": "from", - "type_name": { - "id": 681, - "node_type": 30, - "src": { - "id": 682, - "line": 294, - "column": 26, - "start": 9495, - "end": 9501, - "length": 7, - "parent_index": 679 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 683, - "node_type": 44, - "src": { - "id": 684, - "line": 294, - "column": 40, - "start": 9509, - "end": 9518, - "length": 10, - "parent_index": 677 - }, - "scope": 673, - "name": "to", - "type_name": { - "id": 685, - "node_type": 30, - "src": { - "id": 686, - "line": 294, - "column": 40, - "start": 9509, - "end": 9515, - "length": 7, - "parent_index": 683 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 687, - "node_type": 44, - "src": { - "id": 688, - "line": 294, - "column": 52, - "start": 9521, - "end": 9534, - "length": 14, - "parent_index": 677 - }, - "scope": 673, - "name": "amount", - "type_name": { - "id": 689, - "node_type": 30, - "src": { - "id": 690, - "line": 294, - "column": 52, - "start": 9521, - "end": 9527, - "length": 7, - "parent_index": 687 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 691, - "node_type": 43, - "src": { - "id": 692, - "line": 294, - "column": 101, - "start": 9570, - "end": 9573, - "length": 4, - "parent_index": 673 - }, - "parameters": [ - { - "id": 693, - "node_type": 44, - "src": { - "id": 694, - "line": 294, - "column": 101, - "start": 9570, - "end": 9573, - "length": 4, - "parent_index": 691 - }, - "scope": 673, - "name": "", - "type_name": { - "id": 695, - "node_type": 30, - "src": { - "id": 696, - "line": 294, - "column": 101, - "start": 9570, - "end": 9573, - "length": 4, - "parent_index": 693 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "type_string": "function(address,address,uint256)" - } - }, - { - "id": 734, - "name": "increaseAllowance", - "node_type": 42, - "kind": 41, - "src": { - "id": 735, - "line": 313, - "column": 4, - "start": 10124, - "end": 10357, - "length": 234, - "parent_index": 341 - }, - "body": { - "id": 752, - "node_type": 46, - "kind": 0, - "src": { - "id": 753, - "line": 313, - "column": 98, - "start": 10218, - "end": 10357, - "length": 140, - "parent_index": 734 - }, - "implemented": true, - "statements": [ - { - "id": 754, - "node_type": 44, - "src": { - "id": 755, - "line": 314, - "column": 8, - "start": 10228, - "end": 10256, - "length": 29, - "parent_index": 752 - }, - "assignments": [ - 756 - ], - "declarations": [ - { - "is_constant": false, - "id": 756, - "state_mutability": 1, - "name": "owner", - "node_type": 44, - "scope": 752, - "src": { - "id": 757, - "line": 314, - "column": 8, - "start": 10228, - "end": 10240, - "length": 13, - "parent_index": 754 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 758, - "node_type": 30, - "src": { - "id": 759, - "line": 314, - "column": 8, - "start": 10228, - "end": 10234, - "length": 7, - "parent_index": 756 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 760, - "node_type": 24, - "kind": 24, - "src": { - "id": 761, - "line": 314, - "column": 24, - "start": 10244, - "end": 10255, - "length": 12, - "parent_index": 754 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 762, - "node_type": 16, - "src": { - "id": 763, - "line": 314, - "column": 24, - "start": 10244, - "end": 10253, - "length": 10, - "parent_index": 760 - }, - "name": "_msgSender", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - } - }, - { - "id": 764, - "node_type": 24, - "kind": 24, - "src": { - "id": 765, - "line": 315, - "column": 8, - "start": 10266, - "end": 10329, - "length": 64, - "parent_index": 752 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_function_$_t_address$$_t_address$", - "type_string": "function(address,address)" - } - ], - "arguments": [ - { - "id": 766, - "node_type": 16, - "src": { - "id": 767, - "line": 315, - "column": 17, - "start": 10275, - "end": 10279, - "length": 5, - "parent_index": 764 - }, - "name": "owner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 754, - "is_pure": false - }, - { - "id": 768, - "node_type": 16, - "src": { - "id": 769, - "line": 315, - "column": 24, - "start": 10282, - "end": 10288, - "length": 7, - "parent_index": 764 - }, - "name": "spender", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 768, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - { - "id": 770, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 771, - "line": 315, - "column": 33, - "start": 10291, - "end": 10328, - "length": 38, - "parent_index": 764 - }, - "operator": 1, - "left_expression": { - "id": 772, - "node_type": 24, - "kind": 24, - "src": { - "id": 773, - "line": 315, - "column": 33, - "start": 10291, - "end": 10315, - "length": 25, - "parent_index": 770 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 774, - "node_type": 16, - "src": { - "id": 775, - "line": 315, - "column": 43, - "start": 10301, - "end": 10305, - "length": 5, - "parent_index": 772 - }, - "name": "owner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 754, - "is_pure": false - }, - { - "id": 776, - "node_type": 16, - "src": { - "id": 777, - "line": 315, - "column": 50, - "start": 10308, - "end": 10314, - "length": 7, - "parent_index": 772 - }, - "name": "spender", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 776, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - } - ], - "expression": { - "id": 778, - "node_type": 16, - "src": { - "id": 779, - "line": 315, - "column": 33, - "start": 10291, - "end": 10299, - "length": 9, - "parent_index": 772 - }, - "name": "allowance", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address", - "type_string": "function(address,address)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$", - "type_string": "function(address,address)" - } - }, - "right_expression": { - "id": 780, - "node_type": 16, - "src": { - "id": 781, - "line": 315, - "column": 61, - "start": 10319, - "end": 10328, - "length": 10, - "parent_index": 770 - }, - "name": "addedValue", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 780, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$", - "type_string": "function(address,address)" - } - } - ], - "expression": { - "id": 782, - "node_type": 16, - "src": { - "id": 783, - "line": 315, - "column": 8, - "start": 10266, - "end": 10273, - "length": 8, - "parent_index": 764 - }, - "name": "_approve", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_function_$_t_address$$_t_address$", - "type_string": "function(address,address,function(address,address))" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_function_$_t_address$$_t_address$", - "type_string": "function(address,address)" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_function_$_t_address$$_t_address$$", - "type_string": "function(address,address,function(address,address))" - } - }, - { - "id": 784, - "node_type": 47, - "src": { - "id": 785, - "line": 316, - "column": 8, - "start": 10340, - "end": 10351, - "length": 12, - "parent_index": 734 - }, - "function_return_parameters": 734, - "expression": { - "id": 786, - "node_type": 17, - "kind": 61, - "value": "true", - "hex_value": "74727565", - "src": { - "id": 787, - "line": 316, - "column": 15, - "start": 10347, - "end": 10350, - "length": 4, - "parent_index": 752 - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 4, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 736, - "node_type": 43, - "src": { - "id": 737, - "line": 313, - "column": 31, - "start": 10151, - "end": 10185, - "length": 35, - "parent_index": 734 - }, - "parameters": [ - { - "id": 738, - "node_type": 44, - "src": { - "id": 739, - "line": 313, - "column": 31, - "start": 10151, - "end": 10165, - "length": 15, - "parent_index": 736 - }, - "scope": 734, - "name": "spender", - "type_name": { - "id": 740, - "node_type": 30, - "src": { - "id": 741, - "line": 313, - "column": 31, - "start": 10151, - "end": 10157, - "length": 7, - "parent_index": 738 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 742, - "node_type": 44, - "src": { - "id": 743, - "line": 313, - "column": 48, - "start": 10168, - "end": 10185, - "length": 18, - "parent_index": 736 - }, - "scope": 734, - "name": "addedValue", - "type_name": { - "id": 744, - "node_type": 30, - "src": { - "id": 745, - "line": 313, - "column": 48, - "start": 10168, - "end": 10174, - "length": 7, - "parent_index": 742 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 746, - "node_type": 43, - "src": { - "id": 747, - "line": 313, - "column": 92, - "start": 10212, - "end": 10215, - "length": 4, - "parent_index": 734 - }, - "parameters": [ - { - "id": 748, - "node_type": 44, - "src": { - "id": 749, - "line": 313, - "column": 92, - "start": 10212, - "end": 10215, - "length": 4, - "parent_index": 746 - }, - "scope": 734, - "name": "", - "type_name": { - "id": 750, - "node_type": 30, - "src": { - "id": 751, - "line": 313, - "column": 92, - "start": 10212, - "end": 10215, - "length": 4, - "parent_index": 748 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_uint256", - "type_string": "function(address,uint256)" - } - }, - { - "id": 789, - "name": "decreaseAllowance", - "node_type": 42, - "kind": 41, - "src": { - "id": 790, - "line": 333, - "column": 4, - "start": 10845, - "end": 11271, - "length": 427, - "parent_index": 341 - }, - "body": { - "id": 807, - "node_type": 46, - "kind": 0, - "src": { - "id": 808, - "line": 333, - "column": 103, - "start": 10944, - "end": 11271, - "length": 328, - "parent_index": 789 - }, - "implemented": true, - "statements": [ - { - "id": 809, - "node_type": 44, - "src": { - "id": 810, - "line": 334, - "column": 8, - "start": 10954, - "end": 10982, - "length": 29, - "parent_index": 807 - }, - "assignments": [ - 811 - ], - "declarations": [ - { - "is_constant": false, - "id": 811, - "state_mutability": 1, - "name": "owner", - "node_type": 44, - "scope": 807, - "src": { - "id": 812, - "line": 334, - "column": 8, - "start": 10954, - "end": 10966, - "length": 13, - "parent_index": 809 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 813, - "node_type": 30, - "src": { - "id": 814, - "line": 334, - "column": 8, - "start": 10954, - "end": 10960, - "length": 7, - "parent_index": 811 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 815, - "node_type": 24, - "kind": 24, - "src": { - "id": 816, - "line": 334, - "column": 24, - "start": 10970, - "end": 10981, - "length": 12, - "parent_index": 809 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 817, - "node_type": 16, - "src": { - "id": 818, - "line": 334, - "column": 24, - "start": 10970, - "end": 10979, - "length": 10, - "parent_index": 815 - }, - "name": "_msgSender", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - } - }, - { - "id": 819, - "node_type": 44, - "src": { - "id": 820, - "line": 335, - "column": 8, - "start": 10992, - "end": 11044, - "length": 53, - "parent_index": 807 - }, - "assignments": [ - 821 - ], - "declarations": [ - { - "is_constant": false, - "id": 821, - "state_mutability": 1, - "name": "currentAllowance", - "node_type": 44, - "scope": 807, - "src": { - "id": 822, - "line": 335, - "column": 8, - "start": 10992, - "end": 11015, - "length": 24, - "parent_index": 819 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 823, - "node_type": 30, - "src": { - "id": 824, - "line": 335, - "column": 8, - "start": 10992, - "end": 10998, - "length": 7, - "parent_index": 821 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 825, - "node_type": 24, - "kind": 24, - "src": { - "id": 826, - "line": 335, - "column": 35, - "start": 11019, - "end": 11043, - "length": 25, - "parent_index": 819 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 827, - "node_type": 16, - "src": { - "id": 828, - "line": 335, - "column": 45, - "start": 11029, - "end": 11033, - "length": 5, - "parent_index": 825 - }, - "name": "owner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 809, - "is_pure": false - }, - { - "id": 829, - "node_type": 16, - "src": { - "id": 830, - "line": 335, - "column": 52, - "start": 11036, - "end": 11042, - "length": 7, - "parent_index": 825 - }, - "name": "spender", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 829, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - } - ], - "expression": { - "id": 831, - "node_type": 16, - "src": { - "id": 832, - "line": 335, - "column": 35, - "start": 11019, - "end": 11027, - "length": 9, - "parent_index": 825 - }, - "name": "allowance", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address", - "type_string": "function(address,address)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$", - "type_string": "function(address,address)" - } - } - }, - { - "id": 833, - "node_type": 24, - "kind": 24, - "src": { - "id": 834, - "line": 336, - "column": 8, - "start": 11054, - "end": 11138, - "length": 85, - "parent_index": 807 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: decreased allowance below zero\"" - } - ], - "arguments": [ - { - "id": 835, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 836, - "line": 336, - "column": 16, - "start": 11062, - "end": 11096, - "length": 35, - "parent_index": 833 - }, - "operator": 8, - "left_expression": { - "id": 837, - "node_type": 16, - "src": { - "id": 838, - "line": 336, - "column": 16, - "start": 11062, - "end": 11077, - "length": 16, - "parent_index": 835 - }, - "name": "currentAllowance", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 819, - "is_pure": false - }, - "right_expression": { - "id": 839, - "node_type": 16, - "src": { - "id": 840, - "line": 336, - "column": 36, - "start": 11082, - "end": 11096, - "length": 15, - "parent_index": 835 - }, - "name": "subtractedValue", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 839, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 841, - "node_type": 17, - "kind": 50, - "value": "ERC20: decreased allowance below zero", - "hex_value": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", - "src": { - "id": 842, - "line": 336, - "column": 53, - "start": 11099, - "end": 11137, - "length": 39, - "parent_index": 833 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: decreased allowance below zero\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 843, - "node_type": 16, - "src": { - "id": 844, - "line": 336, - "column": 8, - "start": 11054, - "end": 11060, - "length": 7, - "parent_index": 833 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"ERC20: decreased allowance below zero\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: decreased allowance below zero\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 845, - "node_type": 47, - "src": { - "id": 846, - "line": 341, - "column": 8, - "start": 11254, - "end": 11265, - "length": 12, - "parent_index": 789 - }, - "function_return_parameters": 789, - "expression": { - "id": 847, - "node_type": 17, - "kind": 61, - "value": "true", - "hex_value": "74727565", - "src": { - "id": 848, - "line": 341, - "column": 15, - "start": 11261, - "end": 11264, - "length": 4, - "parent_index": 807 - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - }, - { - "id": 849, - "node_type": 59, - "kind": 0, - "src": { - "id": 850, - "line": 337, - "column": 8, - "start": 11149, - "end": 11243, - "length": 95, - "parent_index": 341 - }, - "implemented": false, - "statements": [ - { - "id": 851, - "node_type": 24, - "kind": 24, - "src": { - "id": 852, - "line": 338, - "column": 12, - "start": 11173, - "end": 11232, - "length": 60, - "parent_index": 849 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ], - "arguments": [ - { - "id": 853, - "node_type": 16, - "src": { - "id": 854, - "line": 338, - "column": 21, - "start": 11182, - "end": 11186, - "length": 5, - "parent_index": 851 - }, - "name": "owner", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - { - "id": 855, - "node_type": 16, - "src": { - "id": 856, - "line": 338, - "column": 28, - "start": 11189, - "end": 11195, - "length": 7, - "parent_index": 851 - }, - "name": "spender", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 855, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ] - }, - { - "id": 857, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 858, - "line": 338, - "column": 37, - "start": 11198, - "end": 11231, - "length": 34, - "parent_index": 851 - }, - "operator": 2, - "left_expression": { - "id": 859, - "node_type": 16, - "src": { - "id": 860, - "line": 338, - "column": 37, - "start": 11198, - "end": 11213, - "length": 16, - "parent_index": 857 - }, - "name": "currentAllowance", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 819, - "is_pure": false - }, - "right_expression": { - "id": 861, - "node_type": 16, - "src": { - "id": 862, - "line": 338, - "column": 56, - "start": 11217, - "end": 11231, - "length": 15, - "parent_index": 857 - }, - "name": "subtractedValue", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 861, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - ], - "expression": { - "id": 863, - "node_type": 16, - "src": { - "id": 864, - "line": 338, - "column": 12, - "start": 11173, - "end": 11180, - "length": 8, - "parent_index": 851 - }, - "name": "_approve", - "type_description": { - "type_identifier": "t_function_$_t_function_$$_t_address$$_t_uint256", - "type_string": "function(function(),address,uint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$$_t_address$$_t_uint256$", - "type_string": "function(function(),address,uint256)" - } - } - ] - } - ] - }, - "implemented": false, - "visibility": 3, - "state_mutability": 4, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 791, - "node_type": 43, - "src": { - "id": 792, - "line": 333, - "column": 31, - "start": 10872, - "end": 10911, - "length": 40, - "parent_index": 789 - }, - "parameters": [ - { - "id": 793, - "node_type": 44, - "src": { - "id": 794, - "line": 333, - "column": 31, - "start": 10872, - "end": 10886, - "length": 15, - "parent_index": 791 - }, - "scope": 789, - "name": "spender", - "type_name": { - "id": 795, - "node_type": 30, - "src": { - "id": 796, - "line": 333, - "column": 31, - "start": 10872, - "end": 10878, - "length": 7, - "parent_index": 793 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 797, - "node_type": 44, - "src": { - "id": 798, - "line": 333, - "column": 48, - "start": 10889, - "end": 10911, - "length": 23, - "parent_index": 791 - }, - "scope": 789, - "name": "subtractedValue", - "type_name": { - "id": 799, - "node_type": 30, - "src": { - "id": 800, - "line": 333, - "column": 48, - "start": 10889, - "end": 10895, - "length": 7, - "parent_index": 797 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 801, - "node_type": 43, - "src": { - "id": 802, - "line": 333, - "column": 97, - "start": 10938, - "end": 10941, - "length": 4, - "parent_index": 789 - }, - "parameters": [ - { - "id": 803, - "node_type": 44, - "src": { - "id": 804, - "line": 333, - "column": 97, - "start": 10938, - "end": 10941, - "length": 4, - "parent_index": 801 - }, - "scope": 789, - "name": "", - "type_name": { - "id": 805, - "node_type": 30, - "src": { - "id": 806, - "line": 333, - "column": 97, - "start": 10938, - "end": 10941, - "length": 4, - "parent_index": 803 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_uint256", - "type_string": "function(address,uint256)" - } - }, - { - "id": 866, - "name": "_transfer", - "node_type": 42, - "kind": 41, - "src": { - "id": 867, - "line": 358, - "column": 4, - "start": 11726, - "end": 12513, - "length": 788, - "parent_index": 341 - }, - "body": { - "id": 883, - "node_type": 46, - "kind": 0, - "src": { - "id": 884, - "line": 358, - "column": 82, - "start": 11804, - "end": 12513, - "length": 710, - "parent_index": 866 - }, - "implemented": true, - "statements": [ - { - "id": 885, - "node_type": 24, - "kind": 24, - "src": { - "id": 886, - "line": 359, - "column": 8, - "start": 11814, - "end": 11881, - "length": 68, - "parent_index": 883 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: transfer from the zero address\"" - } - ], - "arguments": [ - { - "id": 887, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 888, - "line": 359, - "column": 16, - "start": 11822, - "end": 11839, - "length": 18, - "parent_index": 885 - }, - "operator": 12, - "left_expression": { - "id": 889, - "node_type": 16, - "src": { - "id": 890, - "line": 359, - "column": 16, - "start": 11822, - "end": 11825, - "length": 4, - "parent_index": 887 - }, - "name": "from", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 889, - "is_pure": false - }, - "right_expression": { - "id": 891, - "node_type": 24, - "kind": 24, - "src": { - "id": 892, - "line": 359, - "column": 24, - "start": 11830, - "end": 11839, - "length": 10, - "parent_index": 887 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 893, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 894, - "line": 359, - "column": 32, - "start": 11838, - "end": 11838, - "length": 1, - "parent_index": 891 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 895, - "node_type": 16, - "src": { - "id": 896, - "line": 359, - "column": 24, - "start": 11830, - "end": 11836, - "length": 7, - "parent_index": 891 - }, - "type_name": { - "id": 897, - "node_type": 30, - "src": { - "id": 898, - "line": 359, - "column": 24, - "start": 11830, - "end": 11836, - "length": 7, - "parent_index": 895 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 899, - "node_type": 17, - "kind": 50, - "value": "ERC20: transfer from the zero address", - "hex_value": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", - "src": { - "id": 900, - "line": 359, - "column": 36, - "start": 11842, - "end": 11880, - "length": 39, - "parent_index": 885 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: transfer from the zero address\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 901, - "node_type": 16, - "src": { - "id": 902, - "line": 359, - "column": 8, - "start": 11814, - "end": 11820, - "length": 7, - "parent_index": 885 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"ERC20: transfer from the zero address\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: transfer from the zero address\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 903, - "node_type": 24, - "kind": 24, - "src": { - "id": 904, - "line": 360, - "column": 8, - "start": 11892, - "end": 11955, - "length": 64, - "parent_index": 883 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: transfer to the zero address\"" - } - ], - "arguments": [ - { - "id": 905, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 906, - "line": 360, - "column": 16, - "start": 11900, - "end": 11915, - "length": 16, - "parent_index": 903 - }, - "operator": 12, - "left_expression": { - "id": 907, - "node_type": 16, - "src": { - "id": 908, - "line": 360, - "column": 16, - "start": 11900, - "end": 11901, - "length": 2, - "parent_index": 905 - }, - "name": "to", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 907, - "is_pure": false - }, - "right_expression": { - "id": 909, - "node_type": 24, - "kind": 24, - "src": { - "id": 910, - "line": 360, - "column": 22, - "start": 11906, - "end": 11915, - "length": 10, - "parent_index": 905 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 911, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 912, - "line": 360, - "column": 30, - "start": 11914, - "end": 11914, - "length": 1, - "parent_index": 909 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 913, - "node_type": 16, - "src": { - "id": 914, - "line": 360, - "column": 22, - "start": 11906, - "end": 11912, - "length": 7, - "parent_index": 909 - }, - "type_name": { - "id": 915, - "node_type": 30, - "src": { - "id": 916, - "line": 360, - "column": 22, - "start": 11906, - "end": 11912, - "length": 7, - "parent_index": 913 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 917, - "node_type": 17, - "kind": 50, - "value": "ERC20: transfer to the zero address", - "hex_value": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", - "src": { - "id": 918, - "line": 360, - "column": 34, - "start": 11918, - "end": 11954, - "length": 37, - "parent_index": 903 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: transfer to the zero address\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 919, - "node_type": 16, - "src": { - "id": 920, - "line": 360, - "column": 8, - "start": 11892, - "end": 11898, - "length": 7, - "parent_index": 903 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"ERC20: transfer to the zero address\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: transfer to the zero address\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 921, - "node_type": 24, - "kind": 24, - "src": { - "id": 922, - "line": 362, - "column": 8, - "start": 11967, - "end": 12004, - "length": 38, - "parent_index": 883 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ], - "arguments": [ - { - "id": 923, - "node_type": 16, - "src": { - "id": 924, - "line": 362, - "column": 29, - "start": 11988, - "end": 11991, - "length": 4, - "parent_index": 921 - }, - "name": "from", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 923, - "is_pure": false - }, - { - "id": 925, - "node_type": 16, - "src": { - "id": 926, - "line": 362, - "column": 35, - "start": 11994, - "end": 11995, - "length": 2, - "parent_index": 921 - }, - "name": "to", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 925, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - { - "id": 927, - "node_type": 16, - "src": { - "id": 928, - "line": 362, - "column": 39, - "start": 11998, - "end": 12003, - "length": 6, - "parent_index": 921 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 927, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - } - ], - "expression": { - "id": 929, - "node_type": 16, - "src": { - "id": 930, - "line": 362, - "column": 8, - "start": 11967, - "end": 11986, - "length": 20, - "parent_index": 921 - }, - "name": "_beforeTokenTransfer", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "type_string": "function(address,address,uint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "type_string": "function(address,address,uint256)" - } - }, - { - "id": 931, - "node_type": 44, - "src": { - "id": 932, - "line": 364, - "column": 8, - "start": 12016, - "end": 12053, - "length": 38, - "parent_index": 883 - }, - "assignments": [ - 933 - ], - "declarations": [ - { - "is_constant": false, - "id": 933, - "state_mutability": 1, - "name": "fromBalance", - "node_type": 44, - "scope": 883, - "src": { - "id": 934, - "line": 364, - "column": 8, - "start": 12016, - "end": 12034, - "length": 19, - "parent_index": 931 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 935, - "node_type": 30, - "src": { - "id": 936, - "line": 364, - "column": 8, - "start": 12016, - "end": 12022, - "length": 7, - "parent_index": 933 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 937, - "node_type": 22, - "src": { - "id": 938, - "line": 364, - "column": 30, - "start": 12038, - "end": 12052, - "length": 15, - "parent_index": 931 - }, - "index_expression": { - "id": 939, - "node_type": 16, - "src": { - "id": 940, - "line": 364, - "column": 30, - "start": 12038, - "end": 12046, - "length": 9, - "parent_index": 937 - }, - "name": "_balances", - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 355, - "is_pure": false - }, - "base_expression": { - "id": 941, - "node_type": 16, - "src": { - "id": 942, - "line": 364, - "column": 40, - "start": 12048, - "end": 12051, - "length": 4, - "parent_index": 937 - }, - "name": "from", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 941, - "is_pure": false - }, - "type_descriptions": [ - { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - } - } - }, - { - "id": 943, - "node_type": 24, - "kind": 24, - "src": { - "id": 944, - "line": 365, - "column": 8, - "start": 12063, - "end": 12134, - "length": 72, - "parent_index": 883 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: transfer amount exceeds balance\"" - } - ], - "arguments": [ - { - "id": 945, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 946, - "line": 365, - "column": 16, - "start": 12071, - "end": 12091, - "length": 21, - "parent_index": 943 - }, - "operator": 8, - "left_expression": { - "id": 947, - "node_type": 16, - "src": { - "id": 948, - "line": 365, - "column": 16, - "start": 12071, - "end": 12081, - "length": 11, - "parent_index": 945 - }, - "name": "fromBalance", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 931, - "is_pure": false - }, - "right_expression": { - "id": 949, - "node_type": 16, - "src": { - "id": 950, - "line": 365, - "column": 31, - "start": 12086, - "end": 12091, - "length": 6, - "parent_index": 945 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 949, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 951, - "node_type": 17, - "kind": 50, - "value": "ERC20: transfer amount exceeds balance", - "hex_value": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", - "src": { - "id": 952, - "line": 365, - "column": 39, - "start": 12094, - "end": 12133, - "length": 40, - "parent_index": 943 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: transfer amount exceeds balance\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 953, - "node_type": 16, - "src": { - "id": 954, - "line": 365, - "column": 8, - "start": 12063, - "end": 12069, - "length": 7, - "parent_index": 943 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"ERC20: transfer amount exceeds balance\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: transfer amount exceeds balance\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 955, - "node_type": 64, - "src": { - "id": 956, - "line": 373, - "column": 8, - "start": 12428, - "end": 12459, - "length": 32, - "parent_index": 866 - }, - "arguments": [ - { - "id": 957, - "node_type": 16, - "src": { - "id": 958, - "line": 373, - "column": 22, - "start": 12442, - "end": 12445, - "length": 4, - "parent_index": 883 - }, - "name": "from", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 957, - "is_pure": false - }, - { - "id": 959, - "node_type": 16, - "src": { - "id": 960, - "line": 373, - "column": 28, - "start": 12448, - "end": 12449, - "length": 2, - "parent_index": 883 - }, - "name": "to", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 959, - "is_pure": false - }, - { - "id": 961, - "node_type": 16, - "src": { - "id": 962, - "line": 373, - "column": 32, - "start": 12452, - "end": 12457, - "length": 6, - "parent_index": 883 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 961, - "is_pure": false - } - ], - "expression": { - "id": 963, - "node_type": 16, - "src": { - "id": 964, - "line": 373, - "column": 13, - "start": 12433, - "end": 12440, - "length": 8, - "parent_index": 883 - }, - "name": "Transfer", - "type_description": { - "type_identifier": "t_event\u0026_IERC20_Transfer_\u002660", - "type_string": "event IERC20.Transfer" - }, - "overloaded_declarations": [], - "referenced_declaration": 60, - "is_pure": false - } - }, - { - "id": 965, - "node_type": 24, - "kind": 24, - "src": { - "id": 966, - "line": 375, - "column": 8, - "start": 12470, - "end": 12506, - "length": 37, - "parent_index": 883 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ], - "arguments": [ - { - "id": 967, - "node_type": 16, - "src": { - "id": 968, - "line": 375, - "column": 28, - "start": 12490, - "end": 12493, - "length": 4, - "parent_index": 965 - }, - "name": "from", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 967, - "is_pure": false - }, - { - "id": 969, - "node_type": 16, - "src": { - "id": 970, - "line": 375, - "column": 34, - "start": 12496, - "end": 12497, - "length": 2, - "parent_index": 965 - }, - "name": "to", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 969, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - { - "id": 971, - "node_type": 16, - "src": { - "id": 972, - "line": 375, - "column": 38, - "start": 12500, - "end": 12505, - "length": 6, - "parent_index": 965 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 971, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - } - ], - "expression": { - "id": 973, - "node_type": 16, - "src": { - "id": 974, - "line": 375, - "column": 8, - "start": 12470, - "end": 12488, - "length": 19, - "parent_index": 965 - }, - "name": "_afterTokenTransfer", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "type_string": "function(address,address,uint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "type_string": "function(address,address,uint256)" - } - }, - { - "id": 975, - "node_type": 59, - "kind": 0, - "src": { - "id": 976, - "line": 366, - "column": 8, - "start": 12145, - "end": 12417, - "length": 273, - "parent_index": 341 - }, - "implemented": false, - "statements": [ - { - "id": 977, - "node_type": 81, - "src": { - "id": 978, - "line": 367, - "column": 12, - "start": 12169, - "end": 12207, - "length": 39, - "parent_index": 975 - }, - "expression": { - "id": 979, - "node_type": 27, - "src": { - "id": 980, - "line": 367, - "column": 12, - "start": 12169, - "end": 12206, - "length": 38, - "parent_index": 975 - }, - "operator": 11, - "left_expression": { - "id": 981, - "node_type": 22, - "src": { - "id": 982, - "line": 367, - "column": 12, - "start": 12169, - "end": 12183, - "length": 15, - "parent_index": 979 - }, - "index_expression": { - "id": 983, - "node_type": 16, - "src": { - "id": 984, - "line": 367, - "column": 12, - "start": 12169, - "end": 12177, - "length": 9, - "parent_index": 981 - }, - "name": "_balances", - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 355, - "is_pure": false - }, - "base_expression": { - "id": 985, - "node_type": 16, - "src": { - "id": 986, - "line": 367, - "column": 22, - "start": 12179, - "end": 12182, - "length": 4, - "parent_index": 981 - }, - "name": "from", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 985, - "is_pure": false - }, - "type_descriptions": [ - { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - } - }, - "right_expression": { - "id": 987, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 988, - "line": 367, - "column": 30, - "start": 12187, - "end": 12206, - "length": 20, - "parent_index": 979 - }, - "operator": 2, - "left_expression": { - "id": 989, - "node_type": 16, - "src": { - "id": 990, - "line": 367, - "column": 30, - "start": 12187, - "end": 12197, - "length": 11, - "parent_index": 987 - }, - "name": "fromBalance", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 931, - "is_pure": false - }, - "right_expression": { - "id": 991, - "node_type": 16, - "src": { - "id": 992, - "line": 367, - "column": 44, - "start": 12201, - "end": 12206, - "length": 6, - "parent_index": 987 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 991, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - }, - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - } - } - }, - { - "id": 993, - "node_type": 81, - "src": { - "id": 994, - "line": 370, - "column": 12, - "start": 12384, - "end": 12407, - "length": 24, - "parent_index": 975 - }, - "expression": { - "id": 995, - "node_type": 27, - "src": { - "id": 996, - "line": 370, - "column": 12, - "start": 12384, - "end": 12406, - "length": 23, - "parent_index": 975 - }, - "operator": 13, - "left_expression": { - "id": 997, - "node_type": 22, - "src": { - "id": 998, - "line": 370, - "column": 12, - "start": 12384, - "end": 12396, - "length": 13, - "parent_index": 995 - }, - "index_expression": { - "id": 999, - "node_type": 16, - "src": { - "id": 1000, - "line": 370, - "column": 12, - "start": 12384, - "end": 12392, - "length": 9, - "parent_index": 997 - }, - "name": "_balances", - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 355, - "is_pure": false - }, - "base_expression": { - "id": 1001, - "node_type": 16, - "src": { - "id": 1002, - "line": 370, - "column": 22, - "start": 12394, - "end": 12395, - "length": 2, - "parent_index": 997 - }, - "name": "to", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1001, - "is_pure": false - }, - "type_descriptions": [ - { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - } - }, - "right_expression": { - "id": 1003, - "node_type": 16, - "src": { - "id": 1004, - "line": 370, - "column": 29, - "start": 12401, - "end": 12406, - "length": 6, - "parent_index": 995 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1003, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - } - } - } - ] - } - ] - }, - "implemented": false, - "visibility": 1, - "state_mutability": 4, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 868, - "node_type": 43, - "src": { - "id": 869, - "line": 358, - "column": 23, - "start": 11745, - "end": 11784, - "length": 40, - "parent_index": 866 - }, - "parameters": [ - { - "id": 870, - "node_type": 44, - "src": { - "id": 871, - "line": 358, - "column": 23, - "start": 11745, - "end": 11756, - "length": 12, - "parent_index": 868 - }, - "scope": 866, - "name": "from", - "type_name": { - "id": 872, - "node_type": 30, - "src": { - "id": 873, - "line": 358, - "column": 23, - "start": 11745, - "end": 11751, - "length": 7, - "parent_index": 870 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 874, - "node_type": 44, - "src": { - "id": 875, - "line": 358, - "column": 37, - "start": 11759, - "end": 11768, - "length": 10, - "parent_index": 868 - }, - "scope": 866, - "name": "to", - "type_name": { - "id": 876, - "node_type": 30, - "src": { - "id": 877, - "line": 358, - "column": 37, - "start": 11759, - "end": 11765, - "length": 7, - "parent_index": 874 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 878, - "node_type": 44, - "src": { - "id": 879, - "line": 358, - "column": 49, - "start": 11771, - "end": 11784, - "length": 14, - "parent_index": 868 - }, - "scope": 866, - "name": "amount", - "type_name": { - "id": 880, - "node_type": 30, - "src": { - "id": 881, - "line": 358, - "column": 49, - "start": 11771, - "end": 11777, - "length": 7, - "parent_index": 878 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 882, - "node_type": 43, - "src": { - "id": 867, - "line": 358, - "column": 4, - "start": 11726, - "end": 12513, - "length": 788, - "parent_index": 866 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "type_string": "function(address,address,uint256)" - } - }, - { - "id": 1006, - "name": "_mint", - "node_type": 42, - "kind": 41, - "src": { - "id": 1007, - "line": 387, - "column": 4, - "start": 12790, - "end": 13324, - "length": 535, - "parent_index": 341 - }, - "body": { - "id": 1019, - "node_type": 46, - "kind": 0, - "src": { - "id": 1020, - "line": 387, - "column": 69, - "start": 12855, - "end": 13324, - "length": 470, - "parent_index": 1006 - }, - "implemented": true, - "statements": [ - { - "id": 1021, - "node_type": 24, - "kind": 24, - "src": { - "id": 1022, - "line": 388, - "column": 8, - "start": 12865, - "end": 12929, - "length": 65, - "parent_index": 1019 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: mint to the zero address\"" - } - ], - "arguments": [ - { - "id": 1023, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1024, - "line": 388, - "column": 16, - "start": 12873, - "end": 12893, - "length": 21, - "parent_index": 1021 - }, - "operator": 12, - "left_expression": { - "id": 1025, - "node_type": 16, - "src": { - "id": 1026, - "line": 388, - "column": 16, - "start": 12873, - "end": 12879, - "length": 7, - "parent_index": 1023 - }, - "name": "account", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1025, - "is_pure": false - }, - "right_expression": { - "id": 1027, - "node_type": 24, - "kind": 24, - "src": { - "id": 1028, - "line": 388, - "column": 27, - "start": 12884, - "end": 12893, - "length": 10, - "parent_index": 1023 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 1029, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1030, - "line": 388, - "column": 35, - "start": 12892, - "end": 12892, - "length": 1, - "parent_index": 1027 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 1031, - "node_type": 16, - "src": { - "id": 1032, - "line": 388, - "column": 27, - "start": 12884, - "end": 12890, - "length": 7, - "parent_index": 1027 - }, - "type_name": { - "id": 1033, - "node_type": 30, - "src": { - "id": 1034, - "line": 388, - "column": 27, - "start": 12884, - "end": 12890, - "length": 7, - "parent_index": 1031 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 1035, - "node_type": 17, - "kind": 50, - "value": "ERC20: mint to the zero address", - "hex_value": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", - "src": { - "id": 1036, - "line": 388, - "column": 39, - "start": 12896, - "end": 12928, - "length": 33, - "parent_index": 1021 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: mint to the zero address\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 1037, - "node_type": 16, - "src": { - "id": 1038, - "line": 388, - "column": 8, - "start": 12865, - "end": 12871, - "length": 7, - "parent_index": 1021 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"ERC20: mint to the zero address\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: mint to the zero address\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 1039, - "node_type": 24, - "kind": 24, - "src": { - "id": 1040, - "line": 390, - "column": 8, - "start": 12941, - "end": 12989, - "length": 49, - "parent_index": 1019 - }, - "argument_types": [ - { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ], - "arguments": [ - { - "id": 1041, - "node_type": 24, - "kind": 24, - "src": { - "id": 1042, - "line": 390, - "column": 29, - "start": 12962, - "end": 12971, - "length": 10, - "parent_index": 1039 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 1043, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1044, - "line": 390, - "column": 37, - "start": 12970, - "end": 12970, - "length": 1, - "parent_index": 1041 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 1045, - "node_type": 16, - "src": { - "id": 1046, - "line": 390, - "column": 29, - "start": 12962, - "end": 12968, - "length": 7, - "parent_index": 1041 - }, - "type_name": { - "id": 1047, - "node_type": 30, - "src": { - "id": 1048, - "line": 390, - "column": 29, - "start": 12962, - "end": 12968, - "length": 7, - "parent_index": 1045 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - }, - { - "id": 1049, - "node_type": 16, - "src": { - "id": 1050, - "line": 390, - "column": 41, - "start": 12974, - "end": 12980, - "length": 7, - "parent_index": 1039 - }, - "name": "account", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1049, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - ] - }, - { - "id": 1051, - "node_type": 16, - "src": { - "id": 1052, - "line": 390, - "column": 50, - "start": 12983, - "end": 12988, - "length": 6, - "parent_index": 1039 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1051, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - } - ], - "expression": { - "id": 1053, - "node_type": 16, - "src": { - "id": 1054, - "line": 390, - "column": 8, - "start": 12941, - "end": 12960, - "length": 20, - "parent_index": 1039 - }, - "name": "_beforeTokenTransfer", - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256", - "type_string": "function(function(int_const 0),address,uint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256$", - "type_string": "function(function(int_const 0),address,uint256)" - } - }, - { - "id": 1055, - "node_type": 81, - "src": { - "id": 1056, - "line": 392, - "column": 8, - "start": 13001, - "end": 13023, - "length": 23, - "parent_index": 1019 - }, - "expression": { - "id": 1057, - "node_type": 27, - "src": { - "id": 1058, - "line": 392, - "column": 8, - "start": 13001, - "end": 13022, - "length": 22, - "parent_index": 1019 - }, - "operator": 13, - "left_expression": { - "id": 1059, - "node_type": 16, - "src": { - "id": 1060, - "line": 392, - "column": 8, - "start": 13001, - "end": 13012, - "length": 12, - "parent_index": 1057 - }, - "name": "_totalSupply", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 378, - "is_pure": false - }, - "right_expression": { - "id": 1061, - "node_type": 16, - "src": { - "id": 1062, - "line": 392, - "column": 24, - "start": 13017, - "end": 13022, - "length": 6, - "parent_index": 1057 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1061, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - }, - { - "id": 1063, - "node_type": 64, - "src": { - "id": 1064, - "line": 397, - "column": 8, - "start": 13217, - "end": 13259, - "length": 43, - "parent_index": 1006 - }, - "arguments": [ - { - "id": 1065, - "node_type": 24, - "kind": 24, - "src": { - "id": 1066, - "line": 397, - "column": 22, - "start": 13231, - "end": 13240, - "length": 10, - "parent_index": 1019 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 1067, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1068, - "line": 397, - "column": 30, - "start": 13239, - "end": 13239, - "length": 1, - "parent_index": 1065 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 1069, - "node_type": 16, - "src": { - "id": 1070, - "line": 397, - "column": 22, - "start": 13231, - "end": 13237, - "length": 7, - "parent_index": 1065 - }, - "type_name": { - "id": 1071, - "node_type": 30, - "src": { - "id": 1072, - "line": 397, - "column": 22, - "start": 13231, - "end": 13237, - "length": 7, - "parent_index": 1069 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - }, - { - "id": 1073, - "node_type": 16, - "src": { - "id": 1074, - "line": 397, - "column": 34, - "start": 13243, - "end": 13249, - "length": 7, - "parent_index": 1019 - }, - "name": "account", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1073, - "is_pure": false - }, - { - "id": 1075, - "node_type": 16, - "src": { - "id": 1076, - "line": 397, - "column": 43, - "start": 13252, - "end": 13257, - "length": 6, - "parent_index": 1019 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1075, - "is_pure": false - } - ], - "expression": { - "id": 1077, - "node_type": 16, - "src": { - "id": 1078, - "line": 397, - "column": 13, - "start": 13222, - "end": 13229, - "length": 8, - "parent_index": 1019 - }, - "name": "Transfer", - "type_description": { - "type_identifier": "t_event\u0026_IERC20_Transfer_\u002660", - "type_string": "event IERC20.Transfer" - }, - "overloaded_declarations": [], - "referenced_declaration": 60, - "is_pure": false - } - }, - { - "id": 1079, - "node_type": 24, - "kind": 24, - "src": { - "id": 1080, - "line": 399, - "column": 8, - "start": 13270, - "end": 13317, - "length": 48, - "parent_index": 1019 - }, - "argument_types": [ - { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ], - "arguments": [ - { - "id": 1081, - "node_type": 24, - "kind": 24, - "src": { - "id": 1082, - "line": 399, - "column": 28, - "start": 13290, - "end": 13299, - "length": 10, - "parent_index": 1079 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 1083, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1084, - "line": 399, - "column": 36, - "start": 13298, - "end": 13298, - "length": 1, - "parent_index": 1081 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 1085, - "node_type": 16, - "src": { - "id": 1086, - "line": 399, - "column": 28, - "start": 13290, - "end": 13296, - "length": 7, - "parent_index": 1081 - }, - "type_name": { - "id": 1087, - "node_type": 30, - "src": { - "id": 1088, - "line": 399, - "column": 28, - "start": 13290, - "end": 13296, - "length": 7, - "parent_index": 1085 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - }, - { - "id": 1089, - "node_type": 16, - "src": { - "id": 1090, - "line": 399, - "column": 40, - "start": 13302, - "end": 13308, - "length": 7, - "parent_index": 1079 - }, - "name": "account", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1089, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - ] - }, - { - "id": 1091, - "node_type": 16, - "src": { - "id": 1092, - "line": 399, - "column": 49, - "start": 13311, - "end": 13316, - "length": 6, - "parent_index": 1079 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1091, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - } - ], - "expression": { - "id": 1093, - "node_type": 16, - "src": { - "id": 1094, - "line": 399, - "column": 8, - "start": 13270, - "end": 13288, - "length": 19, - "parent_index": 1079 - }, - "name": "_afterTokenTransfer", - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256", - "type_string": "function(function(int_const 0),address,uint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256$", - "type_string": "function(function(int_const 0),address,uint256)" - } - }, - { - "id": 1095, - "node_type": 59, - "kind": 0, - "src": { - "id": 1096, - "line": 393, - "column": 8, - "start": 13033, - "end": 13207, - "length": 175, - "parent_index": 341 - }, - "implemented": false, - "statements": [ - { - "id": 1097, - "node_type": 81, - "src": { - "id": 1098, - "line": 395, - "column": 12, - "start": 13169, - "end": 13197, - "length": 29, - "parent_index": 1095 - }, - "expression": { - "id": 1099, - "node_type": 27, - "src": { - "id": 1100, - "line": 395, - "column": 12, - "start": 13169, - "end": 13196, - "length": 28, - "parent_index": 1095 - }, - "operator": 13, - "left_expression": { - "id": 1101, - "node_type": 22, - "src": { - "id": 1102, - "line": 395, - "column": 12, - "start": 13169, - "end": 13186, - "length": 18, - "parent_index": 1099 - }, - "index_expression": { - "id": 1103, - "node_type": 16, - "src": { - "id": 1104, - "line": 395, - "column": 12, - "start": 13169, - "end": 13177, - "length": 9, - "parent_index": 1101 - }, - "name": "_balances", - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 355, - "is_pure": false - }, - "base_expression": { - "id": 1105, - "node_type": 16, - "src": { - "id": 1106, - "line": 395, - "column": 22, - "start": 13179, - "end": 13185, - "length": 7, - "parent_index": 1101 - }, - "name": "account", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1105, - "is_pure": false - }, - "type_descriptions": [ - { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - } - }, - "right_expression": { - "id": 1107, - "node_type": 16, - "src": { - "id": 1108, - "line": 395, - "column": 34, - "start": 13191, - "end": 13196, - "length": 6, - "parent_index": 1099 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1107, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - } - } - } - ] - } - ] - }, - "implemented": false, - "visibility": 1, - "state_mutability": 4, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1008, - "node_type": 43, - "src": { - "id": 1009, - "line": 387, - "column": 19, - "start": 12805, - "end": 12835, - "length": 31, - "parent_index": 1006 - }, - "parameters": [ - { - "id": 1010, - "node_type": 44, - "src": { - "id": 1011, - "line": 387, - "column": 19, - "start": 12805, - "end": 12819, - "length": 15, - "parent_index": 1008 - }, - "scope": 1006, - "name": "account", - "type_name": { - "id": 1012, - "node_type": 30, - "src": { - "id": 1013, - "line": 387, - "column": 19, - "start": 12805, - "end": 12811, - "length": 7, - "parent_index": 1010 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 1014, - "node_type": 44, - "src": { - "id": 1015, - "line": 387, - "column": 36, - "start": 12822, - "end": 12835, - "length": 14, - "parent_index": 1008 - }, - "scope": 1006, - "name": "amount", - "type_name": { - "id": 1016, - "node_type": 30, - "src": { - "id": 1017, - "line": 387, - "column": 36, - "start": 12822, - "end": 12828, - "length": 7, - "parent_index": 1014 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 1018, - "node_type": 43, - "src": { - "id": 1007, - "line": 387, - "column": 4, - "start": 12790, - "end": 13324, - "length": 535, - "parent_index": 1006 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_uint256", - "type_string": "function(address,uint256)" - } - }, - { - "id": 1110, - "name": "_burn", - "node_type": 42, - "kind": 41, - "src": { - "id": 1111, - "line": 413, - "column": 4, - "start": 13645, - "end": 14303, - "length": 659, - "parent_index": 341 - }, - "body": { - "id": 1123, - "node_type": 46, - "kind": 0, - "src": { - "id": 1124, - "line": 413, - "column": 69, - "start": 13710, - "end": 14303, - "length": 594, - "parent_index": 1110 - }, - "implemented": true, - "statements": [ - { - "id": 1125, - "node_type": 24, - "kind": 24, - "src": { - "id": 1126, - "line": 414, - "column": 8, - "start": 13720, - "end": 13786, - "length": 67, - "parent_index": 1123 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: burn from the zero address\"" - } - ], - "arguments": [ - { - "id": 1127, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1128, - "line": 414, - "column": 16, - "start": 13728, - "end": 13748, - "length": 21, - "parent_index": 1125 - }, - "operator": 12, - "left_expression": { - "id": 1129, - "node_type": 16, - "src": { - "id": 1130, - "line": 414, - "column": 16, - "start": 13728, - "end": 13734, - "length": 7, - "parent_index": 1127 - }, - "name": "account", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1129, - "is_pure": false - }, - "right_expression": { - "id": 1131, - "node_type": 24, - "kind": 24, - "src": { - "id": 1132, - "line": 414, - "column": 27, - "start": 13739, - "end": 13748, - "length": 10, - "parent_index": 1127 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 1133, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1134, - "line": 414, - "column": 35, - "start": 13747, - "end": 13747, - "length": 1, - "parent_index": 1131 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 1135, - "node_type": 16, - "src": { - "id": 1136, - "line": 414, - "column": 27, - "start": 13739, - "end": 13745, - "length": 7, - "parent_index": 1131 - }, - "type_name": { - "id": 1137, - "node_type": 30, - "src": { - "id": 1138, - "line": 414, - "column": 27, - "start": 13739, - "end": 13745, - "length": 7, - "parent_index": 1135 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 1139, - "node_type": 17, - "kind": 50, - "value": "ERC20: burn from the zero address", - "hex_value": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", - "src": { - "id": 1140, - "line": 414, - "column": 39, - "start": 13751, - "end": 13785, - "length": 35, - "parent_index": 1125 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: burn from the zero address\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 1141, - "node_type": 16, - "src": { - "id": 1142, - "line": 414, - "column": 8, - "start": 13720, - "end": 13726, - "length": 7, - "parent_index": 1125 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"ERC20: burn from the zero address\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: burn from the zero address\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 1143, - "node_type": 24, - "kind": 24, - "src": { - "id": 1144, - "line": 416, - "column": 8, - "start": 13798, - "end": 13846, - "length": 49, - "parent_index": 1123 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ], - "arguments": [ - { - "id": 1145, - "node_type": 16, - "src": { - "id": 1146, - "line": 416, - "column": 29, - "start": 13819, - "end": 13825, - "length": 7, - "parent_index": 1143 - }, - "name": "account", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1145, - "is_pure": false - }, - { - "id": 1147, - "node_type": 24, - "kind": 24, - "src": { - "id": 1148, - "line": 416, - "column": 38, - "start": 13828, - "end": 13837, - "length": 10, - "parent_index": 1143 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 1149, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1150, - "line": 416, - "column": 46, - "start": 13836, - "end": 13836, - "length": 1, - "parent_index": 1147 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 1151, - "node_type": 16, - "src": { - "id": 1152, - "line": 416, - "column": 38, - "start": 13828, - "end": 13834, - "length": 7, - "parent_index": 1147 - }, - "type_name": { - "id": 1153, - "node_type": 30, - "src": { - "id": 1154, - "line": 416, - "column": 38, - "start": 13828, - "end": 13834, - "length": 7, - "parent_index": 1151 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - }, - { - "id": 1155, - "node_type": 16, - "src": { - "id": 1156, - "line": 416, - "column": 50, - "start": 13840, - "end": 13845, - "length": 6, - "parent_index": 1143 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1155, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - ] - } - ], - "expression": { - "id": 1157, - "node_type": 16, - "src": { - "id": 1158, - "line": 416, - "column": 8, - "start": 13798, - "end": 13817, - "length": 20, - "parent_index": 1143 - }, - "name": "_beforeTokenTransfer", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256", - "type_string": "function(address,function(int_const 0),uint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256$", - "type_string": "function(address,function(int_const 0),uint256)" - } - }, - { - "id": 1159, - "node_type": 44, - "src": { - "id": 1160, - "line": 418, - "column": 8, - "start": 13858, - "end": 13901, - "length": 44, - "parent_index": 1123 - }, - "assignments": [ - 1161 - ], - "declarations": [ - { - "is_constant": false, - "id": 1161, - "state_mutability": 1, - "name": "accountBalance", - "node_type": 44, - "scope": 1123, - "src": { - "id": 1162, - "line": 418, - "column": 8, - "start": 13858, - "end": 13879, - "length": 22, - "parent_index": 1159 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 1163, - "node_type": 30, - "src": { - "id": 1164, - "line": 418, - "column": 8, - "start": 13858, - "end": 13864, - "length": 7, - "parent_index": 1161 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 1165, - "node_type": 22, - "src": { - "id": 1166, - "line": 418, - "column": 33, - "start": 13883, - "end": 13900, - "length": 18, - "parent_index": 1159 - }, - "index_expression": { - "id": 1167, - "node_type": 16, - "src": { - "id": 1168, - "line": 418, - "column": 33, - "start": 13883, - "end": 13891, - "length": 9, - "parent_index": 1165 - }, - "name": "_balances", - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 355, - "is_pure": false - }, - "base_expression": { - "id": 1169, - "node_type": 16, - "src": { - "id": 1170, - "line": 418, - "column": 43, - "start": 13893, - "end": 13899, - "length": 7, - "parent_index": 1165 - }, - "name": "account", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1169, - "is_pure": false - }, - "type_descriptions": [ - { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - } - } - }, - { - "id": 1171, - "node_type": 24, - "kind": 24, - "src": { - "id": 1172, - "line": 419, - "column": 8, - "start": 13911, - "end": 13981, - "length": 71, - "parent_index": 1123 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: burn amount exceeds balance\"" - } - ], - "arguments": [ - { - "id": 1173, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1174, - "line": 419, - "column": 16, - "start": 13919, - "end": 13942, - "length": 24, - "parent_index": 1171 - }, - "operator": 8, - "left_expression": { - "id": 1175, - "node_type": 16, - "src": { - "id": 1176, - "line": 419, - "column": 16, - "start": 13919, - "end": 13932, - "length": 14, - "parent_index": 1173 - }, - "name": "accountBalance", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1159, - "is_pure": false - }, - "right_expression": { - "id": 1177, - "node_type": 16, - "src": { - "id": 1178, - "line": 419, - "column": 34, - "start": 13937, - "end": 13942, - "length": 6, - "parent_index": 1173 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1177, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 1179, - "node_type": 17, - "kind": 50, - "value": "ERC20: burn amount exceeds balance", - "hex_value": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", - "src": { - "id": 1180, - "line": 419, - "column": 42, - "start": 13945, - "end": 13980, - "length": 36, - "parent_index": 1171 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: burn amount exceeds balance\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 1181, - "node_type": 16, - "src": { - "id": 1182, - "line": 419, - "column": 8, - "start": 13911, - "end": 13917, - "length": 7, - "parent_index": 1171 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"ERC20: burn amount exceeds balance\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: burn amount exceeds balance\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 1183, - "node_type": 64, - "src": { - "id": 1184, - "line": 426, - "column": 8, - "start": 14196, - "end": 14238, - "length": 43, - "parent_index": 1110 - }, - "arguments": [ - { - "id": 1185, - "node_type": 16, - "src": { - "id": 1186, - "line": 426, - "column": 22, - "start": 14210, - "end": 14216, - "length": 7, - "parent_index": 1123 - }, - "name": "account", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1185, - "is_pure": false - }, - { - "id": 1187, - "node_type": 24, - "kind": 24, - "src": { - "id": 1188, - "line": 426, - "column": 31, - "start": 14219, - "end": 14228, - "length": 10, - "parent_index": 1123 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 1189, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1190, - "line": 426, - "column": 39, - "start": 14227, - "end": 14227, - "length": 1, - "parent_index": 1187 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 1191, - "node_type": 16, - "src": { - "id": 1192, - "line": 426, - "column": 31, - "start": 14219, - "end": 14225, - "length": 7, - "parent_index": 1187 - }, - "type_name": { - "id": 1193, - "node_type": 30, - "src": { - "id": 1194, - "line": 426, - "column": 31, - "start": 14219, - "end": 14225, - "length": 7, - "parent_index": 1191 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - }, - { - "id": 1195, - "node_type": 16, - "src": { - "id": 1196, - "line": 426, - "column": 43, - "start": 14231, - "end": 14236, - "length": 6, - "parent_index": 1123 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1195, - "is_pure": false - } - ], - "expression": { - "id": 1197, - "node_type": 16, - "src": { - "id": 1198, - "line": 426, - "column": 13, - "start": 14201, - "end": 14208, - "length": 8, - "parent_index": 1123 - }, - "name": "Transfer", - "type_description": { - "type_identifier": "t_event\u0026_IERC20_Transfer_\u002660", - "type_string": "event IERC20.Transfer" - }, - "overloaded_declarations": [], - "referenced_declaration": 60, - "is_pure": false - } - }, - { - "id": 1199, - "node_type": 24, - "kind": 24, - "src": { - "id": 1200, - "line": 428, - "column": 8, - "start": 14249, - "end": 14296, - "length": 48, - "parent_index": 1123 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ], - "arguments": [ - { - "id": 1201, - "node_type": 16, - "src": { - "id": 1202, - "line": 428, - "column": 28, - "start": 14269, - "end": 14275, - "length": 7, - "parent_index": 1199 - }, - "name": "account", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1201, - "is_pure": false - }, - { - "id": 1203, - "node_type": 24, - "kind": 24, - "src": { - "id": 1204, - "line": 428, - "column": 37, - "start": 14278, - "end": 14287, - "length": 10, - "parent_index": 1199 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 1205, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1206, - "line": 428, - "column": 45, - "start": 14286, - "end": 14286, - "length": 1, - "parent_index": 1203 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 1207, - "node_type": 16, - "src": { - "id": 1208, - "line": 428, - "column": 37, - "start": 14278, - "end": 14284, - "length": 7, - "parent_index": 1203 - }, - "type_name": { - "id": 1209, - "node_type": 30, - "src": { - "id": 1210, - "line": 428, - "column": 37, - "start": 14278, - "end": 14284, - "length": 7, - "parent_index": 1207 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - }, - { - "id": 1211, - "node_type": 16, - "src": { - "id": 1212, - "line": 428, - "column": 49, - "start": 14290, - "end": 14295, - "length": 6, - "parent_index": 1199 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1211, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - ] - } - ], - "expression": { - "id": 1213, - "node_type": 16, - "src": { - "id": 1214, - "line": 428, - "column": 8, - "start": 14249, - "end": 14267, - "length": 19, - "parent_index": 1199 - }, - "name": "_afterTokenTransfer", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256", - "type_string": "function(address,function(int_const 0),uint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256$", - "type_string": "function(address,function(int_const 0),uint256)" - } - }, - { - "id": 1215, - "node_type": 59, - "kind": 0, - "src": { - "id": 1216, - "line": 420, - "column": 8, - "start": 13992, - "end": 14185, - "length": 194, - "parent_index": 341 - }, - "implemented": false, - "statements": [ - { - "id": 1217, - "node_type": 81, - "src": { - "id": 1218, - "line": 421, - "column": 12, - "start": 14016, - "end": 14060, - "length": 45, - "parent_index": 1215 - }, - "expression": { - "id": 1219, - "node_type": 27, - "src": { - "id": 1220, - "line": 421, - "column": 12, - "start": 14016, - "end": 14059, - "length": 44, - "parent_index": 1215 - }, - "operator": 11, - "left_expression": { - "id": 1221, - "node_type": 22, - "src": { - "id": 1222, - "line": 421, - "column": 12, - "start": 14016, - "end": 14033, - "length": 18, - "parent_index": 1219 - }, - "index_expression": { - "id": 1223, - "node_type": 16, - "src": { - "id": 1224, - "line": 421, - "column": 12, - "start": 14016, - "end": 14024, - "length": 9, - "parent_index": 1221 - }, - "name": "_balances", - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - }, - "overloaded_declarations": [], - "referenced_declaration": 355, - "is_pure": false - }, - "base_expression": { - "id": 1225, - "node_type": 16, - "src": { - "id": 1226, - "line": 421, - "column": 22, - "start": 14026, - "end": 14032, - "length": 7, - "parent_index": 1221 - }, - "name": "account", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1225, - "is_pure": false - }, - "type_descriptions": [ - { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - } - }, - "right_expression": { - "id": 1227, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1228, - "line": 421, - "column": 33, - "start": 14037, - "end": 14059, - "length": 23, - "parent_index": 1219 - }, - "operator": 2, - "left_expression": { - "id": 1229, - "node_type": 16, - "src": { - "id": 1230, - "line": 421, - "column": 33, - "start": 14037, - "end": 14050, - "length": 14, - "parent_index": 1227 - }, - "name": "accountBalance", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1159, - "is_pure": false - }, - "right_expression": { - "id": 1231, - "node_type": 16, - "src": { - "id": 1232, - "line": 421, - "column": 50, - "start": 14054, - "end": 14059, - "length": 6, - "parent_index": 1227 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1231, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - }, - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003euint256)" - } - } - }, - { - "id": 1233, - "node_type": 81, - "src": { - "id": 1234, - "line": 423, - "column": 12, - "start": 14153, - "end": 14175, - "length": 23, - "parent_index": 1215 - }, - "expression": { - "id": 1235, - "node_type": 27, - "src": { - "id": 1236, - "line": 423, - "column": 12, - "start": 14153, - "end": 14174, - "length": 22, - "parent_index": 1215 - }, - "operator": 14, - "left_expression": { - "id": 1237, - "node_type": 16, - "src": { - "id": 1238, - "line": 423, - "column": 12, - "start": 14153, - "end": 14164, - "length": 12, - "parent_index": 1235 - }, - "name": "_totalSupply", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 378, - "is_pure": false - }, - "right_expression": { - "id": 1239, - "node_type": 16, - "src": { - "id": 1240, - "line": 423, - "column": 28, - "start": 14169, - "end": 14174, - "length": 6, - "parent_index": 1235 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1239, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - } - ] - } - ] - }, - "implemented": false, - "visibility": 1, - "state_mutability": 4, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1112, - "node_type": 43, - "src": { - "id": 1113, - "line": 413, - "column": 19, - "start": 13660, - "end": 13690, - "length": 31, - "parent_index": 1110 - }, - "parameters": [ - { - "id": 1114, - "node_type": 44, - "src": { - "id": 1115, - "line": 413, - "column": 19, - "start": 13660, - "end": 13674, - "length": 15, - "parent_index": 1112 - }, - "scope": 1110, - "name": "account", - "type_name": { - "id": 1116, - "node_type": 30, - "src": { - "id": 1117, - "line": 413, - "column": 19, - "start": 13660, - "end": 13666, - "length": 7, - "parent_index": 1114 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 1118, - "node_type": 44, - "src": { - "id": 1119, - "line": 413, - "column": 36, - "start": 13677, - "end": 13690, - "length": 14, - "parent_index": 1112 - }, - "scope": 1110, - "name": "amount", - "type_name": { - "id": 1120, - "node_type": 30, - "src": { - "id": 1121, - "line": 413, - "column": 36, - "start": 13677, - "end": 13683, - "length": 7, - "parent_index": 1118 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 1122, - "node_type": 43, - "src": { - "id": 1111, - "line": 413, - "column": 4, - "start": 13645, - "end": 14303, - "length": 659, - "parent_index": 1110 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_uint256", - "type_string": "function(address,uint256)" - } - }, - { - "id": 1242, - "name": "_approve", - "node_type": 42, - "kind": 41, - "src": { - "id": 1243, - "line": 444, - "column": 4, - "start": 14727, - "end": 15066, - "length": 340, - "parent_index": 341 - }, - "body": { - "id": 1259, - "node_type": 46, - "kind": 0, - "src": { - "id": 1260, - "line": 444, - "column": 87, - "start": 14810, - "end": 15066, - "length": 257, - "parent_index": 1242 - }, - "implemented": true, - "statements": [ - { - "id": 1261, - "node_type": 24, - "kind": 24, - "src": { - "id": 1262, - "line": 445, - "column": 8, - "start": 14820, - "end": 14887, - "length": 68, - "parent_index": 1259 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: approve from the zero address\"" - } - ], - "arguments": [ - { - "id": 1263, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1264, - "line": 445, - "column": 16, - "start": 14828, - "end": 14846, - "length": 19, - "parent_index": 1261 - }, - "operator": 12, - "left_expression": { - "id": 1265, - "node_type": 16, - "src": { - "id": 1266, - "line": 445, - "column": 16, - "start": 14828, - "end": 14832, - "length": 5, - "parent_index": 1263 - }, - "name": "owner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1265, - "is_pure": false - }, - "right_expression": { - "id": 1267, - "node_type": 24, - "kind": 24, - "src": { - "id": 1268, - "line": 445, - "column": 25, - "start": 14837, - "end": 14846, - "length": 10, - "parent_index": 1263 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 1269, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1270, - "line": 445, - "column": 33, - "start": 14845, - "end": 14845, - "length": 1, - "parent_index": 1267 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 1271, - "node_type": 16, - "src": { - "id": 1272, - "line": 445, - "column": 25, - "start": 14837, - "end": 14843, - "length": 7, - "parent_index": 1267 - }, - "type_name": { - "id": 1273, - "node_type": 30, - "src": { - "id": 1274, - "line": 445, - "column": 25, - "start": 14837, - "end": 14843, - "length": 7, - "parent_index": 1271 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 1275, - "node_type": 17, - "kind": 50, - "value": "ERC20: approve from the zero address", - "hex_value": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", - "src": { - "id": 1276, - "line": 445, - "column": 37, - "start": 14849, - "end": 14886, - "length": 38, - "parent_index": 1261 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: approve from the zero address\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 1277, - "node_type": 16, - "src": { - "id": 1278, - "line": 445, - "column": 8, - "start": 14820, - "end": 14826, - "length": 7, - "parent_index": 1261 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"ERC20: approve from the zero address\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: approve from the zero address\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 1279, - "node_type": 24, - "kind": 24, - "src": { - "id": 1280, - "line": 446, - "column": 8, - "start": 14898, - "end": 14965, - "length": 68, - "parent_index": 1259 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: approve to the zero address\"" - } - ], - "arguments": [ - { - "id": 1281, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1282, - "line": 446, - "column": 16, - "start": 14906, - "end": 14926, - "length": 21, - "parent_index": 1279 - }, - "operator": 12, - "left_expression": { - "id": 1283, - "node_type": 16, - "src": { - "id": 1284, - "line": 446, - "column": 16, - "start": 14906, - "end": 14912, - "length": 7, - "parent_index": 1281 - }, - "name": "spender", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1283, - "is_pure": false - }, - "right_expression": { - "id": 1285, - "node_type": 24, - "kind": 24, - "src": { - "id": 1286, - "line": 446, - "column": 27, - "start": 14917, - "end": 14926, - "length": 10, - "parent_index": 1281 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 1287, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1288, - "line": 446, - "column": 35, - "start": 14925, - "end": 14925, - "length": 1, - "parent_index": 1285 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 1289, - "node_type": 16, - "src": { - "id": 1290, - "line": 446, - "column": 27, - "start": 14917, - "end": 14923, - "length": 7, - "parent_index": 1285 - }, - "type_name": { - "id": 1291, - "node_type": 30, - "src": { - "id": 1292, - "line": 446, - "column": 27, - "start": 14917, - "end": 14923, - "length": 7, - "parent_index": 1289 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 1293, - "node_type": 17, - "kind": 50, - "value": "ERC20: approve to the zero address", - "hex_value": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", - "src": { - "id": 1294, - "line": 446, - "column": 39, - "start": 14929, - "end": 14964, - "length": 36, - "parent_index": 1279 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: approve to the zero address\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 1295, - "node_type": 16, - "src": { - "id": 1296, - "line": 446, - "column": 8, - "start": 14898, - "end": 14904, - "length": 7, - "parent_index": 1279 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"ERC20: approve to the zero address\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: approve to the zero address\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 1297, - "node_type": 81, - "src": { - "id": 1298, - "line": 448, - "column": 8, - "start": 14977, - "end": 15013, - "length": 37, - "parent_index": 1259 - }, - "expression": { - "id": 1299, - "node_type": 27, - "src": { - "id": 1300, - "line": 448, - "column": 8, - "start": 14977, - "end": 15012, - "length": 36, - "parent_index": 1259 - }, - "operator": 11, - "left_expression": { - "id": 1301, - "node_type": 22, - "src": { - "id": 1302, - "line": 448, - "column": 8, - "start": 14977, - "end": 15003, - "length": 27, - "parent_index": 1299 - }, - "index_expression": { - "id": 1303, - "node_type": 22, - "src": { - "id": 1304, - "line": 448, - "column": 8, - "start": 14977, - "end": 14994, - "length": 18, - "parent_index": 1301 - }, - "index_expression": { - "id": 1305, - "node_type": 16, - "src": { - "id": 1306, - "line": 448, - "column": 8, - "start": 14977, - "end": 14987, - "length": 11, - "parent_index": 1303 - }, - "name": "_allowances", - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003emapping(address=\u003euint256))" - }, - "overloaded_declarations": [], - "referenced_declaration": 364, - "is_pure": false - }, - "base_expression": { - "id": 1307, - "node_type": 16, - "src": { - "id": 1308, - "line": 448, - "column": 20, - "start": 14989, - "end": 14993, - "length": 5, - "parent_index": 1303 - }, - "name": "owner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1307, - "is_pure": false - }, - "type_descriptions": [ - { - "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003emapping(address=\u003euint256))" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003emapping(address=\u003euint256))" - } - }, - "base_expression": { - "id": 1309, - "node_type": 16, - "src": { - "id": 1310, - "line": 448, - "column": 27, - "start": 14996, - "end": 15002, - "length": 7, - "parent_index": 1301 - }, - "name": "spender", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1309, - "is_pure": false - }, - "type_descriptions": [ - { - "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003emapping(address=\u003euint256))" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003emapping(address=\u003euint256))" - } - }, - "right_expression": { - "id": 1311, - "node_type": 16, - "src": { - "id": 1312, - "line": 448, - "column": 38, - "start": 15007, - "end": 15012, - "length": 6, - "parent_index": 1299 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1311, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "type_string": "mapping(address=\u003emapping(address=\u003euint256))" - } - } - }, - { - "id": 1313, - "node_type": 64, - "src": { - "id": 1314, - "line": 449, - "column": 8, - "start": 15023, - "end": 15060, - "length": 38, - "parent_index": 1242 - }, - "arguments": [ - { - "id": 1315, - "node_type": 16, - "src": { - "id": 1316, - "line": 449, - "column": 22, - "start": 15037, - "end": 15041, - "length": 5, - "parent_index": 1259 - }, - "name": "owner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1315, - "is_pure": false - }, - { - "id": 1317, - "node_type": 16, - "src": { - "id": 1318, - "line": 449, - "column": 29, - "start": 15044, - "end": 15050, - "length": 7, - "parent_index": 1259 - }, - "name": "spender", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1317, - "is_pure": false - }, - { - "id": 1319, - "node_type": 16, - "src": { - "id": 1320, - "line": 449, - "column": 38, - "start": 15053, - "end": 15058, - "length": 6, - "parent_index": 1259 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1319, - "is_pure": false - } - ], - "expression": { - "id": 1321, - "node_type": 16, - "src": { - "id": 1322, - "line": 449, - "column": 13, - "start": 15028, - "end": 15035, - "length": 8, - "parent_index": 1259 - }, - "name": "Approval", - "type_description": { - "type_identifier": "t_event\u0026_IERC20_Approval_\u002676", - "type_string": "event IERC20.Approval" - }, - "overloaded_declarations": [], - "referenced_declaration": 76, - "is_pure": false - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1244, - "node_type": 43, - "src": { - "id": 1245, - "line": 444, - "column": 22, - "start": 14745, - "end": 14790, - "length": 46, - "parent_index": 1242 - }, - "parameters": [ - { - "id": 1246, - "node_type": 44, - "src": { - "id": 1247, - "line": 444, - "column": 22, - "start": 14745, - "end": 14757, - "length": 13, - "parent_index": 1244 - }, - "scope": 1242, - "name": "owner", - "type_name": { - "id": 1248, - "node_type": 30, - "src": { - "id": 1249, - "line": 444, - "column": 22, - "start": 14745, - "end": 14751, - "length": 7, - "parent_index": 1246 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 1250, - "node_type": 44, - "src": { - "id": 1251, - "line": 444, - "column": 37, - "start": 14760, - "end": 14774, - "length": 15, - "parent_index": 1244 - }, - "scope": 1242, - "name": "spender", - "type_name": { - "id": 1252, - "node_type": 30, - "src": { - "id": 1253, - "line": 444, - "column": 37, - "start": 14760, - "end": 14766, - "length": 7, - "parent_index": 1250 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 1254, - "node_type": 44, - "src": { - "id": 1255, - "line": 444, - "column": 54, - "start": 14777, - "end": 14790, - "length": 14, - "parent_index": 1244 - }, - "scope": 1242, - "name": "amount", - "type_name": { - "id": 1256, - "node_type": 30, - "src": { - "id": 1257, - "line": 444, - "column": 54, - "start": 14777, - "end": 14783, - "length": 7, - "parent_index": 1254 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 1258, - "node_type": 43, - "src": { - "id": 1243, - "line": 444, - "column": 4, - "start": 14727, - "end": 15066, - "length": 340, - "parent_index": 1242 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "type_string": "function(address,address,uint256)" - } - }, - { - "id": 1324, - "name": "_spendAllowance", - "node_type": 42, - "kind": 41, - "src": { - "id": 1325, - "line": 460, - "column": 4, - "start": 15348, - "end": 15758, - "length": 411, - "parent_index": 341 - }, - "body": { - "id": 1341, - "node_type": 46, - "kind": 0, - "src": { - "id": 1342, - "line": 460, - "column": 94, - "start": 15438, - "end": 15758, - "length": 321, - "parent_index": 1324 - }, - "implemented": true, - "statements": [ - { - "id": 1343, - "node_type": 44, - "src": { - "id": 1344, - "line": 461, - "column": 8, - "start": 15448, - "end": 15500, - "length": 53, - "parent_index": 1341 - }, - "assignments": [ - 1345 - ], - "declarations": [ - { - "is_constant": false, - "id": 1345, - "state_mutability": 1, - "name": "currentAllowance", - "node_type": 44, - "scope": 1341, - "src": { - "id": 1346, - "line": 461, - "column": 8, - "start": 15448, - "end": 15471, - "length": 24, - "parent_index": 1343 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 1347, - "node_type": 30, - "src": { - "id": 1348, - "line": 461, - "column": 8, - "start": 15448, - "end": 15454, - "length": 7, - "parent_index": 1345 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 1349, - "node_type": 24, - "kind": 24, - "src": { - "id": 1350, - "line": 461, - "column": 35, - "start": 15475, - "end": 15499, - "length": 25, - "parent_index": 1343 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 1351, - "node_type": 16, - "src": { - "id": 1352, - "line": 461, - "column": 45, - "start": 15485, - "end": 15489, - "length": 5, - "parent_index": 1349 - }, - "name": "owner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1351, - "is_pure": false - }, - { - "id": 1353, - "node_type": 16, - "src": { - "id": 1354, - "line": 461, - "column": 52, - "start": 15492, - "end": 15498, - "length": 7, - "parent_index": 1349 - }, - "name": "spender", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1353, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - } - ], - "expression": { - "id": 1355, - "node_type": 16, - "src": { - "id": 1356, - "line": 461, - "column": 35, - "start": 15475, - "end": 15483, - "length": 9, - "parent_index": 1349 - }, - "name": "allowance", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address", - "type_string": "function(address,address)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$", - "type_string": "function(address,address)" - } - } - }, - { - "id": 1357, - "node_type": 48, - "src": { - "id": 1358, - "line": 462, - "column": 0, - "start": 15510, - "end": 15752, - "length": 243, - "parent_index": 1341 - }, - "condition": { - "id": 1359, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1360, - "line": 462, - "column": 12, - "start": 15514, - "end": 15550, - "length": 37, - "parent_index": 1357 - }, - "operator": 12, - "left_expression": { - "id": 1361, - "node_type": 16, - "src": { - "id": 1362, - "line": 462, - "column": 12, - "start": 15514, - "end": 15529, - "length": 16, - "parent_index": 1359 - }, - "name": "currentAllowance", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1343, - "is_pure": false - }, - "right_expression": { - "id": 1363, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1364, - "line": 462, - "column": 32, - "start": 15534, - "end": 15550, - "length": 17, - "parent_index": 1359 - }, - "expression": { - "id": 1365, - "node_type": 16, - "name": "type", - "src": { - "id": 1366, - "line": 462, - "column": 32, - "start": 15534, - "end": 15546, - "length": 13, - "parent_index": 1363 - }, - "type_description": { - "type_identifier": "", - "type_string": "type" - } - }, - "member_name": "max", - "argument_types": [], - "type_description": { - "type_identifier": "", - "type_string": "type" - } - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - "body": { - "id": 1367, - "node_type": 46, - "kind": 0, - "src": { - "id": 1368, - "line": 462, - "column": 51, - "start": 15553, - "end": 15752, - "length": 200, - "parent_index": 1324 - }, - "implemented": true, - "statements": [ - { - "id": 1369, - "node_type": 24, - "kind": 24, - "src": { - "id": 1370, - "line": 463, - "column": 12, - "start": 15567, - "end": 15634, - "length": 68, - "parent_index": 1367 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: insufficient allowance\"" - } - ], - "arguments": [ - { - "id": 1371, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1372, - "line": 463, - "column": 20, - "start": 15575, - "end": 15600, - "length": 26, - "parent_index": 1369 - }, - "operator": 8, - "left_expression": { - "id": 1373, - "node_type": 16, - "src": { - "id": 1374, - "line": 463, - "column": 20, - "start": 15575, - "end": 15590, - "length": 16, - "parent_index": 1371 - }, - "name": "currentAllowance", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 819, - "is_pure": false - }, - "right_expression": { - "id": 1375, - "node_type": 16, - "src": { - "id": 1376, - "line": 463, - "column": 40, - "start": 15595, - "end": 15600, - "length": 6, - "parent_index": 1371 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 1375, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 1377, - "node_type": 17, - "kind": 50, - "value": "ERC20: insufficient allowance", - "hex_value": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365", - "src": { - "id": 1378, - "line": 463, - "column": 48, - "start": 15603, - "end": 15633, - "length": 31, - "parent_index": 1369 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: insufficient allowance\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 1379, - "node_type": 16, - "src": { - "id": 1380, - "line": 463, - "column": 12, - "start": 15567, - "end": 15573, - "length": 7, - "parent_index": 1369 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"ERC20: insufficient allowance\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC20: insufficient allowance\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - } - ] - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1326, - "node_type": 43, - "src": { - "id": 1327, - "line": 460, - "column": 29, - "start": 15373, - "end": 15418, - "length": 46, - "parent_index": 1324 - }, - "parameters": [ - { - "id": 1328, - "node_type": 44, - "src": { - "id": 1329, - "line": 460, - "column": 29, - "start": 15373, - "end": 15385, - "length": 13, - "parent_index": 1326 - }, - "scope": 1324, - "name": "owner", - "type_name": { - "id": 1330, - "node_type": 30, - "src": { - "id": 1331, - "line": 460, - "column": 29, - "start": 15373, - "end": 15379, - "length": 7, - "parent_index": 1328 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 1332, - "node_type": 44, - "src": { - "id": 1333, - "line": 460, - "column": 44, - "start": 15388, - "end": 15402, - "length": 15, - "parent_index": 1326 - }, - "scope": 1324, - "name": "spender", - "type_name": { - "id": 1334, - "node_type": 30, - "src": { - "id": 1335, - "line": 460, - "column": 44, - "start": 15388, - "end": 15394, - "length": 7, - "parent_index": 1332 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 1336, - "node_type": 44, - "src": { - "id": 1337, - "line": 460, - "column": 61, - "start": 15405, - "end": 15418, - "length": 14, - "parent_index": 1326 - }, - "scope": 1324, - "name": "amount", - "type_name": { - "id": 1338, - "node_type": 30, - "src": { - "id": 1339, - "line": 460, - "column": 61, - "start": 15405, - "end": 15411, - "length": 7, - "parent_index": 1336 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 1340, - "node_type": 43, - "src": { - "id": 1325, - "line": 460, - "column": 4, - "start": 15348, - "end": 15758, - "length": 411, - "parent_index": 1324 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "type_string": "function(address,address,uint256)" - } - }, - { - "id": 1382, - "name": "_beforeTokenTransfer", - "node_type": 42, - "kind": 41, - "src": { - "id": 1383, - "line": 484, - "column": 4, - "start": 16343, - "end": 16433, - "length": 91, - "parent_index": 341 - }, - "body": { - "id": 1399, - "node_type": 46, - "kind": 0, - "src": { - "id": 1400, - "line": 484, - "column": 93, - "start": 16432, - "end": 16433, - "length": 2, - "parent_index": 1382 - }, - "implemented": true, - "statements": [] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1384, - "node_type": 43, - "src": { - "id": 1385, - "line": 484, - "column": 34, - "start": 16373, - "end": 16412, - "length": 40, - "parent_index": 1382 - }, - "parameters": [ - { - "id": 1386, - "node_type": 44, - "src": { - "id": 1387, - "line": 484, - "column": 34, - "start": 16373, - "end": 16384, - "length": 12, - "parent_index": 1384 - }, - "scope": 1382, - "name": "from", - "type_name": { - "id": 1388, - "node_type": 30, - "src": { - "id": 1389, - "line": 484, - "column": 34, - "start": 16373, - "end": 16379, - "length": 7, - "parent_index": 1386 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 1390, - "node_type": 44, - "src": { - "id": 1391, - "line": 484, - "column": 48, - "start": 16387, - "end": 16396, - "length": 10, - "parent_index": 1384 - }, - "scope": 1382, - "name": "to", - "type_name": { - "id": 1392, - "node_type": 30, - "src": { - "id": 1393, - "line": 484, - "column": 48, - "start": 16387, - "end": 16393, - "length": 7, - "parent_index": 1390 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 1394, - "node_type": 44, - "src": { - "id": 1395, - "line": 484, - "column": 60, - "start": 16399, - "end": 16412, - "length": 14, - "parent_index": 1384 - }, - "scope": 1382, - "name": "amount", - "type_name": { - "id": 1396, - "node_type": 30, - "src": { - "id": 1397, - "line": 484, - "column": 60, - "start": 16399, - "end": 16405, - "length": 7, - "parent_index": 1394 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 1398, - "node_type": 43, - "src": { - "id": 1383, - "line": 484, - "column": 4, - "start": 16343, - "end": 16433, - "length": 91, - "parent_index": 1382 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "type_string": "function(address,address,uint256)" - } - }, - { - "id": 1402, - "name": "_afterTokenTransfer", - "node_type": 42, - "kind": 41, - "src": { - "id": 1403, - "line": 500, - "column": 4, - "start": 17022, - "end": 17111, - "length": 90, - "parent_index": 341 - }, - "body": { - "id": 1419, - "node_type": 46, - "kind": 0, - "src": { - "id": 1420, - "line": 500, - "column": 92, - "start": 17110, - "end": 17111, - "length": 2, - "parent_index": 1402 - }, - "implemented": true, - "statements": [] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1404, - "node_type": 43, - "src": { - "id": 1405, - "line": 500, - "column": 33, - "start": 17051, - "end": 17090, - "length": 40, - "parent_index": 1402 - }, - "parameters": [ - { - "id": 1406, - "node_type": 44, - "src": { - "id": 1407, - "line": 500, - "column": 33, - "start": 17051, - "end": 17062, - "length": 12, - "parent_index": 1404 - }, - "scope": 1402, - "name": "from", - "type_name": { - "id": 1408, - "node_type": 30, - "src": { - "id": 1409, - "line": 500, - "column": 33, - "start": 17051, - "end": 17057, - "length": 7, - "parent_index": 1406 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 1410, - "node_type": 44, - "src": { - "id": 1411, - "line": 500, - "column": 47, - "start": 17065, - "end": 17074, - "length": 10, - "parent_index": 1404 - }, - "scope": 1402, - "name": "to", - "type_name": { - "id": 1412, - "node_type": 30, - "src": { - "id": 1413, - "line": 500, - "column": 47, - "start": 17065, - "end": 17071, - "length": 7, - "parent_index": 1410 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 1414, - "node_type": 44, - "src": { - "id": 1415, - "line": 500, - "column": 59, - "start": 17077, - "end": 17090, - "length": 14, - "parent_index": 1404 - }, - "scope": 1402, - "name": "amount", - "type_name": { - "id": 1416, - "node_type": 30, - "src": { - "id": 1417, - "line": 500, - "column": 59, - "start": 17077, - "end": 17083, - "length": 7, - "parent_index": 1414 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 1418, - "node_type": 43, - "src": { - "id": 1403, - "line": 500, - "column": 4, - "start": 17022, - "end": 17111, - "length": 90, - "parent_index": 1402 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 341, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "type_string": "function(address,address,uint256)" - } - } - ], - "linearized_base_contracts": [ - 271, - 49, - 207, - 341 - ], - "base_contracts": [ - { - "id": 342, - "node_type": 62, - "src": { - "id": 343, - "line": 174, - "column": 18, - "start": 5820, - "end": 5826, - "length": 7, - "parent_index": 341 - }, - "base_name": { - "id": 344, - "node_type": 52, - "src": { - "id": 345, - "line": 174, - "column": 18, - "start": 5820, - "end": 5826, - "length": 7, - "parent_index": 341 - }, - "name": "Context", - "referenced_declaration": 271 - } - }, - { - "id": 346, - "node_type": 62, - "src": { - "id": 347, - "line": 174, - "column": 27, - "start": 5829, - "end": 5834, - "length": 6, - "parent_index": 341 - }, - "base_name": { - "id": 348, - "node_type": 52, - "src": { - "id": 349, - "line": 174, - "column": 27, - "start": 5829, - "end": 5834, - "length": 6, - "parent_index": 341 - }, - "name": "IERC20", - "referenced_declaration": 49 - } - }, - { - "id": 350, - "node_type": 62, - "src": { - "id": 351, - "line": 174, - "column": 35, - "start": 5837, - "end": 5850, - "length": 14, - "parent_index": 341 - }, - "base_name": { - "id": 352, - "node_type": 52, - "src": { - "id": 353, - "line": 174, - "column": 35, - "start": 5837, - "end": 5850, - "length": 14, - "parent_index": 341 - }, - "name": "IERC20Metadata", - "referenced_declaration": 207 - } - } - ], - "contract_dependencies": [ - 271, - 49, - 207 - ] - } - ], - "src": { - "id": 328, - "line": 174, - "column": 0, - "start": 5802, - "end": 17113, - "length": 11312, - "parent_index": 48 - } + "id": 327, + "base_contracts": [ + { + "id": 342, + "node_type": 62, + "src": { + "id": 343, + "line": 174, + "column": 18, + "start": 5820, + "end": 5826, + "length": 7, + "parent_index": 341 + }, + "base_name": { + "id": 344, + "node_type": 52, + "src": { + "id": 345, + "line": 174, + "column": 18, + "start": 5820, + "end": 5826, + "length": 7, + "parent_index": 341 + }, + "name": "Context", + "referenced_declaration": 271 + } + }, + { + "id": 346, + "node_type": 62, + "src": { + "id": 347, + "line": 174, + "column": 27, + "start": 5829, + "end": 5834, + "length": 6, + "parent_index": 341 + }, + "base_name": { + "id": 348, + "node_type": 52, + "src": { + "id": 349, + "line": 174, + "column": 27, + "start": 5829, + "end": 5834, + "length": 6, + "parent_index": 341 + }, + "name": "IERC20", + "referenced_declaration": 49 + } + }, + { + "id": 350, + "node_type": 62, + "src": { + "id": 351, + "line": 174, + "column": 35, + "start": 5837, + "end": 5850, + "length": 14, + "parent_index": 341 + }, + "base_name": { + "id": 352, + "node_type": 52, + "src": { + "id": 353, + "line": 174, + "column": 35, + "start": 5837, + "end": 5850, + "length": 14, + "parent_index": 341 + }, + "name": "IERC20Metadata", + "referenced_declaration": 207 + } + } + ], + "license": "MIT", + "exported_symbols": [ + { + "id": 327, + "name": "ERC20", + "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/ERC20.sol" + }, + { + "id": 342, + "name": "Context", + "absolute_path": "" + }, + { + "id": 346, + "name": "IERC20", + "absolute_path": "" + }, + { + "id": 350, + "name": "IERC20Metadata", + "absolute_path": "" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/ERC20.sol", + "name": "ERC20", + "node_type": 1, + "nodes": [ + { + "id": 335, + "node_type": 10, + "src": { + "id": 336, + "line": 140, + "column": 0, + "start": 4375, + "end": 4397, + "length": 23, + "parent_index": 327 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 341, + "name": "ERC20", + "node_type": 35, + "src": { + "id": 0, + "line": 174, + "column": 0, + "start": 5802, + "end": 17113, + "length": 11312, + "parent_index": 327 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 355, + "name": "_balances", + "is_constant": false, + "is_state_variable": true, + "node_type": 44, + "src": { + "id": 356, + "line": 175, + "column": 4, + "start": 5858, + "end": 5903, + "length": 46, + "parent_index": 341 + }, + "scope": 341, + "type_description": { + "type_identifier": "t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003euint256)" + }, + "visibility": 2, + "storage_location": 1, + "mutability": 1, + "type_name": { + "id": 357, + "node_type": 0, + "src": { + "id": 358, + "line": 175, + "column": 4, + "start": 5858, + "end": 5884, + "length": 27, + "parent_index": 355 + }, + "type_description": { + "type_identifier": "t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003euint256)" + }, + "key_type": { + "id": 359, + "node_type": 30, + "src": { + "id": 360, + "line": 175, + "column": 12, + "start": 5866, + "end": 5872, + "length": 7, + "parent_index": 357 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "referenced_declaration": 0 + }, + "value_type": { + "id": 361, + "node_type": 30, + "src": { + "id": 362, + "line": 175, + "column": 23, + "start": 5877, + "end": 5883, + "length": 7, + "parent_index": 357 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "referenced_declaration": 0 + } + }, + { + "id": 364, + "name": "_allowances", + "is_constant": false, + "is_state_variable": true, + "node_type": 44, + "src": { + "id": 365, + "line": 177, + "column": 4, + "start": 5910, + "end": 5977, + "length": 68, + "parent_index": 341 + }, + "scope": 341, + "type_description": { + "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003emapping(address=\u003euint256))" + }, + "visibility": 2, + "storage_location": 1, + "mutability": 1, + "type_name": { + "id": 366, + "node_type": 0, + "src": { + "id": 367, + "line": 177, + "column": 4, + "start": 5910, + "end": 5956, + "length": 47, + "parent_index": 364 + }, + "type_description": { + "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003emapping(address=\u003euint256))" + }, + "key_type": { + "id": 368, + "node_type": 30, + "src": { + "id": 369, + "line": 177, + "column": 12, + "start": 5918, + "end": 5924, + "length": 7, + "parent_index": 366 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "referenced_declaration": 0 + }, + "value_type": { + "id": 370, + "node_type": 53, + "src": { + "id": 371, + "line": 177, + "column": 23, + "start": 5929, + "end": 5955, + "length": 27, + "parent_index": 366 + }, + "name": "mapping(address=\u003euint256)", + "type_description": { + "type_identifier": "t_mapping_$t_address_$t_uint256", + "type_string": "mapping(address=\u003euint256)" + }, + "key_type": { + "id": 373, + "node_type": 30, + "src": { + "id": 374, + "line": 177, + "column": 31, + "start": 5937, + "end": 5943, + "length": 7, + "parent_index": 366 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "referenced_declaration": 0 + }, + "value_type": { + "id": 375, + "node_type": 30, + "src": { + "id": 376, + "line": 177, + "column": 42, + "start": 5948, + "end": 5954, + "length": 7, + "parent_index": 366 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "referenced_declaration": 0 + }, + "referenced_declaration": 0 + } + }, + { + "id": 378, + "name": "_totalSupply", + "is_constant": false, + "is_state_variable": true, + "node_type": 44, + "src": { + "id": 379, + "line": 179, + "column": 4, + "start": 5984, + "end": 6012, + "length": 29, + "parent_index": 341 + }, + "scope": 341, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "visibility": 2, + "storage_location": 1, + "mutability": 1, + "type_name": { + "id": 380, + "node_type": 30, + "src": { + "id": 381, + "line": 179, + "column": 4, + "start": 5984, + "end": 5990, + "length": 7, + "parent_index": 378 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + } + }, + { + "id": 383, + "name": "_name", + "is_constant": false, + "is_state_variable": true, + "node_type": 44, + "src": { + "id": 384, + "line": 181, + "column": 4, + "start": 6019, + "end": 6039, + "length": 21, + "parent_index": 341 + }, + "scope": 341, + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "visibility": 2, + "storage_location": 1, + "mutability": 1, + "type_name": { + "id": 385, + "node_type": 30, + "src": { + "id": 386, + "line": 181, + "column": 4, + "start": 6019, + "end": 6024, + "length": 6, + "parent_index": 383 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + } + }, + { + "id": 388, + "name": "_symbol", + "is_constant": false, + "is_state_variable": true, + "node_type": 44, + "src": { + "id": 389, + "line": 182, + "column": 4, + "start": 6045, + "end": 6067, + "length": 23, + "parent_index": 341 + }, + "scope": 341, + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "visibility": 2, + "storage_location": 1, + "mutability": 1, + "type_name": { + "id": 390, + "node_type": 30, + "src": { + "id": 391, + "line": 182, + "column": 4, + "start": 6045, + "end": 6050, + "length": 6, + "parent_index": 388 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + } + }, + { + "id": 393, + "node_type": 42, + "src": { + "id": 394, + "line": 190, + "column": 4, + "start": 6250, + "end": 6362, + "length": 113, + "parent_index": 341 + }, + "kind": 11, + "state_mutability": 4, + "visibility": 1, + "implemented": true, + "modifiers": [], + "parameters": { + "id": 395, + "node_type": 43, + "src": { + "id": 396, + "line": 190, + "column": 16, + "start": 6262, + "end": 6303, + "length": 42, + "parent_index": 393 + }, + "parameters": [ + { + "id": 397, + "node_type": 44, + "src": { + "id": 398, + "line": 190, + "column": 16, + "start": 6262, + "end": 6280, + "length": 19, + "parent_index": 395 + }, + "scope": 393, + "name": "name_", + "type_name": { + "id": 399, + "node_type": 30, + "src": { + "id": 400, + "line": 190, + "column": 16, + "start": 6262, + "end": 6267, + "length": 6, + "parent_index": 397 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 401, + "node_type": 44, + "src": { + "id": 402, + "line": 190, + "column": 37, + "start": 6283, + "end": 6303, + "length": 21, + "parent_index": 395 + }, + "scope": 393, + "name": "symbol_", + "type_name": { + "id": 403, + "node_type": 30, + "src": { + "id": 404, + "line": 190, + "column": 37, + "start": 6283, + "end": 6288, + "length": 6, + "parent_index": 401 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_string", + "type_string": "string" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 405, + "node_type": 43, + "src": { + "id": 394, + "line": 190, + "column": 4, + "start": 6250, + "end": 6362, + "length": 113, + "parent_index": 393 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 341, + "body": { + "id": 406, + "node_type": 46, + "kind": 0, + "src": { + "id": 407, + "line": 190, + "column": 60, + "start": 6306, + "end": 6362, + "length": 57, + "parent_index": 393 + }, + "implemented": true, + "statements": [ + { + "id": 408, + "node_type": 81, + "src": { + "id": 409, + "line": 191, + "column": 8, + "start": 6316, + "end": 6329, + "length": 14, + "parent_index": 406 + }, + "expression": { + "id": 410, + "node_type": 27, + "src": { + "id": 411, + "line": 191, + "column": 8, + "start": 6316, + "end": 6328, + "length": 13, + "parent_index": 406 + }, + "operator": 11, + "left_expression": { + "id": 412, + "node_type": 16, + "src": { + "id": 413, + "line": 191, + "column": 8, + "start": 6316, + "end": 6320, + "length": 5, + "parent_index": 410 + }, + "name": "_name", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 383, + "is_pure": false + }, + "right_expression": { + "id": 414, + "node_type": 16, + "src": { + "id": 415, + "line": 191, + "column": 16, + "start": 6324, + "end": 6328, + "length": 5, + "parent_index": 410 + }, + "name": "name_", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 414, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + } + }, + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + } + }, + { + "id": 416, + "node_type": 81, + "src": { + "id": 417, + "line": 192, + "column": 8, + "start": 6339, + "end": 6356, + "length": 18, + "parent_index": 406 + }, + "expression": { + "id": 418, + "node_type": 27, + "src": { + "id": 419, + "line": 192, + "column": 8, + "start": 6339, + "end": 6355, + "length": 17, + "parent_index": 406 + }, + "operator": 11, + "left_expression": { + "id": 420, + "node_type": 16, + "src": { + "id": 421, + "line": 192, + "column": 8, + "start": 6339, + "end": 6345, + "length": 7, + "parent_index": 418 + }, + "name": "_symbol", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 388, + "is_pure": false + }, + "right_expression": { + "id": 422, + "node_type": 16, + "src": { + "id": 423, + "line": 192, + "column": 18, + "start": 6349, + "end": 6355, + "length": 7, + "parent_index": 418 + }, + "name": "symbol_", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 422, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + } + }, + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + } + } + ] + } + }, + { + "id": 425, + "name": "name", + "node_type": 42, + "kind": 41, + "src": { + "id": 426, + "line": 198, + "column": 4, + "start": 6428, + "end": 6525, + "length": 98, + "parent_index": 341 + }, + "body": { + "id": 441, + "node_type": 46, + "kind": 0, + "src": { + "id": 442, + "line": 198, + "column": 73, + "start": 6497, + "end": 6525, + "length": 29, + "parent_index": 425 + }, + "implemented": true, + "statements": [ + { + "id": 443, + "node_type": 47, + "src": { + "id": 444, + "line": 199, + "column": 8, + "start": 6507, + "end": 6519, + "length": 13, + "parent_index": 425 + }, + "function_return_parameters": 425, + "expression": { + "id": 445, + "node_type": 16, + "src": { + "id": 446, + "line": 199, + "column": 15, + "start": 6514, + "end": 6518, + "length": 5, + "parent_index": 441 + }, + "name": "_name", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 383, + "is_pure": false + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [ + { + "id": 427, + "node_type": 63, + "name": "name", + "src": { + "id": 428, + "line": 198, + "column": 40, + "start": 6464, + "end": 6471, + "length": 8, + "parent_index": 425 + }, + "referenced_declaration": 224, + "type_descriptions": { + "type_identifier": "t_function_$_t_string$", + "type_string": "function(string)" + } + } + ], + "parameters": { + "id": 429, + "node_type": 43, + "src": { + "id": 430, + "line": 198, + "column": 58, + "start": 6482, + "end": 6494, + "length": 13, + "parent_index": 425 + }, + "parameters": [ + { + "id": 431, + "node_type": 44, + "src": { + "id": 432, + "line": 198, + "column": 58, + "start": 6482, + "end": 6494, + "length": 13, + "parent_index": 429 + }, + "scope": 425, + "name": "", + "type_name": { + "id": 433, + "node_type": 30, + "src": { + "id": 434, + "line": 198, + "column": 58, + "start": 6482, + "end": 6487, + "length": 6, + "parent_index": 431 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 435, + "node_type": 43, + "src": { + "id": 436, + "line": 198, + "column": 58, + "start": 6482, + "end": 6494, + "length": 13, + "parent_index": 425 + }, + "parameters": [ + { + "id": 437, + "node_type": 44, + "src": { + "id": 438, + "line": 198, + "column": 58, + "start": 6482, + "end": 6494, + "length": 13, + "parent_index": 435 + }, + "scope": 425, + "name": "", + "type_name": { + "id": 439, + "node_type": 30, + "src": { + "id": 440, + "line": 198, + "column": 58, + "start": 6482, + "end": 6487, + "length": 6, + "parent_index": 437 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_string$", + "type_string": "function(string)" + } + }, + { + "id": 448, + "name": "symbol", + "node_type": 42, + "kind": 41, + "src": { + "id": 449, + "line": 206, + "column": 4, + "start": 6639, + "end": 6740, + "length": 102, + "parent_index": 341 + }, + "body": { + "id": 464, + "node_type": 46, + "kind": 0, + "src": { + "id": 465, + "line": 206, + "column": 75, + "start": 6710, + "end": 6740, + "length": 31, + "parent_index": 448 + }, + "implemented": true, + "statements": [ + { + "id": 466, + "node_type": 47, + "src": { + "id": 467, + "line": 207, + "column": 8, + "start": 6720, + "end": 6734, + "length": 15, + "parent_index": 448 + }, + "function_return_parameters": 448, + "expression": { + "id": 468, + "node_type": 16, + "src": { + "id": 469, + "line": 207, + "column": 15, + "start": 6727, + "end": 6733, + "length": 7, + "parent_index": 464 + }, + "name": "_symbol", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 388, + "is_pure": false + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [ + { + "id": 450, + "node_type": 63, + "name": "symbol", + "src": { + "id": 451, + "line": 206, + "column": 42, + "start": 6677, + "end": 6684, + "length": 8, + "parent_index": 448 + }, + "referenced_declaration": 240, + "type_descriptions": { + "type_identifier": "t_function_$_t_string$", + "type_string": "function(string)" + } + } + ], + "parameters": { + "id": 452, + "node_type": 43, + "src": { + "id": 453, + "line": 206, + "column": 60, + "start": 6695, + "end": 6707, + "length": 13, + "parent_index": 448 + }, + "parameters": [ + { + "id": 454, + "node_type": 44, + "src": { + "id": 455, + "line": 206, + "column": 60, + "start": 6695, + "end": 6707, + "length": 13, + "parent_index": 452 + }, + "scope": 448, + "name": "", + "type_name": { + "id": 456, + "node_type": 30, + "src": { + "id": 457, + "line": 206, + "column": 60, + "start": 6695, + "end": 6700, + "length": 6, + "parent_index": 454 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 458, + "node_type": 43, + "src": { + "id": 459, + "line": 206, + "column": 60, + "start": 6695, + "end": 6707, + "length": 13, + "parent_index": 448 + }, + "parameters": [ + { + "id": 460, + "node_type": 44, + "src": { + "id": 461, + "line": 206, + "column": 60, + "start": 6695, + "end": 6707, + "length": 13, + "parent_index": 458 + }, + "scope": 448, + "name": "", + "type_name": { + "id": 462, + "node_type": 30, + "src": { + "id": 463, + "line": 206, + "column": 60, + "start": 6695, + "end": 6700, + "length": 6, + "parent_index": 460 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_string$", + "type_string": "function(string)" + } + }, + { + "id": 471, + "name": "decimals", + "node_type": 42, + "kind": 41, + "src": { + "id": 472, + "line": 223, + "column": 4, + "start": 7374, + "end": 7464, + "length": 91, + "parent_index": 341 + }, + "body": { + "id": 487, + "node_type": 46, + "kind": 0, + "src": { + "id": 488, + "line": 223, + "column": 69, + "start": 7439, + "end": 7464, + "length": 26, + "parent_index": 471 + }, + "implemented": true, + "statements": [ + { + "id": 489, + "node_type": 47, + "src": { + "id": 490, + "line": 224, + "column": 8, + "start": 7449, + "end": 7458, + "length": 10, + "parent_index": 471 + }, + "function_return_parameters": 471, + "expression": { + "id": 491, + "node_type": 17, + "kind": 49, + "value": "18", + "hex_value": "3138", + "src": { + "id": 492, + "line": 224, + "column": 15, + "start": 7456, + "end": 7457, + "length": 2, + "parent_index": 487 + }, + "type_description": { + "type_identifier": "t_rational_18_by_1", + "type_string": "int_const 18" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [ + { + "id": 473, + "node_type": 63, + "name": "decimals", + "src": { + "id": 474, + "line": 223, + "column": 44, + "start": 7414, + "end": 7421, + "length": 8, + "parent_index": 471 + }, + "referenced_declaration": 256, + "type_descriptions": { + "type_identifier": "t_function_$_t_uint8$", + "type_string": "function(uint8)" + } + } + ], + "parameters": { + "id": 475, + "node_type": 43, + "src": { + "id": 476, + "line": 223, + "column": 62, + "start": 7432, + "end": 7436, + "length": 5, + "parent_index": 471 + }, + "parameters": [ + { + "id": 477, + "node_type": 44, + "src": { + "id": 478, + "line": 223, + "column": 62, + "start": 7432, + "end": 7436, + "length": 5, + "parent_index": 475 + }, + "scope": 471, + "name": "", + "type_name": { + "id": 479, + "node_type": 30, + "src": { + "id": 480, + "line": 223, + "column": 62, + "start": 7432, + "end": 7436, + "length": 5, + "parent_index": 477 + }, + "name": "uint8", + "type_description": { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint8", + "type_string": "uint8" + } + ] + }, + "return_parameters": { + "id": 481, + "node_type": 43, + "src": { + "id": 482, + "line": 223, + "column": 62, + "start": 7432, + "end": 7436, + "length": 5, + "parent_index": 471 + }, + "parameters": [ + { + "id": 483, + "node_type": 44, + "src": { + "id": 484, + "line": 223, + "column": 62, + "start": 7432, + "end": 7436, + "length": 5, + "parent_index": 481 + }, + "scope": 471, + "name": "", + "type_name": { + "id": 485, + "node_type": 30, + "src": { + "id": 486, + "line": 223, + "column": 62, + "start": 7432, + "end": 7436, + "length": 5, + "parent_index": 483 + }, + "name": "uint8", + "type_description": { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint8", + "type_string": "uint8" + } + ] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_uint8$", + "type_string": "function(uint8)" + } + }, + { + "id": 494, + "name": "totalSupply", + "node_type": 42, + "kind": 41, + "src": { + "id": 495, + "line": 230, + "column": 4, + "start": 7525, + "end": 7630, + "length": 106, + "parent_index": 341 + }, + "body": { + "id": 510, + "node_type": 46, + "kind": 0, + "src": { + "id": 511, + "line": 230, + "column": 74, + "start": 7595, + "end": 7630, + "length": 36, + "parent_index": 494 + }, + "implemented": true, + "statements": [ + { + "id": 512, + "node_type": 47, + "src": { + "id": 513, + "line": 231, + "column": 8, + "start": 7605, + "end": 7624, + "length": 20, + "parent_index": 494 + }, + "function_return_parameters": 494, + "expression": { + "id": 514, + "node_type": 16, + "src": { + "id": 515, + "line": 231, + "column": 15, + "start": 7612, + "end": 7623, + "length": 12, + "parent_index": 510 + }, + "name": "_totalSupply", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 378, + "is_pure": false + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [ + { + "id": 496, + "node_type": 63, + "name": "totalSupply", + "src": { + "id": 497, + "line": 230, + "column": 47, + "start": 7568, + "end": 7575, + "length": 8, + "parent_index": 494 + }, + "referenced_declaration": 92, + "type_descriptions": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + } + ], + "parameters": { + "id": 498, + "node_type": 43, + "src": { + "id": 499, + "line": 230, + "column": 65, + "start": 7586, + "end": 7592, + "length": 7, + "parent_index": 494 + }, + "parameters": [ + { + "id": 500, + "node_type": 44, + "src": { + "id": 501, + "line": 230, + "column": 65, + "start": 7586, + "end": 7592, + "length": 7, + "parent_index": 498 + }, + "scope": 494, + "name": "", + "type_name": { + "id": 502, + "node_type": 30, + "src": { + "id": 503, + "line": 230, + "column": 65, + "start": 7586, + "end": 7592, + "length": 7, + "parent_index": 500 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 504, + "node_type": 43, + "src": { + "id": 505, + "line": 230, + "column": 65, + "start": 7586, + "end": 7592, + "length": 7, + "parent_index": 494 + }, + "parameters": [ + { + "id": 506, + "node_type": 44, + "src": { + "id": 507, + "line": 230, + "column": 65, + "start": 7586, + "end": 7592, + "length": 7, + "parent_index": 504 + }, + "scope": 494, + "name": "", + "type_name": { + "id": 508, + "node_type": 30, + "src": { + "id": 509, + "line": 230, + "column": 65, + "start": 7586, + "end": 7592, + "length": 7, + "parent_index": 506 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + }, + { + "id": 517, + "name": "balanceOf", + "node_type": 42, + "kind": 41, + "src": { + "id": 518, + "line": 237, + "column": 4, + "start": 7689, + "end": 7813, + "length": 125, + "parent_index": 341 + }, + "body": { + "id": 533, + "node_type": 46, + "kind": 0, + "src": { + "id": 534, + "line": 237, + "column": 87, + "start": 7772, + "end": 7813, + "length": 42, + "parent_index": 517 + }, + "implemented": true, + "statements": [ + { + "id": 535, + "node_type": 47, + "src": { + "id": 536, + "line": 238, + "column": 8, + "start": 7782, + "end": 7807, + "length": 26, + "parent_index": 517 + }, + "function_return_parameters": 517, + "expression": { + "id": 537, + "node_type": 22, + "src": { + "id": 538, + "line": 238, + "column": 15, + "start": 7789, + "end": 7806, + "length": 18, + "parent_index": 533 + }, + "index_expression": { + "id": 539, + "node_type": 16, + "src": { + "id": 540, + "line": 238, + "column": 15, + "start": 7789, + "end": 7797, + "length": 9, + "parent_index": 537 + }, + "name": "_balances", + "type_description": { + "type_identifier": "t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003euint256)" + }, + "overloaded_declarations": [], + "referenced_declaration": 355, + "is_pure": false + }, + "base_expression": { + "id": 541, + "node_type": 16, + "src": { + "id": 542, + "line": 238, + "column": 25, + "start": 7799, + "end": 7805, + "length": 7, + "parent_index": 537 + }, + "name": "account", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 541, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003euint256)" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003euint256):address]" + } + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [ + { + "id": 519, + "node_type": 63, + "name": "balanceOf", + "src": { + "id": 520, + "line": 237, + "column": 60, + "start": 7745, + "end": 7752, + "length": 8, + "parent_index": 517 + }, + "referenced_declaration": 108, + "type_descriptions": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ], + "parameters": { + "id": 521, + "node_type": 43, + "src": { + "id": 522, + "line": 237, + "column": 23, + "start": 7708, + "end": 7722, + "length": 15, + "parent_index": 517 + }, + "parameters": [ + { + "id": 523, + "node_type": 44, + "src": { + "id": 524, + "line": 237, + "column": 23, + "start": 7708, + "end": 7722, + "length": 15, + "parent_index": 521 + }, + "scope": 517, + "name": "account", + "type_name": { + "id": 525, + "node_type": 30, + "src": { + "id": 526, + "line": 237, + "column": 23, + "start": 7708, + "end": 7714, + "length": 7, + "parent_index": 523 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 527, + "node_type": 43, + "src": { + "id": 528, + "line": 237, + "column": 78, + "start": 7763, + "end": 7769, + "length": 7, + "parent_index": 517 + }, + "parameters": [ + { + "id": 529, + "node_type": 44, + "src": { + "id": 530, + "line": 237, + "column": 78, + "start": 7763, + "end": 7769, + "length": 7, + "parent_index": 527 + }, + "scope": 517, + "name": "", + "type_name": { + "id": 531, + "node_type": 30, + "src": { + "id": 532, + "line": 237, + "column": 78, + "start": 7763, + "end": 7769, + "length": 7, + "parent_index": 529 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 544, + "name": "transfer", + "node_type": 42, + "kind": 41, + "src": { + "id": 545, + "line": 249, + "column": 4, + "start": 8010, + "end": 8198, + "length": 189, + "parent_index": 341 + }, + "body": { + "id": 564, + "node_type": 46, + "kind": 0, + "src": { + "id": 565, + "line": 249, + "column": 89, + "start": 8095, + "end": 8198, + "length": 104, + "parent_index": 544 + }, + "implemented": true, + "statements": [ + { + "id": 566, + "node_type": 44, + "src": { + "id": 567, + "line": 250, + "column": 8, + "start": 8105, + "end": 8133, + "length": 29, + "parent_index": 564 + }, + "assignments": [ + 568 + ], + "declarations": [ + { + "is_constant": false, + "id": 568, + "state_mutability": 1, + "name": "owner", + "node_type": 44, + "scope": 564, + "src": { + "id": 569, + "line": 250, + "column": 8, + "start": 8105, + "end": 8117, + "length": 13, + "parent_index": 566 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 570, + "node_type": 30, + "src": { + "id": 571, + "line": 250, + "column": 8, + "start": 8105, + "end": 8111, + "length": 7, + "parent_index": 568 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 572, + "node_type": 24, + "kind": 24, + "src": { + "id": 573, + "line": 250, + "column": 24, + "start": 8121, + "end": 8132, + "length": 12, + "parent_index": 566 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 574, + "node_type": 16, + "src": { + "id": 575, + "line": 250, + "column": 24, + "start": 8121, + "end": 8130, + "length": 10, + "parent_index": 572 + }, + "name": "_msgSender", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + }, + { + "id": 576, + "node_type": 24, + "kind": 24, + "src": { + "id": 577, + "line": 251, + "column": 8, + "start": 8143, + "end": 8170, + "length": 28, + "parent_index": 564 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 580, + "node_type": 16, + "src": { + "id": 581, + "line": 251, + "column": 18, + "start": 8153, + "end": 8157, + "length": 5, + "parent_index": 576 + }, + "name": "owner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 566, + "is_pure": false + }, + { + "id": 582, + "node_type": 16, + "src": { + "id": 583, + "line": 251, + "column": 25, + "start": 8160, + "end": 8161, + "length": 2, + "parent_index": 576 + }, + "name": "to", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 582, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 584, + "node_type": 16, + "src": { + "id": 585, + "line": 251, + "column": 29, + "start": 8164, + "end": 8169, + "length": 6, + "parent_index": 576 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 584, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 578, + "node_type": 16, + "src": { + "id": 579, + "line": 251, + "column": 8, + "start": 8143, + "end": 8151, + "length": 9, + "parent_index": 576 + }, + "name": "_transfer", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + }, + { + "id": 586, + "node_type": 47, + "src": { + "id": 587, + "line": 252, + "column": 8, + "start": 8181, + "end": 8192, + "length": 12, + "parent_index": 544 + }, + "function_return_parameters": 544, + "expression": { + "id": 588, + "node_type": 17, + "kind": 61, + "value": "true", + "hex_value": "74727565", + "src": { + "id": 589, + "line": 252, + "column": 15, + "start": 8188, + "end": 8191, + "length": 4, + "parent_index": 564 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [ + { + "id": 546, + "node_type": 63, + "name": "transfer", + "src": { + "id": 547, + "line": 249, + "column": 65, + "start": 8071, + "end": 8078, + "length": 8, + "parent_index": 544 + }, + "referenced_declaration": 124, + "type_descriptions": { + "type_identifier": "t_function_$_t_address$_t_uint256$", + "type_string": "function(address,uint256)" + } + } + ], + "parameters": { + "id": 548, + "node_type": 43, + "src": { + "id": 549, + "line": 249, + "column": 22, + "start": 8028, + "end": 8053, + "length": 26, + "parent_index": 544 + }, + "parameters": [ + { + "id": 550, + "node_type": 44, + "src": { + "id": 551, + "line": 249, + "column": 22, + "start": 8028, + "end": 8037, + "length": 10, + "parent_index": 548 + }, + "scope": 544, + "name": "to", + "type_name": { + "id": 552, + "node_type": 30, + "src": { + "id": 553, + "line": 249, + "column": 22, + "start": 8028, + "end": 8034, + "length": 7, + "parent_index": 550 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 554, + "node_type": 44, + "src": { + "id": 555, + "line": 249, + "column": 34, + "start": 8040, + "end": 8053, + "length": 14, + "parent_index": 548 + }, + "scope": 544, + "name": "amount", + "type_name": { + "id": 556, + "node_type": 30, + "src": { + "id": 557, + "line": 249, + "column": 34, + "start": 8040, + "end": 8046, + "length": 7, + "parent_index": 554 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 558, + "node_type": 43, + "src": { + "id": 559, + "line": 249, + "column": 83, + "start": 8089, + "end": 8092, + "length": 4, + "parent_index": 544 + }, + "parameters": [ + { + "id": 560, + "node_type": 44, + "src": { + "id": 561, + "line": 249, + "column": 83, + "start": 8089, + "end": 8092, + "length": 4, + "parent_index": 558 + }, + "scope": 544, + "name": "", + "type_name": { + "id": 562, + "node_type": 30, + "src": { + "id": 563, + "line": 249, + "column": 83, + "start": 8089, + "end": 8092, + "length": 4, + "parent_index": 560 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_uint256$", + "type_string": "function(address,uint256)" + } + }, + { + "id": 591, + "name": "allowance", + "node_type": 42, + "kind": 41, + "src": { + "id": 592, + "line": 258, + "column": 4, + "start": 8257, + "end": 8405, + "length": 149, + "parent_index": 341 + }, + "body": { + "id": 611, + "node_type": 46, + "kind": 0, + "src": { + "id": 612, + "line": 258, + "column": 102, + "start": 8355, + "end": 8405, + "length": 51, + "parent_index": 591 + }, + "implemented": true, + "statements": [ + { + "id": 613, + "node_type": 47, + "src": { + "id": 614, + "line": 259, + "column": 8, + "start": 8365, + "end": 8399, + "length": 35, + "parent_index": 591 + }, + "function_return_parameters": 591, + "expression": { + "id": 615, + "node_type": 22, + "src": { + "id": 616, + "line": 259, + "column": 15, + "start": 8372, + "end": 8398, + "length": 27, + "parent_index": 611 + }, + "index_expression": { + "id": 617, + "node_type": 22, + "src": { + "id": 618, + "line": 259, + "column": 15, + "start": 8372, + "end": 8389, + "length": 18, + "parent_index": 615 + }, + "index_expression": { + "id": 619, + "node_type": 16, + "src": { + "id": 620, + "line": 259, + "column": 15, + "start": 8372, + "end": 8382, + "length": 11, + "parent_index": 617 + }, + "name": "_allowances", + "type_description": { + "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003emapping(address=\u003euint256))" + }, + "overloaded_declarations": [], + "referenced_declaration": 364, + "is_pure": false + }, + "base_expression": { + "id": 621, + "node_type": 16, + "src": { + "id": 622, + "line": 259, + "column": 27, + "start": 8384, + "end": 8388, + "length": 5, + "parent_index": 617 + }, + "name": "owner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 621, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003emapping(address=\u003euint256))" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003emapping(address=\u003euint256)):address]" + } + }, + "base_expression": { + "id": 623, + "node_type": 16, + "src": { + "id": 624, + "line": 259, + "column": 34, + "start": 8391, + "end": 8397, + "length": 7, + "parent_index": 615 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 623, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003emapping(address=\u003euint256)):address]" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$", + "type_string": "index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]" + } + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [ + { + "id": 593, + "node_type": 63, + "name": "allowance", + "src": { + "id": 594, + "line": 258, + "column": 75, + "start": 8328, + "end": 8335, + "length": 8, + "parent_index": 591 + }, + "referenced_declaration": 144, + "type_descriptions": { + "type_identifier": "t_function_$_t_address$_t_address$", + "type_string": "function(address,address)" + } + } + ], + "parameters": { + "id": 595, + "node_type": 43, + "src": { + "id": 596, + "line": 258, + "column": 23, + "start": 8276, + "end": 8305, + "length": 30, + "parent_index": 591 + }, + "parameters": [ + { + "id": 597, + "node_type": 44, + "src": { + "id": 598, + "line": 258, + "column": 23, + "start": 8276, + "end": 8288, + "length": 13, + "parent_index": 595 + }, + "scope": 591, + "name": "owner", + "type_name": { + "id": 599, + "node_type": 30, + "src": { + "id": 600, + "line": 258, + "column": 23, + "start": 8276, + "end": 8282, + "length": 7, + "parent_index": 597 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 601, + "node_type": 44, + "src": { + "id": 602, + "line": 258, + "column": 38, + "start": 8291, + "end": 8305, + "length": 15, + "parent_index": 595 + }, + "scope": 591, + "name": "spender", + "type_name": { + "id": 603, + "node_type": 30, + "src": { + "id": 604, + "line": 258, + "column": 38, + "start": 8291, + "end": 8297, + "length": 7, + "parent_index": 601 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 605, + "node_type": 43, + "src": { + "id": 606, + "line": 258, + "column": 93, + "start": 8346, + "end": 8352, + "length": 7, + "parent_index": 591 + }, + "parameters": [ + { + "id": 607, + "node_type": 44, + "src": { + "id": 608, + "line": 258, + "column": 93, + "start": 8346, + "end": 8352, + "length": 7, + "parent_index": 605 + }, + "scope": 591, + "name": "", + "type_name": { + "id": 609, + "node_type": 30, + "src": { + "id": 610, + "line": 258, + "column": 93, + "start": 8346, + "end": 8352, + "length": 7, + "parent_index": 607 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$", + "type_string": "function(address,address)" + } + }, + { + "id": 626, + "name": "approve", + "node_type": 42, + "kind": 41, + "src": { + "id": 627, + "line": 272, + "column": 4, + "start": 8714, + "end": 8910, + "length": 197, + "parent_index": 341 + }, + "body": { + "id": 646, + "node_type": 46, + "kind": 0, + "src": { + "id": 647, + "line": 272, + "column": 93, + "start": 8803, + "end": 8910, + "length": 108, + "parent_index": 626 + }, + "implemented": true, + "statements": [ + { + "id": 648, + "node_type": 44, + "src": { + "id": 649, + "line": 273, + "column": 8, + "start": 8813, + "end": 8841, + "length": 29, + "parent_index": 646 + }, + "assignments": [ + 650 + ], + "declarations": [ + { + "is_constant": false, + "id": 650, + "state_mutability": 1, + "name": "owner", + "node_type": 44, + "scope": 646, + "src": { + "id": 651, + "line": 273, + "column": 8, + "start": 8813, + "end": 8825, + "length": 13, + "parent_index": 648 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 652, + "node_type": 30, + "src": { + "id": 653, + "line": 273, + "column": 8, + "start": 8813, + "end": 8819, + "length": 7, + "parent_index": 650 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 654, + "node_type": 24, + "kind": 24, + "src": { + "id": 655, + "line": 273, + "column": 24, + "start": 8829, + "end": 8840, + "length": 12, + "parent_index": 648 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 656, + "node_type": 16, + "src": { + "id": 657, + "line": 273, + "column": 24, + "start": 8829, + "end": 8838, + "length": 10, + "parent_index": 654 + }, + "name": "_msgSender", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + }, + { + "id": 658, + "node_type": 24, + "kind": 24, + "src": { + "id": 659, + "line": 274, + "column": 8, + "start": 8851, + "end": 8882, + "length": 32, + "parent_index": 646 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 662, + "node_type": 16, + "src": { + "id": 663, + "line": 274, + "column": 17, + "start": 8860, + "end": 8864, + "length": 5, + "parent_index": 658 + }, + "name": "owner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 648, + "is_pure": false + }, + { + "id": 664, + "node_type": 16, + "src": { + "id": 665, + "line": 274, + "column": 24, + "start": 8867, + "end": 8873, + "length": 7, + "parent_index": 658 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 664, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 666, + "node_type": 16, + "src": { + "id": 667, + "line": 274, + "column": 33, + "start": 8876, + "end": 8881, + "length": 6, + "parent_index": 658 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 666, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 660, + "node_type": 16, + "src": { + "id": 661, + "line": 274, + "column": 8, + "start": 8851, + "end": 8858, + "length": 8, + "parent_index": 658 + }, + "name": "_approve", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + }, + { + "id": 668, + "node_type": 47, + "src": { + "id": 669, + "line": 275, + "column": 8, + "start": 8893, + "end": 8904, + "length": 12, + "parent_index": 626 + }, + "function_return_parameters": 626, + "expression": { + "id": 670, + "node_type": 17, + "kind": 61, + "value": "true", + "hex_value": "74727565", + "src": { + "id": 671, + "line": 275, + "column": 15, + "start": 8900, + "end": 8903, + "length": 4, + "parent_index": 646 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [ + { + "id": 628, + "node_type": 63, + "name": "approve", + "src": { + "id": 629, + "line": 272, + "column": 69, + "start": 8779, + "end": 8786, + "length": 8, + "parent_index": 626 + }, + "referenced_declaration": 164, + "type_descriptions": { + "type_identifier": "t_function_$_t_address$_t_uint256$", + "type_string": "function(address,uint256)" + } + } + ], + "parameters": { + "id": 630, + "node_type": 43, + "src": { + "id": 631, + "line": 272, + "column": 21, + "start": 8731, + "end": 8761, + "length": 31, + "parent_index": 626 + }, + "parameters": [ + { + "id": 632, + "node_type": 44, + "src": { + "id": 633, + "line": 272, + "column": 21, + "start": 8731, + "end": 8745, + "length": 15, + "parent_index": 630 + }, + "scope": 626, + "name": "spender", + "type_name": { + "id": 634, + "node_type": 30, + "src": { + "id": 635, + "line": 272, + "column": 21, + "start": 8731, + "end": 8737, + "length": 7, + "parent_index": 632 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 636, + "node_type": 44, + "src": { + "id": 637, + "line": 272, + "column": 38, + "start": 8748, + "end": 8761, + "length": 14, + "parent_index": 630 + }, + "scope": 626, + "name": "amount", + "type_name": { + "id": 638, + "node_type": 30, + "src": { + "id": 639, + "line": 272, + "column": 38, + "start": 8748, + "end": 8754, + "length": 7, + "parent_index": 636 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 640, + "node_type": 43, + "src": { + "id": 641, + "line": 272, + "column": 87, + "start": 8797, + "end": 8800, + "length": 4, + "parent_index": 626 + }, + "parameters": [ + { + "id": 642, + "node_type": 44, + "src": { + "id": 643, + "line": 272, + "column": 87, + "start": 8797, + "end": 8800, + "length": 4, + "parent_index": 640 + }, + "scope": 626, + "name": "", + "type_name": { + "id": 644, + "node_type": 30, + "src": { + "id": 645, + "line": 272, + "column": 87, + "start": 8797, + "end": 8800, + "length": 4, + "parent_index": 642 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_uint256$", + "type_string": "function(address,uint256)" + } + }, + { + "id": 673, + "name": "transferFrom", + "node_type": 42, + "kind": 41, + "src": { + "id": 674, + "line": 294, + "column": 4, + "start": 9473, + "end": 9728, + "length": 256, + "parent_index": 341 + }, + "body": { + "id": 697, + "node_type": 46, + "kind": 0, + "src": { + "id": 698, + "line": 294, + "column": 107, + "start": 9576, + "end": 9728, + "length": 153, + "parent_index": 673 + }, + "implemented": true, + "statements": [ + { + "id": 699, + "node_type": 44, + "src": { + "id": 700, + "line": 295, + "column": 8, + "start": 9586, + "end": 9616, + "length": 31, + "parent_index": 697 + }, + "assignments": [ + 701 + ], + "declarations": [ + { + "is_constant": false, + "id": 701, + "state_mutability": 1, + "name": "spender", + "node_type": 44, + "scope": 697, + "src": { + "id": 702, + "line": 295, + "column": 8, + "start": 9586, + "end": 9600, + "length": 15, + "parent_index": 699 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 703, + "node_type": 30, + "src": { + "id": 704, + "line": 295, + "column": 8, + "start": 9586, + "end": 9592, + "length": 7, + "parent_index": 701 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 705, + "node_type": 24, + "kind": 24, + "src": { + "id": 706, + "line": 295, + "column": 26, + "start": 9604, + "end": 9615, + "length": 12, + "parent_index": 699 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 707, + "node_type": 16, + "src": { + "id": 708, + "line": 295, + "column": 26, + "start": 9604, + "end": 9613, + "length": 10, + "parent_index": 705 + }, + "name": "_msgSender", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + }, + { + "id": 709, + "node_type": 24, + "kind": 24, + "src": { + "id": 710, + "line": 296, + "column": 8, + "start": 9626, + "end": 9663, + "length": 38, + "parent_index": 697 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 713, + "node_type": 16, + "src": { + "id": 714, + "line": 296, + "column": 24, + "start": 9642, + "end": 9645, + "length": 4, + "parent_index": 709 + }, + "name": "from", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 713, + "is_pure": false + }, + { + "id": 715, + "node_type": 16, + "src": { + "id": 716, + "line": 296, + "column": 30, + "start": 9648, + "end": 9654, + "length": 7, + "parent_index": 709 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 699, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 717, + "node_type": 16, + "src": { + "id": 718, + "line": 296, + "column": 39, + "start": 9657, + "end": 9662, + "length": 6, + "parent_index": 709 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 717, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 711, + "node_type": 16, + "src": { + "id": 712, + "line": 296, + "column": 8, + "start": 9626, + "end": 9640, + "length": 15, + "parent_index": 709 + }, + "name": "_spendAllowance", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + }, + { + "id": 719, + "node_type": 24, + "kind": 24, + "src": { + "id": 720, + "line": 297, + "column": 8, + "start": 9674, + "end": 9700, + "length": 27, + "parent_index": 697 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 723, + "node_type": 16, + "src": { + "id": 724, + "line": 297, + "column": 18, + "start": 9684, + "end": 9687, + "length": 4, + "parent_index": 719 + }, + "name": "from", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 723, + "is_pure": false + }, + { + "id": 725, + "node_type": 16, + "src": { + "id": 726, + "line": 297, + "column": 24, + "start": 9690, + "end": 9691, + "length": 2, + "parent_index": 719 + }, + "name": "to", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 725, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 727, + "node_type": 16, + "src": { + "id": 728, + "line": 297, + "column": 28, + "start": 9694, + "end": 9699, + "length": 6, + "parent_index": 719 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 727, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 721, + "node_type": 16, + "src": { + "id": 722, + "line": 297, + "column": 8, + "start": 9674, + "end": 9682, + "length": 9, + "parent_index": 719 + }, + "name": "_transfer", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + }, + { + "id": 729, + "node_type": 47, + "src": { + "id": 730, + "line": 298, + "column": 8, + "start": 9711, + "end": 9722, + "length": 12, + "parent_index": 673 + }, + "function_return_parameters": 673, + "expression": { + "id": 731, + "node_type": 17, + "kind": 61, + "value": "true", + "hex_value": "74727565", + "src": { + "id": 732, + "line": 298, + "column": 15, + "start": 9718, + "end": 9721, + "length": 4, + "parent_index": 697 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [ + { + "id": 675, + "node_type": 63, + "name": "transferFrom", + "src": { + "id": 676, + "line": 294, + "column": 83, + "start": 9552, + "end": 9559, + "length": 8, + "parent_index": 673 + }, + "referenced_declaration": 184, + "type_descriptions": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + } + ], + "parameters": { + "id": 677, + "node_type": 43, + "src": { + "id": 678, + "line": 294, + "column": 26, + "start": 9495, + "end": 9534, + "length": 40, + "parent_index": 673 + }, + "parameters": [ + { + "id": 679, + "node_type": 44, + "src": { + "id": 680, + "line": 294, + "column": 26, + "start": 9495, + "end": 9506, + "length": 12, + "parent_index": 677 + }, + "scope": 673, + "name": "from", + "type_name": { + "id": 681, + "node_type": 30, + "src": { + "id": 682, + "line": 294, + "column": 26, + "start": 9495, + "end": 9501, + "length": 7, + "parent_index": 679 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 683, + "node_type": 44, + "src": { + "id": 684, + "line": 294, + "column": 40, + "start": 9509, + "end": 9518, + "length": 10, + "parent_index": 677 + }, + "scope": 673, + "name": "to", + "type_name": { + "id": 685, + "node_type": 30, + "src": { + "id": 686, + "line": 294, + "column": 40, + "start": 9509, + "end": 9515, + "length": 7, + "parent_index": 683 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 687, + "node_type": 44, + "src": { + "id": 688, + "line": 294, + "column": 52, + "start": 9521, + "end": 9534, + "length": 14, + "parent_index": 677 + }, + "scope": 673, + "name": "amount", + "type_name": { + "id": 689, + "node_type": 30, + "src": { + "id": 690, + "line": 294, + "column": 52, + "start": 9521, + "end": 9527, + "length": 7, + "parent_index": 687 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 691, + "node_type": 43, + "src": { + "id": 692, + "line": 294, + "column": 101, + "start": 9570, + "end": 9573, + "length": 4, + "parent_index": 673 + }, + "parameters": [ + { + "id": 693, + "node_type": 44, + "src": { + "id": 694, + "line": 294, + "column": 101, + "start": 9570, + "end": 9573, + "length": 4, + "parent_index": 691 + }, + "scope": 673, + "name": "", + "type_name": { + "id": 695, + "node_type": 30, + "src": { + "id": 696, + "line": 294, + "column": 101, + "start": 9570, + "end": 9573, + "length": 4, + "parent_index": 693 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + }, + { + "id": 734, + "name": "increaseAllowance", + "node_type": 42, + "kind": 41, + "src": { + "id": 735, + "line": 313, + "column": 4, + "start": 10124, + "end": 10357, + "length": 234, + "parent_index": 341 + }, + "body": { + "id": 752, + "node_type": 46, + "kind": 0, + "src": { + "id": 753, + "line": 313, + "column": 98, + "start": 10218, + "end": 10357, + "length": 140, + "parent_index": 734 + }, + "implemented": true, + "statements": [ + { + "id": 754, + "node_type": 44, + "src": { + "id": 755, + "line": 314, + "column": 8, + "start": 10228, + "end": 10256, + "length": 29, + "parent_index": 752 + }, + "assignments": [ + 756 + ], + "declarations": [ + { + "is_constant": false, + "id": 756, + "state_mutability": 1, + "name": "owner", + "node_type": 44, + "scope": 752, + "src": { + "id": 757, + "line": 314, + "column": 8, + "start": 10228, + "end": 10240, + "length": 13, + "parent_index": 754 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 758, + "node_type": 30, + "src": { + "id": 759, + "line": 314, + "column": 8, + "start": 10228, + "end": 10234, + "length": 7, + "parent_index": 756 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 760, + "node_type": 24, + "kind": 24, + "src": { + "id": 761, + "line": 314, + "column": 24, + "start": 10244, + "end": 10255, + "length": 12, + "parent_index": 754 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 762, + "node_type": 16, + "src": { + "id": 763, + "line": 314, + "column": 24, + "start": 10244, + "end": 10253, + "length": 10, + "parent_index": 760 + }, + "name": "_msgSender", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + }, + { + "id": 764, + "node_type": 24, + "kind": 24, + "src": { + "id": 765, + "line": 315, + "column": 8, + "start": 10266, + "end": 10329, + "length": 64, + "parent_index": 752 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_function_$_t_address$_t_address$", + "type_string": "function(address,address)" + } + ], + "arguments": [ + { + "id": 768, + "node_type": 16, + "src": { + "id": 769, + "line": 315, + "column": 17, + "start": 10275, + "end": 10279, + "length": 5, + "parent_index": 764 + }, + "name": "owner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 754, + "is_pure": false + }, + { + "id": 770, + "node_type": 16, + "src": { + "id": 771, + "line": 315, + "column": 24, + "start": 10282, + "end": 10288, + "length": 7, + "parent_index": 764 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 770, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 772, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 773, + "line": 315, + "column": 33, + "start": 10291, + "end": 10328, + "length": 38, + "parent_index": 764 + }, + "operator": 1, + "left_expression": { + "id": 774, + "node_type": 24, + "kind": 24, + "src": { + "id": 775, + "line": 315, + "column": 33, + "start": 10291, + "end": 10315, + "length": 25, + "parent_index": 772 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 778, + "node_type": 16, + "src": { + "id": 779, + "line": 315, + "column": 43, + "start": 10301, + "end": 10305, + "length": 5, + "parent_index": 774 + }, + "name": "owner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 754, + "is_pure": false + }, + { + "id": 780, + "node_type": 16, + "src": { + "id": 781, + "line": 315, + "column": 50, + "start": 10308, + "end": 10314, + "length": 7, + "parent_index": 774 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 780, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 776, + "node_type": 16, + "src": { + "id": 777, + "line": 315, + "column": 33, + "start": 10291, + "end": 10299, + "length": 9, + "parent_index": 774 + }, + "name": "allowance", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$", + "type_string": "function(address,address)" + } + }, + "right_expression": { + "id": 782, + "node_type": 16, + "src": { + "id": 783, + "line": 315, + "column": 61, + "start": 10319, + "end": 10328, + "length": 10, + "parent_index": 772 + }, + "name": "addedValue", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 782, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$", + "type_string": "function(address,address)" + } + } + ], + "expression": { + "id": 766, + "node_type": 16, + "src": { + "id": 767, + "line": 315, + "column": 8, + "start": 10266, + "end": 10273, + "length": 8, + "parent_index": 764 + }, + "name": "_approve", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_function_$_t_address$_t_address$", + "type_string": "function(address,address,function(address,address))" + } + }, + { + "id": 784, + "node_type": 47, + "src": { + "id": 785, + "line": 316, + "column": 8, + "start": 10340, + "end": 10351, + "length": 12, + "parent_index": 734 + }, + "function_return_parameters": 734, + "expression": { + "id": 786, + "node_type": 17, + "kind": 61, + "value": "true", + "hex_value": "74727565", + "src": { + "id": 787, + "line": 316, + "column": 15, + "start": 10347, + "end": 10350, + "length": 4, + "parent_index": 752 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 736, + "node_type": 43, + "src": { + "id": 737, + "line": 313, + "column": 31, + "start": 10151, + "end": 10185, + "length": 35, + "parent_index": 734 + }, + "parameters": [ + { + "id": 738, + "node_type": 44, + "src": { + "id": 739, + "line": 313, + "column": 31, + "start": 10151, + "end": 10165, + "length": 15, + "parent_index": 736 + }, + "scope": 734, + "name": "spender", + "type_name": { + "id": 740, + "node_type": 30, + "src": { + "id": 741, + "line": 313, + "column": 31, + "start": 10151, + "end": 10157, + "length": 7, + "parent_index": 738 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 742, + "node_type": 44, + "src": { + "id": 743, + "line": 313, + "column": 48, + "start": 10168, + "end": 10185, + "length": 18, + "parent_index": 736 + }, + "scope": 734, + "name": "addedValue", + "type_name": { + "id": 744, + "node_type": 30, + "src": { + "id": 745, + "line": 313, + "column": 48, + "start": 10168, + "end": 10174, + "length": 7, + "parent_index": 742 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 746, + "node_type": 43, + "src": { + "id": 747, + "line": 313, + "column": 92, + "start": 10212, + "end": 10215, + "length": 4, + "parent_index": 734 + }, + "parameters": [ + { + "id": 748, + "node_type": 44, + "src": { + "id": 749, + "line": 313, + "column": 92, + "start": 10212, + "end": 10215, + "length": 4, + "parent_index": 746 + }, + "scope": 734, + "name": "", + "type_name": { + "id": 750, + "node_type": 30, + "src": { + "id": 751, + "line": 313, + "column": 92, + "start": 10212, + "end": 10215, + "length": 4, + "parent_index": 748 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_uint256$", + "type_string": "function(address,uint256)" + } + }, + { + "id": 789, + "name": "decreaseAllowance", + "node_type": 42, + "kind": 41, + "src": { + "id": 790, + "line": 333, + "column": 4, + "start": 10845, + "end": 11271, + "length": 427, + "parent_index": 341 + }, + "body": { + "id": 807, + "node_type": 46, + "kind": 0, + "src": { + "id": 808, + "line": 333, + "column": 103, + "start": 10944, + "end": 11271, + "length": 328, + "parent_index": 789 + }, + "implemented": true, + "statements": [ + { + "id": 809, + "node_type": 44, + "src": { + "id": 810, + "line": 334, + "column": 8, + "start": 10954, + "end": 10982, + "length": 29, + "parent_index": 807 + }, + "assignments": [ + 811 + ], + "declarations": [ + { + "is_constant": false, + "id": 811, + "state_mutability": 1, + "name": "owner", + "node_type": 44, + "scope": 807, + "src": { + "id": 812, + "line": 334, + "column": 8, + "start": 10954, + "end": 10966, + "length": 13, + "parent_index": 809 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 813, + "node_type": 30, + "src": { + "id": 814, + "line": 334, + "column": 8, + "start": 10954, + "end": 10960, + "length": 7, + "parent_index": 811 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 815, + "node_type": 24, + "kind": 24, + "src": { + "id": 816, + "line": 334, + "column": 24, + "start": 10970, + "end": 10981, + "length": 12, + "parent_index": 809 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 817, + "node_type": 16, + "src": { + "id": 818, + "line": 334, + "column": 24, + "start": 10970, + "end": 10979, + "length": 10, + "parent_index": 815 + }, + "name": "_msgSender", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + }, + { + "id": 819, + "node_type": 44, + "src": { + "id": 820, + "line": 335, + "column": 8, + "start": 10992, + "end": 11044, + "length": 53, + "parent_index": 807 + }, + "assignments": [ + 821 + ], + "declarations": [ + { + "is_constant": false, + "id": 821, + "state_mutability": 1, + "name": "currentAllowance", + "node_type": 44, + "scope": 807, + "src": { + "id": 822, + "line": 335, + "column": 8, + "start": 10992, + "end": 11015, + "length": 24, + "parent_index": 819 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 823, + "node_type": 30, + "src": { + "id": 824, + "line": 335, + "column": 8, + "start": 10992, + "end": 10998, + "length": 7, + "parent_index": 821 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 825, + "node_type": 24, + "kind": 24, + "src": { + "id": 826, + "line": 335, + "column": 35, + "start": 11019, + "end": 11043, + "length": 25, + "parent_index": 819 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 829, + "node_type": 16, + "src": { + "id": 830, + "line": 335, + "column": 45, + "start": 11029, + "end": 11033, + "length": 5, + "parent_index": 825 + }, + "name": "owner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 809, + "is_pure": false + }, + { + "id": 831, + "node_type": 16, + "src": { + "id": 832, + "line": 335, + "column": 52, + "start": 11036, + "end": 11042, + "length": 7, + "parent_index": 825 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 831, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 827, + "node_type": 16, + "src": { + "id": 828, + "line": 335, + "column": 35, + "start": 11019, + "end": 11027, + "length": 9, + "parent_index": 825 + }, + "name": "allowance", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$", + "type_string": "function(address,address)" + } + } + }, + { + "id": 833, + "node_type": 24, + "kind": 24, + "src": { + "id": 834, + "line": 336, + "column": 8, + "start": 11054, + "end": 11138, + "length": 85, + "parent_index": 807 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: decreased allowance below zero\"" + } + ], + "arguments": [ + { + "id": 837, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 838, + "line": 336, + "column": 16, + "start": 11062, + "end": 11096, + "length": 35, + "parent_index": 833 + }, + "operator": 8, + "left_expression": { + "id": 839, + "node_type": 16, + "src": { + "id": 840, + "line": 336, + "column": 16, + "start": 11062, + "end": 11077, + "length": 16, + "parent_index": 837 + }, + "name": "currentAllowance", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 819, + "is_pure": false + }, + "right_expression": { + "id": 841, + "node_type": 16, + "src": { + "id": 842, + "line": 336, + "column": 36, + "start": 11082, + "end": 11096, + "length": 15, + "parent_index": 837 + }, + "name": "subtractedValue", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 841, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 843, + "node_type": 17, + "kind": 50, + "value": "ERC20: decreased allowance below zero", + "hex_value": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "src": { + "id": 844, + "line": 336, + "column": 53, + "start": 11099, + "end": 11137, + "length": 39, + "parent_index": 833 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: decreased allowance below zero\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 835, + "node_type": 16, + "src": { + "id": 836, + "line": 336, + "column": 8, + "start": 11054, + "end": 11060, + "length": 7, + "parent_index": 833 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 845, + "node_type": 47, + "src": { + "id": 846, + "line": 341, + "column": 8, + "start": 11254, + "end": 11265, + "length": 12, + "parent_index": 789 + }, + "function_return_parameters": 789, + "expression": { + "id": 847, + "node_type": 17, + "kind": 61, + "value": "true", + "hex_value": "74727565", + "src": { + "id": 848, + "line": 341, + "column": 15, + "start": 11261, + "end": 11264, + "length": 4, + "parent_index": 807 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + }, + { + "id": 849, + "node_type": 59, + "kind": 0, + "src": { + "id": 850, + "line": 337, + "column": 8, + "start": 11149, + "end": 11243, + "length": 95, + "parent_index": 341 + }, + "implemented": false, + "statements": [ + { + "id": 851, + "node_type": 24, + "kind": 24, + "src": { + "id": 852, + "line": 338, + "column": 12, + "start": 11173, + "end": 11232, + "length": 60, + "parent_index": 849 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 855, + "node_type": 16, + "src": { + "id": 856, + "line": 338, + "column": 21, + "start": 11182, + "end": 11186, + "length": 5, + "parent_index": 851 + }, + "name": "owner", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 857, + "node_type": 16, + "src": { + "id": 858, + "line": 338, + "column": 28, + "start": 11189, + "end": 11195, + "length": 7, + "parent_index": 851 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 857, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + }, + { + "id": 859, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 860, + "line": 338, + "column": 37, + "start": 11198, + "end": 11231, + "length": 34, + "parent_index": 851 + }, + "operator": 2, + "left_expression": { + "id": 861, + "node_type": 16, + "src": { + "id": 862, + "line": 338, + "column": 37, + "start": 11198, + "end": 11213, + "length": 16, + "parent_index": 859 + }, + "name": "currentAllowance", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 819, + "is_pure": false + }, + "right_expression": { + "id": 863, + "node_type": 16, + "src": { + "id": 864, + "line": 338, + "column": 56, + "start": 11217, + "end": 11231, + "length": 15, + "parent_index": 859 + }, + "name": "subtractedValue", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 863, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + ], + "expression": { + "id": 853, + "node_type": 16, + "src": { + "id": 854, + "line": 338, + "column": 12, + "start": 11173, + "end": 11180, + "length": 8, + "parent_index": 851 + }, + "name": "_approve", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$_t_uint256$", + "type_string": "function(function(),address,uint256)" + } + } + ] + } + ] + }, + "implemented": false, + "visibility": 3, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 791, + "node_type": 43, + "src": { + "id": 792, + "line": 333, + "column": 31, + "start": 10872, + "end": 10911, + "length": 40, + "parent_index": 789 + }, + "parameters": [ + { + "id": 793, + "node_type": 44, + "src": { + "id": 794, + "line": 333, + "column": 31, + "start": 10872, + "end": 10886, + "length": 15, + "parent_index": 791 + }, + "scope": 789, + "name": "spender", + "type_name": { + "id": 795, + "node_type": 30, + "src": { + "id": 796, + "line": 333, + "column": 31, + "start": 10872, + "end": 10878, + "length": 7, + "parent_index": 793 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 797, + "node_type": 44, + "src": { + "id": 798, + "line": 333, + "column": 48, + "start": 10889, + "end": 10911, + "length": 23, + "parent_index": 791 + }, + "scope": 789, + "name": "subtractedValue", + "type_name": { + "id": 799, + "node_type": 30, + "src": { + "id": 800, + "line": 333, + "column": 48, + "start": 10889, + "end": 10895, + "length": 7, + "parent_index": 797 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 801, + "node_type": 43, + "src": { + "id": 802, + "line": 333, + "column": 97, + "start": 10938, + "end": 10941, + "length": 4, + "parent_index": 789 + }, + "parameters": [ + { + "id": 803, + "node_type": 44, + "src": { + "id": 804, + "line": 333, + "column": 97, + "start": 10938, + "end": 10941, + "length": 4, + "parent_index": 801 + }, + "scope": 789, + "name": "", + "type_name": { + "id": 805, + "node_type": 30, + "src": { + "id": 806, + "line": 333, + "column": 97, + "start": 10938, + "end": 10941, + "length": 4, + "parent_index": 803 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_uint256$", + "type_string": "function(address,uint256)" + } + }, + { + "id": 866, + "name": "_transfer", + "node_type": 42, + "kind": 41, + "src": { + "id": 867, + "line": 358, + "column": 4, + "start": 11726, + "end": 12513, + "length": 788, + "parent_index": 341 + }, + "body": { + "id": 883, + "node_type": 46, + "kind": 0, + "src": { + "id": 884, + "line": 358, + "column": 82, + "start": 11804, + "end": 12513, + "length": 710, + "parent_index": 866 + }, + "implemented": true, + "statements": [ + { + "id": 885, + "node_type": 24, + "kind": 24, + "src": { + "id": 886, + "line": 359, + "column": 8, + "start": 11814, + "end": 11881, + "length": 68, + "parent_index": 883 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: transfer from the zero address\"" + } + ], + "arguments": [ + { + "id": 889, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 890, + "line": 359, + "column": 16, + "start": 11822, + "end": 11839, + "length": 18, + "parent_index": 885 + }, + "operator": 12, + "left_expression": { + "id": 891, + "node_type": 16, + "src": { + "id": 892, + "line": 359, + "column": 16, + "start": 11822, + "end": 11825, + "length": 4, + "parent_index": 889 + }, + "name": "from", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 891, + "is_pure": false + }, + "right_expression": { + "id": 893, + "node_type": 24, + "kind": 24, + "src": { + "id": 894, + "line": 359, + "column": 24, + "start": 11830, + "end": 11839, + "length": 10, + "parent_index": 889 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 899, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 900, + "line": 359, + "column": 32, + "start": 11838, + "end": 11838, + "length": 1, + "parent_index": 893 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 895, + "node_type": 16, + "src": { + "id": 896, + "line": 359, + "column": 24, + "start": 11830, + "end": 11836, + "length": 7, + "parent_index": 893 + }, + "name": "address", + "type_name": { + "id": 897, + "node_type": 30, + "src": { + "id": 898, + "line": 359, + "column": 24, + "start": 11830, + "end": 11836, + "length": 7, + "parent_index": 895 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 901, + "node_type": 17, + "kind": 50, + "value": "ERC20: transfer from the zero address", + "hex_value": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", + "src": { + "id": 902, + "line": 359, + "column": 36, + "start": 11842, + "end": 11880, + "length": 39, + "parent_index": 885 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: transfer from the zero address\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 887, + "node_type": 16, + "src": { + "id": 888, + "line": 359, + "column": 8, + "start": 11814, + "end": 11820, + "length": 7, + "parent_index": 885 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 903, + "node_type": 24, + "kind": 24, + "src": { + "id": 904, + "line": 360, + "column": 8, + "start": 11892, + "end": 11955, + "length": 64, + "parent_index": 883 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: transfer to the zero address\"" + } + ], + "arguments": [ + { + "id": 907, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 908, + "line": 360, + "column": 16, + "start": 11900, + "end": 11915, + "length": 16, + "parent_index": 903 + }, + "operator": 12, + "left_expression": { + "id": 909, + "node_type": 16, + "src": { + "id": 910, + "line": 360, + "column": 16, + "start": 11900, + "end": 11901, + "length": 2, + "parent_index": 907 + }, + "name": "to", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 909, + "is_pure": false + }, + "right_expression": { + "id": 911, + "node_type": 24, + "kind": 24, + "src": { + "id": 912, + "line": 360, + "column": 22, + "start": 11906, + "end": 11915, + "length": 10, + "parent_index": 907 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 917, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 918, + "line": 360, + "column": 30, + "start": 11914, + "end": 11914, + "length": 1, + "parent_index": 911 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 913, + "node_type": 16, + "src": { + "id": 914, + "line": 360, + "column": 22, + "start": 11906, + "end": 11912, + "length": 7, + "parent_index": 911 + }, + "name": "address", + "type_name": { + "id": 915, + "node_type": 30, + "src": { + "id": 916, + "line": 360, + "column": 22, + "start": 11906, + "end": 11912, + "length": 7, + "parent_index": 913 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 919, + "node_type": 17, + "kind": 50, + "value": "ERC20: transfer to the zero address", + "hex_value": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", + "src": { + "id": 920, + "line": 360, + "column": 34, + "start": 11918, + "end": 11954, + "length": 37, + "parent_index": 903 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: transfer to the zero address\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 905, + "node_type": 16, + "src": { + "id": 906, + "line": 360, + "column": 8, + "start": 11892, + "end": 11898, + "length": 7, + "parent_index": 903 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 921, + "node_type": 24, + "kind": 24, + "src": { + "id": 922, + "line": 362, + "column": 8, + "start": 11967, + "end": 12004, + "length": 38, + "parent_index": 883 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 925, + "node_type": 16, + "src": { + "id": 926, + "line": 362, + "column": 29, + "start": 11988, + "end": 11991, + "length": 4, + "parent_index": 921 + }, + "name": "from", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 925, + "is_pure": false + }, + { + "id": 927, + "node_type": 16, + "src": { + "id": 928, + "line": 362, + "column": 35, + "start": 11994, + "end": 11995, + "length": 2, + "parent_index": 921 + }, + "name": "to", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 927, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 929, + "node_type": 16, + "src": { + "id": 930, + "line": 362, + "column": 39, + "start": 11998, + "end": 12003, + "length": 6, + "parent_index": 921 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 929, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 923, + "node_type": 16, + "src": { + "id": 924, + "line": 362, + "column": 8, + "start": 11967, + "end": 11986, + "length": 20, + "parent_index": 921 + }, + "name": "_beforeTokenTransfer", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + }, + { + "id": 931, + "node_type": 44, + "src": { + "id": 932, + "line": 364, + "column": 8, + "start": 12016, + "end": 12053, + "length": 38, + "parent_index": 883 + }, + "assignments": [ + 933 + ], + "declarations": [ + { + "is_constant": false, + "id": 933, + "state_mutability": 1, + "name": "fromBalance", + "node_type": 44, + "scope": 883, + "src": { + "id": 934, + "line": 364, + "column": 8, + "start": 12016, + "end": 12034, + "length": 19, + "parent_index": 931 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 935, + "node_type": 30, + "src": { + "id": 936, + "line": 364, + "column": 8, + "start": 12016, + "end": 12022, + "length": 7, + "parent_index": 933 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 937, + "node_type": 22, + "src": { + "id": 938, + "line": 364, + "column": 30, + "start": 12038, + "end": 12052, + "length": 15, + "parent_index": 931 + }, + "index_expression": { + "id": 939, + "node_type": 16, + "src": { + "id": 940, + "line": 364, + "column": 30, + "start": 12038, + "end": 12046, + "length": 9, + "parent_index": 937 + }, + "name": "_balances", + "type_description": { + "type_identifier": "t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003euint256)" + }, + "overloaded_declarations": [], + "referenced_declaration": 355, + "is_pure": false + }, + "base_expression": { + "id": 941, + "node_type": 16, + "src": { + "id": 942, + "line": 364, + "column": 40, + "start": 12048, + "end": 12051, + "length": 4, + "parent_index": 937 + }, + "name": "from", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 941, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003euint256)" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003euint256):address]" + } + } + }, + { + "id": 943, + "node_type": 24, + "kind": 24, + "src": { + "id": 944, + "line": 365, + "column": 8, + "start": 12063, + "end": 12134, + "length": 72, + "parent_index": 883 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: transfer amount exceeds balance\"" + } + ], + "arguments": [ + { + "id": 947, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 948, + "line": 365, + "column": 16, + "start": 12071, + "end": 12091, + "length": 21, + "parent_index": 943 + }, + "operator": 8, + "left_expression": { + "id": 949, + "node_type": 16, + "src": { + "id": 950, + "line": 365, + "column": 16, + "start": 12071, + "end": 12081, + "length": 11, + "parent_index": 947 + }, + "name": "fromBalance", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 931, + "is_pure": false + }, + "right_expression": { + "id": 951, + "node_type": 16, + "src": { + "id": 952, + "line": 365, + "column": 31, + "start": 12086, + "end": 12091, + "length": 6, + "parent_index": 947 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 951, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 953, + "node_type": 17, + "kind": 50, + "value": "ERC20: transfer amount exceeds balance", + "hex_value": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", + "src": { + "id": 954, + "line": 365, + "column": 39, + "start": 12094, + "end": 12133, + "length": 40, + "parent_index": 943 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: transfer amount exceeds balance\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 945, + "node_type": 16, + "src": { + "id": 946, + "line": 365, + "column": 8, + "start": 12063, + "end": 12069, + "length": 7, + "parent_index": 943 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 955, + "node_type": 64, + "src": { + "id": 956, + "line": 373, + "column": 8, + "start": 12428, + "end": 12459, + "length": 32, + "parent_index": 866 + }, + "arguments": [ + { + "id": 957, + "node_type": 16, + "src": { + "id": 958, + "line": 373, + "column": 22, + "start": 12442, + "end": 12445, + "length": 4, + "parent_index": 883 + }, + "name": "from", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 957, + "is_pure": false + }, + { + "id": 959, + "node_type": 16, + "src": { + "id": 960, + "line": 373, + "column": 28, + "start": 12448, + "end": 12449, + "length": 2, + "parent_index": 883 + }, + "name": "to", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 959, + "is_pure": false + }, + { + "id": 961, + "node_type": 16, + "src": { + "id": 962, + "line": 373, + "column": 32, + "start": 12452, + "end": 12457, + "length": 6, + "parent_index": 883 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 961, + "is_pure": false + } + ], + "expression": { + "id": 963, + "node_type": 16, + "src": { + "id": 964, + "line": 373, + "column": 13, + "start": 12433, + "end": 12440, + "length": 8, + "parent_index": 883 + }, + "name": "Transfer", + "type_description": { + "type_identifier": "t_event\u0026_IERC20_Transfer_\u002660", + "type_string": "event IERC20.Transfer" + }, + "overloaded_declarations": [], + "referenced_declaration": 60, + "is_pure": false + } + }, + { + "id": 965, + "node_type": 24, + "kind": 24, + "src": { + "id": 966, + "line": 375, + "column": 8, + "start": 12470, + "end": 12506, + "length": 37, + "parent_index": 883 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 969, + "node_type": 16, + "src": { + "id": 970, + "line": 375, + "column": 28, + "start": 12490, + "end": 12493, + "length": 4, + "parent_index": 965 + }, + "name": "from", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 969, + "is_pure": false + }, + { + "id": 971, + "node_type": 16, + "src": { + "id": 972, + "line": 375, + "column": 34, + "start": 12496, + "end": 12497, + "length": 2, + "parent_index": 965 + }, + "name": "to", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 971, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 973, + "node_type": 16, + "src": { + "id": 974, + "line": 375, + "column": 38, + "start": 12500, + "end": 12505, + "length": 6, + "parent_index": 965 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 973, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 967, + "node_type": 16, + "src": { + "id": 968, + "line": 375, + "column": 8, + "start": 12470, + "end": 12488, + "length": 19, + "parent_index": 965 + }, + "name": "_afterTokenTransfer", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + }, + { + "id": 975, + "node_type": 59, + "kind": 0, + "src": { + "id": 976, + "line": 366, + "column": 8, + "start": 12145, + "end": 12417, + "length": 273, + "parent_index": 341 + }, + "implemented": false, + "statements": [ + { + "id": 977, + "node_type": 81, + "src": { + "id": 978, + "line": 367, + "column": 12, + "start": 12169, + "end": 12207, + "length": 39, + "parent_index": 975 + }, + "expression": { + "id": 979, + "node_type": 27, + "src": { + "id": 980, + "line": 367, + "column": 12, + "start": 12169, + "end": 12206, + "length": 38, + "parent_index": 975 + }, + "operator": 11, + "left_expression": { + "id": 981, + "node_type": 22, + "src": { + "id": 982, + "line": 367, + "column": 12, + "start": 12169, + "end": 12183, + "length": 15, + "parent_index": 979 + }, + "index_expression": { + "id": 983, + "node_type": 16, + "src": { + "id": 984, + "line": 367, + "column": 12, + "start": 12169, + "end": 12177, + "length": 9, + "parent_index": 981 + }, + "name": "_balances", + "type_description": { + "type_identifier": "t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003euint256)" + }, + "overloaded_declarations": [], + "referenced_declaration": 355, + "is_pure": false + }, + "base_expression": { + "id": 985, + "node_type": 16, + "src": { + "id": 986, + "line": 367, + "column": 22, + "start": 12179, + "end": 12182, + "length": 4, + "parent_index": 981 + }, + "name": "from", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 985, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003euint256)" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003euint256):address]" + } + }, + "right_expression": { + "id": 987, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 988, + "line": 367, + "column": 30, + "start": 12187, + "end": 12206, + "length": 20, + "parent_index": 979 + }, + "operator": 2, + "left_expression": { + "id": 989, + "node_type": 16, + "src": { + "id": 990, + "line": 367, + "column": 30, + "start": 12187, + "end": 12197, + "length": 11, + "parent_index": 987 + }, + "name": "fromBalance", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 931, + "is_pure": false + }, + "right_expression": { + "id": 991, + "node_type": 16, + "src": { + "id": 992, + "line": 367, + "column": 44, + "start": 12201, + "end": 12206, + "length": 6, + "parent_index": 987 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 991, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003euint256):address]" + } + }, + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003euint256):address]" + } + }, + { + "id": 993, + "node_type": 81, + "src": { + "id": 994, + "line": 370, + "column": 12, + "start": 12384, + "end": 12407, + "length": 24, + "parent_index": 975 + }, + "expression": { + "id": 995, + "node_type": 27, + "src": { + "id": 996, + "line": 370, + "column": 12, + "start": 12384, + "end": 12406, + "length": 23, + "parent_index": 975 + }, + "operator": 13, + "left_expression": { + "id": 997, + "node_type": 22, + "src": { + "id": 998, + "line": 370, + "column": 12, + "start": 12384, + "end": 12396, + "length": 13, + "parent_index": 995 + }, + "index_expression": { + "id": 999, + "node_type": 16, + "src": { + "id": 1000, + "line": 370, + "column": 12, + "start": 12384, + "end": 12392, + "length": 9, + "parent_index": 997 + }, + "name": "_balances", + "type_description": { + "type_identifier": "t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003euint256)" + }, + "overloaded_declarations": [], + "referenced_declaration": 355, + "is_pure": false + }, + "base_expression": { + "id": 1001, + "node_type": 16, + "src": { + "id": 1002, + "line": 370, + "column": 22, + "start": 12394, + "end": 12395, + "length": 2, + "parent_index": 997 + }, + "name": "to", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1001, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003euint256)" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003euint256):address]" + } + }, + "right_expression": { + "id": 1003, + "node_type": 16, + "src": { + "id": 1004, + "line": 370, + "column": 29, + "start": 12401, + "end": 12406, + "length": 6, + "parent_index": 995 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1003, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003euint256):address]" + } + }, + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003euint256):address]" + } + } + ] + } + ] + }, + "implemented": false, + "visibility": 1, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 868, + "node_type": 43, + "src": { + "id": 869, + "line": 358, + "column": 23, + "start": 11745, + "end": 11784, + "length": 40, + "parent_index": 866 + }, + "parameters": [ + { + "id": 870, + "node_type": 44, + "src": { + "id": 871, + "line": 358, + "column": 23, + "start": 11745, + "end": 11756, + "length": 12, + "parent_index": 868 + }, + "scope": 866, + "name": "from", + "type_name": { + "id": 872, + "node_type": 30, + "src": { + "id": 873, + "line": 358, + "column": 23, + "start": 11745, + "end": 11751, + "length": 7, + "parent_index": 870 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 874, + "node_type": 44, + "src": { + "id": 875, + "line": 358, + "column": 37, + "start": 11759, + "end": 11768, + "length": 10, + "parent_index": 868 + }, + "scope": 866, + "name": "to", + "type_name": { + "id": 876, + "node_type": 30, + "src": { + "id": 877, + "line": 358, + "column": 37, + "start": 11759, + "end": 11765, + "length": 7, + "parent_index": 874 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 878, + "node_type": 44, + "src": { + "id": 879, + "line": 358, + "column": 49, + "start": 11771, + "end": 11784, + "length": 14, + "parent_index": 868 + }, + "scope": 866, + "name": "amount", + "type_name": { + "id": 880, + "node_type": 30, + "src": { + "id": 881, + "line": 358, + "column": 49, + "start": 11771, + "end": 11777, + "length": 7, + "parent_index": 878 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 882, + "node_type": 43, + "src": { + "id": 867, + "line": 358, + "column": 4, + "start": 11726, + "end": 12513, + "length": 788, + "parent_index": 866 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + }, + { + "id": 1006, + "name": "_mint", + "node_type": 42, + "kind": 41, + "src": { + "id": 1007, + "line": 387, + "column": 4, + "start": 12790, + "end": 13324, + "length": 535, + "parent_index": 341 + }, + "body": { + "id": 1019, + "node_type": 46, + "kind": 0, + "src": { + "id": 1020, + "line": 387, + "column": 69, + "start": 12855, + "end": 13324, + "length": 470, + "parent_index": 1006 + }, + "implemented": true, + "statements": [ + { + "id": 1021, + "node_type": 24, + "kind": 24, + "src": { + "id": 1022, + "line": 388, + "column": 8, + "start": 12865, + "end": 12929, + "length": 65, + "parent_index": 1019 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: mint to the zero address\"" + } + ], + "arguments": [ + { + "id": 1025, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1026, + "line": 388, + "column": 16, + "start": 12873, + "end": 12893, + "length": 21, + "parent_index": 1021 + }, + "operator": 12, + "left_expression": { + "id": 1027, + "node_type": 16, + "src": { + "id": 1028, + "line": 388, + "column": 16, + "start": 12873, + "end": 12879, + "length": 7, + "parent_index": 1025 + }, + "name": "account", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1027, + "is_pure": false + }, + "right_expression": { + "id": 1029, + "node_type": 24, + "kind": 24, + "src": { + "id": 1030, + "line": 388, + "column": 27, + "start": 12884, + "end": 12893, + "length": 10, + "parent_index": 1025 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 1035, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1036, + "line": 388, + "column": 35, + "start": 12892, + "end": 12892, + "length": 1, + "parent_index": 1029 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 1031, + "node_type": 16, + "src": { + "id": 1032, + "line": 388, + "column": 27, + "start": 12884, + "end": 12890, + "length": 7, + "parent_index": 1029 + }, + "name": "address", + "type_name": { + "id": 1033, + "node_type": 30, + "src": { + "id": 1034, + "line": 388, + "column": 27, + "start": 12884, + "end": 12890, + "length": 7, + "parent_index": 1031 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 1037, + "node_type": 17, + "kind": 50, + "value": "ERC20: mint to the zero address", + "hex_value": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "src": { + "id": 1038, + "line": 388, + "column": 39, + "start": 12896, + "end": 12928, + "length": 33, + "parent_index": 1021 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: mint to the zero address\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 1023, + "node_type": 16, + "src": { + "id": 1024, + "line": 388, + "column": 8, + "start": 12865, + "end": 12871, + "length": 7, + "parent_index": 1021 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 1039, + "node_type": 24, + "kind": 24, + "src": { + "id": 1040, + "line": 390, + "column": 8, + "start": 12941, + "end": 12989, + "length": 49, + "parent_index": 1019 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 1043, + "node_type": 24, + "kind": 24, + "src": { + "id": 1044, + "line": 390, + "column": 29, + "start": 12962, + "end": 12971, + "length": 10, + "parent_index": 1039 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 1049, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1050, + "line": 390, + "column": 37, + "start": 12970, + "end": 12970, + "length": 1, + "parent_index": 1043 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 1045, + "node_type": 16, + "src": { + "id": 1046, + "line": 390, + "column": 29, + "start": 12962, + "end": 12968, + "length": 7, + "parent_index": 1043 + }, + "name": "address", + "type_name": { + "id": 1047, + "node_type": 30, + "src": { + "id": 1048, + "line": 390, + "column": 29, + "start": 12962, + "end": 12968, + "length": 7, + "parent_index": 1045 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + { + "id": 1051, + "node_type": 16, + "src": { + "id": 1052, + "line": 390, + "column": 41, + "start": 12974, + "end": 12980, + "length": 7, + "parent_index": 1039 + }, + "name": "account", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1051, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + ] + }, + { + "id": 1053, + "node_type": 16, + "src": { + "id": 1054, + "line": 390, + "column": 50, + "start": 12983, + "end": 12988, + "length": 6, + "parent_index": 1039 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1053, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 1041, + "node_type": 16, + "src": { + "id": 1042, + "line": 390, + "column": 8, + "start": 12941, + "end": 12960, + "length": 20, + "parent_index": 1039 + }, + "name": "_beforeTokenTransfer", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_rational_0_by_1$_t_address$_t_uint256$", + "type_string": "function(function(int_const 0),address,uint256)" + } + }, + { + "id": 1055, + "node_type": 81, + "src": { + "id": 1056, + "line": 392, + "column": 8, + "start": 13001, + "end": 13023, + "length": 23, + "parent_index": 1019 + }, + "expression": { + "id": 1057, + "node_type": 27, + "src": { + "id": 1058, + "line": 392, + "column": 8, + "start": 13001, + "end": 13022, + "length": 22, + "parent_index": 1019 + }, + "operator": 13, + "left_expression": { + "id": 1059, + "node_type": 16, + "src": { + "id": 1060, + "line": 392, + "column": 8, + "start": 13001, + "end": 13012, + "length": 12, + "parent_index": 1057 + }, + "name": "_totalSupply", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 378, + "is_pure": false + }, + "right_expression": { + "id": 1061, + "node_type": 16, + "src": { + "id": 1062, + "line": 392, + "column": 24, + "start": 13017, + "end": 13022, + "length": 6, + "parent_index": 1057 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1061, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + { + "id": 1063, + "node_type": 64, + "src": { + "id": 1064, + "line": 397, + "column": 8, + "start": 13217, + "end": 13259, + "length": 43, + "parent_index": 1006 + }, + "arguments": [ + { + "id": 1065, + "node_type": 24, + "kind": 24, + "src": { + "id": 1066, + "line": 397, + "column": 22, + "start": 13231, + "end": 13240, + "length": 10, + "parent_index": 1019 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 1071, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1072, + "line": 397, + "column": 30, + "start": 13239, + "end": 13239, + "length": 1, + "parent_index": 1065 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 1067, + "node_type": 16, + "src": { + "id": 1068, + "line": 397, + "column": 22, + "start": 13231, + "end": 13237, + "length": 7, + "parent_index": 1065 + }, + "name": "address", + "type_name": { + "id": 1069, + "node_type": 30, + "src": { + "id": 1070, + "line": 397, + "column": 22, + "start": 13231, + "end": 13237, + "length": 7, + "parent_index": 1067 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + { + "id": 1073, + "node_type": 16, + "src": { + "id": 1074, + "line": 397, + "column": 34, + "start": 13243, + "end": 13249, + "length": 7, + "parent_index": 1019 + }, + "name": "account", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1073, + "is_pure": false + }, + { + "id": 1075, + "node_type": 16, + "src": { + "id": 1076, + "line": 397, + "column": 43, + "start": 13252, + "end": 13257, + "length": 6, + "parent_index": 1019 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1075, + "is_pure": false + } + ], + "expression": { + "id": 1077, + "node_type": 16, + "src": { + "id": 1078, + "line": 397, + "column": 13, + "start": 13222, + "end": 13229, + "length": 8, + "parent_index": 1019 + }, + "name": "Transfer", + "type_description": { + "type_identifier": "t_event\u0026_IERC20_Transfer_\u002660", + "type_string": "event IERC20.Transfer" + }, + "overloaded_declarations": [], + "referenced_declaration": 60, + "is_pure": false + } + }, + { + "id": 1079, + "node_type": 24, + "kind": 24, + "src": { + "id": 1080, + "line": 399, + "column": 8, + "start": 13270, + "end": 13317, + "length": 48, + "parent_index": 1019 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 1083, + "node_type": 24, + "kind": 24, + "src": { + "id": 1084, + "line": 399, + "column": 28, + "start": 13290, + "end": 13299, + "length": 10, + "parent_index": 1079 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 1089, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1090, + "line": 399, + "column": 36, + "start": 13298, + "end": 13298, + "length": 1, + "parent_index": 1083 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 1085, + "node_type": 16, + "src": { + "id": 1086, + "line": 399, + "column": 28, + "start": 13290, + "end": 13296, + "length": 7, + "parent_index": 1083 + }, + "name": "address", + "type_name": { + "id": 1087, + "node_type": 30, + "src": { + "id": 1088, + "line": 399, + "column": 28, + "start": 13290, + "end": 13296, + "length": 7, + "parent_index": 1085 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + { + "id": 1091, + "node_type": 16, + "src": { + "id": 1092, + "line": 399, + "column": 40, + "start": 13302, + "end": 13308, + "length": 7, + "parent_index": 1079 + }, + "name": "account", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1091, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + ] + }, + { + "id": 1093, + "node_type": 16, + "src": { + "id": 1094, + "line": 399, + "column": 49, + "start": 13311, + "end": 13316, + "length": 6, + "parent_index": 1079 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1093, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 1081, + "node_type": 16, + "src": { + "id": 1082, + "line": 399, + "column": 8, + "start": 13270, + "end": 13288, + "length": 19, + "parent_index": 1079 + }, + "name": "_afterTokenTransfer", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_rational_0_by_1$_t_address$_t_uint256$", + "type_string": "function(function(int_const 0),address,uint256)" + } + }, + { + "id": 1095, + "node_type": 59, + "kind": 0, + "src": { + "id": 1096, + "line": 393, + "column": 8, + "start": 13033, + "end": 13207, + "length": 175, + "parent_index": 341 + }, + "implemented": false, + "statements": [ + { + "id": 1097, + "node_type": 81, + "src": { + "id": 1098, + "line": 395, + "column": 12, + "start": 13169, + "end": 13197, + "length": 29, + "parent_index": 1095 + }, + "expression": { + "id": 1099, + "node_type": 27, + "src": { + "id": 1100, + "line": 395, + "column": 12, + "start": 13169, + "end": 13196, + "length": 28, + "parent_index": 1095 + }, + "operator": 13, + "left_expression": { + "id": 1101, + "node_type": 22, + "src": { + "id": 1102, + "line": 395, + "column": 12, + "start": 13169, + "end": 13186, + "length": 18, + "parent_index": 1099 + }, + "index_expression": { + "id": 1103, + "node_type": 16, + "src": { + "id": 1104, + "line": 395, + "column": 12, + "start": 13169, + "end": 13177, + "length": 9, + "parent_index": 1101 + }, + "name": "_balances", + "type_description": { + "type_identifier": "t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003euint256)" + }, + "overloaded_declarations": [], + "referenced_declaration": 355, + "is_pure": false + }, + "base_expression": { + "id": 1105, + "node_type": 16, + "src": { + "id": 1106, + "line": 395, + "column": 22, + "start": 13179, + "end": 13185, + "length": 7, + "parent_index": 1101 + }, + "name": "account", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1105, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003euint256)" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003euint256):address]" + } + }, + "right_expression": { + "id": 1107, + "node_type": 16, + "src": { + "id": 1108, + "line": 395, + "column": 34, + "start": 13191, + "end": 13196, + "length": 6, + "parent_index": 1099 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1107, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003euint256):address]" + } + }, + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003euint256):address]" + } + } + ] + } + ] + }, + "implemented": false, + "visibility": 1, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1008, + "node_type": 43, + "src": { + "id": 1009, + "line": 387, + "column": 19, + "start": 12805, + "end": 12835, + "length": 31, + "parent_index": 1006 + }, + "parameters": [ + { + "id": 1010, + "node_type": 44, + "src": { + "id": 1011, + "line": 387, + "column": 19, + "start": 12805, + "end": 12819, + "length": 15, + "parent_index": 1008 + }, + "scope": 1006, + "name": "account", + "type_name": { + "id": 1012, + "node_type": 30, + "src": { + "id": 1013, + "line": 387, + "column": 19, + "start": 12805, + "end": 12811, + "length": 7, + "parent_index": 1010 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1014, + "node_type": 44, + "src": { + "id": 1015, + "line": 387, + "column": 36, + "start": 12822, + "end": 12835, + "length": 14, + "parent_index": 1008 + }, + "scope": 1006, + "name": "amount", + "type_name": { + "id": 1016, + "node_type": 30, + "src": { + "id": 1017, + "line": 387, + "column": 36, + "start": 12822, + "end": 12828, + "length": 7, + "parent_index": 1014 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 1018, + "node_type": 43, + "src": { + "id": 1007, + "line": 387, + "column": 4, + "start": 12790, + "end": 13324, + "length": 535, + "parent_index": 1006 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_uint256$", + "type_string": "function(address,uint256)" + } + }, + { + "id": 1110, + "name": "_burn", + "node_type": 42, + "kind": 41, + "src": { + "id": 1111, + "line": 413, + "column": 4, + "start": 13645, + "end": 14303, + "length": 659, + "parent_index": 341 + }, + "body": { + "id": 1123, + "node_type": 46, + "kind": 0, + "src": { + "id": 1124, + "line": 413, + "column": 69, + "start": 13710, + "end": 14303, + "length": 594, + "parent_index": 1110 + }, + "implemented": true, + "statements": [ + { + "id": 1125, + "node_type": 24, + "kind": 24, + "src": { + "id": 1126, + "line": 414, + "column": 8, + "start": 13720, + "end": 13786, + "length": 67, + "parent_index": 1123 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: burn from the zero address\"" + } + ], + "arguments": [ + { + "id": 1129, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1130, + "line": 414, + "column": 16, + "start": 13728, + "end": 13748, + "length": 21, + "parent_index": 1125 + }, + "operator": 12, + "left_expression": { + "id": 1131, + "node_type": 16, + "src": { + "id": 1132, + "line": 414, + "column": 16, + "start": 13728, + "end": 13734, + "length": 7, + "parent_index": 1129 + }, + "name": "account", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1131, + "is_pure": false + }, + "right_expression": { + "id": 1133, + "node_type": 24, + "kind": 24, + "src": { + "id": 1134, + "line": 414, + "column": 27, + "start": 13739, + "end": 13748, + "length": 10, + "parent_index": 1129 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 1139, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1140, + "line": 414, + "column": 35, + "start": 13747, + "end": 13747, + "length": 1, + "parent_index": 1133 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 1135, + "node_type": 16, + "src": { + "id": 1136, + "line": 414, + "column": 27, + "start": 13739, + "end": 13745, + "length": 7, + "parent_index": 1133 + }, + "name": "address", + "type_name": { + "id": 1137, + "node_type": 30, + "src": { + "id": 1138, + "line": 414, + "column": 27, + "start": 13739, + "end": 13745, + "length": 7, + "parent_index": 1135 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 1141, + "node_type": 17, + "kind": 50, + "value": "ERC20: burn from the zero address", + "hex_value": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", + "src": { + "id": 1142, + "line": 414, + "column": 39, + "start": 13751, + "end": 13785, + "length": 35, + "parent_index": 1125 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: burn from the zero address\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 1127, + "node_type": 16, + "src": { + "id": 1128, + "line": 414, + "column": 8, + "start": 13720, + "end": 13726, + "length": 7, + "parent_index": 1125 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 1143, + "node_type": 24, + "kind": 24, + "src": { + "id": 1144, + "line": 416, + "column": 8, + "start": 13798, + "end": 13846, + "length": 49, + "parent_index": 1123 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 1147, + "node_type": 16, + "src": { + "id": 1148, + "line": 416, + "column": 29, + "start": 13819, + "end": 13825, + "length": 7, + "parent_index": 1143 + }, + "name": "account", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1147, + "is_pure": false + }, + { + "id": 1149, + "node_type": 24, + "kind": 24, + "src": { + "id": 1150, + "line": 416, + "column": 38, + "start": 13828, + "end": 13837, + "length": 10, + "parent_index": 1143 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 1155, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1156, + "line": 416, + "column": 46, + "start": 13836, + "end": 13836, + "length": 1, + "parent_index": 1149 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 1151, + "node_type": 16, + "src": { + "id": 1152, + "line": 416, + "column": 38, + "start": 13828, + "end": 13834, + "length": 7, + "parent_index": 1149 + }, + "name": "address", + "type_name": { + "id": 1153, + "node_type": 30, + "src": { + "id": 1154, + "line": 416, + "column": 38, + "start": 13828, + "end": 13834, + "length": 7, + "parent_index": 1151 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + { + "id": 1157, + "node_type": 16, + "src": { + "id": 1158, + "line": 416, + "column": 50, + "start": 13840, + "end": 13845, + "length": 6, + "parent_index": 1143 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1157, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + ] + } + ], + "expression": { + "id": 1145, + "node_type": 16, + "src": { + "id": 1146, + "line": 416, + "column": 8, + "start": 13798, + "end": 13817, + "length": 20, + "parent_index": 1143 + }, + "name": "_beforeTokenTransfer", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_function_$_t_rational_0_by_1$_t_uint256$", + "type_string": "function(address,function(int_const 0),uint256)" + } + }, + { + "id": 1159, + "node_type": 44, + "src": { + "id": 1160, + "line": 418, + "column": 8, + "start": 13858, + "end": 13901, + "length": 44, + "parent_index": 1123 + }, + "assignments": [ + 1161 + ], + "declarations": [ + { + "is_constant": false, + "id": 1161, + "state_mutability": 1, + "name": "accountBalance", + "node_type": 44, + "scope": 1123, + "src": { + "id": 1162, + "line": 418, + "column": 8, + "start": 13858, + "end": 13879, + "length": 22, + "parent_index": 1159 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 1163, + "node_type": 30, + "src": { + "id": 1164, + "line": 418, + "column": 8, + "start": 13858, + "end": 13864, + "length": 7, + "parent_index": 1161 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 1165, + "node_type": 22, + "src": { + "id": 1166, + "line": 418, + "column": 33, + "start": 13883, + "end": 13900, + "length": 18, + "parent_index": 1159 + }, + "index_expression": { + "id": 1167, + "node_type": 16, + "src": { + "id": 1168, + "line": 418, + "column": 33, + "start": 13883, + "end": 13891, + "length": 9, + "parent_index": 1165 + }, + "name": "_balances", + "type_description": { + "type_identifier": "t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003euint256)" + }, + "overloaded_declarations": [], + "referenced_declaration": 355, + "is_pure": false + }, + "base_expression": { + "id": 1169, + "node_type": 16, + "src": { + "id": 1170, + "line": 418, + "column": 43, + "start": 13893, + "end": 13899, + "length": 7, + "parent_index": 1165 + }, + "name": "account", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1169, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003euint256)" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003euint256):address]" + } + } + }, + { + "id": 1171, + "node_type": 24, + "kind": 24, + "src": { + "id": 1172, + "line": 419, + "column": 8, + "start": 13911, + "end": 13981, + "length": 71, + "parent_index": 1123 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: burn amount exceeds balance\"" + } + ], + "arguments": [ + { + "id": 1175, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1176, + "line": 419, + "column": 16, + "start": 13919, + "end": 13942, + "length": 24, + "parent_index": 1171 + }, + "operator": 8, + "left_expression": { + "id": 1177, + "node_type": 16, + "src": { + "id": 1178, + "line": 419, + "column": 16, + "start": 13919, + "end": 13932, + "length": 14, + "parent_index": 1175 + }, + "name": "accountBalance", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1159, + "is_pure": false + }, + "right_expression": { + "id": 1179, + "node_type": 16, + "src": { + "id": 1180, + "line": 419, + "column": 34, + "start": 13937, + "end": 13942, + "length": 6, + "parent_index": 1175 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1179, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 1181, + "node_type": 17, + "kind": 50, + "value": "ERC20: burn amount exceeds balance", + "hex_value": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", + "src": { + "id": 1182, + "line": 419, + "column": 42, + "start": 13945, + "end": 13980, + "length": 36, + "parent_index": 1171 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: burn amount exceeds balance\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 1173, + "node_type": 16, + "src": { + "id": 1174, + "line": 419, + "column": 8, + "start": 13911, + "end": 13917, + "length": 7, + "parent_index": 1171 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 1183, + "node_type": 64, + "src": { + "id": 1184, + "line": 426, + "column": 8, + "start": 14196, + "end": 14238, + "length": 43, + "parent_index": 1110 + }, + "arguments": [ + { + "id": 1185, + "node_type": 16, + "src": { + "id": 1186, + "line": 426, + "column": 22, + "start": 14210, + "end": 14216, + "length": 7, + "parent_index": 1123 + }, + "name": "account", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1185, + "is_pure": false + }, + { + "id": 1187, + "node_type": 24, + "kind": 24, + "src": { + "id": 1188, + "line": 426, + "column": 31, + "start": 14219, + "end": 14228, + "length": 10, + "parent_index": 1123 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 1193, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1194, + "line": 426, + "column": 39, + "start": 14227, + "end": 14227, + "length": 1, + "parent_index": 1187 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 1189, + "node_type": 16, + "src": { + "id": 1190, + "line": 426, + "column": 31, + "start": 14219, + "end": 14225, + "length": 7, + "parent_index": 1187 + }, + "name": "address", + "type_name": { + "id": 1191, + "node_type": 30, + "src": { + "id": 1192, + "line": 426, + "column": 31, + "start": 14219, + "end": 14225, + "length": 7, + "parent_index": 1189 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + { + "id": 1195, + "node_type": 16, + "src": { + "id": 1196, + "line": 426, + "column": 43, + "start": 14231, + "end": 14236, + "length": 6, + "parent_index": 1123 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1195, + "is_pure": false + } + ], + "expression": { + "id": 1197, + "node_type": 16, + "src": { + "id": 1198, + "line": 426, + "column": 13, + "start": 14201, + "end": 14208, + "length": 8, + "parent_index": 1123 + }, + "name": "Transfer", + "type_description": { + "type_identifier": "t_event\u0026_IERC20_Transfer_\u002660", + "type_string": "event IERC20.Transfer" + }, + "overloaded_declarations": [], + "referenced_declaration": 60, + "is_pure": false + } + }, + { + "id": 1199, + "node_type": 24, + "kind": 24, + "src": { + "id": 1200, + "line": 428, + "column": 8, + "start": 14249, + "end": 14296, + "length": 48, + "parent_index": 1123 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 1203, + "node_type": 16, + "src": { + "id": 1204, + "line": 428, + "column": 28, + "start": 14269, + "end": 14275, + "length": 7, + "parent_index": 1199 + }, + "name": "account", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1203, + "is_pure": false + }, + { + "id": 1205, + "node_type": 24, + "kind": 24, + "src": { + "id": 1206, + "line": 428, + "column": 37, + "start": 14278, + "end": 14287, + "length": 10, + "parent_index": 1199 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 1211, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1212, + "line": 428, + "column": 45, + "start": 14286, + "end": 14286, + "length": 1, + "parent_index": 1205 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 1207, + "node_type": 16, + "src": { + "id": 1208, + "line": 428, + "column": 37, + "start": 14278, + "end": 14284, + "length": 7, + "parent_index": 1205 + }, + "name": "address", + "type_name": { + "id": 1209, + "node_type": 30, + "src": { + "id": 1210, + "line": 428, + "column": 37, + "start": 14278, + "end": 14284, + "length": 7, + "parent_index": 1207 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + { + "id": 1213, + "node_type": 16, + "src": { + "id": 1214, + "line": 428, + "column": 49, + "start": 14290, + "end": 14295, + "length": 6, + "parent_index": 1199 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1213, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + ] + } + ], + "expression": { + "id": 1201, + "node_type": 16, + "src": { + "id": 1202, + "line": 428, + "column": 8, + "start": 14249, + "end": 14267, + "length": 19, + "parent_index": 1199 + }, + "name": "_afterTokenTransfer", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_function_$_t_rational_0_by_1$_t_uint256$", + "type_string": "function(address,function(int_const 0),uint256)" + } + }, + { + "id": 1215, + "node_type": 59, + "kind": 0, + "src": { + "id": 1216, + "line": 420, + "column": 8, + "start": 13992, + "end": 14185, + "length": 194, + "parent_index": 341 + }, + "implemented": false, + "statements": [ + { + "id": 1217, + "node_type": 81, + "src": { + "id": 1218, + "line": 421, + "column": 12, + "start": 14016, + "end": 14060, + "length": 45, + "parent_index": 1215 + }, + "expression": { + "id": 1219, + "node_type": 27, + "src": { + "id": 1220, + "line": 421, + "column": 12, + "start": 14016, + "end": 14059, + "length": 44, + "parent_index": 1215 + }, + "operator": 11, + "left_expression": { + "id": 1221, + "node_type": 22, + "src": { + "id": 1222, + "line": 421, + "column": 12, + "start": 14016, + "end": 14033, + "length": 18, + "parent_index": 1219 + }, + "index_expression": { + "id": 1223, + "node_type": 16, + "src": { + "id": 1224, + "line": 421, + "column": 12, + "start": 14016, + "end": 14024, + "length": 9, + "parent_index": 1221 + }, + "name": "_balances", + "type_description": { + "type_identifier": "t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003euint256)" + }, + "overloaded_declarations": [], + "referenced_declaration": 355, + "is_pure": false + }, + "base_expression": { + "id": 1225, + "node_type": 16, + "src": { + "id": 1226, + "line": 421, + "column": 22, + "start": 14026, + "end": 14032, + "length": 7, + "parent_index": 1221 + }, + "name": "account", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1225, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003euint256)" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003euint256):address]" + } + }, + "right_expression": { + "id": 1227, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1228, + "line": 421, + "column": 33, + "start": 14037, + "end": 14059, + "length": 23, + "parent_index": 1219 + }, + "operator": 2, + "left_expression": { + "id": 1229, + "node_type": 16, + "src": { + "id": 1230, + "line": 421, + "column": 33, + "start": 14037, + "end": 14050, + "length": 14, + "parent_index": 1227 + }, + "name": "accountBalance", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1159, + "is_pure": false + }, + "right_expression": { + "id": 1231, + "node_type": 16, + "src": { + "id": 1232, + "line": 421, + "column": 50, + "start": 14054, + "end": 14059, + "length": 6, + "parent_index": 1227 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1231, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003euint256):address]" + } + }, + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003euint256):address]" + } + }, + { + "id": 1233, + "node_type": 81, + "src": { + "id": 1234, + "line": 423, + "column": 12, + "start": 14153, + "end": 14175, + "length": 23, + "parent_index": 1215 + }, + "expression": { + "id": 1235, + "node_type": 27, + "src": { + "id": 1236, + "line": 423, + "column": 12, + "start": 14153, + "end": 14174, + "length": 22, + "parent_index": 1215 + }, + "operator": 14, + "left_expression": { + "id": 1237, + "node_type": 16, + "src": { + "id": 1238, + "line": 423, + "column": 12, + "start": 14153, + "end": 14164, + "length": 12, + "parent_index": 1235 + }, + "name": "_totalSupply", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 378, + "is_pure": false + }, + "right_expression": { + "id": 1239, + "node_type": 16, + "src": { + "id": 1240, + "line": 423, + "column": 28, + "start": 14169, + "end": 14174, + "length": 6, + "parent_index": 1235 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1239, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + ] + } + ] + }, + "implemented": false, + "visibility": 1, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1112, + "node_type": 43, + "src": { + "id": 1113, + "line": 413, + "column": 19, + "start": 13660, + "end": 13690, + "length": 31, + "parent_index": 1110 + }, + "parameters": [ + { + "id": 1114, + "node_type": 44, + "src": { + "id": 1115, + "line": 413, + "column": 19, + "start": 13660, + "end": 13674, + "length": 15, + "parent_index": 1112 + }, + "scope": 1110, + "name": "account", + "type_name": { + "id": 1116, + "node_type": 30, + "src": { + "id": 1117, + "line": 413, + "column": 19, + "start": 13660, + "end": 13666, + "length": 7, + "parent_index": 1114 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1118, + "node_type": 44, + "src": { + "id": 1119, + "line": 413, + "column": 36, + "start": 13677, + "end": 13690, + "length": 14, + "parent_index": 1112 + }, + "scope": 1110, + "name": "amount", + "type_name": { + "id": 1120, + "node_type": 30, + "src": { + "id": 1121, + "line": 413, + "column": 36, + "start": 13677, + "end": 13683, + "length": 7, + "parent_index": 1118 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 1122, + "node_type": 43, + "src": { + "id": 1111, + "line": 413, + "column": 4, + "start": 13645, + "end": 14303, + "length": 659, + "parent_index": 1110 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_uint256$", + "type_string": "function(address,uint256)" + } + }, + { + "id": 1242, + "name": "_approve", + "node_type": 42, + "kind": 41, + "src": { + "id": 1243, + "line": 444, + "column": 4, + "start": 14727, + "end": 15066, + "length": 340, + "parent_index": 341 + }, + "body": { + "id": 1259, + "node_type": 46, + "kind": 0, + "src": { + "id": 1260, + "line": 444, + "column": 87, + "start": 14810, + "end": 15066, + "length": 257, + "parent_index": 1242 + }, + "implemented": true, + "statements": [ + { + "id": 1261, + "node_type": 24, + "kind": 24, + "src": { + "id": 1262, + "line": 445, + "column": 8, + "start": 14820, + "end": 14887, + "length": 68, + "parent_index": 1259 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: approve from the zero address\"" + } + ], + "arguments": [ + { + "id": 1265, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1266, + "line": 445, + "column": 16, + "start": 14828, + "end": 14846, + "length": 19, + "parent_index": 1261 + }, + "operator": 12, + "left_expression": { + "id": 1267, + "node_type": 16, + "src": { + "id": 1268, + "line": 445, + "column": 16, + "start": 14828, + "end": 14832, + "length": 5, + "parent_index": 1265 + }, + "name": "owner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1267, + "is_pure": false + }, + "right_expression": { + "id": 1269, + "node_type": 24, + "kind": 24, + "src": { + "id": 1270, + "line": 445, + "column": 25, + "start": 14837, + "end": 14846, + "length": 10, + "parent_index": 1265 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 1275, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1276, + "line": 445, + "column": 33, + "start": 14845, + "end": 14845, + "length": 1, + "parent_index": 1269 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 1271, + "node_type": 16, + "src": { + "id": 1272, + "line": 445, + "column": 25, + "start": 14837, + "end": 14843, + "length": 7, + "parent_index": 1269 + }, + "name": "address", + "type_name": { + "id": 1273, + "node_type": 30, + "src": { + "id": 1274, + "line": 445, + "column": 25, + "start": 14837, + "end": 14843, + "length": 7, + "parent_index": 1271 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 1277, + "node_type": 17, + "kind": 50, + "value": "ERC20: approve from the zero address", + "hex_value": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", + "src": { + "id": 1278, + "line": 445, + "column": 37, + "start": 14849, + "end": 14886, + "length": 38, + "parent_index": 1261 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: approve from the zero address\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 1263, + "node_type": 16, + "src": { + "id": 1264, + "line": 445, + "column": 8, + "start": 14820, + "end": 14826, + "length": 7, + "parent_index": 1261 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 1279, + "node_type": 24, + "kind": 24, + "src": { + "id": 1280, + "line": 446, + "column": 8, + "start": 14898, + "end": 14965, + "length": 68, + "parent_index": 1259 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: approve to the zero address\"" + } + ], + "arguments": [ + { + "id": 1283, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1284, + "line": 446, + "column": 16, + "start": 14906, + "end": 14926, + "length": 21, + "parent_index": 1279 + }, + "operator": 12, + "left_expression": { + "id": 1285, + "node_type": 16, + "src": { + "id": 1286, + "line": 446, + "column": 16, + "start": 14906, + "end": 14912, + "length": 7, + "parent_index": 1283 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1285, + "is_pure": false + }, + "right_expression": { + "id": 1287, + "node_type": 24, + "kind": 24, + "src": { + "id": 1288, + "line": 446, + "column": 27, + "start": 14917, + "end": 14926, + "length": 10, + "parent_index": 1283 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 1293, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1294, + "line": 446, + "column": 35, + "start": 14925, + "end": 14925, + "length": 1, + "parent_index": 1287 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 1289, + "node_type": 16, + "src": { + "id": 1290, + "line": 446, + "column": 27, + "start": 14917, + "end": 14923, + "length": 7, + "parent_index": 1287 + }, + "name": "address", + "type_name": { + "id": 1291, + "node_type": 30, + "src": { + "id": 1292, + "line": 446, + "column": 27, + "start": 14917, + "end": 14923, + "length": 7, + "parent_index": 1289 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 1295, + "node_type": 17, + "kind": 50, + "value": "ERC20: approve to the zero address", + "hex_value": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", + "src": { + "id": 1296, + "line": 446, + "column": 39, + "start": 14929, + "end": 14964, + "length": 36, + "parent_index": 1279 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: approve to the zero address\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 1281, + "node_type": 16, + "src": { + "id": 1282, + "line": 446, + "column": 8, + "start": 14898, + "end": 14904, + "length": 7, + "parent_index": 1279 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 1297, + "node_type": 81, + "src": { + "id": 1298, + "line": 448, + "column": 8, + "start": 14977, + "end": 15013, + "length": 37, + "parent_index": 1259 + }, + "expression": { + "id": 1299, + "node_type": 27, + "src": { + "id": 1300, + "line": 448, + "column": 8, + "start": 14977, + "end": 15012, + "length": 36, + "parent_index": 1259 + }, + "operator": 11, + "left_expression": { + "id": 1301, + "node_type": 22, + "src": { + "id": 1302, + "line": 448, + "column": 8, + "start": 14977, + "end": 15003, + "length": 27, + "parent_index": 1299 + }, + "index_expression": { + "id": 1303, + "node_type": 22, + "src": { + "id": 1304, + "line": 448, + "column": 8, + "start": 14977, + "end": 14994, + "length": 18, + "parent_index": 1301 + }, + "index_expression": { + "id": 1305, + "node_type": 16, + "src": { + "id": 1306, + "line": 448, + "column": 8, + "start": 14977, + "end": 14987, + "length": 11, + "parent_index": 1303 + }, + "name": "_allowances", + "type_description": { + "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003emapping(address=\u003euint256))" + }, + "overloaded_declarations": [], + "referenced_declaration": 364, + "is_pure": false + }, + "base_expression": { + "id": 1307, + "node_type": 16, + "src": { + "id": 1308, + "line": 448, + "column": 20, + "start": 14989, + "end": 14993, + "length": 5, + "parent_index": 1303 + }, + "name": "owner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1307, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "type_string": "mapping(address=\u003emapping(address=\u003euint256))" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003emapping(address=\u003euint256)):address]" + } + }, + "base_expression": { + "id": 1309, + "node_type": 16, + "src": { + "id": 1310, + "line": 448, + "column": 27, + "start": 14996, + "end": 15002, + "length": 7, + "parent_index": 1301 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1309, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$", + "type_string": "index[mapping(address=\u003emapping(address=\u003euint256)):address]" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$", + "type_string": "index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]" + } + }, + "right_expression": { + "id": 1311, + "node_type": 16, + "src": { + "id": 1312, + "line": 448, + "column": 38, + "start": 15007, + "end": 15012, + "length": 6, + "parent_index": 1299 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1311, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$", + "type_string": "index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]" + } + }, + "type_description": { + "type_identifier": "t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$", + "type_string": "index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]" + } + }, + { + "id": 1313, + "node_type": 64, + "src": { + "id": 1314, + "line": 449, + "column": 8, + "start": 15023, + "end": 15060, + "length": 38, + "parent_index": 1242 + }, + "arguments": [ + { + "id": 1315, + "node_type": 16, + "src": { + "id": 1316, + "line": 449, + "column": 22, + "start": 15037, + "end": 15041, + "length": 5, + "parent_index": 1259 + }, + "name": "owner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1315, + "is_pure": false + }, + { + "id": 1317, + "node_type": 16, + "src": { + "id": 1318, + "line": 449, + "column": 29, + "start": 15044, + "end": 15050, + "length": 7, + "parent_index": 1259 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1317, + "is_pure": false + }, + { + "id": 1319, + "node_type": 16, + "src": { + "id": 1320, + "line": 449, + "column": 38, + "start": 15053, + "end": 15058, + "length": 6, + "parent_index": 1259 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1319, + "is_pure": false + } + ], + "expression": { + "id": 1321, + "node_type": 16, + "src": { + "id": 1322, + "line": 449, + "column": 13, + "start": 15028, + "end": 15035, + "length": 8, + "parent_index": 1259 + }, + "name": "Approval", + "type_description": { + "type_identifier": "t_event\u0026_IERC20_Approval_\u002676", + "type_string": "event IERC20.Approval" + }, + "overloaded_declarations": [], + "referenced_declaration": 76, + "is_pure": false + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1244, + "node_type": 43, + "src": { + "id": 1245, + "line": 444, + "column": 22, + "start": 14745, + "end": 14790, + "length": 46, + "parent_index": 1242 + }, + "parameters": [ + { + "id": 1246, + "node_type": 44, + "src": { + "id": 1247, + "line": 444, + "column": 22, + "start": 14745, + "end": 14757, + "length": 13, + "parent_index": 1244 + }, + "scope": 1242, + "name": "owner", + "type_name": { + "id": 1248, + "node_type": 30, + "src": { + "id": 1249, + "line": 444, + "column": 22, + "start": 14745, + "end": 14751, + "length": 7, + "parent_index": 1246 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1250, + "node_type": 44, + "src": { + "id": 1251, + "line": 444, + "column": 37, + "start": 14760, + "end": 14774, + "length": 15, + "parent_index": 1244 + }, + "scope": 1242, + "name": "spender", + "type_name": { + "id": 1252, + "node_type": 30, + "src": { + "id": 1253, + "line": 444, + "column": 37, + "start": 14760, + "end": 14766, + "length": 7, + "parent_index": 1250 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1254, + "node_type": 44, + "src": { + "id": 1255, + "line": 444, + "column": 54, + "start": 14777, + "end": 14790, + "length": 14, + "parent_index": 1244 + }, + "scope": 1242, + "name": "amount", + "type_name": { + "id": 1256, + "node_type": 30, + "src": { + "id": 1257, + "line": 444, + "column": 54, + "start": 14777, + "end": 14783, + "length": 7, + "parent_index": 1254 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 1258, + "node_type": 43, + "src": { + "id": 1243, + "line": 444, + "column": 4, + "start": 14727, + "end": 15066, + "length": 340, + "parent_index": 1242 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + }, + { + "id": 1324, + "name": "_spendAllowance", + "node_type": 42, + "kind": 41, + "src": { + "id": 1325, + "line": 460, + "column": 4, + "start": 15348, + "end": 15758, + "length": 411, + "parent_index": 341 + }, + "body": { + "id": 1341, + "node_type": 46, + "kind": 0, + "src": { + "id": 1342, + "line": 460, + "column": 94, + "start": 15438, + "end": 15758, + "length": 321, + "parent_index": 1324 + }, + "implemented": true, + "statements": [ + { + "id": 1343, + "node_type": 44, + "src": { + "id": 1344, + "line": 461, + "column": 8, + "start": 15448, + "end": 15500, + "length": 53, + "parent_index": 1341 + }, + "assignments": [ + 1345 + ], + "declarations": [ + { + "is_constant": false, + "id": 1345, + "state_mutability": 1, + "name": "currentAllowance", + "node_type": 44, + "scope": 1341, + "src": { + "id": 1346, + "line": 461, + "column": 8, + "start": 15448, + "end": 15471, + "length": 24, + "parent_index": 1343 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 1347, + "node_type": 30, + "src": { + "id": 1348, + "line": 461, + "column": 8, + "start": 15448, + "end": 15454, + "length": 7, + "parent_index": 1345 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 1349, + "node_type": 24, + "kind": 24, + "src": { + "id": 1350, + "line": 461, + "column": 35, + "start": 15475, + "end": 15499, + "length": 25, + "parent_index": 1343 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 1353, + "node_type": 16, + "src": { + "id": 1354, + "line": 461, + "column": 45, + "start": 15485, + "end": 15489, + "length": 5, + "parent_index": 1349 + }, + "name": "owner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1353, + "is_pure": false + }, + { + "id": 1355, + "node_type": 16, + "src": { + "id": 1356, + "line": 461, + "column": 52, + "start": 15492, + "end": 15498, + "length": 7, + "parent_index": 1349 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1355, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 1351, + "node_type": 16, + "src": { + "id": 1352, + "line": 461, + "column": 35, + "start": 15475, + "end": 15483, + "length": 9, + "parent_index": 1349 + }, + "name": "allowance", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$", + "type_string": "function(address,address)" + } + } + }, + { + "id": 1357, + "node_type": 48, + "src": { + "id": 1358, + "line": 462, + "column": 0, + "start": 15510, + "end": 15752, + "length": 243, + "parent_index": 1341 + }, + "condition": { + "id": 1359, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1360, + "line": 462, + "column": 12, + "start": 15514, + "end": 15550, + "length": 37, + "parent_index": 1357 + }, + "operator": 12, + "left_expression": { + "id": 1361, + "node_type": 16, + "src": { + "id": 1362, + "line": 462, + "column": 12, + "start": 15514, + "end": 15529, + "length": 16, + "parent_index": 1359 + }, + "name": "currentAllowance", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1343, + "is_pure": false + }, + "right_expression": { + "id": 1363, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1364, + "line": 462, + "column": 32, + "start": 15534, + "end": 15550, + "length": 17, + "parent_index": 1359 + }, + "expression": { + "id": 1365, + "node_type": 16, + "name": "type", + "src": { + "id": 1366, + "line": 462, + "column": 32, + "start": 15534, + "end": 15546, + "length": 13, + "parent_index": 1363 + }, + "type_description": { + "type_identifier": "", + "type_string": "type" + } + }, + "member_name": "max", + "argument_types": [], + "type_description": { + "type_identifier": "", + "type_string": "type" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 1367, + "node_type": 46, + "kind": 0, + "src": { + "id": 1368, + "line": 462, + "column": 51, + "start": 15553, + "end": 15752, + "length": 200, + "parent_index": 1324 + }, + "implemented": true, + "statements": [ + { + "id": 1369, + "node_type": 24, + "kind": 24, + "src": { + "id": 1370, + "line": 463, + "column": 12, + "start": 15567, + "end": 15634, + "length": 68, + "parent_index": 1367 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: insufficient allowance\"" + } + ], + "arguments": [ + { + "id": 1373, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1374, + "line": 463, + "column": 20, + "start": 15575, + "end": 15600, + "length": 26, + "parent_index": 1369 + }, + "operator": 8, + "left_expression": { + "id": 1375, + "node_type": 16, + "src": { + "id": 1376, + "line": 463, + "column": 20, + "start": 15575, + "end": 15590, + "length": 16, + "parent_index": 1373 + }, + "name": "currentAllowance", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 819, + "is_pure": false + }, + "right_expression": { + "id": 1377, + "node_type": 16, + "src": { + "id": 1378, + "line": 463, + "column": 40, + "start": 15595, + "end": 15600, + "length": 6, + "parent_index": 1373 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1377, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 1379, + "node_type": 17, + "kind": 50, + "value": "ERC20: insufficient allowance", + "hex_value": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365", + "src": { + "id": 1380, + "line": 463, + "column": 48, + "start": 15603, + "end": 15633, + "length": 31, + "parent_index": 1369 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC20: insufficient allowance\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 1371, + "node_type": 16, + "src": { + "id": 1372, + "line": 463, + "column": 12, + "start": 15567, + "end": 15573, + "length": 7, + "parent_index": 1369 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1326, + "node_type": 43, + "src": { + "id": 1327, + "line": 460, + "column": 29, + "start": 15373, + "end": 15418, + "length": 46, + "parent_index": 1324 + }, + "parameters": [ + { + "id": 1328, + "node_type": 44, + "src": { + "id": 1329, + "line": 460, + "column": 29, + "start": 15373, + "end": 15385, + "length": 13, + "parent_index": 1326 + }, + "scope": 1324, + "name": "owner", + "type_name": { + "id": 1330, + "node_type": 30, + "src": { + "id": 1331, + "line": 460, + "column": 29, + "start": 15373, + "end": 15379, + "length": 7, + "parent_index": 1328 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1332, + "node_type": 44, + "src": { + "id": 1333, + "line": 460, + "column": 44, + "start": 15388, + "end": 15402, + "length": 15, + "parent_index": 1326 + }, + "scope": 1324, + "name": "spender", + "type_name": { + "id": 1334, + "node_type": 30, + "src": { + "id": 1335, + "line": 460, + "column": 44, + "start": 15388, + "end": 15394, + "length": 7, + "parent_index": 1332 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1336, + "node_type": 44, + "src": { + "id": 1337, + "line": 460, + "column": 61, + "start": 15405, + "end": 15418, + "length": 14, + "parent_index": 1326 + }, + "scope": 1324, + "name": "amount", + "type_name": { + "id": 1338, + "node_type": 30, + "src": { + "id": 1339, + "line": 460, + "column": 61, + "start": 15405, + "end": 15411, + "length": 7, + "parent_index": 1336 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 1340, + "node_type": 43, + "src": { + "id": 1325, + "line": 460, + "column": 4, + "start": 15348, + "end": 15758, + "length": 411, + "parent_index": 1324 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + }, + { + "id": 1382, + "name": "_beforeTokenTransfer", + "node_type": 42, + "kind": 41, + "src": { + "id": 1383, + "line": 484, + "column": 4, + "start": 16343, + "end": 16433, + "length": 91, + "parent_index": 341 + }, + "body": { + "id": 1399, + "node_type": 46, + "kind": 0, + "src": { + "id": 1400, + "line": 484, + "column": 93, + "start": 16432, + "end": 16433, + "length": 2, + "parent_index": 1382 + }, + "implemented": true, + "statements": [] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1384, + "node_type": 43, + "src": { + "id": 1385, + "line": 484, + "column": 34, + "start": 16373, + "end": 16412, + "length": 40, + "parent_index": 1382 + }, + "parameters": [ + { + "id": 1386, + "node_type": 44, + "src": { + "id": 1387, + "line": 484, + "column": 34, + "start": 16373, + "end": 16384, + "length": 12, + "parent_index": 1384 + }, + "scope": 1382, + "name": "from", + "type_name": { + "id": 1388, + "node_type": 30, + "src": { + "id": 1389, + "line": 484, + "column": 34, + "start": 16373, + "end": 16379, + "length": 7, + "parent_index": 1386 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1390, + "node_type": 44, + "src": { + "id": 1391, + "line": 484, + "column": 48, + "start": 16387, + "end": 16396, + "length": 10, + "parent_index": 1384 + }, + "scope": 1382, + "name": "to", + "type_name": { + "id": 1392, + "node_type": 30, + "src": { + "id": 1393, + "line": 484, + "column": 48, + "start": 16387, + "end": 16393, + "length": 7, + "parent_index": 1390 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1394, + "node_type": 44, + "src": { + "id": 1395, + "line": 484, + "column": 60, + "start": 16399, + "end": 16412, + "length": 14, + "parent_index": 1384 + }, + "scope": 1382, + "name": "amount", + "type_name": { + "id": 1396, + "node_type": 30, + "src": { + "id": 1397, + "line": 484, + "column": 60, + "start": 16399, + "end": 16405, + "length": 7, + "parent_index": 1394 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 1398, + "node_type": 43, + "src": { + "id": 1383, + "line": 484, + "column": 4, + "start": 16343, + "end": 16433, + "length": 91, + "parent_index": 1382 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + }, + { + "id": 1402, + "name": "_afterTokenTransfer", + "node_type": 42, + "kind": 41, + "src": { + "id": 1403, + "line": 500, + "column": 4, + "start": 17022, + "end": 17111, + "length": 90, + "parent_index": 341 + }, + "body": { + "id": 1419, + "node_type": 46, + "kind": 0, + "src": { + "id": 1420, + "line": 500, + "column": 92, + "start": 17110, + "end": 17111, + "length": 2, + "parent_index": 1402 + }, + "implemented": true, + "statements": [] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1404, + "node_type": 43, + "src": { + "id": 1405, + "line": 500, + "column": 33, + "start": 17051, + "end": 17090, + "length": 40, + "parent_index": 1402 + }, + "parameters": [ + { + "id": 1406, + "node_type": 44, + "src": { + "id": 1407, + "line": 500, + "column": 33, + "start": 17051, + "end": 17062, + "length": 12, + "parent_index": 1404 + }, + "scope": 1402, + "name": "from", + "type_name": { + "id": 1408, + "node_type": 30, + "src": { + "id": 1409, + "line": 500, + "column": 33, + "start": 17051, + "end": 17057, + "length": 7, + "parent_index": 1406 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1410, + "node_type": 44, + "src": { + "id": 1411, + "line": 500, + "column": 47, + "start": 17065, + "end": 17074, + "length": 10, + "parent_index": 1404 + }, + "scope": 1402, + "name": "to", + "type_name": { + "id": 1412, + "node_type": 30, + "src": { + "id": 1413, + "line": 500, + "column": 47, + "start": 17065, + "end": 17071, + "length": 7, + "parent_index": 1410 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1414, + "node_type": 44, + "src": { + "id": 1415, + "line": 500, + "column": 59, + "start": 17077, + "end": 17090, + "length": 14, + "parent_index": 1404 + }, + "scope": 1402, + "name": "amount", + "type_name": { + "id": 1416, + "node_type": 30, + "src": { + "id": 1417, + "line": 500, + "column": 59, + "start": 17077, + "end": 17083, + "length": 7, + "parent_index": 1414 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 1418, + "node_type": 43, + "src": { + "id": 1403, + "line": 500, + "column": 4, + "start": 17022, + "end": 17111, + "length": 90, + "parent_index": 1402 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 341, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + } + ], + "linearized_base_contracts": [ + 271, + 49, + 207, + 341 + ], + "base_contracts": [ + { + "id": 342, + "node_type": 62, + "src": { + "id": 343, + "line": 174, + "column": 18, + "start": 5820, + "end": 5826, + "length": 7, + "parent_index": 341 + }, + "base_name": { + "id": 344, + "node_type": 52, + "src": { + "id": 345, + "line": 174, + "column": 18, + "start": 5820, + "end": 5826, + "length": 7, + "parent_index": 341 + }, + "name": "Context", + "referenced_declaration": 271 + } + }, + { + "id": 346, + "node_type": 62, + "src": { + "id": 347, + "line": 174, + "column": 27, + "start": 5829, + "end": 5834, + "length": 6, + "parent_index": 341 + }, + "base_name": { + "id": 348, + "node_type": 52, + "src": { + "id": 349, + "line": 174, + "column": 27, + "start": 5829, + "end": 5834, + "length": 6, + "parent_index": 341 + }, + "name": "IERC20", + "referenced_declaration": 49 + } + }, + { + "id": 350, + "node_type": 62, + "src": { + "id": 351, + "line": 174, + "column": 35, + "start": 5837, + "end": 5850, + "length": 14, + "parent_index": 341 + }, + "base_name": { + "id": 352, + "node_type": 52, + "src": { + "id": 353, + "line": 174, + "column": 35, + "start": 5837, + "end": 5850, + "length": 14, + "parent_index": 341 + }, + "name": "IERC20Metadata", + "referenced_declaration": 207 + } + } + ], + "contract_dependencies": [ + 271, + 49, + 207 + ] + } + ], + "src": { + "id": 328, + "line": 174, + "column": 0, + "start": 5802, + "end": 17113, + "length": 11312, + "parent_index": 48 + } } \ No newline at end of file diff --git a/data/tests/ast/ERC20.solgo.ast.proto.json b/data/tests/ast/ERC20.solgo.ast.proto.json index 22a0a543..be41553f 100644 --- a/data/tests/ast/ERC20.solgo.ast.proto.json +++ b/data/tests/ast/ERC20.solgo.ast.proto.json @@ -1,21001 +1,20730 @@ { - "id": 64, - "entry_source_unit": 907, - "node_type": 80, - "source_units": [ - { - "id": 65, - "license": "MIT", - "name": "SafeMath", - "absolute_path": "SafeMath.sol", - "exported_symbols": [ - { - "id": 65, - "name": "SafeMath", - "absolute_path": "SafeMath.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "67", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "55", - "id": "68", - "length": "23", - "line": "3", - "parentIndex": "65", - "start": "33" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "fullyImplemented": true, - "id": "69", - "kind": "KIND_LIBRARY", - "linearizedBaseContracts": [ - "69" - ], - "name": "SafeMath", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "93", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "80", - "end": "996", - "id": "94", - "length": "140", - "line": "24", - "parentIndex": "71", - "start": "857" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "95", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "990", - "id": "96", - "length": "124", - "line": "25", - "parentIndex": "69", - "start": "867" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "99" - ], - "declarations": [ - { - "id": "99", - "mutability": "MUTABLE", - "name": "c", - "nodeType": "VARIABLE_DECLARATION", - "scope": "95", - "src": { - "column": "12", - "end": "899", - "id": "100", - "length": "9", - "line": "26", - "parentIndex": "97", - "start": "891" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "101", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "12", - "end": "897", - "id": "102", - "length": "7", - "line": "26", - "parentIndex": "99", - "start": "891" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "97", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "103", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "105", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "105", - "src": { - "column": "24", - "end": "903", - "id": "106", - "length": "1", - "line": "26", - "parentIndex": "103", - "start": "903" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "ADDITION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "107", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "107", - "src": { - "column": "28", - "end": "907", - "id": "108", - "length": "1", - "line": "26", - "parentIndex": "103", - "start": "907" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "24", - "end": "907", - "id": "104", - "length": "5", - "line": "26", - "parentIndex": "97", - "start": "903" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "12", - "end": "908", - "id": "98", - "length": "18", - "line": "26", - "parentIndex": "95", - "start": "891" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "117", - "nodeType": "BLOCK", - "src": {} - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "111", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "113", - "name": "c", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "97", - "src": { - "column": "16", - "end": "926", - "id": "114", - "length": "1", - "line": "27", - "parentIndex": "111", - "start": "926" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "LESS_THAN", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "115", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "115", - "src": { - "column": "20", - "end": "930", - "id": "116", - "length": "1", - "line": "27", - "parentIndex": "111", - "start": "930" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "930", - "id": "112", - "length": "5", - "line": "27", - "parentIndex": "109", - "start": "926" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "109", - "nodeType": "IF_STATEMENT", - "src": { - "end": "950", - "id": "110", - "length": "29", - "line": "27", - "parentIndex": "95", - "start": "922" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", - "value": { - "components": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "122", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "20", - "end": "975", - "id": "123", - "length": "4", - "line": "28", - "parentIndex": "120", - "start": "972" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "124", - "name": "c", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "97", - "src": { - "column": "26", - "end": "978", - "id": "125", - "length": "1", - "line": "28", - "parentIndex": "120", - "start": "978" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "id": "120", - "isPure": true, - "nodeType": "TUPLE_EXPRESSION", - "src": { - "column": "19", - "end": "979", - "id": "121", - "length": "9", - "line": "28", - "parentIndex": "71", - "start": "971" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - }, - "functionReturnParameters": "71", - "id": "118", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "980", - "id": "119", - "length": "17", - "line": "28", - "parentIndex": "71", - "start": "964" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - } - ] - } - } - ] - }, - "id": "71", - "kind": "KIND_FUNCTION", - "name": "tryAdd", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "73", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "75", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "75", - "src": { - "column": "20", - "end": "805", - "id": "76", - "length": "9", - "line": "24", - "parentIndex": "73", - "start": "797" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "77", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "20", - "end": "803", - "id": "78", - "length": "7", - "line": "24", - "parentIndex": "75", - "start": "797" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "79", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "79", - "src": { - "column": "31", - "end": "816", - "id": "80", - "length": "9", - "line": "24", - "parentIndex": "73", - "start": "808" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "81", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "814", - "id": "82", - "length": "7", - "line": "24", - "parentIndex": "79", - "start": "808" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "20", - "end": "816", - "id": "74", - "length": "20", - "line": "24", - "parentIndex": "71", - "start": "797" - } - }, - "returnParameters": { - "id": "83", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "85", - "nodeType": "VARIABLE_DECLARATION", - "scope": "85", - "src": { - "column": "65", - "end": "845", - "id": "86", - "length": "4", - "line": "24", - "parentIndex": "83", - "start": "842" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "87", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "65", - "end": "845", - "id": "88", - "length": "4", - "line": "24", - "parentIndex": "85", - "start": "842" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "89", - "nodeType": "VARIABLE_DECLARATION", - "scope": "89", - "src": { - "column": "71", - "end": "854", - "id": "90", - "length": "7", - "line": "24", - "parentIndex": "83", - "start": "848" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "91", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "71", - "end": "854", - "id": "92", - "length": "7", - "line": "24", - "parentIndex": "89", - "start": "848" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "854", - "id": "84", - "length": "13", - "line": "24", - "parentIndex": "71", - "start": "842" - } - }, - "scope": "69", - "src": { - "column": "4", - "end": "996", - "id": "72", - "length": "216", - "line": "24", - "parentIndex": "69", - "start": "781" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "149", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "80", - "end": "1331", - "id": "150", - "length": "113", - "line": "37", - "parentIndex": "127", - "start": "1219" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "151", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "1325", - "id": "152", - "length": "97", - "line": "38", - "parentIndex": "69", - "start": "1229" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "161", - "nodeType": "BLOCK", - "src": {} - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "155", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "157", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "157", - "src": { - "column": "16", - "end": "1257", - "id": "158", - "length": "1", - "line": "39", - "parentIndex": "155", - "start": "1257" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "159", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "159", - "src": { - "column": "20", - "end": "1261", - "id": "160", - "length": "1", - "line": "39", - "parentIndex": "155", - "start": "1261" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "1261", - "id": "156", - "length": "5", - "line": "39", - "parentIndex": "153", - "start": "1257" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "153", - "nodeType": "IF_STATEMENT", - "src": { - "end": "1281", - "id": "154", - "length": "29", - "line": "39", - "parentIndex": "151", - "start": "1253" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", - "value": { - "components": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "166", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "20", - "end": "1306", - "id": "167", - "length": "4", - "line": "40", - "parentIndex": "164", - "start": "1303" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "168", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "170", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "170", - "src": { - "column": "26", - "end": "1309", - "id": "171", - "length": "1", - "line": "40", - "parentIndex": "168", - "start": "1309" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "172", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "172", - "src": { - "column": "30", - "end": "1313", - "id": "173", - "length": "1", - "line": "40", - "parentIndex": "168", - "start": "1313" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "26", - "end": "1313", - "id": "169", - "length": "5", - "line": "40", - "parentIndex": "164", - "start": "1309" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "id": "164", - "isPure": true, - "nodeType": "TUPLE_EXPRESSION", - "src": { - "column": "19", - "end": "1314", - "id": "165", - "length": "13", - "line": "40", - "parentIndex": "127", - "start": "1302" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - }, - "functionReturnParameters": "127", - "id": "162", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "1315", - "id": "163", - "length": "21", - "line": "40", - "parentIndex": "127", - "start": "1295" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - } - ] - } - } - ] - }, - "id": "127", - "kind": "KIND_FUNCTION", - "name": "trySub", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "129", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "131", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "131", - "src": { - "column": "20", - "end": "1167", - "id": "132", - "length": "9", - "line": "37", - "parentIndex": "129", - "start": "1159" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "133", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "20", - "end": "1165", - "id": "134", - "length": "7", - "line": "37", - "parentIndex": "131", - "start": "1159" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "135", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "135", - "src": { - "column": "31", - "end": "1178", - "id": "136", - "length": "9", - "line": "37", - "parentIndex": "129", - "start": "1170" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "137", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "1176", - "id": "138", - "length": "7", - "line": "37", - "parentIndex": "135", - "start": "1170" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "20", - "end": "1178", - "id": "130", - "length": "20", - "line": "37", - "parentIndex": "127", - "start": "1159" - } - }, - "returnParameters": { - "id": "139", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "141", - "nodeType": "VARIABLE_DECLARATION", - "scope": "141", - "src": { - "column": "65", - "end": "1207", - "id": "142", - "length": "4", - "line": "37", - "parentIndex": "139", - "start": "1204" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "143", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "65", - "end": "1207", - "id": "144", - "length": "4", - "line": "37", - "parentIndex": "141", - "start": "1204" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "145", - "nodeType": "VARIABLE_DECLARATION", - "scope": "145", - "src": { - "column": "71", - "end": "1216", - "id": "146", - "length": "7", - "line": "37", - "parentIndex": "139", - "start": "1210" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "147", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "71", - "end": "1216", - "id": "148", - "length": "7", - "line": "37", - "parentIndex": "145", - "start": "1210" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "1216", - "id": "140", - "length": "13", - "line": "37", - "parentIndex": "127", - "start": "1204" - } - }, - "scope": "69", - "src": { - "column": "4", - "end": "1331", - "id": "128", - "length": "189", - "line": "37", - "parentIndex": "69", - "start": "1143" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "197", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "80", - "end": "1972", - "id": "198", - "length": "417", - "line": "49", - "parentIndex": "175", - "start": "1556" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "199", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "1966", - "id": "200", - "length": "401", - "line": "50", - "parentIndex": "69", - "start": "1566" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "209", - "nodeType": "BLOCK", - "src": {} - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "203", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "205", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "205", - "src": { - "column": "16", - "end": "1824", - "id": "206", - "length": "1", - "line": "54", - "parentIndex": "203", - "start": "1824" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "207", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "21", - "end": "1829", - "id": "208", - "length": "1", - "line": "54", - "parentIndex": "203", - "start": "1829" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "16", - "end": "1829", - "id": "204", - "length": "6", - "line": "54", - "parentIndex": "201", - "start": "1824" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "201", - "nodeType": "IF_STATEMENT", - "src": { - "end": "1848", - "id": "202", - "length": "29", - "line": "54", - "parentIndex": "199", - "start": "1820" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "212" - ], - "declarations": [ - { - "id": "212", - "mutability": "MUTABLE", - "name": "c", - "nodeType": "VARIABLE_DECLARATION", - "scope": "199", - "src": { - "column": "12", - "end": "1870", - "id": "213", - "length": "9", - "line": "55", - "parentIndex": "210", - "start": "1862" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "214", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "12", - "end": "1868", - "id": "215", - "length": "7", - "line": "55", - "parentIndex": "212", - "start": "1862" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "210", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "216", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "218", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "218", - "src": { - "column": "24", - "end": "1874", - "id": "219", - "length": "1", - "line": "55", - "parentIndex": "216", - "start": "1874" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "MULTIPLICATION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "220", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "220", - "src": { - "column": "28", - "end": "1878", - "id": "221", - "length": "1", - "line": "55", - "parentIndex": "216", - "start": "1878" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "24", - "end": "1878", - "id": "217", - "length": "5", - "line": "55", - "parentIndex": "210", - "start": "1874" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "12", - "end": "1879", - "id": "211", - "length": "18", - "line": "55", - "parentIndex": "199", - "start": "1862" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "234", - "nodeType": "BLOCK", - "src": {} - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "224", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "226", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "228", - "name": "c", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "210", - "src": { - "column": "16", - "end": "1897", - "id": "229", - "length": "1", - "line": "56", - "parentIndex": "226", - "start": "1897" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "DIVISION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "230", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "230", - "src": { - "column": "20", - "end": "1901", - "id": "231", - "length": "1", - "line": "56", - "parentIndex": "226", - "start": "1901" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "1901", - "id": "227", - "length": "5", - "line": "56", - "parentIndex": "224", - "start": "1897" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "232", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "232", - "src": { - "column": "25", - "end": "1906", - "id": "233", - "length": "1", - "line": "56", - "parentIndex": "224", - "start": "1906" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "1906", - "id": "225", - "length": "10", - "line": "56", - "parentIndex": "222", - "start": "1897" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "222", - "nodeType": "IF_STATEMENT", - "src": { - "end": "1926", - "id": "223", - "length": "34", - "line": "56", - "parentIndex": "199", - "start": "1893" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", - "value": { - "components": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "239", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "20", - "end": "1951", - "id": "240", - "length": "4", - "line": "57", - "parentIndex": "237", - "start": "1948" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "241", - "name": "c", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "210", - "src": { - "column": "26", - "end": "1954", - "id": "242", - "length": "1", - "line": "57", - "parentIndex": "237", - "start": "1954" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "id": "237", - "isPure": true, - "nodeType": "TUPLE_EXPRESSION", - "src": { - "column": "19", - "end": "1955", - "id": "238", - "length": "9", - "line": "57", - "parentIndex": "175", - "start": "1947" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - }, - "functionReturnParameters": "175", - "id": "235", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "1956", - "id": "236", - "length": "17", - "line": "57", - "parentIndex": "175", - "start": "1940" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - } - ] - } - } - ] - }, - "id": "175", - "kind": "KIND_FUNCTION", - "name": "tryMul", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "177", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "179", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "179", - "src": { - "column": "20", - "end": "1504", - "id": "180", - "length": "9", - "line": "49", - "parentIndex": "177", - "start": "1496" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "181", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "20", - "end": "1502", - "id": "182", - "length": "7", - "line": "49", - "parentIndex": "179", - "start": "1496" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "183", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "183", - "src": { - "column": "31", - "end": "1515", - "id": "184", - "length": "9", - "line": "49", - "parentIndex": "177", - "start": "1507" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "185", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "1513", - "id": "186", - "length": "7", - "line": "49", - "parentIndex": "183", - "start": "1507" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "20", - "end": "1515", - "id": "178", - "length": "20", - "line": "49", - "parentIndex": "175", - "start": "1496" - } - }, - "returnParameters": { - "id": "187", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "189", - "nodeType": "VARIABLE_DECLARATION", - "scope": "189", - "src": { - "column": "65", - "end": "1544", - "id": "190", - "length": "4", - "line": "49", - "parentIndex": "187", - "start": "1541" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "191", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "65", - "end": "1544", - "id": "192", - "length": "4", - "line": "49", - "parentIndex": "189", - "start": "1541" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "193", - "nodeType": "VARIABLE_DECLARATION", - "scope": "193", - "src": { - "column": "71", - "end": "1553", - "id": "194", - "length": "7", - "line": "49", - "parentIndex": "187", - "start": "1547" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "195", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "71", - "end": "1553", - "id": "196", - "length": "7", - "line": "49", - "parentIndex": "193", - "start": "1547" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "1553", - "id": "188", - "length": "13", - "line": "49", - "parentIndex": "175", - "start": "1541" - } - }, - "scope": "69", - "src": { - "column": "4", - "end": "1972", - "id": "176", - "length": "493", - "line": "49", - "parentIndex": "69", - "start": "1480" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "266", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "80", - "end": "2311", - "id": "267", - "length": "114", - "line": "66", - "parentIndex": "244", - "start": "2198" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "268", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "2305", - "id": "269", - "length": "98", - "line": "67", - "parentIndex": "69", - "start": "2208" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "278", - "nodeType": "BLOCK", - "src": {} - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "272", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "274", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "274", - "src": { - "column": "16", - "end": "2236", - "id": "275", - "length": "1", - "line": "68", - "parentIndex": "272", - "start": "2236" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "276", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "21", - "end": "2241", - "id": "277", - "length": "1", - "line": "68", - "parentIndex": "272", - "start": "2241" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "16", - "end": "2241", - "id": "273", - "length": "6", - "line": "68", - "parentIndex": "270", - "start": "2236" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "270", - "nodeType": "IF_STATEMENT", - "src": { - "end": "2261", - "id": "271", - "length": "30", - "line": "68", - "parentIndex": "268", - "start": "2232" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", - "value": { - "components": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "283", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "20", - "end": "2286", - "id": "284", - "length": "4", - "line": "69", - "parentIndex": "281", - "start": "2283" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "285", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "287", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "287", - "src": { - "column": "26", - "end": "2289", - "id": "288", - "length": "1", - "line": "69", - "parentIndex": "285", - "start": "2289" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "DIVISION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "289", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "289", - "src": { - "column": "30", - "end": "2293", - "id": "290", - "length": "1", - "line": "69", - "parentIndex": "285", - "start": "2293" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "26", - "end": "2293", - "id": "286", - "length": "5", - "line": "69", - "parentIndex": "281", - "start": "2289" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "id": "281", - "isPure": true, - "nodeType": "TUPLE_EXPRESSION", - "src": { - "column": "19", - "end": "2294", - "id": "282", - "length": "13", - "line": "69", - "parentIndex": "244", - "start": "2282" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - }, - "functionReturnParameters": "244", - "id": "279", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "2295", - "id": "280", - "length": "21", - "line": "69", - "parentIndex": "244", - "start": "2275" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - } - ] - } - } - ] - }, - "id": "244", - "kind": "KIND_FUNCTION", - "name": "tryDiv", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "246", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "248", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "248", - "src": { - "column": "20", - "end": "2146", - "id": "249", - "length": "9", - "line": "66", - "parentIndex": "246", - "start": "2138" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "250", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "20", - "end": "2144", - "id": "251", - "length": "7", - "line": "66", - "parentIndex": "248", - "start": "2138" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "252", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "252", - "src": { - "column": "31", - "end": "2157", - "id": "253", - "length": "9", - "line": "66", - "parentIndex": "246", - "start": "2149" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "254", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "2155", - "id": "255", - "length": "7", - "line": "66", - "parentIndex": "252", - "start": "2149" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "20", - "end": "2157", - "id": "247", - "length": "20", - "line": "66", - "parentIndex": "244", - "start": "2138" - } - }, - "returnParameters": { - "id": "256", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "258", - "nodeType": "VARIABLE_DECLARATION", - "scope": "258", - "src": { - "column": "65", - "end": "2186", - "id": "259", - "length": "4", - "line": "66", - "parentIndex": "256", - "start": "2183" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "260", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "65", - "end": "2186", - "id": "261", - "length": "4", - "line": "66", - "parentIndex": "258", - "start": "2183" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "262", - "nodeType": "VARIABLE_DECLARATION", - "scope": "262", - "src": { - "column": "71", - "end": "2195", - "id": "263", - "length": "7", - "line": "66", - "parentIndex": "256", - "start": "2189" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "264", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "71", - "end": "2195", - "id": "265", - "length": "7", - "line": "66", - "parentIndex": "262", - "start": "2189" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "2195", - "id": "257", - "length": "13", - "line": "66", - "parentIndex": "244", - "start": "2183" - } - }, - "scope": "69", - "src": { - "column": "4", - "end": "2311", - "id": "245", - "length": "190", - "line": "66", - "parentIndex": "69", - "start": "2122" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "314", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "80", - "end": "2660", - "id": "315", - "length": "114", - "line": "78", - "parentIndex": "292", - "start": "2547" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "316", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "2654", - "id": "317", - "length": "98", - "line": "79", - "parentIndex": "69", - "start": "2557" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "326", - "nodeType": "BLOCK", - "src": {} - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "320", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "322", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "322", - "src": { - "column": "16", - "end": "2585", - "id": "323", - "length": "1", - "line": "80", - "parentIndex": "320", - "start": "2585" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "324", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "21", - "end": "2590", - "id": "325", - "length": "1", - "line": "80", - "parentIndex": "320", - "start": "2590" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "16", - "end": "2590", - "id": "321", - "length": "6", - "line": "80", - "parentIndex": "318", - "start": "2585" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "318", - "nodeType": "IF_STATEMENT", - "src": { - "end": "2610", - "id": "319", - "length": "30", - "line": "80", - "parentIndex": "316", - "start": "2581" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", - "value": { - "components": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "331", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "20", - "end": "2635", - "id": "332", - "length": "4", - "line": "81", - "parentIndex": "329", - "start": "2632" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "333", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "335", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "335", - "src": { - "column": "26", - "end": "2638", - "id": "336", - "length": "1", - "line": "81", - "parentIndex": "333", - "start": "2638" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "MODULO", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "337", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "337", - "src": { - "column": "30", - "end": "2642", - "id": "338", - "length": "1", - "line": "81", - "parentIndex": "333", - "start": "2642" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "26", - "end": "2642", - "id": "334", - "length": "5", - "line": "81", - "parentIndex": "329", - "start": "2638" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "id": "329", - "isPure": true, - "nodeType": "TUPLE_EXPRESSION", - "src": { - "column": "19", - "end": "2643", - "id": "330", - "length": "13", - "line": "81", - "parentIndex": "292", - "start": "2631" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - }, - "functionReturnParameters": "292", - "id": "327", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "2644", - "id": "328", - "length": "21", - "line": "81", - "parentIndex": "292", - "start": "2624" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - } - ] - } - } - ] - }, - "id": "292", - "kind": "KIND_FUNCTION", - "name": "tryMod", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "294", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "296", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "296", - "src": { - "column": "20", - "end": "2495", - "id": "297", - "length": "9", - "line": "78", - "parentIndex": "294", - "start": "2487" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "298", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "20", - "end": "2493", - "id": "299", - "length": "7", - "line": "78", - "parentIndex": "296", - "start": "2487" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "300", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "300", - "src": { - "column": "31", - "end": "2506", - "id": "301", - "length": "9", - "line": "78", - "parentIndex": "294", - "start": "2498" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "302", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "2504", - "id": "303", - "length": "7", - "line": "78", - "parentIndex": "300", - "start": "2498" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "20", - "end": "2506", - "id": "295", - "length": "20", - "line": "78", - "parentIndex": "292", - "start": "2487" - } - }, - "returnParameters": { - "id": "304", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "306", - "nodeType": "VARIABLE_DECLARATION", - "scope": "306", - "src": { - "column": "65", - "end": "2535", - "id": "307", - "length": "4", - "line": "78", - "parentIndex": "304", - "start": "2532" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "308", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "65", - "end": "2535", - "id": "309", - "length": "4", - "line": "78", - "parentIndex": "306", - "start": "2532" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "310", - "nodeType": "VARIABLE_DECLARATION", - "scope": "310", - "src": { - "column": "71", - "end": "2544", - "id": "311", - "length": "7", - "line": "78", - "parentIndex": "304", - "start": "2538" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "312", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "71", - "end": "2544", - "id": "313", - "length": "7", - "line": "78", - "parentIndex": "310", - "start": "2538" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "2544", - "id": "305", - "length": "13", - "line": "78", - "parentIndex": "292", - "start": "2532" - } - }, - "scope": "69", - "src": { - "column": "4", - "end": "2660", - "id": "293", - "length": "190", - "line": "78", - "parentIndex": "69", - "start": "2471" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "358", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "71", - "end": "2991", - "id": "359", - "length": "29", - "line": "95", - "parentIndex": "340", - "start": "2963" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "362", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "364", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "364", - "src": { - "column": "15", - "end": "2980", - "id": "365", - "length": "1", - "line": "96", - "parentIndex": "362", - "start": "2980" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "ADDITION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "366", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "366", - "src": { - "column": "19", - "end": "2984", - "id": "367", - "length": "1", - "line": "96", - "parentIndex": "362", - "start": "2984" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "15", - "end": "2984", - "id": "363", - "length": "5", - "line": "96", - "parentIndex": "358", - "start": "2980" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "340", - "id": "360", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "2985", - "id": "361", - "length": "13", - "line": "96", - "parentIndex": "340", - "start": "2973" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "340", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "add", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "342", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "344", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "344", - "src": { - "column": "17", - "end": "2917", - "id": "345", - "length": "9", - "line": "95", - "parentIndex": "342", - "start": "2909" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "346", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "2915", - "id": "347", - "length": "7", - "line": "95", - "parentIndex": "344", - "start": "2909" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "348", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "348", - "src": { - "column": "28", - "end": "2928", - "id": "349", - "length": "9", - "line": "95", - "parentIndex": "342", - "start": "2920" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "350", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "2926", - "id": "351", - "length": "7", - "line": "95", - "parentIndex": "348", - "start": "2920" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "17", - "end": "2928", - "id": "343", - "length": "20", - "line": "95", - "parentIndex": "340", - "start": "2909" - } - }, - "returnParameters": { - "id": "352", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "354", - "nodeType": "VARIABLE_DECLARATION", - "scope": "354", - "src": { - "column": "62", - "end": "2960", - "id": "355", - "length": "7", - "line": "95", - "parentIndex": "352", - "start": "2954" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "356", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "2960", - "id": "357", - "length": "7", - "line": "95", - "parentIndex": "354", - "start": "2954" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "62", - "end": "2960", - "id": "353", - "length": "7", - "line": "95", - "parentIndex": "340", - "start": "2954" - } - }, - "scope": "69", - "src": { - "column": "4", - "end": "2991", - "id": "341", - "length": "96", - "line": "95", - "parentIndex": "69", - "start": "2896" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "387", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "71", - "end": "3358", - "id": "388", - "length": "29", - "line": "109", - "parentIndex": "369", - "start": "3330" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "391", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "393", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "393", - "src": { - "column": "15", - "end": "3347", - "id": "394", - "length": "1", - "line": "110", - "parentIndex": "391", - "start": "3347" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "395", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "395", - "src": { - "column": "19", - "end": "3351", - "id": "396", - "length": "1", - "line": "110", - "parentIndex": "391", - "start": "3351" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "15", - "end": "3351", - "id": "392", - "length": "5", - "line": "110", - "parentIndex": "387", - "start": "3347" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "369", - "id": "389", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "3352", - "id": "390", - "length": "13", - "line": "110", - "parentIndex": "369", - "start": "3340" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "369", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "sub", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "371", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "373", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "373", - "src": { - "column": "17", - "end": "3284", - "id": "374", - "length": "9", - "line": "109", - "parentIndex": "371", - "start": "3276" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "375", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "3282", - "id": "376", - "length": "7", - "line": "109", - "parentIndex": "373", - "start": "3276" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "377", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "377", - "src": { - "column": "28", - "end": "3295", - "id": "378", - "length": "9", - "line": "109", - "parentIndex": "371", - "start": "3287" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "379", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "3293", - "id": "380", - "length": "7", - "line": "109", - "parentIndex": "377", - "start": "3287" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "17", - "end": "3295", - "id": "372", - "length": "20", - "line": "109", - "parentIndex": "369", - "start": "3276" - } - }, - "returnParameters": { - "id": "381", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "383", - "nodeType": "VARIABLE_DECLARATION", - "scope": "383", - "src": { - "column": "62", - "end": "3327", - "id": "384", - "length": "7", - "line": "109", - "parentIndex": "381", - "start": "3321" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "385", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "3327", - "id": "386", - "length": "7", - "line": "109", - "parentIndex": "383", - "start": "3321" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "62", - "end": "3327", - "id": "382", - "length": "7", - "line": "109", - "parentIndex": "369", - "start": "3321" - } - }, - "scope": "69", - "src": { - "column": "4", - "end": "3358", - "id": "370", - "length": "96", - "line": "109", - "parentIndex": "69", - "start": "3263" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "416", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "71", - "end": "3701", - "id": "417", - "length": "29", - "line": "123", - "parentIndex": "398", - "start": "3673" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "420", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "422", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "422", - "src": { - "column": "15", - "end": "3690", - "id": "423", - "length": "1", - "line": "124", - "parentIndex": "420", - "start": "3690" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "MULTIPLICATION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "424", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "424", - "src": { - "column": "19", - "end": "3694", - "id": "425", - "length": "1", - "line": "124", - "parentIndex": "420", - "start": "3694" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "15", - "end": "3694", - "id": "421", - "length": "5", - "line": "124", - "parentIndex": "416", - "start": "3690" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "398", - "id": "418", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "3695", - "id": "419", - "length": "13", - "line": "124", - "parentIndex": "398", - "start": "3683" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "398", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "mul", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "400", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "402", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "402", - "src": { - "column": "17", - "end": "3627", - "id": "403", - "length": "9", - "line": "123", - "parentIndex": "400", - "start": "3619" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "404", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "3625", - "id": "405", - "length": "7", - "line": "123", - "parentIndex": "402", - "start": "3619" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "406", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "406", - "src": { - "column": "28", - "end": "3638", - "id": "407", - "length": "9", - "line": "123", - "parentIndex": "400", - "start": "3630" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "408", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "3636", - "id": "409", - "length": "7", - "line": "123", - "parentIndex": "406", - "start": "3630" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "17", - "end": "3638", - "id": "401", - "length": "20", - "line": "123", - "parentIndex": "398", - "start": "3619" - } - }, - "returnParameters": { - "id": "410", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "412", - "nodeType": "VARIABLE_DECLARATION", - "scope": "412", - "src": { - "column": "62", - "end": "3670", - "id": "413", - "length": "7", - "line": "123", - "parentIndex": "410", - "start": "3664" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "414", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "3670", - "id": "415", - "length": "7", - "line": "123", - "parentIndex": "412", - "start": "3664" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "62", - "end": "3670", - "id": "411", - "length": "7", - "line": "123", - "parentIndex": "398", - "start": "3664" - } - }, - "scope": "69", - "src": { - "column": "4", - "end": "3701", - "id": "399", - "length": "96", - "line": "123", - "parentIndex": "69", - "start": "3606" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "445", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "71", - "end": "4261", - "id": "446", - "length": "29", - "line": "139", - "parentIndex": "427", - "start": "4233" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "449", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "451", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "451", - "src": { - "column": "15", - "end": "4250", - "id": "452", - "length": "1", - "line": "140", - "parentIndex": "449", - "start": "4250" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "DIVISION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "453", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "453", - "src": { - "column": "19", - "end": "4254", - "id": "454", - "length": "1", - "line": "140", - "parentIndex": "449", - "start": "4254" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "15", - "end": "4254", - "id": "450", - "length": "5", - "line": "140", - "parentIndex": "445", - "start": "4250" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "427", - "id": "447", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "4255", - "id": "448", - "length": "13", - "line": "140", - "parentIndex": "427", - "start": "4243" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "427", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "div", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "429", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "431", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "431", - "src": { - "column": "17", - "end": "4187", - "id": "432", - "length": "9", - "line": "139", - "parentIndex": "429", - "start": "4179" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "433", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "4185", - "id": "434", - "length": "7", - "line": "139", - "parentIndex": "431", - "start": "4179" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "435", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "435", - "src": { - "column": "28", - "end": "4198", - "id": "436", - "length": "9", - "line": "139", - "parentIndex": "429", - "start": "4190" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "437", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "4196", - "id": "438", - "length": "7", - "line": "139", - "parentIndex": "435", - "start": "4190" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "17", - "end": "4198", - "id": "430", - "length": "20", - "line": "139", - "parentIndex": "427", - "start": "4179" - } - }, - "returnParameters": { - "id": "439", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "441", - "nodeType": "VARIABLE_DECLARATION", - "scope": "441", - "src": { - "column": "62", - "end": "4230", - "id": "442", - "length": "7", - "line": "139", - "parentIndex": "439", - "start": "4224" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "443", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "4230", - "id": "444", - "length": "7", - "line": "139", - "parentIndex": "441", - "start": "4224" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "62", - "end": "4230", - "id": "440", - "length": "7", - "line": "139", - "parentIndex": "427", - "start": "4224" - } - }, - "scope": "69", - "src": { - "column": "4", - "end": "4261", - "id": "428", - "length": "96", - "line": "139", - "parentIndex": "69", - "start": "4166" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "474", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "71", - "end": "4810", - "id": "475", - "length": "29", - "line": "155", - "parentIndex": "456", - "start": "4782" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "478", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "480", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "480", - "src": { - "column": "15", - "end": "4799", - "id": "481", - "length": "1", - "line": "156", - "parentIndex": "478", - "start": "4799" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "MODULO", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "482", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "482", - "src": { - "column": "19", - "end": "4803", - "id": "483", - "length": "1", - "line": "156", - "parentIndex": "478", - "start": "4803" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "15", - "end": "4803", - "id": "479", - "length": "5", - "line": "156", - "parentIndex": "474", - "start": "4799" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "456", - "id": "476", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "4804", - "id": "477", - "length": "13", - "line": "156", - "parentIndex": "456", - "start": "4792" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "456", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "mod", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "458", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "460", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "460", - "src": { - "column": "17", - "end": "4736", - "id": "461", - "length": "9", - "line": "155", - "parentIndex": "458", - "start": "4728" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "462", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "4734", - "id": "463", - "length": "7", - "line": "155", - "parentIndex": "460", - "start": "4728" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "464", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "464", - "src": { - "column": "28", - "end": "4747", - "id": "465", - "length": "9", - "line": "155", - "parentIndex": "458", - "start": "4739" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "466", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "4745", - "id": "467", - "length": "7", - "line": "155", - "parentIndex": "464", - "start": "4739" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "17", - "end": "4747", - "id": "459", - "length": "20", - "line": "155", - "parentIndex": "456", - "start": "4728" - } - }, - "returnParameters": { - "id": "468", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "470", - "nodeType": "VARIABLE_DECLARATION", - "scope": "470", - "src": { - "column": "62", - "end": "4779", - "id": "471", - "length": "7", - "line": "155", - "parentIndex": "468", - "start": "4773" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "472", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "4779", - "id": "473", - "length": "7", - "line": "155", - "parentIndex": "470", - "start": "4773" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "62", - "end": "4779", - "id": "469", - "length": "7", - "line": "155", - "parentIndex": "456", - "start": "4773" - } - }, - "scope": "69", - "src": { - "column": "4", - "end": "4810", - "id": "457", - "length": "96", - "line": "155", - "parentIndex": "69", - "start": "4715" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "507", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "38", - "end": "5505", - "id": "508", - "length": "106", - "line": "176", - "parentIndex": "485", - "start": "5400" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "509", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "5499", - "id": "510", - "length": "90", - "line": "177", - "parentIndex": "69", - "start": "5410" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "513", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "515", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "515", - "src": { - "column": "20", - "end": "5442", - "id": "516", - "length": "1", - "line": "178", - "parentIndex": "513", - "start": "5442" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "LESS_THAN_OR_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "517", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "517", - "src": { - "column": "25", - "end": "5447", - "id": "518", - "length": "1", - "line": "178", - "parentIndex": "513", - "start": "5447" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "20", - "end": "5447", - "id": "514", - "length": "6", - "line": "178", - "parentIndex": "511", - "start": "5442" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": "519", - "name": "errorMessage", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "519", - "src": { - "column": "28", - "end": "5461", - "id": "520", - "length": "12", - "line": "178", - "parentIndex": "511", - "start": "5450" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "id": "521", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "12", - "end": "5440", - "id": "522", - "length": "7", - "line": "178", - "parentIndex": "511", - "start": "5434" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string", - "typeString": "function(bool,string)" - } - } - }, - "id": "511", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "5462", - "id": "512", - "length": "29", - "line": "178", - "parentIndex": "509", - "start": "5434" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string$", - "typeString": "function(bool,string)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "525", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "527", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "527", - "src": { - "column": "19", - "end": "5484", - "id": "528", - "length": "1", - "line": "179", - "parentIndex": "525", - "start": "5484" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "529", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "529", - "src": { - "column": "23", - "end": "5488", - "id": "530", - "length": "1", - "line": "179", - "parentIndex": "525", - "start": "5488" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "19", - "end": "5488", - "id": "526", - "length": "5", - "line": "179", - "parentIndex": "509", - "start": "5484" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "485", - "id": "523", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "5489", - "id": "524", - "length": "13", - "line": "179", - "parentIndex": "485", - "start": "5477" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - } - } - ] - }, - "id": "485", - "kind": "KIND_FUNCTION", - "name": "sub", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "487", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "489", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "489", - "src": { - "column": "8", - "end": "5305", - "id": "490", - "length": "9", - "line": "173", - "parentIndex": "487", - "start": "5297" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "491", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "5303", - "id": "492", - "length": "7", - "line": "173", - "parentIndex": "489", - "start": "5297" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "493", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "493", - "src": { - "column": "8", - "end": "5324", - "id": "494", - "length": "9", - "line": "174", - "parentIndex": "487", - "start": "5316" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "495", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "5322", - "id": "496", - "length": "7", - "line": "174", - "parentIndex": "493", - "start": "5316" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "497", - "name": "errorMessage", - "nodeType": "VARIABLE_DECLARATION", - "scope": "497", - "src": { - "column": "8", - "end": "5360", - "id": "498", - "length": "26", - "line": "175", - "parentIndex": "487", - "start": "5335" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "499", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "5340", - "id": "500", - "length": "6", - "line": "175", - "parentIndex": "497", - "start": "5335" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "8", - "end": "5360", - "id": "488", - "length": "64", - "line": "173", - "parentIndex": "485", - "start": "5297" - } - }, - "returnParameters": { - "id": "501", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "503", - "nodeType": "VARIABLE_DECLARATION", - "scope": "503", - "src": { - "column": "29", - "end": "5397", - "id": "504", - "length": "7", - "line": "176", - "parentIndex": "501", - "start": "5391" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "505", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "29", - "end": "5397", - "id": "506", - "length": "7", - "line": "176", - "parentIndex": "503", - "start": "5391" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "29", - "end": "5397", - "id": "502", - "length": "7", - "line": "176", - "parentIndex": "485", - "start": "5391" - } - }, - "scope": "69", - "src": { - "column": "4", - "end": "5505", - "id": "486", - "length": "231", - "line": "172", - "parentIndex": "69", - "start": "5275" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256$$_t_string", - "typeString": "function(uint256,uint256,string)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "554", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "38", - "end": "6219", - "id": "555", - "length": "105", - "line": "199", - "parentIndex": "532", - "start": "6115" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "556", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "6213", - "id": "557", - "length": "89", - "line": "200", - "parentIndex": "69", - "start": "6125" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "560", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "562", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "562", - "src": { - "column": "20", - "end": "6157", - "id": "563", - "length": "1", - "line": "201", - "parentIndex": "560", - "start": "6157" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "564", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "24", - "end": "6161", - "id": "565", - "length": "1", - "line": "201", - "parentIndex": "560", - "start": "6161" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "20", - "end": "6161", - "id": "561", - "length": "5", - "line": "201", - "parentIndex": "558", - "start": "6157" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": "566", - "name": "errorMessage", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "566", - "src": { - "column": "27", - "end": "6175", - "id": "567", - "length": "12", - "line": "201", - "parentIndex": "558", - "start": "6164" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "id": "568", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "12", - "end": "6155", - "id": "569", - "length": "7", - "line": "201", - "parentIndex": "558", - "start": "6149" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string", - "typeString": "function(bool,string)" - } - } - }, - "id": "558", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "6176", - "id": "559", - "length": "28", - "line": "201", - "parentIndex": "556", - "start": "6149" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string$", - "typeString": "function(bool,string)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "572", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "574", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "574", - "src": { - "column": "19", - "end": "6198", - "id": "575", - "length": "1", - "line": "202", - "parentIndex": "572", - "start": "6198" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "DIVISION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "576", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "576", - "src": { - "column": "23", - "end": "6202", - "id": "577", - "length": "1", - "line": "202", - "parentIndex": "572", - "start": "6202" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "19", - "end": "6202", - "id": "573", - "length": "5", - "line": "202", - "parentIndex": "556", - "start": "6198" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "532", - "id": "570", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "6203", - "id": "571", - "length": "13", - "line": "202", - "parentIndex": "532", - "start": "6191" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - } - } - ] - }, - "id": "532", - "kind": "KIND_FUNCTION", - "name": "div", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "534", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "536", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "536", - "src": { - "column": "8", - "end": "6020", - "id": "537", - "length": "9", - "line": "196", - "parentIndex": "534", - "start": "6012" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "538", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "6018", - "id": "539", - "length": "7", - "line": "196", - "parentIndex": "536", - "start": "6012" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "540", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "540", - "src": { - "column": "8", - "end": "6039", - "id": "541", - "length": "9", - "line": "197", - "parentIndex": "534", - "start": "6031" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "542", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "6037", - "id": "543", - "length": "7", - "line": "197", - "parentIndex": "540", - "start": "6031" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "544", - "name": "errorMessage", - "nodeType": "VARIABLE_DECLARATION", - "scope": "544", - "src": { - "column": "8", - "end": "6075", - "id": "545", - "length": "26", - "line": "198", - "parentIndex": "534", - "start": "6050" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "546", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "6055", - "id": "547", - "length": "6", - "line": "198", - "parentIndex": "544", - "start": "6050" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "8", - "end": "6075", - "id": "535", - "length": "64", - "line": "196", - "parentIndex": "532", - "start": "6012" - } - }, - "returnParameters": { - "id": "548", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "550", - "nodeType": "VARIABLE_DECLARATION", - "scope": "550", - "src": { - "column": "29", - "end": "6112", - "id": "551", - "length": "7", - "line": "199", - "parentIndex": "548", - "start": "6106" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "552", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "29", - "end": "6112", - "id": "553", - "length": "7", - "line": "199", - "parentIndex": "550", - "start": "6106" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "29", - "end": "6112", - "id": "549", - "length": "7", - "line": "199", - "parentIndex": "532", - "start": "6106" - } - }, - "scope": "69", - "src": { - "column": "4", - "end": "6219", - "id": "533", - "length": "230", - "line": "195", - "parentIndex": "69", - "start": "5990" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256$$_t_string", - "typeString": "function(uint256,uint256,string)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "601", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "38", - "end": "7095", - "id": "602", - "length": "105", - "line": "225", - "parentIndex": "579", - "start": "6991" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "603", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "7089", - "id": "604", - "length": "89", - "line": "226", - "parentIndex": "69", - "start": "7001" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "607", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "609", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "609", - "src": { - "column": "20", - "end": "7033", - "id": "610", - "length": "1", - "line": "227", - "parentIndex": "607", - "start": "7033" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "611", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "24", - "end": "7037", - "id": "612", - "length": "1", - "line": "227", - "parentIndex": "607", - "start": "7037" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "20", - "end": "7037", - "id": "608", - "length": "5", - "line": "227", - "parentIndex": "605", - "start": "7033" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": "613", - "name": "errorMessage", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "613", - "src": { - "column": "27", - "end": "7051", - "id": "614", - "length": "12", - "line": "227", - "parentIndex": "605", - "start": "7040" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "id": "615", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "12", - "end": "7031", - "id": "616", - "length": "7", - "line": "227", - "parentIndex": "605", - "start": "7025" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string", - "typeString": "function(bool,string)" - } - } - }, - "id": "605", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "7052", - "id": "606", - "length": "28", - "line": "227", - "parentIndex": "603", - "start": "7025" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string$", - "typeString": "function(bool,string)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "619", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "621", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "621", - "src": { - "column": "19", - "end": "7074", - "id": "622", - "length": "1", - "line": "228", - "parentIndex": "619", - "start": "7074" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "MODULO", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "623", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "623", - "src": { - "column": "23", - "end": "7078", - "id": "624", - "length": "1", - "line": "228", - "parentIndex": "619", - "start": "7078" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "19", - "end": "7078", - "id": "620", - "length": "5", - "line": "228", - "parentIndex": "603", - "start": "7074" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "579", - "id": "617", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "7079", - "id": "618", - "length": "13", - "line": "228", - "parentIndex": "579", - "start": "7067" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - } - } - ] - }, - "id": "579", - "kind": "KIND_FUNCTION", - "name": "mod", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "581", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "583", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "583", - "src": { - "column": "8", - "end": "6896", - "id": "584", - "length": "9", - "line": "222", - "parentIndex": "581", - "start": "6888" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "585", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "6894", - "id": "586", - "length": "7", - "line": "222", - "parentIndex": "583", - "start": "6888" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "587", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "587", - "src": { - "column": "8", - "end": "6915", - "id": "588", - "length": "9", - "line": "223", - "parentIndex": "581", - "start": "6907" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "589", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "6913", - "id": "590", - "length": "7", - "line": "223", - "parentIndex": "587", - "start": "6907" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "591", - "name": "errorMessage", - "nodeType": "VARIABLE_DECLARATION", - "scope": "591", - "src": { - "column": "8", - "end": "6951", - "id": "592", - "length": "26", - "line": "224", - "parentIndex": "581", - "start": "6926" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "593", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "6931", - "id": "594", - "length": "6", - "line": "224", - "parentIndex": "591", - "start": "6926" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "8", - "end": "6951", - "id": "582", - "length": "64", - "line": "222", - "parentIndex": "579", - "start": "6888" - } - }, - "returnParameters": { - "id": "595", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "597", - "nodeType": "VARIABLE_DECLARATION", - "scope": "597", - "src": { - "column": "29", - "end": "6988", - "id": "598", - "length": "7", - "line": "225", - "parentIndex": "595", - "start": "6982" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "599", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "29", - "end": "6988", - "id": "600", - "length": "7", - "line": "225", - "parentIndex": "597", - "start": "6982" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "29", - "end": "6988", - "id": "596", - "length": "7", - "line": "225", - "parentIndex": "579", - "start": "6982" - } - }, - "scope": "69", - "src": { - "column": "4", - "end": "7095", - "id": "580", - "length": "230", - "line": "221", - "parentIndex": "69", - "start": "6866" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256$$_t_string", - "typeString": "function(uint256,uint256,string)" - }, - "visibility": "INTERNAL" - } - } - ], - "src": { - "end": "7097", - "length": "6476", - "line": "18", - "parentIndex": "65", - "start": "622" - } - } - } - ] - }, - "src": { - "id": 66, - "line": 18, - "start": 622, - "end": 7097, - "length": 6476, - "parent_index": 64 - } - }, - { - "id": 625, - "license": "MIT", - "name": "IERC20", - "absolute_path": "IERC20.sol", - "exported_symbols": [ - { - "id": 625, - "name": "IERC20", - "absolute_path": "IERC20.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "629", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "7155", - "id": "630", - "length": "23", - "line": "235", - "parentIndex": "625", - "start": "7133" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "fullyImplemented": true, - "id": "635", - "kind": "KIND_LIBRARY", - "linearizedBaseContracts": [ - "635" - ], - "name": "IERC20", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "651", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "7377", - "id": "638", - "length": "55", - "line": "244", - "parentIndex": "637", - "start": "7323" - } - }, - "id": "637", - "kind": "KIND_FUNCTION", - "name": "totalSupply", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "639", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "641", - "nodeType": "VARIABLE_DECLARATION", - "scope": "641", - "src": { - "column": "50", - "end": "7375", - "id": "642", - "length": "7", - "line": "244", - "parentIndex": "639", - "start": "7369" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "643", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "50", - "end": "7375", - "id": "644", - "length": "7", - "line": "244", - "parentIndex": "641", - "start": "7369" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "50", - "end": "7375", - "id": "640", - "length": "7", - "line": "244", - "parentIndex": "637", - "start": "7369" - } - }, - "returnParameters": { - "id": "645", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "647", - "nodeType": "VARIABLE_DECLARATION", - "scope": "647", - "src": { - "column": "50", - "end": "7375", - "id": "648", - "length": "7", - "line": "244", - "parentIndex": "645", - "start": "7369" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "649", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "50", - "end": "7375", - "id": "650", - "length": "7", - "line": "244", - "parentIndex": "647", - "start": "7369" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "50", - "end": "7375", - "id": "646", - "length": "7", - "line": "244", - "parentIndex": "637", - "start": "7369" - } - }, - "scope": "635", - "src": { - "column": "4", - "end": "7377", - "id": "638", - "length": "55", - "line": "244", - "parentIndex": "635", - "start": "7323" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256", - "typeString": "function(uint256)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "667", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "7528", - "id": "654", - "length": "68", - "line": "249", - "parentIndex": "653", - "start": "7461" - } - }, - "id": "653", - "kind": "KIND_FUNCTION", - "name": "balanceOf", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "655", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "657", - "name": "account", - "nodeType": "VARIABLE_DECLARATION", - "scope": "657", - "src": { - "column": "23", - "end": "7494", - "id": "658", - "length": "15", - "line": "249", - "parentIndex": "655", - "start": "7480" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "659", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "7486", - "id": "660", - "length": "7", - "line": "249", - "parentIndex": "657", - "start": "7480" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "7494", - "id": "656", - "length": "15", - "line": "249", - "parentIndex": "653", - "start": "7480" - } - }, - "returnParameters": { - "id": "661", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "663", - "nodeType": "VARIABLE_DECLARATION", - "scope": "663", - "src": { - "column": "63", - "end": "7526", - "id": "664", - "length": "7", - "line": "249", - "parentIndex": "661", - "start": "7520" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "665", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "63", - "end": "7526", - "id": "666", - "length": "7", - "line": "249", - "parentIndex": "663", - "start": "7520" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "63", - "end": "7526", - "id": "662", - "length": "7", - "line": "249", - "parentIndex": "653", - "start": "7520" - } - }, - "scope": "635", - "src": { - "column": "4", - "end": "7528", - "id": "654", - "length": "68", - "line": "249", - "parentIndex": "635", - "start": "7461" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "687", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "7825", - "id": "670", - "length": "77", - "line": "258", - "parentIndex": "669", - "start": "7749" - } - }, - "id": "669", - "kind": "KIND_FUNCTION", - "name": "transfer", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "671", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "673", - "name": "recipient", - "nodeType": "VARIABLE_DECLARATION", - "scope": "673", - "src": { - "column": "22", - "end": "7783", - "id": "674", - "length": "17", - "line": "258", - "parentIndex": "671", - "start": "7767" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "675", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "22", - "end": "7773", - "id": "676", - "length": "7", - "line": "258", - "parentIndex": "673", - "start": "7767" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "677", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "677", - "src": { - "column": "41", - "end": "7799", - "id": "678", - "length": "14", - "line": "258", - "parentIndex": "671", - "start": "7786" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "679", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "41", - "end": "7792", - "id": "680", - "length": "7", - "line": "258", - "parentIndex": "677", - "start": "7786" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "22", - "end": "7799", - "id": "672", - "length": "33", - "line": "258", - "parentIndex": "669", - "start": "7767" - } - }, - "returnParameters": { - "id": "681", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "683", - "nodeType": "VARIABLE_DECLARATION", - "scope": "683", - "src": { - "column": "75", - "end": "7823", - "id": "684", - "length": "4", - "line": "258", - "parentIndex": "681", - "start": "7820" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "685", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "75", - "end": "7823", - "id": "686", - "length": "4", - "line": "258", - "parentIndex": "683", - "start": "7820" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "75", - "end": "7823", - "id": "682", - "length": "4", - "line": "258", - "parentIndex": "669", - "start": "7820" - } - }, - "scope": "635", - "src": { - "column": "4", - "end": "7825", - "id": "670", - "length": "77", - "line": "258", - "parentIndex": "635", - "start": "7749" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "707", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "8183", - "id": "690", - "length": "83", - "line": "267", - "parentIndex": "689", - "start": "8101" - } - }, - "id": "689", - "kind": "KIND_FUNCTION", - "name": "allowance", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "691", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "693", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "693", - "src": { - "column": "23", - "end": "8132", - "id": "694", - "length": "13", - "line": "267", - "parentIndex": "691", - "start": "8120" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "695", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "8126", - "id": "696", - "length": "7", - "line": "267", - "parentIndex": "693", - "start": "8120" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "697", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "697", - "src": { - "column": "38", - "end": "8149", - "id": "698", - "length": "15", - "line": "267", - "parentIndex": "691", - "start": "8135" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "699", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "38", - "end": "8141", - "id": "700", - "length": "7", - "line": "267", - "parentIndex": "697", - "start": "8135" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "8149", - "id": "692", - "length": "30", - "line": "267", - "parentIndex": "689", - "start": "8120" - } - }, - "returnParameters": { - "id": "701", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "703", - "nodeType": "VARIABLE_DECLARATION", - "scope": "703", - "src": { - "column": "78", - "end": "8181", - "id": "704", - "length": "7", - "line": "267", - "parentIndex": "701", - "start": "8175" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "705", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "78", - "end": "8181", - "id": "706", - "length": "7", - "line": "267", - "parentIndex": "703", - "start": "8175" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "78", - "end": "8181", - "id": "702", - "length": "7", - "line": "267", - "parentIndex": "689", - "start": "8175" - } - }, - "scope": "635", - "src": { - "column": "4", - "end": "8183", - "id": "690", - "length": "83", - "line": "267", - "parentIndex": "635", - "start": "8101" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address", - "typeString": "function(address,address)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "727", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "8910", - "id": "710", - "length": "74", - "line": "283", - "parentIndex": "709", - "start": "8837" - } - }, - "id": "709", - "kind": "KIND_FUNCTION", - "name": "approve", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "711", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "713", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "713", - "src": { - "column": "21", - "end": "8868", - "id": "714", - "length": "15", - "line": "283", - "parentIndex": "711", - "start": "8854" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "715", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "21", - "end": "8860", - "id": "716", - "length": "7", - "line": "283", - "parentIndex": "713", - "start": "8854" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "717", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "717", - "src": { - "column": "38", - "end": "8884", - "id": "718", - "length": "14", - "line": "283", - "parentIndex": "711", - "start": "8871" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "719", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "38", - "end": "8877", - "id": "720", - "length": "7", - "line": "283", - "parentIndex": "717", - "start": "8871" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "21", - "end": "8884", - "id": "712", - "length": "31", - "line": "283", - "parentIndex": "709", - "start": "8854" - } - }, - "returnParameters": { - "id": "721", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "723", - "nodeType": "VARIABLE_DECLARATION", - "scope": "723", - "src": { - "column": "72", - "end": "8908", - "id": "724", - "length": "4", - "line": "283", - "parentIndex": "721", - "start": "8905" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "725", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "72", - "end": "8908", - "id": "726", - "length": "4", - "line": "283", - "parentIndex": "723", - "start": "8905" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "72", - "end": "8908", - "id": "722", - "length": "4", - "line": "283", - "parentIndex": "709", - "start": "8905" - } - }, - "scope": "635", - "src": { - "column": "4", - "end": "8910", - "id": "710", - "length": "74", - "line": "283", - "parentIndex": "635", - "start": "8837" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "751", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "9344", - "id": "730", - "length": "127", - "line": "294", - "parentIndex": "729", - "start": "9218" - } - }, - "id": "729", - "kind": "KIND_FUNCTION", - "name": "transferFrom", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "731", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "733", - "name": "sender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "733", - "src": { - "column": "8", - "end": "9262", - "id": "734", - "length": "14", - "line": "295", - "parentIndex": "731", - "start": "9249" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "735", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "9255", - "id": "736", - "length": "7", - "line": "295", - "parentIndex": "733", - "start": "9249" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "737", - "name": "recipient", - "nodeType": "VARIABLE_DECLARATION", - "scope": "737", - "src": { - "column": "8", - "end": "9289", - "id": "738", - "length": "17", - "line": "296", - "parentIndex": "731", - "start": "9273" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "739", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "9279", - "id": "740", - "length": "7", - "line": "296", - "parentIndex": "737", - "start": "9273" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "741", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "741", - "src": { - "column": "8", - "end": "9313", - "id": "742", - "length": "14", - "line": "297", - "parentIndex": "731", - "start": "9300" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "743", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "9306", - "id": "744", - "length": "7", - "line": "297", - "parentIndex": "741", - "start": "9300" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "8", - "end": "9313", - "id": "732", - "length": "65", - "line": "295", - "parentIndex": "729", - "start": "9249" - } - }, - "returnParameters": { - "id": "745", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "747", - "nodeType": "VARIABLE_DECLARATION", - "scope": "747", - "src": { - "column": "24", - "end": "9342", - "id": "748", - "length": "4", - "line": "298", - "parentIndex": "745", - "start": "9339" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "749", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "24", - "end": "9342", - "id": "750", - "length": "4", - "line": "298", - "parentIndex": "747", - "start": "9339" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "24", - "end": "9342", - "id": "746", - "length": "4", - "line": "298", - "parentIndex": "729", - "start": "9339" - } - }, - "scope": "635", - "src": { - "column": "4", - "end": "9344", - "id": "730", - "length": "127", - "line": "294", - "parentIndex": "635", - "start": "9218" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", - "value": { - "id": "753", - "name": "Transfer", - "nodeType": "EVENT_DEFINITION", - "parameters": { - "id": "755", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "756", - "indexed": true, - "name": "from", - "nodeType": "VARIABLE_DECLARATION", - "scope": "756", - "src": { - "column": "19", - "end": "9548", - "id": "757", - "length": "20", - "line": "306", - "parentIndex": "755", - "start": "9529" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "758", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "19", - "end": "9535", - "id": "759", - "length": "7", - "line": "306", - "parentIndex": "756", - "start": "9529" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "760", - "indexed": true, - "name": "to", - "nodeType": "VARIABLE_DECLARATION", - "scope": "760", - "src": { - "column": "41", - "end": "9568", - "id": "761", - "length": "18", - "line": "306", - "parentIndex": "755", - "start": "9551" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "762", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "41", - "end": "9557", - "id": "763", - "length": "7", - "line": "306", - "parentIndex": "760", - "start": "9551" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "764", - "name": "value", - "nodeType": "VARIABLE_DECLARATION", - "scope": "764", - "src": { - "column": "61", - "end": "9583", - "id": "765", - "length": "13", - "line": "306", - "parentIndex": "755", - "start": "9571" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "766", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "61", - "end": "9577", - "id": "767", - "length": "7", - "line": "306", - "parentIndex": "764", - "start": "9571" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "4", - "end": "9585", - "id": "754", - "length": "72", - "line": "306", - "parentIndex": "753", - "start": "9514" - } - }, - "src": { - "column": "4", - "end": "9585", - "id": "754", - "length": "72", - "line": "306", - "parentIndex": "635", - "start": "9514" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u0026753", - "typeString": "event IERC20.Transfer" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", - "value": { - "id": "769", - "name": "Approval", - "nodeType": "EVENT_DEFINITION", - "parameters": { - "id": "771", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "772", - "indexed": true, - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "772", - "src": { - "column": "19", - "end": "9780", - "id": "773", - "length": "21", - "line": "312", - "parentIndex": "771", - "start": "9760" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "774", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "19", - "end": "9766", - "id": "775", - "length": "7", - "line": "312", - "parentIndex": "772", - "start": "9760" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "776", - "indexed": true, - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "776", - "src": { - "column": "42", - "end": "9805", - "id": "777", - "length": "23", - "line": "312", - "parentIndex": "771", - "start": "9783" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "778", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "42", - "end": "9789", - "id": "779", - "length": "7", - "line": "312", - "parentIndex": "776", - "start": "9783" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "780", - "name": "value", - "nodeType": "VARIABLE_DECLARATION", - "scope": "780", - "src": { - "column": "67", - "end": "9820", - "id": "781", - "length": "13", - "line": "312", - "parentIndex": "771", - "start": "9808" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "782", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "67", - "end": "9814", - "id": "783", - "length": "7", - "line": "312", - "parentIndex": "780", - "start": "9808" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "4", - "end": "9822", - "id": "770", - "length": "78", - "line": "312", - "parentIndex": "769", - "start": "9745" - } - }, - "src": { - "column": "4", - "end": "9822", - "id": "770", - "length": "78", - "line": "312", - "parentIndex": "635", - "start": "9745" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_IERC20_Approval_\u0026769", - "typeString": "event IERC20.Approval" - } - } - } - ], - "src": { - "end": "9824", - "length": "2596", - "line": "240", - "parentIndex": "625", - "start": "7229" - } - } - } - ] - }, - "src": { - "id": 626, - "line": 240, - "start": 7229, - "end": 9824, - "length": 2596, - "parent_index": 64 - } - }, - { - "id": 784, - "license": "MIT", - "name": "IERC20Metadata", - "absolute_path": "IERC20Metadata.sol", - "exported_symbols": [ - { - "id": 784, - "name": "IERC20Metadata", - "absolute_path": "IERC20Metadata.sol" - }, - { - "id": 625, - "name": "IERC20", - "absolute_path": "IERC20.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "790", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "9959", - "id": "791", - "length": "23", - "line": "318", - "parentIndex": "784", - "start": "9937" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "IERC20.sol", - "file": "../IERC20.sol", - "id": "792", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "784", - "sourceUnit": "625", - "src": { - "end": "9984", - "length": "23", - "line": "320", - "parentIndex": "784", - "start": "9962" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "baseContracts": [ - { - "baseName": { - "id": "799", - "name": "IERC20", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "625", - "src": { - "column": "28", - "end": "10137", - "id": "800", - "length": "6", - "line": "327", - "parentIndex": "796", - "start": "10132" - } - }, - "id": "797", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "28", - "end": "10137", - "id": "798", - "length": "6", - "line": "327", - "parentIndex": "796", - "start": "10132" - } - } - ], - "contractDependencies": [ - "625", - "792" - ], - "fullyImplemented": true, - "id": "796", - "kind": "KIND_LIBRARY", - "linearizedBaseContracts": [ - "625", - "796", - "792" - ], - "name": "IERC20Metadata", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "816", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "10257", - "id": "803", - "length": "54", - "line": "331", - "parentIndex": "802", - "start": "10204" - } - }, - "id": "802", - "kind": "KIND_FUNCTION", - "name": "name", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "804", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "806", - "nodeType": "VARIABLE_DECLARATION", - "scope": "806", - "src": { - "column": "43", - "end": "10255", - "id": "807", - "length": "13", - "line": "331", - "parentIndex": "804", - "start": "10243" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "808", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "43", - "end": "10248", - "id": "809", - "length": "6", - "line": "331", - "parentIndex": "806", - "start": "10243" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "43", - "end": "10255", - "id": "805", - "length": "13", - "line": "331", - "parentIndex": "802", - "start": "10243" - } - }, - "returnParameters": { - "id": "810", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "812", - "nodeType": "VARIABLE_DECLARATION", - "scope": "812", - "src": { - "column": "43", - "end": "10255", - "id": "813", - "length": "13", - "line": "331", - "parentIndex": "810", - "start": "10243" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "814", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "43", - "end": "10248", - "id": "815", - "length": "6", - "line": "331", - "parentIndex": "812", - "start": "10243" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "43", - "end": "10255", - "id": "811", - "length": "13", - "line": "331", - "parentIndex": "802", - "start": "10243" - } - }, - "scope": "796", - "src": { - "column": "4", - "end": "10257", - "id": "803", - "length": "54", - "line": "331", - "parentIndex": "796", - "start": "10204" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_string", - "typeString": "function(string)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "832", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "10380", - "id": "819", - "length": "56", - "line": "336", - "parentIndex": "818", - "start": "10325" - } - }, - "id": "818", - "kind": "KIND_FUNCTION", - "name": "symbol", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "820", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "822", - "nodeType": "VARIABLE_DECLARATION", - "scope": "822", - "src": { - "column": "45", - "end": "10378", - "id": "823", - "length": "13", - "line": "336", - "parentIndex": "820", - "start": "10366" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "824", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "45", - "end": "10371", - "id": "825", - "length": "6", - "line": "336", - "parentIndex": "822", - "start": "10366" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "45", - "end": "10378", - "id": "821", - "length": "13", - "line": "336", - "parentIndex": "818", - "start": "10366" - } - }, - "returnParameters": { - "id": "826", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "828", - "nodeType": "VARIABLE_DECLARATION", - "scope": "828", - "src": { - "column": "45", - "end": "10378", - "id": "829", - "length": "13", - "line": "336", - "parentIndex": "826", - "start": "10366" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "830", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "45", - "end": "10371", - "id": "831", - "length": "6", - "line": "336", - "parentIndex": "828", - "start": "10366" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "45", - "end": "10378", - "id": "827", - "length": "13", - "line": "336", - "parentIndex": "818", - "start": "10366" - } - }, - "scope": "796", - "src": { - "column": "4", - "end": "10380", - "id": "819", - "length": "56", - "line": "336", - "parentIndex": "796", - "start": "10325" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_string", - "typeString": "function(string)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "848", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "10506", - "id": "835", - "length": "50", - "line": "341", - "parentIndex": "834", - "start": "10457" - } - }, - "id": "834", - "kind": "KIND_FUNCTION", - "name": "decimals", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "836", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "838", - "nodeType": "VARIABLE_DECLARATION", - "scope": "838", - "src": { - "column": "47", - "end": "10504", - "id": "839", - "length": "5", - "line": "341", - "parentIndex": "836", - "start": "10500" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": "840", - "name": "uint8", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "47", - "end": "10504", - "id": "841", - "length": "5", - "line": "341", - "parentIndex": "838", - "start": "10500" - }, - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "47", - "end": "10504", - "id": "837", - "length": "5", - "line": "341", - "parentIndex": "834", - "start": "10500" - } - }, - "returnParameters": { - "id": "842", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "844", - "nodeType": "VARIABLE_DECLARATION", - "scope": "844", - "src": { - "column": "47", - "end": "10504", - "id": "845", - "length": "5", - "line": "341", - "parentIndex": "842", - "start": "10500" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": "846", - "name": "uint8", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "47", - "end": "10504", - "id": "847", - "length": "5", - "line": "341", - "parentIndex": "844", - "start": "10500" - }, - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "47", - "end": "10504", - "id": "843", - "length": "5", - "line": "341", - "parentIndex": "834", - "start": "10500" - } - }, - "scope": "796", - "src": { - "column": "4", - "end": "10506", - "id": "835", - "length": "50", - "line": "341", - "parentIndex": "796", - "start": "10457" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint8", - "typeString": "function(uint8)" - }, - "visibility": "EXTERNAL" - } - } - ], - "src": { - "end": "10508", - "length": "405", - "line": "327", - "parentIndex": "784", - "start": "10104" - } - } - } - ] - }, - "src": { - "id": 785, - "line": 327, - "start": 10104, - "end": 10508, - "length": 405, - "parent_index": 64 - } - }, - { - "id": 849, - "license": "MIT", - "name": "Context", - "absolute_path": "Context.sol", - "exported_symbols": [ - { - "id": 849, - "name": "Context", - "absolute_path": "Context.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "857", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "10619", - "id": "858", - "length": "23", - "line": "347", - "parentIndex": "849", - "start": "10597" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "fullyImplemented": true, - "id": "860", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "860" - ], - "name": "Context", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "876", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "66", - "end": "11246", - "id": "877", - "length": "34", - "line": "360", - "parentIndex": "862", - "start": "11213" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "882", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "11232", - "id": "883", - "length": "3", - "line": "361", - "parentIndex": "880", - "start": "11230" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "880", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "11239", - "id": "881", - "length": "10", - "line": "361", - "parentIndex": "876", - "start": "11230" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "functionReturnParameters": "862", - "id": "878", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "11240", - "id": "879", - "length": "18", - "line": "361", - "parentIndex": "862", - "start": "11223" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ] - }, - "id": "862", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_msgSender", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "864", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "866", - "nodeType": "VARIABLE_DECLARATION", - "scope": "866", - "src": { - "column": "57", - "end": "11210", - "id": "867", - "length": "7", - "line": "360", - "parentIndex": "864", - "start": "11204" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "868", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "57", - "end": "11210", - "id": "869", - "length": "7", - "line": "360", - "parentIndex": "866", - "start": "11204" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "57", - "end": "11210", - "id": "865", - "length": "7", - "line": "360", - "parentIndex": "862", - "start": "11204" - } - }, - "returnParameters": { - "id": "870", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "872", - "nodeType": "VARIABLE_DECLARATION", - "scope": "872", - "src": { - "column": "57", - "end": "11210", - "id": "873", - "length": "7", - "line": "360", - "parentIndex": "870", - "start": "11204" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "874", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "57", - "end": "11210", - "id": "875", - "length": "7", - "line": "360", - "parentIndex": "872", - "start": "11204" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "57", - "end": "11210", - "id": "871", - "length": "7", - "line": "360", - "parentIndex": "862", - "start": "11204" - } - }, - "scope": "860", - "src": { - "column": "4", - "end": "11246", - "id": "863", - "length": "96", - "line": "360", - "parentIndex": "860", - "start": "11151" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "899", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "71", - "end": "11351", - "id": "900", - "length": "32", - "line": "364", - "parentIndex": "885", - "start": "11320" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "905", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "11339", - "id": "906", - "length": "3", - "line": "365", - "parentIndex": "903", - "start": "11337" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "903", - "memberName": "data", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "11344", - "id": "904", - "length": "8", - "line": "365", - "parentIndex": "899", - "start": "11337" - }, - "typeDescription": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - }, - "functionReturnParameters": "885", - "id": "901", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "11345", - "id": "902", - "length": "16", - "line": "365", - "parentIndex": "885", - "start": "11330" - }, - "typeDescription": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - } - ] - }, - "id": "885", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_msgData", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "887", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "889", - "nodeType": "VARIABLE_DECLARATION", - "scope": "889", - "src": { - "column": "55", - "end": "11317", - "id": "890", - "length": "14", - "line": "364", - "parentIndex": "887", - "start": "11304" - }, - "stateMutability": "MUTABLE", - "storageLocation": "CALLDATA", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "891", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "55", - "end": "11308", - "id": "892", - "length": "5", - "line": "364", - "parentIndex": "889", - "start": "11304" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "55", - "end": "11317", - "id": "888", - "length": "14", - "line": "364", - "parentIndex": "885", - "start": "11304" - } - }, - "returnParameters": { - "id": "893", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "895", - "nodeType": "VARIABLE_DECLARATION", - "scope": "895", - "src": { - "column": "55", - "end": "11317", - "id": "896", - "length": "14", - "line": "364", - "parentIndex": "893", - "start": "11304" - }, - "stateMutability": "MUTABLE", - "storageLocation": "CALLDATA", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "897", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "55", - "end": "11308", - "id": "898", - "length": "5", - "line": "364", - "parentIndex": "895", - "start": "11304" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "55", - "end": "11317", - "id": "894", - "length": "14", - "line": "364", - "parentIndex": "885", - "start": "11304" - } - }, - "scope": "860", - "src": { - "column": "4", - "end": "11351", - "id": "886", - "length": "99", - "line": "364", - "parentIndex": "860", - "start": "11253" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_bytes", - "typeString": "function(bytes)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - } - ], - "src": { - "end": "11353", - "length": "235", - "line": "359", - "parentIndex": "849", - "start": "11119" - } - } - } - ] - }, - "src": { - "id": 850, - "line": 359, - "start": 11119, - "end": 11353, - "length": 235, - "parent_index": 64 - } - }, - { - "id": 907, - "license": "MIT", - "name": "ERC20", - "absolute_path": "ERC20.sol", - "exported_symbols": [ - { - "id": 907, - "name": "ERC20", - "absolute_path": "ERC20.sol" - }, - { - "id": 924, - "name": "Context" - }, - { - "id": 928, - "name": "IERC20" - }, - { - "id": 932, - "name": "IERC20Metadata" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "917", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "11483", - "id": "918", - "length": "23", - "line": "372", - "parentIndex": "907", - "start": "11461" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "baseContracts": [ - { - "baseName": { - "id": "926", - "name": "Context", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "849", - "src": { - "column": "18", - "end": "12891", - "id": "927", - "length": "7", - "line": "406", - "parentIndex": "923", - "start": "12885" - } - }, - "id": "924", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "18", - "end": "12891", - "id": "925", - "length": "7", - "line": "406", - "parentIndex": "923", - "start": "12885" - } - }, - { - "baseName": { - "id": "930", - "name": "IERC20", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "625", - "src": { - "column": "27", - "end": "12899", - "id": "931", - "length": "6", - "line": "406", - "parentIndex": "923", - "start": "12894" - } - }, - "id": "928", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "27", - "end": "12899", - "id": "929", - "length": "6", - "line": "406", - "parentIndex": "923", - "start": "12894" - } - }, - { - "baseName": { - "id": "934", - "name": "IERC20Metadata", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "784", - "src": { - "column": "35", - "end": "12915", - "id": "935", - "length": "14", - "line": "406", - "parentIndex": "923", - "start": "12902" - } - }, - "id": "932", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "35", - "end": "12915", - "id": "933", - "length": "14", - "line": "406", - "parentIndex": "923", - "start": "12902" - } - } - ], - "contractDependencies": [ - "849", - "625", - "784" - ], - "fullyImplemented": true, - "id": "923", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "849", - "625", - "784", - "923" - ], - "name": "ERC20", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "937", - "isStateVariable": true, - "name": "_balances", - "nodeType": "VARIABLE_DECLARATION", - "scope": "923", - "src": { - "column": "4", - "end": "12968", - "id": "938", - "length": "46", - "line": "407", - "parentIndex": "923", - "start": "12923" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "typeName": { - "id": "939", - "keyType": { - "id": "941", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "12", - "end": "12937", - "id": "942", - "length": "7", - "line": "407", - "parentIndex": "939", - "start": "12931" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": { - "column": "4", - "end": "12949", - "id": "940", - "length": "27", - "line": "407", - "parentIndex": "937", - "start": "12923" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "valueType": { - "id": "943", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "12948", - "id": "944", - "length": "7", - "line": "407", - "parentIndex": "939", - "start": "12942" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "946", - "isStateVariable": true, - "name": "_allowances", - "nodeType": "VARIABLE_DECLARATION", - "scope": "923", - "src": { - "column": "4", - "end": "13042", - "id": "947", - "length": "68", - "line": "409", - "parentIndex": "923", - "start": "12975" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - "typeName": { - "id": "948", - "keyType": { - "id": "950", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "12", - "end": "12989", - "id": "951", - "length": "7", - "line": "409", - "parentIndex": "948", - "start": "12983" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": { - "column": "4", - "end": "13021", - "id": "949", - "length": "47", - "line": "409", - "parentIndex": "946", - "start": "12975" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - "valueType": { - "id": "952", - "keyType": { - "id": "955", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "13008", - "id": "956", - "length": "7", - "line": "409", - "parentIndex": "948", - "start": "13002" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "name": "mapping(address=\u003euint256)", - "nodeType": "MAPPING_TYPE_NAME", - "src": { - "column": "23", - "end": "13020", - "id": "953", - "length": "27", - "line": "409", - "parentIndex": "948", - "start": "12994" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256", - "typeString": "mapping(address=\u003euint256)" - }, - "valueType": { - "id": "957", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "42", - "end": "13019", - "id": "958", - "length": "7", - "line": "409", - "parentIndex": "948", - "start": "13013" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "960", - "isStateVariable": true, - "name": "_totalSupply", - "nodeType": "VARIABLE_DECLARATION", - "scope": "923", - "src": { - "column": "4", - "end": "13077", - "id": "961", - "length": "29", - "line": "411", - "parentIndex": "923", - "start": "13049" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "962", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "4", - "end": "13055", - "id": "963", - "length": "7", - "line": "411", - "parentIndex": "960", - "start": "13049" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "965", - "isStateVariable": true, - "name": "_name", - "nodeType": "VARIABLE_DECLARATION", - "scope": "923", - "src": { - "column": "4", - "end": "13104", - "id": "966", - "length": "21", - "line": "413", - "parentIndex": "923", - "start": "13084" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "967", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "4", - "end": "13089", - "id": "968", - "length": "6", - "line": "413", - "parentIndex": "965", - "start": "13084" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "970", - "isStateVariable": true, - "name": "_symbol", - "nodeType": "VARIABLE_DECLARATION", - "scope": "923", - "src": { - "column": "4", - "end": "13132", - "id": "971", - "length": "23", - "line": "414", - "parentIndex": "923", - "start": "13110" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "972", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "4", - "end": "13115", - "id": "973", - "length": "6", - "line": "414", - "parentIndex": "970", - "start": "13110" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "988", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "60", - "end": "13427", - "id": "989", - "length": "57", - "line": "422", - "parentIndex": "975", - "start": "13371" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "992", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "994", - "name": "_name", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "965", - "src": { - "column": "8", - "end": "13385", - "id": "995", - "length": "5", - "line": "423", - "parentIndex": "992", - "start": "13381" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "996", - "name": "name_", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "996", - "src": { - "column": "16", - "end": "13393", - "id": "997", - "length": "5", - "line": "423", - "parentIndex": "992", - "start": "13389" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - }, - "src": { - "column": "8", - "end": "13393", - "id": "993", - "length": "13", - "line": "423", - "parentIndex": "988", - "start": "13381" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - }, - "id": "990", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "13394", - "id": "991", - "length": "14", - "line": "423", - "parentIndex": "988", - "start": "13381" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1000", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1002", - "name": "_symbol", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "970", - "src": { - "column": "8", - "end": "13410", - "id": "1003", - "length": "7", - "line": "424", - "parentIndex": "1000", - "start": "13404" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1004", - "name": "symbol_", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1004", - "src": { - "column": "18", - "end": "13420", - "id": "1005", - "length": "7", - "line": "424", - "parentIndex": "1000", - "start": "13414" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - }, - "src": { - "column": "8", - "end": "13420", - "id": "1001", - "length": "17", - "line": "424", - "parentIndex": "988", - "start": "13404" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - }, - "id": "998", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "13421", - "id": "999", - "length": "18", - "line": "424", - "parentIndex": "988", - "start": "13404" - } - } - } - ] - }, - "id": "975", - "implemented": true, - "kind": "CONSTRUCTOR", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "977", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "979", - "name": "name_", - "nodeType": "VARIABLE_DECLARATION", - "scope": "979", - "src": { - "column": "16", - "end": "13345", - "id": "980", - "length": "19", - "line": "422", - "parentIndex": "977", - "start": "13327" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "981", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "16", - "end": "13332", - "id": "982", - "length": "6", - "line": "422", - "parentIndex": "979", - "start": "13327" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "983", - "name": "symbol_", - "nodeType": "VARIABLE_DECLARATION", - "scope": "983", - "src": { - "column": "37", - "end": "13368", - "id": "984", - "length": "21", - "line": "422", - "parentIndex": "977", - "start": "13348" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "985", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "37", - "end": "13353", - "id": "986", - "length": "6", - "line": "422", - "parentIndex": "983", - "start": "13348" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "16", - "end": "13368", - "id": "978", - "length": "42", - "line": "422", - "parentIndex": "975", - "start": "13327" - } - }, - "returnParameters": { - "id": "987", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "13427", - "id": "976", - "length": "113", - "line": "422", - "parentIndex": "975", - "start": "13315" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "13427", - "id": "976", - "length": "113", - "line": "422", - "parentIndex": "923", - "start": "13315" - }, - "stateMutability": "NONPAYABLE", - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1023", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "73", - "end": "13590", - "id": "1024", - "length": "29", - "line": "430", - "parentIndex": "1007", - "start": "13562" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1027", - "name": "_name", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "965", - "src": { - "column": "15", - "end": "13583", - "id": "1028", - "length": "5", - "line": "431", - "parentIndex": "1023", - "start": "13579" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - }, - "functionReturnParameters": "1007", - "id": "1025", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "13584", - "id": "1026", - "length": "13", - "line": "431", - "parentIndex": "1007", - "start": "13572" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - } - ] - }, - "id": "1007", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "name", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "1009", - "name": "name", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "802", - "src": { - "column": "40", - "end": "13536", - "id": "1010", - "length": "8", - "line": "430", - "parentIndex": "1007", - "start": "13529" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_string", - "typeString": "function(string)" - } - } - ], - "parameters": { - "id": "1011", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1013", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1013", - "src": { - "column": "58", - "end": "13559", - "id": "1014", - "length": "13", - "line": "430", - "parentIndex": "1011", - "start": "13547" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "1015", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "58", - "end": "13552", - "id": "1016", - "length": "6", - "line": "430", - "parentIndex": "1013", - "start": "13547" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "58", - "end": "13559", - "id": "1012", - "length": "13", - "line": "430", - "parentIndex": "1007", - "start": "13547" - } - }, - "returnParameters": { - "id": "1017", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1019", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1019", - "src": { - "column": "58", - "end": "13559", - "id": "1020", - "length": "13", - "line": "430", - "parentIndex": "1017", - "start": "13547" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "1021", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "58", - "end": "13552", - "id": "1022", - "length": "6", - "line": "430", - "parentIndex": "1019", - "start": "13547" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "58", - "end": "13559", - "id": "1018", - "length": "13", - "line": "430", - "parentIndex": "1007", - "start": "13547" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "13590", - "id": "1008", - "length": "98", - "line": "430", - "parentIndex": "923", - "start": "13493" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_string", - "typeString": "function(string)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1046", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "75", - "end": "13805", - "id": "1047", - "length": "31", - "line": "438", - "parentIndex": "1030", - "start": "13775" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1050", - "name": "_symbol", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "970", - "src": { - "column": "15", - "end": "13798", - "id": "1051", - "length": "7", - "line": "439", - "parentIndex": "1046", - "start": "13792" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - }, - "functionReturnParameters": "1030", - "id": "1048", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "13799", - "id": "1049", - "length": "15", - "line": "439", - "parentIndex": "1030", - "start": "13785" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - } - ] - }, - "id": "1030", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "symbol", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "1032", - "name": "symbol", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "818", - "src": { - "column": "42", - "end": "13749", - "id": "1033", - "length": "8", - "line": "438", - "parentIndex": "1030", - "start": "13742" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_string", - "typeString": "function(string)" - } - } - ], - "parameters": { - "id": "1034", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1036", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1036", - "src": { - "column": "60", - "end": "13772", - "id": "1037", - "length": "13", - "line": "438", - "parentIndex": "1034", - "start": "13760" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "1038", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "60", - "end": "13765", - "id": "1039", - "length": "6", - "line": "438", - "parentIndex": "1036", - "start": "13760" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "60", - "end": "13772", - "id": "1035", - "length": "13", - "line": "438", - "parentIndex": "1030", - "start": "13760" - } - }, - "returnParameters": { - "id": "1040", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1042", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1042", - "src": { - "column": "60", - "end": "13772", - "id": "1043", - "length": "13", - "line": "438", - "parentIndex": "1040", - "start": "13760" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "1044", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "60", - "end": "13765", - "id": "1045", - "length": "6", - "line": "438", - "parentIndex": "1042", - "start": "13760" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "60", - "end": "13772", - "id": "1041", - "length": "13", - "line": "438", - "parentIndex": "1030", - "start": "13760" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "13805", - "id": "1031", - "length": "102", - "line": "438", - "parentIndex": "923", - "start": "13704" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_string", - "typeString": "function(string)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1069", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "69", - "end": "14529", - "id": "1070", - "length": "26", - "line": "455", - "parentIndex": "1053", - "start": "14504" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "3138", - "id": "1073", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "15", - "end": "14522", - "id": "1074", - "length": "2", - "line": "456", - "parentIndex": "1069", - "start": "14521" - }, - "typeDescription": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - } - }, - "functionReturnParameters": "1053", - "id": "1071", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "14523", - "id": "1072", - "length": "10", - "line": "456", - "parentIndex": "1053", - "start": "14514" - }, - "typeDescription": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - } - } - } - ] - }, - "id": "1053", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "decimals", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "1055", - "name": "decimals", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "834", - "src": { - "column": "44", - "end": "14486", - "id": "1056", - "length": "8", - "line": "455", - "parentIndex": "1053", - "start": "14479" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint8", - "typeString": "function(uint8)" - } - } - ], - "parameters": { - "id": "1057", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1059", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1059", - "src": { - "column": "62", - "end": "14501", - "id": "1060", - "length": "5", - "line": "455", - "parentIndex": "1057", - "start": "14497" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": "1061", - "name": "uint8", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "14501", - "id": "1062", - "length": "5", - "line": "455", - "parentIndex": "1059", - "start": "14497" - }, - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "62", - "end": "14501", - "id": "1058", - "length": "5", - "line": "455", - "parentIndex": "1053", - "start": "14497" - } - }, - "returnParameters": { - "id": "1063", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1065", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1065", - "src": { - "column": "62", - "end": "14501", - "id": "1066", - "length": "5", - "line": "455", - "parentIndex": "1063", - "start": "14497" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": "1067", - "name": "uint8", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "14501", - "id": "1068", - "length": "5", - "line": "455", - "parentIndex": "1065", - "start": "14497" - }, - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "62", - "end": "14501", - "id": "1064", - "length": "5", - "line": "455", - "parentIndex": "1053", - "start": "14497" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "14529", - "id": "1054", - "length": "91", - "line": "455", - "parentIndex": "923", - "start": "14439" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint8", - "typeString": "function(uint8)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1092", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "74", - "end": "14695", - "id": "1093", - "length": "36", - "line": "462", - "parentIndex": "1076", - "start": "14660" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1096", - "name": "_totalSupply", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "960", - "src": { - "column": "15", - "end": "14688", - "id": "1097", - "length": "12", - "line": "463", - "parentIndex": "1092", - "start": "14677" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "1076", - "id": "1094", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "14689", - "id": "1095", - "length": "20", - "line": "463", - "parentIndex": "1076", - "start": "14670" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "1076", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "totalSupply", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "1078", - "name": "totalSupply", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "637", - "src": { - "column": "47", - "end": "14640", - "id": "1079", - "length": "8", - "line": "462", - "parentIndex": "1076", - "start": "14633" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256", - "typeString": "function(uint256)" - } - } - ], - "parameters": { - "id": "1080", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1082", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1082", - "src": { - "column": "65", - "end": "14657", - "id": "1083", - "length": "7", - "line": "462", - "parentIndex": "1080", - "start": "14651" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1084", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "65", - "end": "14657", - "id": "1085", - "length": "7", - "line": "462", - "parentIndex": "1082", - "start": "14651" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "14657", - "id": "1081", - "length": "7", - "line": "462", - "parentIndex": "1076", - "start": "14651" - } - }, - "returnParameters": { - "id": "1086", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1088", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1088", - "src": { - "column": "65", - "end": "14657", - "id": "1089", - "length": "7", - "line": "462", - "parentIndex": "1086", - "start": "14651" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1090", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "65", - "end": "14657", - "id": "1091", - "length": "7", - "line": "462", - "parentIndex": "1088", - "start": "14651" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "14657", - "id": "1087", - "length": "7", - "line": "462", - "parentIndex": "1076", - "start": "14651" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "14695", - "id": "1077", - "length": "106", - "line": "462", - "parentIndex": "923", - "start": "14590" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256", - "typeString": "function(uint256)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1115", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "87", - "end": "14878", - "id": "1116", - "length": "42", - "line": "469", - "parentIndex": "1099", - "start": "14837" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1123", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1123", - "src": { - "column": "25", - "end": "14870", - "id": "1124", - "length": "7", - "line": "470", - "parentIndex": "1119", - "start": "14864" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1119", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1121", - "name": "_balances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "937", - "src": { - "column": "15", - "end": "14862", - "id": "1122", - "length": "9", - "line": "470", - "parentIndex": "1119", - "start": "14854" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "15", - "end": "14871", - "id": "1120", - "length": "18", - "line": "470", - "parentIndex": "1115", - "start": "14854" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "functionReturnParameters": "1099", - "id": "1117", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "14872", - "id": "1118", - "length": "26", - "line": "470", - "parentIndex": "1099", - "start": "14847" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - } - ] - }, - "id": "1099", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "balanceOf", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "1101", - "name": "balanceOf", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "653", - "src": { - "column": "60", - "end": "14817", - "id": "1102", - "length": "8", - "line": "469", - "parentIndex": "1099", - "start": "14810" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - ], - "parameters": { - "id": "1103", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1105", - "name": "account", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1105", - "src": { - "column": "23", - "end": "14787", - "id": "1106", - "length": "15", - "line": "469", - "parentIndex": "1103", - "start": "14773" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1107", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "14779", - "id": "1108", - "length": "7", - "line": "469", - "parentIndex": "1105", - "start": "14773" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "14787", - "id": "1104", - "length": "15", - "line": "469", - "parentIndex": "1099", - "start": "14773" - } - }, - "returnParameters": { - "id": "1109", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1111", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1111", - "src": { - "column": "78", - "end": "14834", - "id": "1112", - "length": "7", - "line": "469", - "parentIndex": "1109", - "start": "14828" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1113", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "78", - "end": "14834", - "id": "1114", - "length": "7", - "line": "469", - "parentIndex": "1111", - "start": "14828" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "78", - "end": "14834", - "id": "1110", - "length": "7", - "line": "469", - "parentIndex": "1099", - "start": "14828" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "14878", - "id": "1100", - "length": "125", - "line": "469", - "parentIndex": "923", - "start": "14754" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1146", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "89", - "end": "15263", - "id": "1147", - "length": "104", - "line": "481", - "parentIndex": "1126", - "start": "15160" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "1150" - ], - "declarations": [ - { - "id": "1150", - "mutability": "MUTABLE", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1146", - "src": { - "column": "8", - "end": "15182", - "id": "1151", - "length": "13", - "line": "482", - "parentIndex": "1148", - "start": "15170" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1152", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "15176", - "id": "1153", - "length": "7", - "line": "482", - "parentIndex": "1150", - "start": "15170" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "1148", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1156", - "name": "_msgSender", - "nodeType": "IDENTIFIER", - "src": { - "column": "24", - "end": "15195", - "id": "1157", - "length": "10", - "line": "482", - "parentIndex": "1154", - "start": "15186" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "1154", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "24", - "end": "15197", - "id": "1155", - "length": "12", - "line": "482", - "parentIndex": "1148", - "start": "15186" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "15198", - "id": "1149", - "length": "29", - "line": "482", - "parentIndex": "1146", - "start": "15170" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1160", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1148", - "src": { - "column": "18", - "end": "15222", - "id": "1161", - "length": "5", - "line": "483", - "parentIndex": "1158", - "start": "15218" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1162", - "name": "to", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1162", - "src": { - "column": "25", - "end": "15226", - "id": "1163", - "length": "2", - "line": "483", - "parentIndex": "1158", - "start": "15225" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1164", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1164", - "src": { - "column": "29", - "end": "15234", - "id": "1165", - "length": "6", - "line": "483", - "parentIndex": "1158", - "start": "15229" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "1166", - "name": "_transfer", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "15216", - "id": "1167", - "length": "9", - "line": "483", - "parentIndex": "1158", - "start": "15208" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - } - } - }, - "id": "1158", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "15235", - "id": "1159", - "length": "28", - "line": "483", - "parentIndex": "1146", - "start": "15208" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "typeString": "function(address,address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "1170", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "15", - "end": "15256", - "id": "1171", - "length": "4", - "line": "484", - "parentIndex": "1146", - "start": "15253" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - "functionReturnParameters": "1126", - "id": "1168", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "15257", - "id": "1169", - "length": "12", - "line": "484", - "parentIndex": "1126", - "start": "15246" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - ] - }, - "id": "1126", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "transfer", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "1128", - "name": "transfer", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "669", - "src": { - "column": "65", - "end": "15143", - "id": "1129", - "length": "8", - "line": "481", - "parentIndex": "1126", - "start": "15136" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - } - } - ], - "parameters": { - "id": "1130", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1132", - "name": "to", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1132", - "src": { - "column": "22", - "end": "15102", - "id": "1133", - "length": "10", - "line": "481", - "parentIndex": "1130", - "start": "15093" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1134", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "22", - "end": "15099", - "id": "1135", - "length": "7", - "line": "481", - "parentIndex": "1132", - "start": "15093" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1136", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1136", - "src": { - "column": "34", - "end": "15118", - "id": "1137", - "length": "14", - "line": "481", - "parentIndex": "1130", - "start": "15105" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1138", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "34", - "end": "15111", - "id": "1139", - "length": "7", - "line": "481", - "parentIndex": "1136", - "start": "15105" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "22", - "end": "15118", - "id": "1131", - "length": "26", - "line": "481", - "parentIndex": "1126", - "start": "15093" - } - }, - "returnParameters": { - "id": "1140", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1142", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1142", - "src": { - "column": "83", - "end": "15157", - "id": "1143", - "length": "4", - "line": "481", - "parentIndex": "1140", - "start": "15154" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "1144", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "83", - "end": "15157", - "id": "1145", - "length": "4", - "line": "481", - "parentIndex": "1142", - "start": "15154" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "83", - "end": "15157", - "id": "1141", - "length": "4", - "line": "481", - "parentIndex": "1126", - "start": "15154" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "15263", - "id": "1127", - "length": "189", - "line": "481", - "parentIndex": "923", - "start": "15075" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1193", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "102", - "end": "15470", - "id": "1194", - "length": "51", - "line": "490", - "parentIndex": "1173", - "start": "15420" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1205", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1205", - "src": { - "column": "34", - "end": "15462", - "id": "1206", - "length": "7", - "line": "491", - "parentIndex": "1197", - "start": "15456" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1197", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1203", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1203", - "src": { - "column": "27", - "end": "15453", - "id": "1204", - "length": "5", - "line": "491", - "parentIndex": "1199", - "start": "15449" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1199", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1201", - "name": "_allowances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "946", - "src": { - "column": "15", - "end": "15447", - "id": "1202", - "length": "11", - "line": "491", - "parentIndex": "1199", - "start": "15437" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "15", - "end": "15454", - "id": "1200", - "length": "18", - "line": "491", - "parentIndex": "1197", - "start": "15437" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "15", - "end": "15463", - "id": "1198", - "length": "27", - "line": "491", - "parentIndex": "1193", - "start": "15437" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "functionReturnParameters": "1173", - "id": "1195", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "15464", - "id": "1196", - "length": "35", - "line": "491", - "parentIndex": "1173", - "start": "15430" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - } - } - } - ] - }, - "id": "1173", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "allowance", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "1175", - "name": "allowance", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "689", - "src": { - "column": "75", - "end": "15400", - "id": "1176", - "length": "8", - "line": "490", - "parentIndex": "1173", - "start": "15393" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address", - "typeString": "function(address,address)" - } - } - ], - "parameters": { - "id": "1177", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1179", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1179", - "src": { - "column": "23", - "end": "15353", - "id": "1180", - "length": "13", - "line": "490", - "parentIndex": "1177", - "start": "15341" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1181", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "15347", - "id": "1182", - "length": "7", - "line": "490", - "parentIndex": "1179", - "start": "15341" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1183", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1183", - "src": { - "column": "38", - "end": "15370", - "id": "1184", - "length": "15", - "line": "490", - "parentIndex": "1177", - "start": "15356" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1185", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "38", - "end": "15362", - "id": "1186", - "length": "7", - "line": "490", - "parentIndex": "1183", - "start": "15356" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "15370", - "id": "1178", - "length": "30", - "line": "490", - "parentIndex": "1173", - "start": "15341" - } - }, - "returnParameters": { - "id": "1187", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1189", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1189", - "src": { - "column": "93", - "end": "15417", - "id": "1190", - "length": "7", - "line": "490", - "parentIndex": "1187", - "start": "15411" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1191", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "93", - "end": "15417", - "id": "1192", - "length": "7", - "line": "490", - "parentIndex": "1189", - "start": "15411" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "93", - "end": "15417", - "id": "1188", - "length": "7", - "line": "490", - "parentIndex": "1173", - "start": "15411" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "15470", - "id": "1174", - "length": "149", - "line": "490", - "parentIndex": "923", - "start": "15322" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address", - "typeString": "function(address,address)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1228", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "93", - "end": "15975", - "id": "1229", - "length": "108", - "line": "504", - "parentIndex": "1208", - "start": "15868" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "1232" - ], - "declarations": [ - { - "id": "1232", - "mutability": "MUTABLE", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1228", - "src": { - "column": "8", - "end": "15890", - "id": "1233", - "length": "13", - "line": "505", - "parentIndex": "1230", - "start": "15878" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1234", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "15884", - "id": "1235", - "length": "7", - "line": "505", - "parentIndex": "1232", - "start": "15878" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "1230", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1238", - "name": "_msgSender", - "nodeType": "IDENTIFIER", - "src": { - "column": "24", - "end": "15903", - "id": "1239", - "length": "10", - "line": "505", - "parentIndex": "1236", - "start": "15894" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "1236", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "24", - "end": "15905", - "id": "1237", - "length": "12", - "line": "505", - "parentIndex": "1230", - "start": "15894" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "15906", - "id": "1231", - "length": "29", - "line": "505", - "parentIndex": "1228", - "start": "15878" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1242", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1230", - "src": { - "column": "17", - "end": "15929", - "id": "1243", - "length": "5", - "line": "506", - "parentIndex": "1240", - "start": "15925" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1244", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1244", - "src": { - "column": "24", - "end": "15938", - "id": "1245", - "length": "7", - "line": "506", - "parentIndex": "1240", - "start": "15932" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1246", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1246", - "src": { - "column": "33", - "end": "15946", - "id": "1247", - "length": "6", - "line": "506", - "parentIndex": "1240", - "start": "15941" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "1248", - "name": "_approve", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "15923", - "id": "1249", - "length": "8", - "line": "506", - "parentIndex": "1240", - "start": "15916" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - } - } - }, - "id": "1240", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "15947", - "id": "1241", - "length": "32", - "line": "506", - "parentIndex": "1228", - "start": "15916" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "typeString": "function(address,address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "1252", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "15", - "end": "15968", - "id": "1253", - "length": "4", - "line": "507", - "parentIndex": "1228", - "start": "15965" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - "functionReturnParameters": "1208", - "id": "1250", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "15969", - "id": "1251", - "length": "12", - "line": "507", - "parentIndex": "1208", - "start": "15958" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - ] - }, - "id": "1208", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "approve", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "1210", - "name": "approve", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "709", - "src": { - "column": "69", - "end": "15851", - "id": "1211", - "length": "8", - "line": "504", - "parentIndex": "1208", - "start": "15844" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - } - } - ], - "parameters": { - "id": "1212", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1214", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1214", - "src": { - "column": "21", - "end": "15810", - "id": "1215", - "length": "15", - "line": "504", - "parentIndex": "1212", - "start": "15796" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1216", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "21", - "end": "15802", - "id": "1217", - "length": "7", - "line": "504", - "parentIndex": "1214", - "start": "15796" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1218", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1218", - "src": { - "column": "38", - "end": "15826", - "id": "1219", - "length": "14", - "line": "504", - "parentIndex": "1212", - "start": "15813" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1220", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "38", - "end": "15819", - "id": "1221", - "length": "7", - "line": "504", - "parentIndex": "1218", - "start": "15813" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "21", - "end": "15826", - "id": "1213", - "length": "31", - "line": "504", - "parentIndex": "1208", - "start": "15796" - } - }, - "returnParameters": { - "id": "1222", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1224", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1224", - "src": { - "column": "87", - "end": "15865", - "id": "1225", - "length": "4", - "line": "504", - "parentIndex": "1222", - "start": "15862" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "1226", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "87", - "end": "15865", - "id": "1227", - "length": "4", - "line": "504", - "parentIndex": "1224", - "start": "15862" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "87", - "end": "15865", - "id": "1223", - "length": "4", - "line": "504", - "parentIndex": "1208", - "start": "15862" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "15975", - "id": "1209", - "length": "197", - "line": "504", - "parentIndex": "923", - "start": "15779" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1279", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "107", - "end": "16793", - "id": "1280", - "length": "153", - "line": "526", - "parentIndex": "1255", - "start": "16641" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "1283" - ], - "declarations": [ - { - "id": "1283", - "mutability": "MUTABLE", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1279", - "src": { - "column": "8", - "end": "16665", - "id": "1284", - "length": "15", - "line": "527", - "parentIndex": "1281", - "start": "16651" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1285", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "16657", - "id": "1286", - "length": "7", - "line": "527", - "parentIndex": "1283", - "start": "16651" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "1281", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1289", - "name": "_msgSender", - "nodeType": "IDENTIFIER", - "src": { - "column": "26", - "end": "16678", - "id": "1290", - "length": "10", - "line": "527", - "parentIndex": "1287", - "start": "16669" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "1287", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "26", - "end": "16680", - "id": "1288", - "length": "12", - "line": "527", - "parentIndex": "1281", - "start": "16669" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "16681", - "id": "1282", - "length": "31", - "line": "527", - "parentIndex": "1279", - "start": "16651" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1293", - "name": "from", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1293", - "src": { - "column": "24", - "end": "16710", - "id": "1294", - "length": "4", - "line": "528", - "parentIndex": "1291", - "start": "16707" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1295", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1281", - "src": { - "column": "30", - "end": "16719", - "id": "1296", - "length": "7", - "line": "528", - "parentIndex": "1291", - "start": "16713" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1297", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1297", - "src": { - "column": "39", - "end": "16727", - "id": "1298", - "length": "6", - "line": "528", - "parentIndex": "1291", - "start": "16722" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "1299", - "name": "_spendAllowance", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "16705", - "id": "1300", - "length": "15", - "line": "528", - "parentIndex": "1291", - "start": "16691" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - } - } - }, - "id": "1291", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "16728", - "id": "1292", - "length": "38", - "line": "528", - "parentIndex": "1279", - "start": "16691" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "typeString": "function(address,address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1303", - "name": "from", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1303", - "src": { - "column": "18", - "end": "16752", - "id": "1304", - "length": "4", - "line": "529", - "parentIndex": "1301", - "start": "16749" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1305", - "name": "to", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1305", - "src": { - "column": "24", - "end": "16756", - "id": "1306", - "length": "2", - "line": "529", - "parentIndex": "1301", - "start": "16755" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1307", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1307", - "src": { - "column": "28", - "end": "16764", - "id": "1308", - "length": "6", - "line": "529", - "parentIndex": "1301", - "start": "16759" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "1309", - "name": "_transfer", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "16747", - "id": "1310", - "length": "9", - "line": "529", - "parentIndex": "1301", - "start": "16739" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - } - } - }, - "id": "1301", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "16765", - "id": "1302", - "length": "27", - "line": "529", - "parentIndex": "1279", - "start": "16739" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "typeString": "function(address,address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "1313", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "15", - "end": "16786", - "id": "1314", - "length": "4", - "line": "530", - "parentIndex": "1279", - "start": "16783" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - "functionReturnParameters": "1255", - "id": "1311", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "16787", - "id": "1312", - "length": "12", - "line": "530", - "parentIndex": "1255", - "start": "16776" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - ] - }, - "id": "1255", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "transferFrom", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "1257", - "name": "transferFrom", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "729", - "src": { - "column": "83", - "end": "16624", - "id": "1258", - "length": "8", - "line": "526", - "parentIndex": "1255", - "start": "16617" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - } - } - ], - "parameters": { - "id": "1259", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1261", - "name": "from", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1261", - "src": { - "column": "26", - "end": "16571", - "id": "1262", - "length": "12", - "line": "526", - "parentIndex": "1259", - "start": "16560" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1263", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "26", - "end": "16566", - "id": "1264", - "length": "7", - "line": "526", - "parentIndex": "1261", - "start": "16560" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1265", - "name": "to", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1265", - "src": { - "column": "40", - "end": "16583", - "id": "1266", - "length": "10", - "line": "526", - "parentIndex": "1259", - "start": "16574" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1267", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "40", - "end": "16580", - "id": "1268", - "length": "7", - "line": "526", - "parentIndex": "1265", - "start": "16574" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1269", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1269", - "src": { - "column": "52", - "end": "16599", - "id": "1270", - "length": "14", - "line": "526", - "parentIndex": "1259", - "start": "16586" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1271", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "52", - "end": "16592", - "id": "1272", - "length": "7", - "line": "526", - "parentIndex": "1269", - "start": "16586" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "26", - "end": "16599", - "id": "1260", - "length": "40", - "line": "526", - "parentIndex": "1255", - "start": "16560" - } - }, - "returnParameters": { - "id": "1273", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1275", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1275", - "src": { - "column": "101", - "end": "16638", - "id": "1276", - "length": "4", - "line": "526", - "parentIndex": "1273", - "start": "16635" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "1277", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "101", - "end": "16638", - "id": "1278", - "length": "4", - "line": "526", - "parentIndex": "1275", - "start": "16635" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "101", - "end": "16638", - "id": "1274", - "length": "4", - "line": "526", - "parentIndex": "1255", - "start": "16635" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "16793", - "id": "1256", - "length": "256", - "line": "526", - "parentIndex": "923", - "start": "16538" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1334", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "98", - "end": "17422", - "id": "1335", - "length": "140", - "line": "545", - "parentIndex": "1316", - "start": "17283" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "1338" - ], - "declarations": [ - { - "id": "1338", - "mutability": "MUTABLE", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1334", - "src": { - "column": "8", - "end": "17305", - "id": "1339", - "length": "13", - "line": "546", - "parentIndex": "1336", - "start": "17293" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1340", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "17299", - "id": "1341", - "length": "7", - "line": "546", - "parentIndex": "1338", - "start": "17293" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "1336", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1344", - "name": "_msgSender", - "nodeType": "IDENTIFIER", - "src": { - "column": "24", - "end": "17318", - "id": "1345", - "length": "10", - "line": "546", - "parentIndex": "1342", - "start": "17309" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "1342", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "24", - "end": "17320", - "id": "1343", - "length": "12", - "line": "546", - "parentIndex": "1336", - "start": "17309" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "17321", - "id": "1337", - "length": "29", - "line": "546", - "parentIndex": "1334", - "start": "17293" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function_$_t_address$$_t_address$", - "typeString": "function(address,address)" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1348", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1336", - "src": { - "column": "17", - "end": "17344", - "id": "1349", - "length": "5", - "line": "547", - "parentIndex": "1346", - "start": "17340" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1350", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1350", - "src": { - "column": "24", - "end": "17353", - "id": "1351", - "length": "7", - "line": "547", - "parentIndex": "1346", - "start": "17347" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1352", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1356", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1336", - "src": { - "column": "43", - "end": "17370", - "id": "1357", - "length": "5", - "line": "547", - "parentIndex": "1354", - "start": "17366" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1358", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1358", - "src": { - "column": "50", - "end": "17379", - "id": "1359", - "length": "7", - "line": "547", - "parentIndex": "1354", - "start": "17373" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1360", - "name": "allowance", - "nodeType": "IDENTIFIER", - "src": { - "column": "33", - "end": "17364", - "id": "1361", - "length": "9", - "line": "547", - "parentIndex": "1354", - "start": "17356" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address", - "typeString": "function(address,address)" - } - } - }, - "id": "1354", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "33", - "end": "17380", - "id": "1355", - "length": "25", - "line": "547", - "parentIndex": "1352", - "start": "17356" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$", - "typeString": "function(address,address)" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "ADDITION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1362", - "name": "addedValue", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1362", - "src": { - "column": "61", - "end": "17393", - "id": "1363", - "length": "10", - "line": "547", - "parentIndex": "1352", - "start": "17384" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "33", - "end": "17393", - "id": "1353", - "length": "38", - "line": "547", - "parentIndex": "1346", - "start": "17356" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$", - "typeString": "function(address,address)" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function_$_t_address$$_t_address$", - "typeString": "function(address,address)" - } - ], - "id": "1364", - "name": "_approve", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "17338", - "id": "1365", - "length": "8", - "line": "547", - "parentIndex": "1346", - "start": "17331" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_function_$_t_address$$_t_address$", - "typeString": "function(address,address,function(address,address))" - } - } - }, - "id": "1346", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "17394", - "id": "1347", - "length": "64", - "line": "547", - "parentIndex": "1334", - "start": "17331" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_function_$_t_address$$_t_address$$", - "typeString": "function(address,address,function(address,address))" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "1368", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "15", - "end": "17415", - "id": "1369", - "length": "4", - "line": "548", - "parentIndex": "1334", - "start": "17412" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - "functionReturnParameters": "1316", - "id": "1366", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "17416", - "id": "1367", - "length": "12", - "line": "548", - "parentIndex": "1316", - "start": "17405" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - ] - }, - "id": "1316", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "increaseAllowance", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1318", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1320", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1320", - "src": { - "column": "31", - "end": "17230", - "id": "1321", - "length": "15", - "line": "545", - "parentIndex": "1318", - "start": "17216" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1322", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "17222", - "id": "1323", - "length": "7", - "line": "545", - "parentIndex": "1320", - "start": "17216" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1324", - "name": "addedValue", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1324", - "src": { - "column": "48", - "end": "17250", - "id": "1325", - "length": "18", - "line": "545", - "parentIndex": "1318", - "start": "17233" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1326", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "48", - "end": "17239", - "id": "1327", - "length": "7", - "line": "545", - "parentIndex": "1324", - "start": "17233" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "31", - "end": "17250", - "id": "1319", - "length": "35", - "line": "545", - "parentIndex": "1316", - "start": "17216" - } - }, - "returnParameters": { - "id": "1328", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1330", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1330", - "src": { - "column": "92", - "end": "17280", - "id": "1331", - "length": "4", - "line": "545", - "parentIndex": "1328", - "start": "17277" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "1332", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "92", - "end": "17280", - "id": "1333", - "length": "4", - "line": "545", - "parentIndex": "1330", - "start": "17277" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "92", - "end": "17280", - "id": "1329", - "length": "4", - "line": "545", - "parentIndex": "1316", - "start": "17277" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "17422", - "id": "1317", - "length": "234", - "line": "545", - "parentIndex": "923", - "start": "17189" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1389", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "103", - "end": "18336", - "id": "1390", - "length": "328", - "line": "565", - "parentIndex": "1371", - "start": "18009" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "1393" - ], - "declarations": [ - { - "id": "1393", - "mutability": "MUTABLE", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1389", - "src": { - "column": "8", - "end": "18031", - "id": "1394", - "length": "13", - "line": "566", - "parentIndex": "1391", - "start": "18019" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1395", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "18025", - "id": "1396", - "length": "7", - "line": "566", - "parentIndex": "1393", - "start": "18019" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "1391", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1399", - "name": "_msgSender", - "nodeType": "IDENTIFIER", - "src": { - "column": "24", - "end": "18044", - "id": "1400", - "length": "10", - "line": "566", - "parentIndex": "1397", - "start": "18035" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "1397", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "24", - "end": "18046", - "id": "1398", - "length": "12", - "line": "566", - "parentIndex": "1391", - "start": "18035" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "18047", - "id": "1392", - "length": "29", - "line": "566", - "parentIndex": "1389", - "start": "18019" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "1403" - ], - "declarations": [ - { - "id": "1403", - "mutability": "MUTABLE", - "name": "currentAllowance", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1389", - "src": { - "column": "8", - "end": "18080", - "id": "1404", - "length": "24", - "line": "567", - "parentIndex": "1401", - "start": "18057" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1405", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "18063", - "id": "1406", - "length": "7", - "line": "567", - "parentIndex": "1403", - "start": "18057" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "1401", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1409", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1391", - "src": { - "column": "45", - "end": "18098", - "id": "1410", - "length": "5", - "line": "567", - "parentIndex": "1407", - "start": "18094" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1411", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1411", - "src": { - "column": "52", - "end": "18107", - "id": "1412", - "length": "7", - "line": "567", - "parentIndex": "1407", - "start": "18101" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1413", - "name": "allowance", - "nodeType": "IDENTIFIER", - "src": { - "column": "35", - "end": "18092", - "id": "1414", - "length": "9", - "line": "567", - "parentIndex": "1407", - "start": "18084" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address", - "typeString": "function(address,address)" - } - } - }, - "id": "1407", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "35", - "end": "18108", - "id": "1408", - "length": "25", - "line": "567", - "parentIndex": "1401", - "start": "18084" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$", - "typeString": "function(address,address)" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "18109", - "id": "1402", - "length": "53", - "line": "567", - "parentIndex": "1389", - "start": "18057" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: decreased allowance below zero\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1417", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1419", - "name": "currentAllowance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1401", - "src": { - "column": "16", - "end": "18142", - "id": "1420", - "length": "16", - "line": "568", - "parentIndex": "1417", - "start": "18127" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN_OR_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1421", - "name": "subtractedValue", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1421", - "src": { - "column": "36", - "end": "18161", - "id": "1422", - "length": "15", - "line": "568", - "parentIndex": "1417", - "start": "18147" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "18161", - "id": "1418", - "length": "35", - "line": "568", - "parentIndex": "1415", - "start": "18127" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", - "id": "1423", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "53", - "end": "18202", - "id": "1424", - "length": "39", - "line": "568", - "parentIndex": "1415", - "start": "18164" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: decreased allowance below zero\"" - }, - "value": "ERC20: decreased allowance below zero" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: decreased allowance below zero\"" - } - ], - "id": "1425", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "18125", - "id": "1426", - "length": "7", - "line": "568", - "parentIndex": "1415", - "start": "18119" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: decreased allowance below zero\")" - } - } - }, - "id": "1415", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "18203", - "id": "1416", - "length": "85", - "line": "568", - "parentIndex": "1389", - "start": "18119" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "1429", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "15", - "end": "18329", - "id": "1430", - "length": "4", - "line": "573", - "parentIndex": "1389", - "start": "18326" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - "functionReturnParameters": "1371", - "id": "1427", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "18330", - "id": "1428", - "length": "12", - "line": "573", - "parentIndex": "1371", - "start": "18319" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "1431", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "18308", - "id": "1432", - "length": "95", - "line": "569", - "parentIndex": "923", - "start": "18214" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1435", - "name": "owner", - "nodeType": "IDENTIFIER", - "src": { - "column": "21", - "end": "18251", - "id": "1436", - "length": "5", - "line": "570", - "parentIndex": "1433", - "start": "18247" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "id": "1437", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1437", - "src": { - "column": "28", - "end": "18260", - "id": "1438", - "length": "7", - "line": "570", - "parentIndex": "1433", - "start": "18254" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1439", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1441", - "name": "currentAllowance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1401", - "src": { - "column": "37", - "end": "18278", - "id": "1442", - "length": "16", - "line": "570", - "parentIndex": "1439", - "start": "18263" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1443", - "name": "subtractedValue", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1443", - "src": { - "column": "56", - "end": "18296", - "id": "1444", - "length": "15", - "line": "570", - "parentIndex": "1439", - "start": "18282" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "37", - "end": "18296", - "id": "1440", - "length": "34", - "line": "570", - "parentIndex": "1433", - "start": "18263" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "1445", - "name": "_approve", - "nodeType": "IDENTIFIER", - "src": { - "column": "12", - "end": "18245", - "id": "1446", - "length": "8", - "line": "570", - "parentIndex": "1433", - "start": "18238" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_address$$_t_uint256", - "typeString": "function(function(),address,uint256)" - } - } - }, - "id": "1433", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "18297", - "id": "1434", - "length": "60", - "line": "570", - "parentIndex": "1431", - "start": "18238" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_address$$_t_uint256$", - "typeString": "function(function(),address,uint256)" - } - } - } - ] - } - } - ] - }, - "id": "1371", - "kind": "KIND_FUNCTION", - "name": "decreaseAllowance", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1373", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1375", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1375", - "src": { - "column": "31", - "end": "17951", - "id": "1376", - "length": "15", - "line": "565", - "parentIndex": "1373", - "start": "17937" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1377", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "17943", - "id": "1378", - "length": "7", - "line": "565", - "parentIndex": "1375", - "start": "17937" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1379", - "name": "subtractedValue", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1379", - "src": { - "column": "48", - "end": "17976", - "id": "1380", - "length": "23", - "line": "565", - "parentIndex": "1373", - "start": "17954" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1381", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "48", - "end": "17960", - "id": "1382", - "length": "7", - "line": "565", - "parentIndex": "1379", - "start": "17954" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "31", - "end": "17976", - "id": "1374", - "length": "40", - "line": "565", - "parentIndex": "1371", - "start": "17937" - } - }, - "returnParameters": { - "id": "1383", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1385", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1385", - "src": { - "column": "97", - "end": "18006", - "id": "1386", - "length": "4", - "line": "565", - "parentIndex": "1383", - "start": "18003" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "1387", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "97", - "end": "18006", - "id": "1388", - "length": "4", - "line": "565", - "parentIndex": "1385", - "start": "18003" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "97", - "end": "18006", - "id": "1384", - "length": "4", - "line": "565", - "parentIndex": "1371", - "start": "18003" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "18336", - "id": "1372", - "length": "427", - "line": "565", - "parentIndex": "923", - "start": "17910" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1465", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "82", - "end": "19578", - "id": "1466", - "length": "710", - "line": "590", - "parentIndex": "1448", - "start": "18869" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer from the zero address\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1469", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1471", - "name": "from", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1471", - "src": { - "column": "16", - "end": "18890", - "id": "1472", - "length": "4", - "line": "591", - "parentIndex": "1469", - "start": "18887" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1475", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "32", - "end": "18903", - "id": "1476", - "length": "1", - "line": "591", - "parentIndex": "1473", - "start": "18903" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1477", - "nodeType": "IDENTIFIER", - "src": { - "column": "24", - "end": "18901", - "id": "1478", - "length": "7", - "line": "591", - "parentIndex": "1473", - "start": "18895" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1479", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "24", - "end": "18901", - "id": "1480", - "length": "7", - "line": "591", - "parentIndex": "1477", - "start": "18895" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1473", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "24", - "end": "18904", - "id": "1474", - "length": "10", - "line": "591", - "parentIndex": "1469", - "start": "18895" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "16", - "end": "18904", - "id": "1470", - "length": "18", - "line": "591", - "parentIndex": "1467", - "start": "18887" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", - "id": "1481", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "36", - "end": "18945", - "id": "1482", - "length": "39", - "line": "591", - "parentIndex": "1467", - "start": "18907" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer from the zero address\"" - }, - "value": "ERC20: transfer from the zero address" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer from the zero address\"" - } - ], - "id": "1483", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "18885", - "id": "1484", - "length": "7", - "line": "591", - "parentIndex": "1467", - "start": "18879" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: transfer from the zero address\")" - } - } - }, - "id": "1467", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "18946", - "id": "1468", - "length": "68", - "line": "591", - "parentIndex": "1465", - "start": "18879" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer to the zero address\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1487", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1489", - "name": "to", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1489", - "src": { - "column": "16", - "end": "18966", - "id": "1490", - "length": "2", - "line": "592", - "parentIndex": "1487", - "start": "18965" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1493", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "30", - "end": "18979", - "id": "1494", - "length": "1", - "line": "592", - "parentIndex": "1491", - "start": "18979" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1495", - "nodeType": "IDENTIFIER", - "src": { - "column": "22", - "end": "18977", - "id": "1496", - "length": "7", - "line": "592", - "parentIndex": "1491", - "start": "18971" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1497", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "22", - "end": "18977", - "id": "1498", - "length": "7", - "line": "592", - "parentIndex": "1495", - "start": "18971" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1491", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "22", - "end": "18980", - "id": "1492", - "length": "10", - "line": "592", - "parentIndex": "1487", - "start": "18971" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "16", - "end": "18980", - "id": "1488", - "length": "16", - "line": "592", - "parentIndex": "1485", - "start": "18965" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", - "id": "1499", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "34", - "end": "19019", - "id": "1500", - "length": "37", - "line": "592", - "parentIndex": "1485", - "start": "18983" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer to the zero address\"" - }, - "value": "ERC20: transfer to the zero address" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer to the zero address\"" - } - ], - "id": "1501", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "18963", - "id": "1502", - "length": "7", - "line": "592", - "parentIndex": "1485", - "start": "18957" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: transfer to the zero address\")" - } - } - }, - "id": "1485", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "19020", - "id": "1486", - "length": "64", - "line": "592", - "parentIndex": "1465", - "start": "18957" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1505", - "name": "from", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1505", - "src": { - "column": "29", - "end": "19056", - "id": "1506", - "length": "4", - "line": "594", - "parentIndex": "1503", - "start": "19053" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1507", - "name": "to", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1507", - "src": { - "column": "35", - "end": "19060", - "id": "1508", - "length": "2", - "line": "594", - "parentIndex": "1503", - "start": "19059" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1509", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1509", - "src": { - "column": "39", - "end": "19068", - "id": "1510", - "length": "6", - "line": "594", - "parentIndex": "1503", - "start": "19063" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "1511", - "name": "_beforeTokenTransfer", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "19051", - "id": "1512", - "length": "20", - "line": "594", - "parentIndex": "1503", - "start": "19032" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - } - } - }, - "id": "1503", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "19069", - "id": "1504", - "length": "38", - "line": "594", - "parentIndex": "1465", - "start": "19032" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "typeString": "function(address,address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "1515" - ], - "declarations": [ - { - "id": "1515", - "mutability": "MUTABLE", - "name": "fromBalance", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1465", - "src": { - "column": "8", - "end": "19099", - "id": "1516", - "length": "19", - "line": "596", - "parentIndex": "1513", - "start": "19081" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1517", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "19087", - "id": "1518", - "length": "7", - "line": "596", - "parentIndex": "1515", - "start": "19081" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "1513", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1523", - "name": "from", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1523", - "src": { - "column": "40", - "end": "19116", - "id": "1524", - "length": "4", - "line": "596", - "parentIndex": "1519", - "start": "19113" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1519", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1521", - "name": "_balances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "937", - "src": { - "column": "30", - "end": "19111", - "id": "1522", - "length": "9", - "line": "596", - "parentIndex": "1519", - "start": "19103" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "30", - "end": "19117", - "id": "1520", - "length": "15", - "line": "596", - "parentIndex": "1513", - "start": "19103" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "19118", - "id": "1514", - "length": "38", - "line": "596", - "parentIndex": "1465", - "start": "19081" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1527", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1529", - "name": "fromBalance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1513", - "src": { - "column": "16", - "end": "19146", - "id": "1530", - "length": "11", - "line": "597", - "parentIndex": "1527", - "start": "19136" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN_OR_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1531", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1531", - "src": { - "column": "31", - "end": "19156", - "id": "1532", - "length": "6", - "line": "597", - "parentIndex": "1527", - "start": "19151" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "19156", - "id": "1528", - "length": "21", - "line": "597", - "parentIndex": "1525", - "start": "19136" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", - "id": "1533", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "39", - "end": "19198", - "id": "1534", - "length": "40", - "line": "597", - "parentIndex": "1525", - "start": "19159" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" - }, - "value": "ERC20: transfer amount exceeds balance" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" - } - ], - "id": "1535", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "19134", - "id": "1536", - "length": "7", - "line": "597", - "parentIndex": "1525", - "start": "19128" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: transfer amount exceeds balance\")" - } - } - }, - "id": "1525", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "19199", - "id": "1526", - "length": "72", - "line": "597", - "parentIndex": "1465", - "start": "19128" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1539", - "name": "from", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1539", - "src": { - "column": "22", - "end": "19510", - "id": "1540", - "length": "4", - "line": "605", - "parentIndex": "1465", - "start": "19507" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1541", - "name": "to", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1541", - "src": { - "column": "28", - "end": "19514", - "id": "1542", - "length": "2", - "line": "605", - "parentIndex": "1465", - "start": "19513" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1543", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1543", - "src": { - "column": "32", - "end": "19522", - "id": "1544", - "length": "6", - "line": "605", - "parentIndex": "1465", - "start": "19517" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1545", - "name": "Transfer", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "753", - "src": { - "column": "13", - "end": "19505", - "id": "1546", - "length": "8", - "line": "605", - "parentIndex": "1465", - "start": "19498" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u0026753", - "typeString": "event IERC20.Transfer" - } - } - }, - "id": "1537", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "19524", - "id": "1538", - "length": "32", - "line": "605", - "parentIndex": "1448", - "start": "19493" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1549", - "name": "from", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1549", - "src": { - "column": "28", - "end": "19558", - "id": "1550", - "length": "4", - "line": "607", - "parentIndex": "1547", - "start": "19555" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1551", - "name": "to", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1551", - "src": { - "column": "34", - "end": "19562", - "id": "1552", - "length": "2", - "line": "607", - "parentIndex": "1547", - "start": "19561" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1553", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1553", - "src": { - "column": "38", - "end": "19570", - "id": "1554", - "length": "6", - "line": "607", - "parentIndex": "1547", - "start": "19565" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "1555", - "name": "_afterTokenTransfer", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "19553", - "id": "1556", - "length": "19", - "line": "607", - "parentIndex": "1547", - "start": "19535" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - } - } - }, - "id": "1547", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "19571", - "id": "1548", - "length": "37", - "line": "607", - "parentIndex": "1465", - "start": "19535" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "typeString": "function(address,address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "1557", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "19482", - "id": "1558", - "length": "273", - "line": "598", - "parentIndex": "923", - "start": "19210" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1561", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1567", - "name": "from", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1567", - "src": { - "column": "22", - "end": "19247", - "id": "1568", - "length": "4", - "line": "599", - "parentIndex": "1563", - "start": "19244" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1563", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1565", - "name": "_balances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "937", - "src": { - "column": "12", - "end": "19242", - "id": "1566", - "length": "9", - "line": "599", - "parentIndex": "1563", - "start": "19234" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "12", - "end": "19248", - "id": "1564", - "length": "15", - "line": "599", - "parentIndex": "1561", - "start": "19234" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1569", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1571", - "name": "fromBalance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1513", - "src": { - "column": "30", - "end": "19262", - "id": "1572", - "length": "11", - "line": "599", - "parentIndex": "1569", - "start": "19252" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1573", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1573", - "src": { - "column": "44", - "end": "19271", - "id": "1574", - "length": "6", - "line": "599", - "parentIndex": "1569", - "start": "19266" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "30", - "end": "19271", - "id": "1570", - "length": "20", - "line": "599", - "parentIndex": "1561", - "start": "19252" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "12", - "end": "19271", - "id": "1562", - "length": "38", - "line": "599", - "parentIndex": "1557", - "start": "19234" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "id": "1559", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "12", - "end": "19272", - "id": "1560", - "length": "39", - "line": "599", - "parentIndex": "1557", - "start": "19234" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1577", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1583", - "name": "to", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1583", - "src": { - "column": "22", - "end": "19460", - "id": "1584", - "length": "2", - "line": "602", - "parentIndex": "1579", - "start": "19459" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1579", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1581", - "name": "_balances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "937", - "src": { - "column": "12", - "end": "19457", - "id": "1582", - "length": "9", - "line": "602", - "parentIndex": "1579", - "start": "19449" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "12", - "end": "19461", - "id": "1580", - "length": "13", - "line": "602", - "parentIndex": "1577", - "start": "19449" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "ASSIGNMENT", - "operator": "PLUS_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1585", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1585", - "src": { - "column": "29", - "end": "19471", - "id": "1586", - "length": "6", - "line": "602", - "parentIndex": "1577", - "start": "19466" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "12", - "end": "19471", - "id": "1578", - "length": "23", - "line": "602", - "parentIndex": "1557", - "start": "19449" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "id": "1575", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "12", - "end": "19472", - "id": "1576", - "length": "24", - "line": "602", - "parentIndex": "1557", - "start": "19449" - } - } - } - ] - } - } - ] - }, - "id": "1448", - "kind": "KIND_FUNCTION", - "name": "_transfer", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1450", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1452", - "name": "from", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1452", - "src": { - "column": "23", - "end": "18821", - "id": "1453", - "length": "12", - "line": "590", - "parentIndex": "1450", - "start": "18810" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1454", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "18816", - "id": "1455", - "length": "7", - "line": "590", - "parentIndex": "1452", - "start": "18810" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1456", - "name": "to", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1456", - "src": { - "column": "37", - "end": "18833", - "id": "1457", - "length": "10", - "line": "590", - "parentIndex": "1450", - "start": "18824" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1458", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "37", - "end": "18830", - "id": "1459", - "length": "7", - "line": "590", - "parentIndex": "1456", - "start": "18824" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1460", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1460", - "src": { - "column": "49", - "end": "18849", - "id": "1461", - "length": "14", - "line": "590", - "parentIndex": "1450", - "start": "18836" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1462", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "49", - "end": "18842", - "id": "1463", - "length": "7", - "line": "590", - "parentIndex": "1460", - "start": "18836" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "18849", - "id": "1451", - "length": "40", - "line": "590", - "parentIndex": "1448", - "start": "18810" - } - }, - "returnParameters": { - "id": "1464", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "19578", - "id": "1449", - "length": "788", - "line": "590", - "parentIndex": "1448", - "start": "18791" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "19578", - "id": "1449", - "length": "788", - "line": "590", - "parentIndex": "923", - "start": "18791" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1601", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "69", - "end": "20389", - "id": "1602", - "length": "470", - "line": "619", - "parentIndex": "1588", - "start": "19920" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: mint to the zero address\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1605", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1607", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1607", - "src": { - "column": "16", - "end": "19944", - "id": "1608", - "length": "7", - "line": "620", - "parentIndex": "1605", - "start": "19938" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1611", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "35", - "end": "19957", - "id": "1612", - "length": "1", - "line": "620", - "parentIndex": "1609", - "start": "19957" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1613", - "nodeType": "IDENTIFIER", - "src": { - "column": "27", - "end": "19955", - "id": "1614", - "length": "7", - "line": "620", - "parentIndex": "1609", - "start": "19949" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1615", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "27", - "end": "19955", - "id": "1616", - "length": "7", - "line": "620", - "parentIndex": "1613", - "start": "19949" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1609", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "27", - "end": "19958", - "id": "1610", - "length": "10", - "line": "620", - "parentIndex": "1605", - "start": "19949" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "16", - "end": "19958", - "id": "1606", - "length": "21", - "line": "620", - "parentIndex": "1603", - "start": "19938" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", - "id": "1617", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "39", - "end": "19993", - "id": "1618", - "length": "33", - "line": "620", - "parentIndex": "1603", - "start": "19961" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: mint to the zero address\"" - }, - "value": "ERC20: mint to the zero address" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: mint to the zero address\"" - } - ], - "id": "1619", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "19936", - "id": "1620", - "length": "7", - "line": "620", - "parentIndex": "1603", - "start": "19930" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: mint to the zero address\")" - } - } - }, - "id": "1603", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "19994", - "id": "1604", - "length": "65", - "line": "620", - "parentIndex": "1601", - "start": "19930" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1625", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "37", - "end": "20035", - "id": "1626", - "length": "1", - "line": "622", - "parentIndex": "1623", - "start": "20035" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1627", - "nodeType": "IDENTIFIER", - "src": { - "column": "29", - "end": "20033", - "id": "1628", - "length": "7", - "line": "622", - "parentIndex": "1623", - "start": "20027" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1629", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "29", - "end": "20033", - "id": "1630", - "length": "7", - "line": "622", - "parentIndex": "1627", - "start": "20027" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1623", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "29", - "end": "20036", - "id": "1624", - "length": "10", - "line": "622", - "parentIndex": "1621", - "start": "20027" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - ], - "id": "1631", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1631", - "src": { - "column": "41", - "end": "20045", - "id": "1632", - "length": "7", - "line": "622", - "parentIndex": "1621", - "start": "20039" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1633", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1633", - "src": { - "column": "50", - "end": "20053", - "id": "1634", - "length": "6", - "line": "622", - "parentIndex": "1621", - "start": "20048" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "1635", - "name": "_beforeTokenTransfer", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "20025", - "id": "1636", - "length": "20", - "line": "622", - "parentIndex": "1621", - "start": "20006" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256", - "typeString": "function(function(int_const 0),address,uint256)" - } - } - }, - "id": "1621", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "20054", - "id": "1622", - "length": "49", - "line": "622", - "parentIndex": "1601", - "start": "20006" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256$", - "typeString": "function(function(int_const 0),address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1639", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1641", - "name": "_totalSupply", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "960", - "src": { - "column": "8", - "end": "20077", - "id": "1642", - "length": "12", - "line": "624", - "parentIndex": "1639", - "start": "20066" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "PLUS_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1643", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1643", - "src": { - "column": "24", - "end": "20087", - "id": "1644", - "length": "6", - "line": "624", - "parentIndex": "1639", - "start": "20082" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "8", - "end": "20087", - "id": "1640", - "length": "22", - "line": "624", - "parentIndex": "1601", - "start": "20066" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "1637", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "20088", - "id": "1638", - "length": "23", - "line": "624", - "parentIndex": "1601", - "start": "20066" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1649", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "30", - "end": "20304", - "id": "1650", - "length": "1", - "line": "629", - "parentIndex": "1647", - "start": "20304" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1651", - "nodeType": "IDENTIFIER", - "src": { - "column": "22", - "end": "20302", - "id": "1652", - "length": "7", - "line": "629", - "parentIndex": "1647", - "start": "20296" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1653", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "22", - "end": "20302", - "id": "1654", - "length": "7", - "line": "629", - "parentIndex": "1651", - "start": "20296" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1647", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "22", - "end": "20305", - "id": "1648", - "length": "10", - "line": "629", - "parentIndex": "1601", - "start": "20296" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1655", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1655", - "src": { - "column": "34", - "end": "20314", - "id": "1656", - "length": "7", - "line": "629", - "parentIndex": "1601", - "start": "20308" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1657", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1657", - "src": { - "column": "43", - "end": "20322", - "id": "1658", - "length": "6", - "line": "629", - "parentIndex": "1601", - "start": "20317" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1659", - "name": "Transfer", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "753", - "src": { - "column": "13", - "end": "20294", - "id": "1660", - "length": "8", - "line": "629", - "parentIndex": "1601", - "start": "20287" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u0026753", - "typeString": "event IERC20.Transfer" - } - } - }, - "id": "1645", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "20324", - "id": "1646", - "length": "43", - "line": "629", - "parentIndex": "1588", - "start": "20282" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1665", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "36", - "end": "20363", - "id": "1666", - "length": "1", - "line": "631", - "parentIndex": "1663", - "start": "20363" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1667", - "nodeType": "IDENTIFIER", - "src": { - "column": "28", - "end": "20361", - "id": "1668", - "length": "7", - "line": "631", - "parentIndex": "1663", - "start": "20355" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1669", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "20361", - "id": "1670", - "length": "7", - "line": "631", - "parentIndex": "1667", - "start": "20355" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1663", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "28", - "end": "20364", - "id": "1664", - "length": "10", - "line": "631", - "parentIndex": "1661", - "start": "20355" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - ], - "id": "1671", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1671", - "src": { - "column": "40", - "end": "20373", - "id": "1672", - "length": "7", - "line": "631", - "parentIndex": "1661", - "start": "20367" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1673", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1673", - "src": { - "column": "49", - "end": "20381", - "id": "1674", - "length": "6", - "line": "631", - "parentIndex": "1661", - "start": "20376" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "1675", - "name": "_afterTokenTransfer", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "20353", - "id": "1676", - "length": "19", - "line": "631", - "parentIndex": "1661", - "start": "20335" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256", - "typeString": "function(function(int_const 0),address,uint256)" - } - } - }, - "id": "1661", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "20382", - "id": "1662", - "length": "48", - "line": "631", - "parentIndex": "1601", - "start": "20335" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256$", - "typeString": "function(function(int_const 0),address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "1677", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "20272", - "id": "1678", - "length": "175", - "line": "625", - "parentIndex": "923", - "start": "20098" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1681", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1687", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1687", - "src": { - "column": "22", - "end": "20250", - "id": "1688", - "length": "7", - "line": "627", - "parentIndex": "1683", - "start": "20244" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1683", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1685", - "name": "_balances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "937", - "src": { - "column": "12", - "end": "20242", - "id": "1686", - "length": "9", - "line": "627", - "parentIndex": "1683", - "start": "20234" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "12", - "end": "20251", - "id": "1684", - "length": "18", - "line": "627", - "parentIndex": "1681", - "start": "20234" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "ASSIGNMENT", - "operator": "PLUS_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1689", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1689", - "src": { - "column": "34", - "end": "20261", - "id": "1690", - "length": "6", - "line": "627", - "parentIndex": "1681", - "start": "20256" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "12", - "end": "20261", - "id": "1682", - "length": "28", - "line": "627", - "parentIndex": "1677", - "start": "20234" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "id": "1679", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "12", - "end": "20262", - "id": "1680", - "length": "29", - "line": "627", - "parentIndex": "1677", - "start": "20234" - } - } - } - ] - } - } - ] - }, - "id": "1588", - "kind": "KIND_FUNCTION", - "name": "_mint", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1590", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1592", - "name": "account", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1592", - "src": { - "column": "19", - "end": "19884", - "id": "1593", - "length": "15", - "line": "619", - "parentIndex": "1590", - "start": "19870" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1594", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "19", - "end": "19876", - "id": "1595", - "length": "7", - "line": "619", - "parentIndex": "1592", - "start": "19870" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1596", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1596", - "src": { - "column": "36", - "end": "19900", - "id": "1597", - "length": "14", - "line": "619", - "parentIndex": "1590", - "start": "19887" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1598", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "36", - "end": "19893", - "id": "1599", - "length": "7", - "line": "619", - "parentIndex": "1596", - "start": "19887" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "19", - "end": "19900", - "id": "1591", - "length": "31", - "line": "619", - "parentIndex": "1588", - "start": "19870" - } - }, - "returnParameters": { - "id": "1600", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "20389", - "id": "1589", - "length": "535", - "line": "619", - "parentIndex": "1588", - "start": "19855" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "20389", - "id": "1589", - "length": "535", - "line": "619", - "parentIndex": "923", - "start": "19855" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1705", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "69", - "end": "21368", - "id": "1706", - "length": "594", - "line": "645", - "parentIndex": "1692", - "start": "20775" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: burn from the zero address\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1709", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1711", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1711", - "src": { - "column": "16", - "end": "20799", - "id": "1712", - "length": "7", - "line": "646", - "parentIndex": "1709", - "start": "20793" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1715", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "35", - "end": "20812", - "id": "1716", - "length": "1", - "line": "646", - "parentIndex": "1713", - "start": "20812" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1717", - "nodeType": "IDENTIFIER", - "src": { - "column": "27", - "end": "20810", - "id": "1718", - "length": "7", - "line": "646", - "parentIndex": "1713", - "start": "20804" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1719", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "27", - "end": "20810", - "id": "1720", - "length": "7", - "line": "646", - "parentIndex": "1717", - "start": "20804" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1713", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "27", - "end": "20813", - "id": "1714", - "length": "10", - "line": "646", - "parentIndex": "1709", - "start": "20804" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "16", - "end": "20813", - "id": "1710", - "length": "21", - "line": "646", - "parentIndex": "1707", - "start": "20793" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", - "id": "1721", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "39", - "end": "20850", - "id": "1722", - "length": "35", - "line": "646", - "parentIndex": "1707", - "start": "20816" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: burn from the zero address\"" - }, - "value": "ERC20: burn from the zero address" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: burn from the zero address\"" - } - ], - "id": "1723", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "20791", - "id": "1724", - "length": "7", - "line": "646", - "parentIndex": "1707", - "start": "20785" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: burn from the zero address\")" - } - } - }, - "id": "1707", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "20851", - "id": "1708", - "length": "67", - "line": "646", - "parentIndex": "1705", - "start": "20785" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1727", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1727", - "src": { - "column": "29", - "end": "20890", - "id": "1728", - "length": "7", - "line": "648", - "parentIndex": "1725", - "start": "20884" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1731", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "46", - "end": "20901", - "id": "1732", - "length": "1", - "line": "648", - "parentIndex": "1729", - "start": "20901" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1733", - "nodeType": "IDENTIFIER", - "src": { - "column": "38", - "end": "20899", - "id": "1734", - "length": "7", - "line": "648", - "parentIndex": "1729", - "start": "20893" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1735", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "38", - "end": "20899", - "id": "1736", - "length": "7", - "line": "648", - "parentIndex": "1733", - "start": "20893" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1729", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "38", - "end": "20902", - "id": "1730", - "length": "10", - "line": "648", - "parentIndex": "1725", - "start": "20893" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - ], - "id": "1737", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1737", - "src": { - "column": "50", - "end": "20910", - "id": "1738", - "length": "6", - "line": "648", - "parentIndex": "1725", - "start": "20905" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "1739", - "name": "_beforeTokenTransfer", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "20882", - "id": "1740", - "length": "20", - "line": "648", - "parentIndex": "1725", - "start": "20863" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256", - "typeString": "function(address,function(int_const 0),uint256)" - } - } - }, - "id": "1725", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "20911", - "id": "1726", - "length": "49", - "line": "648", - "parentIndex": "1705", - "start": "20863" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256$", - "typeString": "function(address,function(int_const 0),uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "1743" - ], - "declarations": [ - { - "id": "1743", - "mutability": "MUTABLE", - "name": "accountBalance", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1705", - "src": { - "column": "8", - "end": "20944", - "id": "1744", - "length": "22", - "line": "650", - "parentIndex": "1741", - "start": "20923" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1745", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "20929", - "id": "1746", - "length": "7", - "line": "650", - "parentIndex": "1743", - "start": "20923" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "1741", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1751", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1751", - "src": { - "column": "43", - "end": "20964", - "id": "1752", - "length": "7", - "line": "650", - "parentIndex": "1747", - "start": "20958" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1747", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1749", - "name": "_balances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "937", - "src": { - "column": "33", - "end": "20956", - "id": "1750", - "length": "9", - "line": "650", - "parentIndex": "1747", - "start": "20948" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "33", - "end": "20965", - "id": "1748", - "length": "18", - "line": "650", - "parentIndex": "1741", - "start": "20948" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "20966", - "id": "1742", - "length": "44", - "line": "650", - "parentIndex": "1705", - "start": "20923" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1755", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1757", - "name": "accountBalance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1741", - "src": { - "column": "16", - "end": "20997", - "id": "1758", - "length": "14", - "line": "651", - "parentIndex": "1755", - "start": "20984" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN_OR_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1759", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1759", - "src": { - "column": "34", - "end": "21007", - "id": "1760", - "length": "6", - "line": "651", - "parentIndex": "1755", - "start": "21002" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "21007", - "id": "1756", - "length": "24", - "line": "651", - "parentIndex": "1753", - "start": "20984" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", - "id": "1761", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "42", - "end": "21045", - "id": "1762", - "length": "36", - "line": "651", - "parentIndex": "1753", - "start": "21010" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" - }, - "value": "ERC20: burn amount exceeds balance" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" - } - ], - "id": "1763", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "20982", - "id": "1764", - "length": "7", - "line": "651", - "parentIndex": "1753", - "start": "20976" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: burn amount exceeds balance\")" - } - } - }, - "id": "1753", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "21046", - "id": "1754", - "length": "71", - "line": "651", - "parentIndex": "1705", - "start": "20976" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1767", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1767", - "src": { - "column": "22", - "end": "21281", - "id": "1768", - "length": "7", - "line": "658", - "parentIndex": "1705", - "start": "21275" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1771", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "39", - "end": "21292", - "id": "1772", - "length": "1", - "line": "658", - "parentIndex": "1769", - "start": "21292" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1773", - "nodeType": "IDENTIFIER", - "src": { - "column": "31", - "end": "21290", - "id": "1774", - "length": "7", - "line": "658", - "parentIndex": "1769", - "start": "21284" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1775", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "21290", - "id": "1776", - "length": "7", - "line": "658", - "parentIndex": "1773", - "start": "21284" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1769", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "31", - "end": "21293", - "id": "1770", - "length": "10", - "line": "658", - "parentIndex": "1705", - "start": "21284" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1777", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1777", - "src": { - "column": "43", - "end": "21301", - "id": "1778", - "length": "6", - "line": "658", - "parentIndex": "1705", - "start": "21296" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1779", - "name": "Transfer", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "753", - "src": { - "column": "13", - "end": "21273", - "id": "1780", - "length": "8", - "line": "658", - "parentIndex": "1705", - "start": "21266" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u0026753", - "typeString": "event IERC20.Transfer" - } - } - }, - "id": "1765", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "21303", - "id": "1766", - "length": "43", - "line": "658", - "parentIndex": "1692", - "start": "21261" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1783", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1783", - "src": { - "column": "28", - "end": "21340", - "id": "1784", - "length": "7", - "line": "660", - "parentIndex": "1781", - "start": "21334" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1787", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "45", - "end": "21351", - "id": "1788", - "length": "1", - "line": "660", - "parentIndex": "1785", - "start": "21351" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1789", - "nodeType": "IDENTIFIER", - "src": { - "column": "37", - "end": "21349", - "id": "1790", - "length": "7", - "line": "660", - "parentIndex": "1785", - "start": "21343" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1791", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "37", - "end": "21349", - "id": "1792", - "length": "7", - "line": "660", - "parentIndex": "1789", - "start": "21343" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1785", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "37", - "end": "21352", - "id": "1786", - "length": "10", - "line": "660", - "parentIndex": "1781", - "start": "21343" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - ], - "id": "1793", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1793", - "src": { - "column": "49", - "end": "21360", - "id": "1794", - "length": "6", - "line": "660", - "parentIndex": "1781", - "start": "21355" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "1795", - "name": "_afterTokenTransfer", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "21332", - "id": "1796", - "length": "19", - "line": "660", - "parentIndex": "1781", - "start": "21314" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256", - "typeString": "function(address,function(int_const 0),uint256)" - } - } - }, - "id": "1781", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "21361", - "id": "1782", - "length": "48", - "line": "660", - "parentIndex": "1705", - "start": "21314" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256$", - "typeString": "function(address,function(int_const 0),uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "1797", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "21250", - "id": "1798", - "length": "194", - "line": "652", - "parentIndex": "923", - "start": "21057" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1801", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1807", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1807", - "src": { - "column": "22", - "end": "21097", - "id": "1808", - "length": "7", - "line": "653", - "parentIndex": "1803", - "start": "21091" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1803", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1805", - "name": "_balances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "937", - "src": { - "column": "12", - "end": "21089", - "id": "1806", - "length": "9", - "line": "653", - "parentIndex": "1803", - "start": "21081" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "12", - "end": "21098", - "id": "1804", - "length": "18", - "line": "653", - "parentIndex": "1801", - "start": "21081" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1809", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1811", - "name": "accountBalance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1741", - "src": { - "column": "33", - "end": "21115", - "id": "1812", - "length": "14", - "line": "653", - "parentIndex": "1809", - "start": "21102" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1813", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1813", - "src": { - "column": "50", - "end": "21124", - "id": "1814", - "length": "6", - "line": "653", - "parentIndex": "1809", - "start": "21119" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "33", - "end": "21124", - "id": "1810", - "length": "23", - "line": "653", - "parentIndex": "1801", - "start": "21102" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "12", - "end": "21124", - "id": "1802", - "length": "44", - "line": "653", - "parentIndex": "1797", - "start": "21081" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "id": "1799", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "12", - "end": "21125", - "id": "1800", - "length": "45", - "line": "653", - "parentIndex": "1797", - "start": "21081" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1817", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1819", - "name": "_totalSupply", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "960", - "src": { - "column": "12", - "end": "21229", - "id": "1820", - "length": "12", - "line": "655", - "parentIndex": "1817", - "start": "21218" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "MINUS_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1821", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1821", - "src": { - "column": "28", - "end": "21239", - "id": "1822", - "length": "6", - "line": "655", - "parentIndex": "1817", - "start": "21234" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "12", - "end": "21239", - "id": "1818", - "length": "22", - "line": "655", - "parentIndex": "1797", - "start": "21218" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "1815", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "12", - "end": "21240", - "id": "1816", - "length": "23", - "line": "655", - "parentIndex": "1797", - "start": "21218" - } - } - } - ] - } - } - ] - }, - "id": "1692", - "kind": "KIND_FUNCTION", - "name": "_burn", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1694", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1696", - "name": "account", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1696", - "src": { - "column": "19", - "end": "20739", - "id": "1697", - "length": "15", - "line": "645", - "parentIndex": "1694", - "start": "20725" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1698", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "19", - "end": "20731", - "id": "1699", - "length": "7", - "line": "645", - "parentIndex": "1696", - "start": "20725" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1700", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1700", - "src": { - "column": "36", - "end": "20755", - "id": "1701", - "length": "14", - "line": "645", - "parentIndex": "1694", - "start": "20742" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1702", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "36", - "end": "20748", - "id": "1703", - "length": "7", - "line": "645", - "parentIndex": "1700", - "start": "20742" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "19", - "end": "20755", - "id": "1695", - "length": "31", - "line": "645", - "parentIndex": "1692", - "start": "20725" - } - }, - "returnParameters": { - "id": "1704", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "21368", - "id": "1693", - "length": "659", - "line": "645", - "parentIndex": "1692", - "start": "20710" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "21368", - "id": "1693", - "length": "659", - "line": "645", - "parentIndex": "923", - "start": "20710" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1841", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "87", - "end": "22131", - "id": "1842", - "length": "257", - "line": "676", - "parentIndex": "1824", - "start": "21875" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: approve from the zero address\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1845", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1847", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1847", - "src": { - "column": "16", - "end": "21897", - "id": "1848", - "length": "5", - "line": "677", - "parentIndex": "1845", - "start": "21893" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1851", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "33", - "end": "21910", - "id": "1852", - "length": "1", - "line": "677", - "parentIndex": "1849", - "start": "21910" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1853", - "nodeType": "IDENTIFIER", - "src": { - "column": "25", - "end": "21908", - "id": "1854", - "length": "7", - "line": "677", - "parentIndex": "1849", - "start": "21902" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1855", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "25", - "end": "21908", - "id": "1856", - "length": "7", - "line": "677", - "parentIndex": "1853", - "start": "21902" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1849", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "25", - "end": "21911", - "id": "1850", - "length": "10", - "line": "677", - "parentIndex": "1845", - "start": "21902" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "16", - "end": "21911", - "id": "1846", - "length": "19", - "line": "677", - "parentIndex": "1843", - "start": "21893" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", - "id": "1857", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "37", - "end": "21951", - "id": "1858", - "length": "38", - "line": "677", - "parentIndex": "1843", - "start": "21914" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: approve from the zero address\"" - }, - "value": "ERC20: approve from the zero address" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: approve from the zero address\"" - } - ], - "id": "1859", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "21891", - "id": "1860", - "length": "7", - "line": "677", - "parentIndex": "1843", - "start": "21885" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: approve from the zero address\")" - } - } - }, - "id": "1843", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "21952", - "id": "1844", - "length": "68", - "line": "677", - "parentIndex": "1841", - "start": "21885" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: approve to the zero address\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1863", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1865", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1865", - "src": { - "column": "16", - "end": "21977", - "id": "1866", - "length": "7", - "line": "678", - "parentIndex": "1863", - "start": "21971" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1869", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "35", - "end": "21990", - "id": "1870", - "length": "1", - "line": "678", - "parentIndex": "1867", - "start": "21990" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1871", - "nodeType": "IDENTIFIER", - "src": { - "column": "27", - "end": "21988", - "id": "1872", - "length": "7", - "line": "678", - "parentIndex": "1867", - "start": "21982" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1873", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "27", - "end": "21988", - "id": "1874", - "length": "7", - "line": "678", - "parentIndex": "1871", - "start": "21982" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1867", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "27", - "end": "21991", - "id": "1868", - "length": "10", - "line": "678", - "parentIndex": "1863", - "start": "21982" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "16", - "end": "21991", - "id": "1864", - "length": "21", - "line": "678", - "parentIndex": "1861", - "start": "21971" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", - "id": "1875", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "39", - "end": "22029", - "id": "1876", - "length": "36", - "line": "678", - "parentIndex": "1861", - "start": "21994" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: approve to the zero address\"" - }, - "value": "ERC20: approve to the zero address" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: approve to the zero address\"" - } - ], - "id": "1877", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "21969", - "id": "1878", - "length": "7", - "line": "678", - "parentIndex": "1861", - "start": "21963" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: approve to the zero address\")" - } - } - }, - "id": "1861", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "22030", - "id": "1862", - "length": "68", - "line": "678", - "parentIndex": "1841", - "start": "21963" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1881", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1891", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1891", - "src": { - "column": "27", - "end": "22067", - "id": "1892", - "length": "7", - "line": "680", - "parentIndex": "1883", - "start": "22061" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1883", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1889", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1889", - "src": { - "column": "20", - "end": "22058", - "id": "1890", - "length": "5", - "line": "680", - "parentIndex": "1885", - "start": "22054" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1885", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1887", - "name": "_allowances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "946", - "src": { - "column": "8", - "end": "22052", - "id": "1888", - "length": "11", - "line": "680", - "parentIndex": "1885", - "start": "22042" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "8", - "end": "22059", - "id": "1886", - "length": "18", - "line": "680", - "parentIndex": "1883", - "start": "22042" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "8", - "end": "22068", - "id": "1884", - "length": "27", - "line": "680", - "parentIndex": "1881", - "start": "22042" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1893", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1893", - "src": { - "column": "38", - "end": "22077", - "id": "1894", - "length": "6", - "line": "680", - "parentIndex": "1881", - "start": "22072" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "8", - "end": "22077", - "id": "1882", - "length": "36", - "line": "680", - "parentIndex": "1841", - "start": "22042" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - } - } - }, - "id": "1879", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "22078", - "id": "1880", - "length": "37", - "line": "680", - "parentIndex": "1841", - "start": "22042" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1897", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1897", - "src": { - "column": "22", - "end": "22106", - "id": "1898", - "length": "5", - "line": "681", - "parentIndex": "1841", - "start": "22102" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1899", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1899", - "src": { - "column": "29", - "end": "22115", - "id": "1900", - "length": "7", - "line": "681", - "parentIndex": "1841", - "start": "22109" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1901", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1901", - "src": { - "column": "38", - "end": "22123", - "id": "1902", - "length": "6", - "line": "681", - "parentIndex": "1841", - "start": "22118" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1903", - "name": "Approval", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "769", - "src": { - "column": "13", - "end": "22100", - "id": "1904", - "length": "8", - "line": "681", - "parentIndex": "1841", - "start": "22093" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_IERC20_Approval_\u0026769", - "typeString": "event IERC20.Approval" - } - } - }, - "id": "1895", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "22125", - "id": "1896", - "length": "38", - "line": "681", - "parentIndex": "1824", - "start": "22088" - } - } - } - ] - }, - "id": "1824", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_approve", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1826", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1828", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1828", - "src": { - "column": "22", - "end": "21822", - "id": "1829", - "length": "13", - "line": "676", - "parentIndex": "1826", - "start": "21810" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1830", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "22", - "end": "21816", - "id": "1831", - "length": "7", - "line": "676", - "parentIndex": "1828", - "start": "21810" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1832", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1832", - "src": { - "column": "37", - "end": "21839", - "id": "1833", - "length": "15", - "line": "676", - "parentIndex": "1826", - "start": "21825" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1834", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "37", - "end": "21831", - "id": "1835", - "length": "7", - "line": "676", - "parentIndex": "1832", - "start": "21825" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1836", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1836", - "src": { - "column": "54", - "end": "21855", - "id": "1837", - "length": "14", - "line": "676", - "parentIndex": "1826", - "start": "21842" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1838", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "54", - "end": "21848", - "id": "1839", - "length": "7", - "line": "676", - "parentIndex": "1836", - "start": "21842" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "22", - "end": "21855", - "id": "1827", - "length": "46", - "line": "676", - "parentIndex": "1824", - "start": "21810" - } - }, - "returnParameters": { - "id": "1840", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "22131", - "id": "1825", - "length": "340", - "line": "676", - "parentIndex": "1824", - "start": "21792" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "22131", - "id": "1825", - "length": "340", - "line": "676", - "parentIndex": "923", - "start": "21792" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1923", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "94", - "end": "22823", - "id": "1924", - "length": "321", - "line": "692", - "parentIndex": "1906", - "start": "22503" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "1927" - ], - "declarations": [ - { - "id": "1927", - "mutability": "MUTABLE", - "name": "currentAllowance", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1923", - "src": { - "column": "8", - "end": "22536", - "id": "1928", - "length": "24", - "line": "693", - "parentIndex": "1925", - "start": "22513" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1929", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "22519", - "id": "1930", - "length": "7", - "line": "693", - "parentIndex": "1927", - "start": "22513" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "1925", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1933", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1933", - "src": { - "column": "45", - "end": "22554", - "id": "1934", - "length": "5", - "line": "693", - "parentIndex": "1931", - "start": "22550" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1935", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1935", - "src": { - "column": "52", - "end": "22563", - "id": "1936", - "length": "7", - "line": "693", - "parentIndex": "1931", - "start": "22557" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1937", - "name": "allowance", - "nodeType": "IDENTIFIER", - "src": { - "column": "35", - "end": "22548", - "id": "1938", - "length": "9", - "line": "693", - "parentIndex": "1931", - "start": "22540" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address", - "typeString": "function(address,address)" - } - } - }, - "id": "1931", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "35", - "end": "22564", - "id": "1932", - "length": "25", - "line": "693", - "parentIndex": "1925", - "start": "22540" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$", - "typeString": "function(address,address)" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "22565", - "id": "1926", - "length": "53", - "line": "693", - "parentIndex": "1923", - "start": "22513" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "1949", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "51", - "end": "22817", - "id": "1950", - "length": "200", - "line": "694", - "parentIndex": "1906", - "start": "22618" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: insufficient allowance\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1953", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1955", - "name": "currentAllowance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1401", - "src": { - "column": "20", - "end": "22655", - "id": "1956", - "length": "16", - "line": "695", - "parentIndex": "1953", - "start": "22640" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN_OR_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1957", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1957", - "src": { - "column": "40", - "end": "22665", - "id": "1958", - "length": "6", - "line": "695", - "parentIndex": "1953", - "start": "22660" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "20", - "end": "22665", - "id": "1954", - "length": "26", - "line": "695", - "parentIndex": "1951", - "start": "22640" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365", - "id": "1959", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "48", - "end": "22698", - "id": "1960", - "length": "31", - "line": "695", - "parentIndex": "1951", - "start": "22668" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: insufficient allowance\"" - }, - "value": "ERC20: insufficient allowance" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: insufficient allowance\"" - } - ], - "id": "1961", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "12", - "end": "22638", - "id": "1962", - "length": "7", - "line": "695", - "parentIndex": "1951", - "start": "22632" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: insufficient allowance\")" - } - } - }, - "id": "1951", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "22699", - "id": "1952", - "length": "68", - "line": "695", - "parentIndex": "1949", - "start": "22632" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1941", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1943", - "name": "currentAllowance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1925", - "src": { - "column": "12", - "end": "22594", - "id": "1944", - "length": "16", - "line": "694", - "parentIndex": "1941", - "start": "22579" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MetaType", - "value": { - "id": "1947", - "name": "type", - "nodeType": "IDENTIFIER", - "src": { - "column": "32", - "end": "22611", - "id": "1948", - "length": "13", - "line": "694", - "parentIndex": "1945", - "start": "22599" - }, - "typeDescription": { - "typeString": "type" - } - } - }, - "id": "1945", - "memberName": "max", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "32", - "end": "22615", - "id": "1946", - "length": "17", - "line": "694", - "parentIndex": "1941", - "start": "22599" - }, - "typeDescription": { - "typeString": "type" - } - } - }, - "src": { - "column": "12", - "end": "22615", - "id": "1942", - "length": "37", - "line": "694", - "parentIndex": "1939", - "start": "22579" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "1939", - "nodeType": "IF_STATEMENT", - "src": { - "end": "22817", - "id": "1940", - "length": "243", - "line": "694", - "parentIndex": "1923", - "start": "22575" - } - } - } - ] - }, - "id": "1906", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_spendAllowance", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1908", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1910", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1910", - "src": { - "column": "29", - "end": "22450", - "id": "1911", - "length": "13", - "line": "692", - "parentIndex": "1908", - "start": "22438" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1912", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "29", - "end": "22444", - "id": "1913", - "length": "7", - "line": "692", - "parentIndex": "1910", - "start": "22438" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1914", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1914", - "src": { - "column": "44", - "end": "22467", - "id": "1915", - "length": "15", - "line": "692", - "parentIndex": "1908", - "start": "22453" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1916", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "44", - "end": "22459", - "id": "1917", - "length": "7", - "line": "692", - "parentIndex": "1914", - "start": "22453" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1918", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1918", - "src": { - "column": "61", - "end": "22483", - "id": "1919", - "length": "14", - "line": "692", - "parentIndex": "1908", - "start": "22470" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1920", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "61", - "end": "22476", - "id": "1921", - "length": "7", - "line": "692", - "parentIndex": "1918", - "start": "22470" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "29", - "end": "22483", - "id": "1909", - "length": "46", - "line": "692", - "parentIndex": "1906", - "start": "22438" - } - }, - "returnParameters": { - "id": "1922", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "22823", - "id": "1907", - "length": "411", - "line": "692", - "parentIndex": "1906", - "start": "22413" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "22823", - "id": "1907", - "length": "411", - "line": "692", - "parentIndex": "923", - "start": "22413" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1981", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "93", - "end": "23498", - "id": "1982", - "length": "2", - "line": "716", - "parentIndex": "1964", - "start": "23497" - } - }, - "id": "1964", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_beforeTokenTransfer", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1966", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1968", - "name": "from", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1968", - "src": { - "column": "34", - "end": "23449", - "id": "1969", - "length": "12", - "line": "716", - "parentIndex": "1966", - "start": "23438" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1970", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "34", - "end": "23444", - "id": "1971", - "length": "7", - "line": "716", - "parentIndex": "1968", - "start": "23438" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1972", - "name": "to", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1972", - "src": { - "column": "48", - "end": "23461", - "id": "1973", - "length": "10", - "line": "716", - "parentIndex": "1966", - "start": "23452" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1974", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "48", - "end": "23458", - "id": "1975", - "length": "7", - "line": "716", - "parentIndex": "1972", - "start": "23452" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1976", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1976", - "src": { - "column": "60", - "end": "23477", - "id": "1977", - "length": "14", - "line": "716", - "parentIndex": "1966", - "start": "23464" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1978", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "60", - "end": "23470", - "id": "1979", - "length": "7", - "line": "716", - "parentIndex": "1976", - "start": "23464" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "34", - "end": "23477", - "id": "1967", - "length": "40", - "line": "716", - "parentIndex": "1964", - "start": "23438" - } - }, - "returnParameters": { - "id": "1980", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "23498", - "id": "1965", - "length": "91", - "line": "716", - "parentIndex": "1964", - "start": "23408" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "23498", - "id": "1965", - "length": "91", - "line": "716", - "parentIndex": "923", - "start": "23408" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2001", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "92", - "end": "24176", - "id": "2002", - "length": "2", - "line": "732", - "parentIndex": "1984", - "start": "24175" - } - }, - "id": "1984", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_afterTokenTransfer", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1986", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1988", - "name": "from", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1988", - "src": { - "column": "33", - "end": "24127", - "id": "1989", - "length": "12", - "line": "732", - "parentIndex": "1986", - "start": "24116" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1990", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "33", - "end": "24122", - "id": "1991", - "length": "7", - "line": "732", - "parentIndex": "1988", - "start": "24116" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1992", - "name": "to", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1992", - "src": { - "column": "47", - "end": "24139", - "id": "1993", - "length": "10", - "line": "732", - "parentIndex": "1986", - "start": "24130" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1994", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "47", - "end": "24136", - "id": "1995", - "length": "7", - "line": "732", - "parentIndex": "1992", - "start": "24130" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1996", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1996", - "src": { - "column": "59", - "end": "24155", - "id": "1997", - "length": "14", - "line": "732", - "parentIndex": "1986", - "start": "24142" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1998", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "59", - "end": "24148", - "id": "1999", - "length": "7", - "line": "732", - "parentIndex": "1996", - "start": "24142" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "33", - "end": "24155", - "id": "1987", - "length": "40", - "line": "732", - "parentIndex": "1984", - "start": "24116" - } - }, - "returnParameters": { - "id": "2000", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "24176", - "id": "1985", - "length": "90", - "line": "732", - "parentIndex": "1984", - "start": "24087" - } - }, - "scope": "923", - "src": { - "column": "4", - "end": "24176", - "id": "1985", - "length": "90", - "line": "732", - "parentIndex": "923", - "start": "24087" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - } - ], - "src": { - "end": "24178", - "length": "11312", - "line": "406", - "parentIndex": "907", - "start": "12867" - } - } - } - ] - }, - "src": { - "id": 908, - "line": 406, - "start": 12867, - "end": 24178, - "length": 11312, - "parent_index": 64 - } - } - ], - "comments": [ - { - "id": 1, - "node_type": 33, - "src": { - "line": 1, - "end": 30, - "length": 31, - "parent_index": 2 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 2, - "node_type": 32, - "src": { - "line": 5, - "start": 58, - "end": 620, - "length": 563, - "parent_index": 3 - }, - "text": "/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */" - }, - { - "id": 3, - "node_type": 32, - "src": { - "line": 19, - "column": 4, - "start": 645, - "end": 775, - "length": 131, - "parent_index": 4 - }, - "text": "/**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */" - }, - { - "id": 4, - "node_type": 32, - "src": { - "line": 32, - "column": 4, - "start": 1003, - "end": 1137, - "length": 135, - "parent_index": 5 - }, - "text": "/**\n * @dev Returns the substraction of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */" - }, - { - "id": 5, - "node_type": 32, - "src": { - "line": 44, - "column": 4, - "start": 1338, - "end": 1474, - "length": 137, - "parent_index": 6 - }, - "text": "/**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */" - }, - { - "id": 6, - "node_type": 31, - "src": { - "line": 51, - "column": 12, - "start": 1590, - "end": 1668, - "length": 79, - "parent_index": 7 - }, - "text": "// Gas optimization: this is cheaper than requiring 'a' not being zero, but the" - }, - { - "id": 7, - "node_type": 31, - "src": { - "line": 52, - "column": 12, - "start": 1682, - "end": 1722, - "length": 41, - "parent_index": 8 - }, - "text": "// benefit is lost if 'b' is also tested." - }, - { - "id": 8, - "node_type": 31, - "src": { - "line": 53, - "column": 12, - "start": 1736, - "end": 1806, - "length": 71, - "parent_index": 9 - }, - "text": "// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522" - }, - { - "id": 9, - "node_type": 32, - "src": { - "line": 61, - "column": 4, - "start": 1979, - "end": 2116, - "length": 138, - "parent_index": 10 - }, - "text": "/**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */" - }, - { - "id": 10, - "node_type": 32, - "src": { - "line": 73, - "column": 4, - "start": 2318, - "end": 2465, - "length": 148, - "parent_index": 11 - }, - "text": "/**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */" - }, - { - "id": 11, - "node_type": 32, - "src": { - "line": 85, - "column": 4, - "start": 2667, - "end": 2890, - "length": 224, - "parent_index": 12 - }, - "text": "/**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */" - }, - { - "id": 12, - "node_type": 32, - "src": { - "line": 99, - "column": 4, - "start": 2998, - "end": 3257, - "length": 260, - "parent_index": 13 - }, - "text": "/**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */" - }, - { - "id": 13, - "node_type": 32, - "src": { - "line": 113, - "column": 4, - "start": 3365, - "end": 3600, - "length": 236, - "parent_index": 14 - }, - "text": "/**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */" - }, - { - "id": 14, - "node_type": 32, - "src": { - "line": 127, - "column": 4, - "start": 3708, - "end": 4160, - "length": 453, - "parent_index": 15 - }, - "text": "/**\n * @dev Returns the integer division of two unsigned integers, reverting on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */" - }, - { - "id": 15, - "node_type": 32, - "src": { - "line": 143, - "column": 4, - "start": 4268, - "end": 4709, - "length": 442, - "parent_index": 16 - }, - "text": "/**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */" - }, - { - "id": 16, - "node_type": 32, - "src": { - "line": 159, - "column": 4, - "start": 4817, - "end": 5269, - "length": 453, - "parent_index": 17 - }, - "text": "/**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {trySub}.\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */" - }, - { - "id": 17, - "node_type": 32, - "src": { - "line": 183, - "column": 4, - "start": 5512, - "end": 5984, - "length": 473, - "parent_index": 18 - }, - "text": "/**\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */" - }, - { - "id": 18, - "node_type": 32, - "src": { - "line": 206, - "column": 4, - "start": 6226, - "end": 6860, - "length": 635, - "parent_index": 19 - }, - "text": "/**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting with custom message when dividing by zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryMod}.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */" - }, - { - "id": 19, - "node_type": 33, - "src": { - "line": 233, - "start": 7100, - "end": 7130, - "length": 31, - "parent_index": 20 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 20, - "node_type": 32, - "src": { - "line": 237, - "start": 7158, - "end": 7227, - "length": 70, - "parent_index": 21 - }, - "text": "/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */" - }, - { - "id": 21, - "node_type": 32, - "src": { - "line": 241, - "column": 4, - "start": 7252, - "end": 7317, - "length": 66, - "parent_index": 22 - }, - "text": "/**\n * @dev Returns the amount of tokens in existence.\n */" - }, - { - "id": 22, - "node_type": 32, - "src": { - "line": 246, - "column": 4, - "start": 7384, - "end": 7455, - "length": 72, - "parent_index": 23 - }, - "text": "/**\n * @dev Returns the amount of tokens owned by `account`.\n */" - }, - { - "id": 23, - "node_type": 32, - "src": { - "line": 251, - "column": 4, - "start": 7535, - "end": 7743, - "length": 209, - "parent_index": 24 - }, - "text": "/**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */" - }, - { - "id": 24, - "node_type": 32, - "src": { - "line": 260, - "column": 4, - "start": 7832, - "end": 8095, - "length": 264, - "parent_index": 25 - }, - "text": "/**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */" - }, - { - "id": 25, - "node_type": 32, - "src": { - "line": 269, - "column": 4, - "start": 8190, - "end": 8831, - "length": 642, - "parent_index": 26 - }, - "text": "/**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race condition\n * is to first reduce the spender's allowance to 0 and set the desired value\n * afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */" - }, - { - "id": 26, - "node_type": 32, - "src": { - "line": 285, - "column": 4, - "start": 8917, - "end": 9212, - "length": 296, - "parent_index": 27 - }, - "text": "/**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */" - }, - { - "id": 27, - "node_type": 32, - "src": { - "line": 300, - "column": 4, - "start": 9351, - "end": 9508, - "length": 158, - "parent_index": 28 - }, - "text": "/**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */" - }, - { - "id": 28, - "node_type": 32, - "src": { - "line": 308, - "column": 4, - "start": 9592, - "end": 9739, - "length": 148, - "parent_index": 29 - }, - "text": "/**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */" - }, - { - "id": 29, - "node_type": 33, - "src": { - "line": 315, - "start": 9827, - "end": 9857, - "length": 31, - "parent_index": 30 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 30, - "node_type": 31, - "src": { - "line": 316, - "start": 9859, - "end": 9934, - "length": 76, - "parent_index": 31 - }, - "text": "// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)" - }, - { - "id": 31, - "node_type": 32, - "src": { - "line": 322, - "start": 9987, - "end": 10102, - "length": 116, - "parent_index": 32 - }, - "text": "/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */" - }, - { - "id": 32, - "node_type": 32, - "src": { - "line": 328, - "column": 4, - "start": 10145, - "end": 10198, - "length": 54, - "parent_index": 33 - }, - "text": "/**\n * @dev Returns the name of the token.\n */" - }, - { - "id": 33, - "node_type": 32, - "src": { - "line": 333, - "column": 4, - "start": 10264, - "end": 10319, - "length": 56, - "parent_index": 34 - }, - "text": "/**\n * @dev Returns the symbol of the token.\n */" - }, - { - "id": 34, - "node_type": 32, - "src": { - "line": 338, - "column": 4, - "start": 10387, - "end": 10451, - "length": 65, - "parent_index": 35 - }, - "text": "/**\n * @dev Returns the decimals places of the token.\n */" - }, - { - "id": 35, - "node_type": 33, - "src": { - "line": 344, - "start": 10511, - "end": 10541, - "length": 31, - "parent_index": 36 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 36, - "node_type": 31, - "src": { - "line": 345, - "start": 10543, - "end": 10594, - "length": 52, - "parent_index": 37 - }, - "text": "// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)" - }, - { - "id": 37, - "node_type": 32, - "src": { - "line": 349, - "start": 10622, - "end": 11117, - "length": 496, - "parent_index": 38 - }, - "text": "/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */" - }, - { - "id": 38, - "node_type": 33, - "src": { - "line": 369, - "start": 11356, - "end": 11386, - "length": 31, - "parent_index": 39 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 39, - "node_type": 31, - "src": { - "line": 370, - "start": 11388, - "end": 11458, - "length": 71, - "parent_index": 40 - }, - "text": "// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)" - }, - { - "id": 40, - "node_type": 32, - "src": { - "line": 378, - "start": 11565, - "end": 12865, - "length": 1301, - "parent_index": 41 - }, - "text": "/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */" - }, - { - "id": 41, - "node_type": 32, - "src": { - "line": 416, - "column": 4, - "start": 13139, - "end": 13309, - "length": 171, - "parent_index": 42 - }, - "text": "/**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */" - }, - { - "id": 42, - "node_type": 32, - "src": { - "line": 427, - "column": 4, - "start": 13434, - "end": 13487, - "length": 54, - "parent_index": 43 - }, - "text": "/**\n * @dev Returns the name of the token.\n */" - }, - { - "id": 43, - "node_type": 32, - "src": { - "line": 434, - "column": 4, - "start": 13597, - "end": 13698, - "length": 102, - "parent_index": 44 - }, - "text": "/**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */" - }, - { - "id": 44, - "node_type": 32, - "src": { - "line": 442, - "column": 4, - "start": 13812, - "end": 14433, - "length": 622, - "parent_index": 45 - }, - "text": "/**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */" - }, - { - "id": 45, - "node_type": 32, - "src": { - "line": 459, - "column": 4, - "start": 14536, - "end": 14584, - "length": 49, - "parent_index": 46 - }, - "text": "/**\n * @dev See {IERC20-totalSupply}.\n */" - }, - { - "id": 46, - "node_type": 32, - "src": { - "line": 466, - "column": 4, - "start": 14702, - "end": 14748, - "length": 47, - "parent_index": 47 - }, - "text": "/**\n * @dev See {IERC20-balanceOf}.\n */" - }, - { - "id": 47, - "node_type": 32, - "src": { - "line": 473, - "column": 4, - "start": 14885, - "end": 15069, - "length": 185, - "parent_index": 48 - }, - "text": "/**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */" - }, - { - "id": 48, - "node_type": 32, - "src": { - "line": 487, - "column": 4, - "start": 15270, - "end": 15316, - "length": 47, - "parent_index": 49 - }, - "text": "/**\n * @dev See {IERC20-allowance}.\n */" - }, - { - "id": 49, - "node_type": 32, - "src": { - "line": 494, - "column": 4, - "start": 15477, - "end": 15773, - "length": 297, - "parent_index": 50 - }, - "text": "/**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */" - }, - { - "id": 50, - "node_type": 32, - "src": { - "line": 510, - "column": 4, - "start": 15982, - "end": 16532, - "length": 551, - "parent_index": 51 - }, - "text": "/**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */" - }, - { - "id": 51, - "node_type": 32, - "src": { - "line": 533, - "column": 4, - "start": 16800, - "end": 17183, - "length": 384, - "parent_index": 52 - }, - "text": "/**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */" - }, - { - "id": 52, - "node_type": 32, - "src": { - "line": 551, - "column": 4, - "start": 17429, - "end": 17904, - "length": 476, - "parent_index": 53 - }, - "text": "/**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */" - }, - { - "id": 53, - "node_type": 32, - "src": { - "line": 576, - "column": 4, - "start": 18343, - "end": 18785, - "length": 443, - "parent_index": 54 - }, - "text": "/**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */" - }, - { - "id": 54, - "node_type": 31, - "src": { - "line": 600, - "column": 12, - "start": 19286, - "end": 19388, - "length": 103, - "parent_index": 55 - }, - "text": "// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by" - }, - { - "id": 55, - "node_type": 31, - "src": { - "line": 601, - "column": 12, - "start": 19402, - "end": 19435, - "length": 34, - "parent_index": 56 - }, - "text": "// decrementing then incrementing." - }, - { - "id": 56, - "node_type": 32, - "src": { - "line": 610, - "column": 4, - "start": 19585, - "end": 19849, - "length": 265, - "parent_index": 57 - }, - "text": "/** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */" - }, - { - "id": 57, - "node_type": 31, - "src": { - "line": 626, - "column": 12, - "start": 20122, - "end": 20220, - "length": 99, - "parent_index": 58 - }, - "text": "// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above." - }, - { - "id": 58, - "node_type": 32, - "src": { - "line": 634, - "column": 4, - "start": 20396, - "end": 20704, - "length": 309, - "parent_index": 59 - }, - "text": "/**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */" - }, - { - "id": 59, - "node_type": 31, - "src": { - "line": 654, - "column": 12, - "start": 21139, - "end": 21204, - "length": 66, - "parent_index": 60 - }, - "text": "// Overflow not possible: amount \u003c= accountBalance \u003c= totalSupply." - }, - { - "id": 60, - "node_type": 32, - "src": { - "line": 663, - "column": 4, - "start": 21375, - "end": 21786, - "length": 412, - "parent_index": 61 - }, - "text": "/**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */" - }, - { - "id": 61, - "node_type": 32, - "src": { - "line": 684, - "column": 4, - "start": 22138, - "end": 22407, - "length": 270, - "parent_index": 62 - }, - "text": "/**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */" - }, - { - "id": 62, - "node_type": 32, - "src": { - "line": 702, - "column": 4, - "start": 22830, - "end": 23402, - "length": 573, - "parent_index": 63 - }, - "text": "/**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */" - }, - { - "id": 63, - "node_type": 32, - "src": { - "line": 718, - "column": 4, - "start": 23505, - "end": 24081, - "length": 577, - "parent_index": 64 - }, - "text": "/**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */" - } - ] + "id": 64, + "entry_source_unit": 907, + "node_type": 80, + "source_units": [ + { + "id": 65, + "license": "MIT", + "name": "SafeMath", + "absolute_path": "SafeMath.sol", + "exported_symbols": [ + { + "id": 65, + "name": "SafeMath", + "absolute_path": "SafeMath.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "67", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "55", + "id": "68", + "length": "23", + "line": "3", + "parentIndex": "65", + "start": "33" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "69", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "69" + ], + "name": "SafeMath", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "93", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "80", + "end": "996", + "id": "94", + "length": "140", + "line": "24", + "parentIndex": "71", + "start": "857" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "95", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "990", + "id": "96", + "length": "124", + "line": "25", + "parentIndex": "69", + "start": "867" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "99" + ], + "declarations": [ + { + "id": "99", + "mutability": "MUTABLE", + "name": "c", + "nodeType": "VARIABLE_DECLARATION", + "scope": "95", + "src": { + "column": "12", + "end": "899", + "id": "100", + "length": "9", + "line": "26", + "parentIndex": "97", + "start": "891" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "101", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "897", + "id": "102", + "length": "7", + "line": "26", + "parentIndex": "99", + "start": "891" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "97", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "103", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "105", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "105", + "src": { + "column": "24", + "end": "903", + "id": "106", + "length": "1", + "line": "26", + "parentIndex": "103", + "start": "903" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "ADDITION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "107", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "107", + "src": { + "column": "28", + "end": "907", + "id": "108", + "length": "1", + "line": "26", + "parentIndex": "103", + "start": "907" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "24", + "end": "907", + "id": "104", + "length": "5", + "line": "26", + "parentIndex": "97", + "start": "903" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "908", + "id": "98", + "length": "18", + "line": "26", + "parentIndex": "95", + "start": "891" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "117", + "nodeType": "BLOCK", + "src": {} + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "111", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "113", + "name": "c", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "97", + "src": { + "column": "16", + "end": "926", + "id": "114", + "length": "1", + "line": "27", + "parentIndex": "111", + "start": "926" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "115", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "115", + "src": { + "column": "20", + "end": "930", + "id": "116", + "length": "1", + "line": "27", + "parentIndex": "111", + "start": "930" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "930", + "id": "112", + "length": "5", + "line": "27", + "parentIndex": "109", + "start": "926" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "109", + "nodeType": "IF_STATEMENT", + "src": { + "end": "950", + "id": "110", + "length": "29", + "line": "27", + "parentIndex": "95", + "start": "922" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "122", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "20", + "end": "975", + "id": "123", + "length": "4", + "line": "28", + "parentIndex": "120", + "start": "972" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "124", + "name": "c", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "97", + "src": { + "column": "26", + "end": "978", + "id": "125", + "length": "1", + "line": "28", + "parentIndex": "120", + "start": "978" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "120", + "isPure": true, + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "19", + "end": "979", + "id": "121", + "length": "9", + "line": "28", + "parentIndex": "71", + "start": "971" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + }, + "functionReturnParameters": "71", + "id": "118", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "980", + "id": "119", + "length": "17", + "line": "28", + "parentIndex": "71", + "start": "964" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + } + ] + } + } + ] + }, + "id": "71", + "kind": "KIND_FUNCTION", + "name": "tryAdd", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "73", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "75", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "75", + "src": { + "column": "20", + "end": "805", + "id": "76", + "length": "9", + "line": "24", + "parentIndex": "73", + "start": "797" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "77", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "20", + "end": "803", + "id": "78", + "length": "7", + "line": "24", + "parentIndex": "75", + "start": "797" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "79", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "79", + "src": { + "column": "31", + "end": "816", + "id": "80", + "length": "9", + "line": "24", + "parentIndex": "73", + "start": "808" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "81", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "814", + "id": "82", + "length": "7", + "line": "24", + "parentIndex": "79", + "start": "808" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "20", + "end": "816", + "id": "74", + "length": "20", + "line": "24", + "parentIndex": "71", + "start": "797" + } + }, + "returnParameters": { + "id": "83", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "85", + "nodeType": "VARIABLE_DECLARATION", + "scope": "85", + "src": { + "column": "65", + "end": "845", + "id": "86", + "length": "4", + "line": "24", + "parentIndex": "83", + "start": "842" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "87", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "65", + "end": "845", + "id": "88", + "length": "4", + "line": "24", + "parentIndex": "85", + "start": "842" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "89", + "nodeType": "VARIABLE_DECLARATION", + "scope": "89", + "src": { + "column": "71", + "end": "854", + "id": "90", + "length": "7", + "line": "24", + "parentIndex": "83", + "start": "848" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "91", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "71", + "end": "854", + "id": "92", + "length": "7", + "line": "24", + "parentIndex": "89", + "start": "848" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "854", + "id": "84", + "length": "13", + "line": "24", + "parentIndex": "71", + "start": "842" + } + }, + "scope": "69", + "src": { + "column": "4", + "end": "996", + "id": "72", + "length": "216", + "line": "24", + "parentIndex": "69", + "start": "781" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "149", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "80", + "end": "1331", + "id": "150", + "length": "113", + "line": "37", + "parentIndex": "127", + "start": "1219" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "151", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "1325", + "id": "152", + "length": "97", + "line": "38", + "parentIndex": "69", + "start": "1229" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "161", + "nodeType": "BLOCK", + "src": {} + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "155", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "157", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "157", + "src": { + "column": "16", + "end": "1257", + "id": "158", + "length": "1", + "line": "39", + "parentIndex": "155", + "start": "1257" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "159", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "159", + "src": { + "column": "20", + "end": "1261", + "id": "160", + "length": "1", + "line": "39", + "parentIndex": "155", + "start": "1261" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "1261", + "id": "156", + "length": "5", + "line": "39", + "parentIndex": "153", + "start": "1257" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "153", + "nodeType": "IF_STATEMENT", + "src": { + "end": "1281", + "id": "154", + "length": "29", + "line": "39", + "parentIndex": "151", + "start": "1253" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "166", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "20", + "end": "1306", + "id": "167", + "length": "4", + "line": "40", + "parentIndex": "164", + "start": "1303" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "168", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "170", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "170", + "src": { + "column": "26", + "end": "1309", + "id": "171", + "length": "1", + "line": "40", + "parentIndex": "168", + "start": "1309" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "172", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "172", + "src": { + "column": "30", + "end": "1313", + "id": "173", + "length": "1", + "line": "40", + "parentIndex": "168", + "start": "1313" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "26", + "end": "1313", + "id": "169", + "length": "5", + "line": "40", + "parentIndex": "164", + "start": "1309" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "164", + "isPure": true, + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "19", + "end": "1314", + "id": "165", + "length": "13", + "line": "40", + "parentIndex": "127", + "start": "1302" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + }, + "functionReturnParameters": "127", + "id": "162", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "1315", + "id": "163", + "length": "21", + "line": "40", + "parentIndex": "127", + "start": "1295" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + } + ] + } + } + ] + }, + "id": "127", + "kind": "KIND_FUNCTION", + "name": "trySub", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "129", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "131", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "131", + "src": { + "column": "20", + "end": "1167", + "id": "132", + "length": "9", + "line": "37", + "parentIndex": "129", + "start": "1159" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "133", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "20", + "end": "1165", + "id": "134", + "length": "7", + "line": "37", + "parentIndex": "131", + "start": "1159" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "135", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "135", + "src": { + "column": "31", + "end": "1178", + "id": "136", + "length": "9", + "line": "37", + "parentIndex": "129", + "start": "1170" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "137", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "1176", + "id": "138", + "length": "7", + "line": "37", + "parentIndex": "135", + "start": "1170" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "20", + "end": "1178", + "id": "130", + "length": "20", + "line": "37", + "parentIndex": "127", + "start": "1159" + } + }, + "returnParameters": { + "id": "139", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "141", + "nodeType": "VARIABLE_DECLARATION", + "scope": "141", + "src": { + "column": "65", + "end": "1207", + "id": "142", + "length": "4", + "line": "37", + "parentIndex": "139", + "start": "1204" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "143", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "65", + "end": "1207", + "id": "144", + "length": "4", + "line": "37", + "parentIndex": "141", + "start": "1204" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "145", + "nodeType": "VARIABLE_DECLARATION", + "scope": "145", + "src": { + "column": "71", + "end": "1216", + "id": "146", + "length": "7", + "line": "37", + "parentIndex": "139", + "start": "1210" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "147", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "71", + "end": "1216", + "id": "148", + "length": "7", + "line": "37", + "parentIndex": "145", + "start": "1210" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "1216", + "id": "140", + "length": "13", + "line": "37", + "parentIndex": "127", + "start": "1204" + } + }, + "scope": "69", + "src": { + "column": "4", + "end": "1331", + "id": "128", + "length": "189", + "line": "37", + "parentIndex": "69", + "start": "1143" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "197", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "80", + "end": "1972", + "id": "198", + "length": "417", + "line": "49", + "parentIndex": "175", + "start": "1556" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "199", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "1966", + "id": "200", + "length": "401", + "line": "50", + "parentIndex": "69", + "start": "1566" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "209", + "nodeType": "BLOCK", + "src": {} + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "203", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "205", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "205", + "src": { + "column": "16", + "end": "1824", + "id": "206", + "length": "1", + "line": "54", + "parentIndex": "203", + "start": "1824" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "207", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "21", + "end": "1829", + "id": "208", + "length": "1", + "line": "54", + "parentIndex": "203", + "start": "1829" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "16", + "end": "1829", + "id": "204", + "length": "6", + "line": "54", + "parentIndex": "201", + "start": "1824" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "201", + "nodeType": "IF_STATEMENT", + "src": { + "end": "1848", + "id": "202", + "length": "29", + "line": "54", + "parentIndex": "199", + "start": "1820" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "212" + ], + "declarations": [ + { + "id": "212", + "mutability": "MUTABLE", + "name": "c", + "nodeType": "VARIABLE_DECLARATION", + "scope": "199", + "src": { + "column": "12", + "end": "1870", + "id": "213", + "length": "9", + "line": "55", + "parentIndex": "210", + "start": "1862" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "214", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "1868", + "id": "215", + "length": "7", + "line": "55", + "parentIndex": "212", + "start": "1862" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "210", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "216", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "218", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "218", + "src": { + "column": "24", + "end": "1874", + "id": "219", + "length": "1", + "line": "55", + "parentIndex": "216", + "start": "1874" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MULTIPLICATION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "220", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "220", + "src": { + "column": "28", + "end": "1878", + "id": "221", + "length": "1", + "line": "55", + "parentIndex": "216", + "start": "1878" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "24", + "end": "1878", + "id": "217", + "length": "5", + "line": "55", + "parentIndex": "210", + "start": "1874" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "1879", + "id": "211", + "length": "18", + "line": "55", + "parentIndex": "199", + "start": "1862" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "234", + "nodeType": "BLOCK", + "src": {} + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "224", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "226", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "228", + "name": "c", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "210", + "src": { + "column": "16", + "end": "1897", + "id": "229", + "length": "1", + "line": "56", + "parentIndex": "226", + "start": "1897" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "230", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "230", + "src": { + "column": "20", + "end": "1901", + "id": "231", + "length": "1", + "line": "56", + "parentIndex": "226", + "start": "1901" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "1901", + "id": "227", + "length": "5", + "line": "56", + "parentIndex": "224", + "start": "1897" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "232", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "232", + "src": { + "column": "25", + "end": "1906", + "id": "233", + "length": "1", + "line": "56", + "parentIndex": "224", + "start": "1906" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "1906", + "id": "225", + "length": "10", + "line": "56", + "parentIndex": "222", + "start": "1897" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "222", + "nodeType": "IF_STATEMENT", + "src": { + "end": "1926", + "id": "223", + "length": "34", + "line": "56", + "parentIndex": "199", + "start": "1893" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "239", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "20", + "end": "1951", + "id": "240", + "length": "4", + "line": "57", + "parentIndex": "237", + "start": "1948" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "241", + "name": "c", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "210", + "src": { + "column": "26", + "end": "1954", + "id": "242", + "length": "1", + "line": "57", + "parentIndex": "237", + "start": "1954" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "237", + "isPure": true, + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "19", + "end": "1955", + "id": "238", + "length": "9", + "line": "57", + "parentIndex": "175", + "start": "1947" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + }, + "functionReturnParameters": "175", + "id": "235", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "1956", + "id": "236", + "length": "17", + "line": "57", + "parentIndex": "175", + "start": "1940" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + } + ] + } + } + ] + }, + "id": "175", + "kind": "KIND_FUNCTION", + "name": "tryMul", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "177", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "179", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "179", + "src": { + "column": "20", + "end": "1504", + "id": "180", + "length": "9", + "line": "49", + "parentIndex": "177", + "start": "1496" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "181", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "20", + "end": "1502", + "id": "182", + "length": "7", + "line": "49", + "parentIndex": "179", + "start": "1496" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "183", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "183", + "src": { + "column": "31", + "end": "1515", + "id": "184", + "length": "9", + "line": "49", + "parentIndex": "177", + "start": "1507" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "185", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "1513", + "id": "186", + "length": "7", + "line": "49", + "parentIndex": "183", + "start": "1507" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "20", + "end": "1515", + "id": "178", + "length": "20", + "line": "49", + "parentIndex": "175", + "start": "1496" + } + }, + "returnParameters": { + "id": "187", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "189", + "nodeType": "VARIABLE_DECLARATION", + "scope": "189", + "src": { + "column": "65", + "end": "1544", + "id": "190", + "length": "4", + "line": "49", + "parentIndex": "187", + "start": "1541" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "191", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "65", + "end": "1544", + "id": "192", + "length": "4", + "line": "49", + "parentIndex": "189", + "start": "1541" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "193", + "nodeType": "VARIABLE_DECLARATION", + "scope": "193", + "src": { + "column": "71", + "end": "1553", + "id": "194", + "length": "7", + "line": "49", + "parentIndex": "187", + "start": "1547" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "195", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "71", + "end": "1553", + "id": "196", + "length": "7", + "line": "49", + "parentIndex": "193", + "start": "1547" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "1553", + "id": "188", + "length": "13", + "line": "49", + "parentIndex": "175", + "start": "1541" + } + }, + "scope": "69", + "src": { + "column": "4", + "end": "1972", + "id": "176", + "length": "493", + "line": "49", + "parentIndex": "69", + "start": "1480" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "266", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "80", + "end": "2311", + "id": "267", + "length": "114", + "line": "66", + "parentIndex": "244", + "start": "2198" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "268", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "2305", + "id": "269", + "length": "98", + "line": "67", + "parentIndex": "69", + "start": "2208" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "278", + "nodeType": "BLOCK", + "src": {} + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "272", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "274", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "274", + "src": { + "column": "16", + "end": "2236", + "id": "275", + "length": "1", + "line": "68", + "parentIndex": "272", + "start": "2236" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "276", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "21", + "end": "2241", + "id": "277", + "length": "1", + "line": "68", + "parentIndex": "272", + "start": "2241" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "16", + "end": "2241", + "id": "273", + "length": "6", + "line": "68", + "parentIndex": "270", + "start": "2236" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "270", + "nodeType": "IF_STATEMENT", + "src": { + "end": "2261", + "id": "271", + "length": "30", + "line": "68", + "parentIndex": "268", + "start": "2232" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "283", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "20", + "end": "2286", + "id": "284", + "length": "4", + "line": "69", + "parentIndex": "281", + "start": "2283" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "285", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "287", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "287", + "src": { + "column": "26", + "end": "2289", + "id": "288", + "length": "1", + "line": "69", + "parentIndex": "285", + "start": "2289" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "289", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "289", + "src": { + "column": "30", + "end": "2293", + "id": "290", + "length": "1", + "line": "69", + "parentIndex": "285", + "start": "2293" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "26", + "end": "2293", + "id": "286", + "length": "5", + "line": "69", + "parentIndex": "281", + "start": "2289" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "281", + "isPure": true, + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "19", + "end": "2294", + "id": "282", + "length": "13", + "line": "69", + "parentIndex": "244", + "start": "2282" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + }, + "functionReturnParameters": "244", + "id": "279", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "2295", + "id": "280", + "length": "21", + "line": "69", + "parentIndex": "244", + "start": "2275" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + } + ] + } + } + ] + }, + "id": "244", + "kind": "KIND_FUNCTION", + "name": "tryDiv", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "246", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "248", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "248", + "src": { + "column": "20", + "end": "2146", + "id": "249", + "length": "9", + "line": "66", + "parentIndex": "246", + "start": "2138" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "250", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "20", + "end": "2144", + "id": "251", + "length": "7", + "line": "66", + "parentIndex": "248", + "start": "2138" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "252", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "252", + "src": { + "column": "31", + "end": "2157", + "id": "253", + "length": "9", + "line": "66", + "parentIndex": "246", + "start": "2149" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "254", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "2155", + "id": "255", + "length": "7", + "line": "66", + "parentIndex": "252", + "start": "2149" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "20", + "end": "2157", + "id": "247", + "length": "20", + "line": "66", + "parentIndex": "244", + "start": "2138" + } + }, + "returnParameters": { + "id": "256", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "258", + "nodeType": "VARIABLE_DECLARATION", + "scope": "258", + "src": { + "column": "65", + "end": "2186", + "id": "259", + "length": "4", + "line": "66", + "parentIndex": "256", + "start": "2183" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "260", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "65", + "end": "2186", + "id": "261", + "length": "4", + "line": "66", + "parentIndex": "258", + "start": "2183" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "262", + "nodeType": "VARIABLE_DECLARATION", + "scope": "262", + "src": { + "column": "71", + "end": "2195", + "id": "263", + "length": "7", + "line": "66", + "parentIndex": "256", + "start": "2189" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "264", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "71", + "end": "2195", + "id": "265", + "length": "7", + "line": "66", + "parentIndex": "262", + "start": "2189" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "2195", + "id": "257", + "length": "13", + "line": "66", + "parentIndex": "244", + "start": "2183" + } + }, + "scope": "69", + "src": { + "column": "4", + "end": "2311", + "id": "245", + "length": "190", + "line": "66", + "parentIndex": "69", + "start": "2122" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "314", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "80", + "end": "2660", + "id": "315", + "length": "114", + "line": "78", + "parentIndex": "292", + "start": "2547" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "316", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "2654", + "id": "317", + "length": "98", + "line": "79", + "parentIndex": "69", + "start": "2557" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "326", + "nodeType": "BLOCK", + "src": {} + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "320", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "322", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "322", + "src": { + "column": "16", + "end": "2585", + "id": "323", + "length": "1", + "line": "80", + "parentIndex": "320", + "start": "2585" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "324", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "21", + "end": "2590", + "id": "325", + "length": "1", + "line": "80", + "parentIndex": "320", + "start": "2590" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "16", + "end": "2590", + "id": "321", + "length": "6", + "line": "80", + "parentIndex": "318", + "start": "2585" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "318", + "nodeType": "IF_STATEMENT", + "src": { + "end": "2610", + "id": "319", + "length": "30", + "line": "80", + "parentIndex": "316", + "start": "2581" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "331", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "20", + "end": "2635", + "id": "332", + "length": "4", + "line": "81", + "parentIndex": "329", + "start": "2632" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "333", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "335", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "335", + "src": { + "column": "26", + "end": "2638", + "id": "336", + "length": "1", + "line": "81", + "parentIndex": "333", + "start": "2638" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MODULO", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "337", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "337", + "src": { + "column": "30", + "end": "2642", + "id": "338", + "length": "1", + "line": "81", + "parentIndex": "333", + "start": "2642" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "26", + "end": "2642", + "id": "334", + "length": "5", + "line": "81", + "parentIndex": "329", + "start": "2638" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "329", + "isPure": true, + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "19", + "end": "2643", + "id": "330", + "length": "13", + "line": "81", + "parentIndex": "292", + "start": "2631" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + }, + "functionReturnParameters": "292", + "id": "327", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "2644", + "id": "328", + "length": "21", + "line": "81", + "parentIndex": "292", + "start": "2624" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + } + ] + } + } + ] + }, + "id": "292", + "kind": "KIND_FUNCTION", + "name": "tryMod", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "294", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "296", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "296", + "src": { + "column": "20", + "end": "2495", + "id": "297", + "length": "9", + "line": "78", + "parentIndex": "294", + "start": "2487" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "298", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "20", + "end": "2493", + "id": "299", + "length": "7", + "line": "78", + "parentIndex": "296", + "start": "2487" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "300", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "300", + "src": { + "column": "31", + "end": "2506", + "id": "301", + "length": "9", + "line": "78", + "parentIndex": "294", + "start": "2498" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "302", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "2504", + "id": "303", + "length": "7", + "line": "78", + "parentIndex": "300", + "start": "2498" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "20", + "end": "2506", + "id": "295", + "length": "20", + "line": "78", + "parentIndex": "292", + "start": "2487" + } + }, + "returnParameters": { + "id": "304", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "306", + "nodeType": "VARIABLE_DECLARATION", + "scope": "306", + "src": { + "column": "65", + "end": "2535", + "id": "307", + "length": "4", + "line": "78", + "parentIndex": "304", + "start": "2532" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "308", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "65", + "end": "2535", + "id": "309", + "length": "4", + "line": "78", + "parentIndex": "306", + "start": "2532" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "310", + "nodeType": "VARIABLE_DECLARATION", + "scope": "310", + "src": { + "column": "71", + "end": "2544", + "id": "311", + "length": "7", + "line": "78", + "parentIndex": "304", + "start": "2538" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "312", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "71", + "end": "2544", + "id": "313", + "length": "7", + "line": "78", + "parentIndex": "310", + "start": "2538" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "2544", + "id": "305", + "length": "13", + "line": "78", + "parentIndex": "292", + "start": "2532" + } + }, + "scope": "69", + "src": { + "column": "4", + "end": "2660", + "id": "293", + "length": "190", + "line": "78", + "parentIndex": "69", + "start": "2471" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "358", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "71", + "end": "2991", + "id": "359", + "length": "29", + "line": "95", + "parentIndex": "340", + "start": "2963" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "362", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "364", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "364", + "src": { + "column": "15", + "end": "2980", + "id": "365", + "length": "1", + "line": "96", + "parentIndex": "362", + "start": "2980" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "ADDITION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "366", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "366", + "src": { + "column": "19", + "end": "2984", + "id": "367", + "length": "1", + "line": "96", + "parentIndex": "362", + "start": "2984" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "15", + "end": "2984", + "id": "363", + "length": "5", + "line": "96", + "parentIndex": "358", + "start": "2980" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "340", + "id": "360", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "2985", + "id": "361", + "length": "13", + "line": "96", + "parentIndex": "340", + "start": "2973" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "340", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "add", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "342", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "344", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "344", + "src": { + "column": "17", + "end": "2917", + "id": "345", + "length": "9", + "line": "95", + "parentIndex": "342", + "start": "2909" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "346", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "2915", + "id": "347", + "length": "7", + "line": "95", + "parentIndex": "344", + "start": "2909" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "348", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "348", + "src": { + "column": "28", + "end": "2928", + "id": "349", + "length": "9", + "line": "95", + "parentIndex": "342", + "start": "2920" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "350", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "2926", + "id": "351", + "length": "7", + "line": "95", + "parentIndex": "348", + "start": "2920" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "2928", + "id": "343", + "length": "20", + "line": "95", + "parentIndex": "340", + "start": "2909" + } + }, + "returnParameters": { + "id": "352", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "354", + "nodeType": "VARIABLE_DECLARATION", + "scope": "354", + "src": { + "column": "62", + "end": "2960", + "id": "355", + "length": "7", + "line": "95", + "parentIndex": "352", + "start": "2954" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "356", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "2960", + "id": "357", + "length": "7", + "line": "95", + "parentIndex": "354", + "start": "2954" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "2960", + "id": "353", + "length": "7", + "line": "95", + "parentIndex": "340", + "start": "2954" + } + }, + "scope": "69", + "src": { + "column": "4", + "end": "2991", + "id": "341", + "length": "96", + "line": "95", + "parentIndex": "69", + "start": "2896" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "387", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "71", + "end": "3358", + "id": "388", + "length": "29", + "line": "109", + "parentIndex": "369", + "start": "3330" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "391", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "393", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "393", + "src": { + "column": "15", + "end": "3347", + "id": "394", + "length": "1", + "line": "110", + "parentIndex": "391", + "start": "3347" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "395", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "395", + "src": { + "column": "19", + "end": "3351", + "id": "396", + "length": "1", + "line": "110", + "parentIndex": "391", + "start": "3351" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "15", + "end": "3351", + "id": "392", + "length": "5", + "line": "110", + "parentIndex": "387", + "start": "3347" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "369", + "id": "389", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "3352", + "id": "390", + "length": "13", + "line": "110", + "parentIndex": "369", + "start": "3340" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "369", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "sub", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "371", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "373", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "373", + "src": { + "column": "17", + "end": "3284", + "id": "374", + "length": "9", + "line": "109", + "parentIndex": "371", + "start": "3276" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "375", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "3282", + "id": "376", + "length": "7", + "line": "109", + "parentIndex": "373", + "start": "3276" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "377", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "377", + "src": { + "column": "28", + "end": "3295", + "id": "378", + "length": "9", + "line": "109", + "parentIndex": "371", + "start": "3287" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "379", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "3293", + "id": "380", + "length": "7", + "line": "109", + "parentIndex": "377", + "start": "3287" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "3295", + "id": "372", + "length": "20", + "line": "109", + "parentIndex": "369", + "start": "3276" + } + }, + "returnParameters": { + "id": "381", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "383", + "nodeType": "VARIABLE_DECLARATION", + "scope": "383", + "src": { + "column": "62", + "end": "3327", + "id": "384", + "length": "7", + "line": "109", + "parentIndex": "381", + "start": "3321" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "385", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "3327", + "id": "386", + "length": "7", + "line": "109", + "parentIndex": "383", + "start": "3321" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "3327", + "id": "382", + "length": "7", + "line": "109", + "parentIndex": "369", + "start": "3321" + } + }, + "scope": "69", + "src": { + "column": "4", + "end": "3358", + "id": "370", + "length": "96", + "line": "109", + "parentIndex": "69", + "start": "3263" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "416", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "71", + "end": "3701", + "id": "417", + "length": "29", + "line": "123", + "parentIndex": "398", + "start": "3673" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "420", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "422", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "422", + "src": { + "column": "15", + "end": "3690", + "id": "423", + "length": "1", + "line": "124", + "parentIndex": "420", + "start": "3690" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MULTIPLICATION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "424", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "424", + "src": { + "column": "19", + "end": "3694", + "id": "425", + "length": "1", + "line": "124", + "parentIndex": "420", + "start": "3694" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "15", + "end": "3694", + "id": "421", + "length": "5", + "line": "124", + "parentIndex": "416", + "start": "3690" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "398", + "id": "418", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "3695", + "id": "419", + "length": "13", + "line": "124", + "parentIndex": "398", + "start": "3683" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "398", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "mul", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "400", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "402", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "402", + "src": { + "column": "17", + "end": "3627", + "id": "403", + "length": "9", + "line": "123", + "parentIndex": "400", + "start": "3619" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "404", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "3625", + "id": "405", + "length": "7", + "line": "123", + "parentIndex": "402", + "start": "3619" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "406", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "406", + "src": { + "column": "28", + "end": "3638", + "id": "407", + "length": "9", + "line": "123", + "parentIndex": "400", + "start": "3630" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "408", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "3636", + "id": "409", + "length": "7", + "line": "123", + "parentIndex": "406", + "start": "3630" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "3638", + "id": "401", + "length": "20", + "line": "123", + "parentIndex": "398", + "start": "3619" + } + }, + "returnParameters": { + "id": "410", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "412", + "nodeType": "VARIABLE_DECLARATION", + "scope": "412", + "src": { + "column": "62", + "end": "3670", + "id": "413", + "length": "7", + "line": "123", + "parentIndex": "410", + "start": "3664" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "414", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "3670", + "id": "415", + "length": "7", + "line": "123", + "parentIndex": "412", + "start": "3664" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "3670", + "id": "411", + "length": "7", + "line": "123", + "parentIndex": "398", + "start": "3664" + } + }, + "scope": "69", + "src": { + "column": "4", + "end": "3701", + "id": "399", + "length": "96", + "line": "123", + "parentIndex": "69", + "start": "3606" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "445", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "71", + "end": "4261", + "id": "446", + "length": "29", + "line": "139", + "parentIndex": "427", + "start": "4233" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "449", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "451", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "451", + "src": { + "column": "15", + "end": "4250", + "id": "452", + "length": "1", + "line": "140", + "parentIndex": "449", + "start": "4250" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "453", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "453", + "src": { + "column": "19", + "end": "4254", + "id": "454", + "length": "1", + "line": "140", + "parentIndex": "449", + "start": "4254" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "15", + "end": "4254", + "id": "450", + "length": "5", + "line": "140", + "parentIndex": "445", + "start": "4250" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "427", + "id": "447", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "4255", + "id": "448", + "length": "13", + "line": "140", + "parentIndex": "427", + "start": "4243" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "427", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "div", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "429", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "431", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "431", + "src": { + "column": "17", + "end": "4187", + "id": "432", + "length": "9", + "line": "139", + "parentIndex": "429", + "start": "4179" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "433", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "4185", + "id": "434", + "length": "7", + "line": "139", + "parentIndex": "431", + "start": "4179" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "435", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "435", + "src": { + "column": "28", + "end": "4198", + "id": "436", + "length": "9", + "line": "139", + "parentIndex": "429", + "start": "4190" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "437", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "4196", + "id": "438", + "length": "7", + "line": "139", + "parentIndex": "435", + "start": "4190" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "4198", + "id": "430", + "length": "20", + "line": "139", + "parentIndex": "427", + "start": "4179" + } + }, + "returnParameters": { + "id": "439", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "441", + "nodeType": "VARIABLE_DECLARATION", + "scope": "441", + "src": { + "column": "62", + "end": "4230", + "id": "442", + "length": "7", + "line": "139", + "parentIndex": "439", + "start": "4224" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "443", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "4230", + "id": "444", + "length": "7", + "line": "139", + "parentIndex": "441", + "start": "4224" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "4230", + "id": "440", + "length": "7", + "line": "139", + "parentIndex": "427", + "start": "4224" + } + }, + "scope": "69", + "src": { + "column": "4", + "end": "4261", + "id": "428", + "length": "96", + "line": "139", + "parentIndex": "69", + "start": "4166" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "474", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "71", + "end": "4810", + "id": "475", + "length": "29", + "line": "155", + "parentIndex": "456", + "start": "4782" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "478", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "480", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "480", + "src": { + "column": "15", + "end": "4799", + "id": "481", + "length": "1", + "line": "156", + "parentIndex": "478", + "start": "4799" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MODULO", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "482", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "482", + "src": { + "column": "19", + "end": "4803", + "id": "483", + "length": "1", + "line": "156", + "parentIndex": "478", + "start": "4803" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "15", + "end": "4803", + "id": "479", + "length": "5", + "line": "156", + "parentIndex": "474", + "start": "4799" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "456", + "id": "476", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "4804", + "id": "477", + "length": "13", + "line": "156", + "parentIndex": "456", + "start": "4792" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "456", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "mod", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "458", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "460", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "460", + "src": { + "column": "17", + "end": "4736", + "id": "461", + "length": "9", + "line": "155", + "parentIndex": "458", + "start": "4728" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "462", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "4734", + "id": "463", + "length": "7", + "line": "155", + "parentIndex": "460", + "start": "4728" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "464", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "464", + "src": { + "column": "28", + "end": "4747", + "id": "465", + "length": "9", + "line": "155", + "parentIndex": "458", + "start": "4739" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "466", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "4745", + "id": "467", + "length": "7", + "line": "155", + "parentIndex": "464", + "start": "4739" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "4747", + "id": "459", + "length": "20", + "line": "155", + "parentIndex": "456", + "start": "4728" + } + }, + "returnParameters": { + "id": "468", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "470", + "nodeType": "VARIABLE_DECLARATION", + "scope": "470", + "src": { + "column": "62", + "end": "4779", + "id": "471", + "length": "7", + "line": "155", + "parentIndex": "468", + "start": "4773" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "472", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "4779", + "id": "473", + "length": "7", + "line": "155", + "parentIndex": "470", + "start": "4773" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "4779", + "id": "469", + "length": "7", + "line": "155", + "parentIndex": "456", + "start": "4773" + } + }, + "scope": "69", + "src": { + "column": "4", + "end": "4810", + "id": "457", + "length": "96", + "line": "155", + "parentIndex": "69", + "start": "4715" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "507", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "38", + "end": "5505", + "id": "508", + "length": "106", + "line": "176", + "parentIndex": "485", + "start": "5400" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "509", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "5499", + "id": "510", + "length": "90", + "line": "177", + "parentIndex": "69", + "start": "5410" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string", + "typeString": "string" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "515", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "517", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "517", + "src": { + "column": "20", + "end": "5442", + "id": "518", + "length": "1", + "line": "178", + "parentIndex": "515", + "start": "5442" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "519", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "519", + "src": { + "column": "25", + "end": "5447", + "id": "520", + "length": "1", + "line": "178", + "parentIndex": "515", + "start": "5447" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "20", + "end": "5447", + "id": "516", + "length": "6", + "line": "178", + "parentIndex": "511", + "start": "5442" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": "521", + "name": "errorMessage", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "521", + "src": { + "column": "28", + "end": "5461", + "id": "522", + "length": "12", + "line": "178", + "parentIndex": "511", + "start": "5450" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "513", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "5440", + "id": "514", + "length": "7", + "line": "178", + "parentIndex": "511", + "start": "5434" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "511", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "5462", + "id": "512", + "length": "29", + "line": "178", + "parentIndex": "509", + "start": "5434" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string$", + "typeString": "function(bool,string)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "525", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "527", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "527", + "src": { + "column": "19", + "end": "5484", + "id": "528", + "length": "1", + "line": "179", + "parentIndex": "525", + "start": "5484" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "529", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "529", + "src": { + "column": "23", + "end": "5488", + "id": "530", + "length": "1", + "line": "179", + "parentIndex": "525", + "start": "5488" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "19", + "end": "5488", + "id": "526", + "length": "5", + "line": "179", + "parentIndex": "509", + "start": "5484" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "485", + "id": "523", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "5489", + "id": "524", + "length": "13", + "line": "179", + "parentIndex": "485", + "start": "5477" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + } + } + ] + }, + "id": "485", + "kind": "KIND_FUNCTION", + "name": "sub", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "487", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "489", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "489", + "src": { + "column": "8", + "end": "5305", + "id": "490", + "length": "9", + "line": "173", + "parentIndex": "487", + "start": "5297" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "491", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "5303", + "id": "492", + "length": "7", + "line": "173", + "parentIndex": "489", + "start": "5297" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "493", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "493", + "src": { + "column": "8", + "end": "5324", + "id": "494", + "length": "9", + "line": "174", + "parentIndex": "487", + "start": "5316" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "495", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "5322", + "id": "496", + "length": "7", + "line": "174", + "parentIndex": "493", + "start": "5316" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "497", + "name": "errorMessage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "497", + "src": { + "column": "8", + "end": "5360", + "id": "498", + "length": "26", + "line": "175", + "parentIndex": "487", + "start": "5335" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "499", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "5340", + "id": "500", + "length": "6", + "line": "175", + "parentIndex": "497", + "start": "5335" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "5360", + "id": "488", + "length": "64", + "line": "173", + "parentIndex": "485", + "start": "5297" + } + }, + "returnParameters": { + "id": "501", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "503", + "nodeType": "VARIABLE_DECLARATION", + "scope": "503", + "src": { + "column": "29", + "end": "5397", + "id": "504", + "length": "7", + "line": "176", + "parentIndex": "501", + "start": "5391" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "505", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "5397", + "id": "506", + "length": "7", + "line": "176", + "parentIndex": "503", + "start": "5391" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "5397", + "id": "502", + "length": "7", + "line": "176", + "parentIndex": "485", + "start": "5391" + } + }, + "scope": "69", + "src": { + "column": "4", + "end": "5505", + "id": "486", + "length": "231", + "line": "172", + "parentIndex": "69", + "start": "5275" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$_t_string$", + "typeString": "function(uint256,uint256,string)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "554", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "38", + "end": "6219", + "id": "555", + "length": "105", + "line": "199", + "parentIndex": "532", + "start": "6115" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "556", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "6213", + "id": "557", + "length": "89", + "line": "200", + "parentIndex": "69", + "start": "6125" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string", + "typeString": "string" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "562", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "564", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "564", + "src": { + "column": "20", + "end": "6157", + "id": "565", + "length": "1", + "line": "201", + "parentIndex": "562", + "start": "6157" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "566", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "24", + "end": "6161", + "id": "567", + "length": "1", + "line": "201", + "parentIndex": "562", + "start": "6161" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "20", + "end": "6161", + "id": "563", + "length": "5", + "line": "201", + "parentIndex": "558", + "start": "6157" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": "568", + "name": "errorMessage", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "568", + "src": { + "column": "27", + "end": "6175", + "id": "569", + "length": "12", + "line": "201", + "parentIndex": "558", + "start": "6164" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "560", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "6155", + "id": "561", + "length": "7", + "line": "201", + "parentIndex": "558", + "start": "6149" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "558", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "6176", + "id": "559", + "length": "28", + "line": "201", + "parentIndex": "556", + "start": "6149" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string$", + "typeString": "function(bool,string)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "572", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "574", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "574", + "src": { + "column": "19", + "end": "6198", + "id": "575", + "length": "1", + "line": "202", + "parentIndex": "572", + "start": "6198" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "576", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "576", + "src": { + "column": "23", + "end": "6202", + "id": "577", + "length": "1", + "line": "202", + "parentIndex": "572", + "start": "6202" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "19", + "end": "6202", + "id": "573", + "length": "5", + "line": "202", + "parentIndex": "556", + "start": "6198" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "532", + "id": "570", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "6203", + "id": "571", + "length": "13", + "line": "202", + "parentIndex": "532", + "start": "6191" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + } + } + ] + }, + "id": "532", + "kind": "KIND_FUNCTION", + "name": "div", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "534", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "536", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "536", + "src": { + "column": "8", + "end": "6020", + "id": "537", + "length": "9", + "line": "196", + "parentIndex": "534", + "start": "6012" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "538", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "6018", + "id": "539", + "length": "7", + "line": "196", + "parentIndex": "536", + "start": "6012" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "540", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "540", + "src": { + "column": "8", + "end": "6039", + "id": "541", + "length": "9", + "line": "197", + "parentIndex": "534", + "start": "6031" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "542", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "6037", + "id": "543", + "length": "7", + "line": "197", + "parentIndex": "540", + "start": "6031" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "544", + "name": "errorMessage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "544", + "src": { + "column": "8", + "end": "6075", + "id": "545", + "length": "26", + "line": "198", + "parentIndex": "534", + "start": "6050" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "546", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "6055", + "id": "547", + "length": "6", + "line": "198", + "parentIndex": "544", + "start": "6050" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "6075", + "id": "535", + "length": "64", + "line": "196", + "parentIndex": "532", + "start": "6012" + } + }, + "returnParameters": { + "id": "548", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "550", + "nodeType": "VARIABLE_DECLARATION", + "scope": "550", + "src": { + "column": "29", + "end": "6112", + "id": "551", + "length": "7", + "line": "199", + "parentIndex": "548", + "start": "6106" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "552", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "6112", + "id": "553", + "length": "7", + "line": "199", + "parentIndex": "550", + "start": "6106" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "6112", + "id": "549", + "length": "7", + "line": "199", + "parentIndex": "532", + "start": "6106" + } + }, + "scope": "69", + "src": { + "column": "4", + "end": "6219", + "id": "533", + "length": "230", + "line": "195", + "parentIndex": "69", + "start": "5990" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$_t_string$", + "typeString": "function(uint256,uint256,string)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "601", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "38", + "end": "7095", + "id": "602", + "length": "105", + "line": "225", + "parentIndex": "579", + "start": "6991" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "603", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "7089", + "id": "604", + "length": "89", + "line": "226", + "parentIndex": "69", + "start": "7001" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string", + "typeString": "string" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "609", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "611", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "611", + "src": { + "column": "20", + "end": "7033", + "id": "612", + "length": "1", + "line": "227", + "parentIndex": "609", + "start": "7033" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "613", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "24", + "end": "7037", + "id": "614", + "length": "1", + "line": "227", + "parentIndex": "609", + "start": "7037" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "20", + "end": "7037", + "id": "610", + "length": "5", + "line": "227", + "parentIndex": "605", + "start": "7033" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": "615", + "name": "errorMessage", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "615", + "src": { + "column": "27", + "end": "7051", + "id": "616", + "length": "12", + "line": "227", + "parentIndex": "605", + "start": "7040" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "607", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "7031", + "id": "608", + "length": "7", + "line": "227", + "parentIndex": "605", + "start": "7025" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "605", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "7052", + "id": "606", + "length": "28", + "line": "227", + "parentIndex": "603", + "start": "7025" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string$", + "typeString": "function(bool,string)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "619", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "621", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "621", + "src": { + "column": "19", + "end": "7074", + "id": "622", + "length": "1", + "line": "228", + "parentIndex": "619", + "start": "7074" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MODULO", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "623", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "623", + "src": { + "column": "23", + "end": "7078", + "id": "624", + "length": "1", + "line": "228", + "parentIndex": "619", + "start": "7078" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "19", + "end": "7078", + "id": "620", + "length": "5", + "line": "228", + "parentIndex": "603", + "start": "7074" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "579", + "id": "617", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "7079", + "id": "618", + "length": "13", + "line": "228", + "parentIndex": "579", + "start": "7067" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + } + } + ] + }, + "id": "579", + "kind": "KIND_FUNCTION", + "name": "mod", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "581", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "583", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "583", + "src": { + "column": "8", + "end": "6896", + "id": "584", + "length": "9", + "line": "222", + "parentIndex": "581", + "start": "6888" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "585", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "6894", + "id": "586", + "length": "7", + "line": "222", + "parentIndex": "583", + "start": "6888" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "587", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "587", + "src": { + "column": "8", + "end": "6915", + "id": "588", + "length": "9", + "line": "223", + "parentIndex": "581", + "start": "6907" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "589", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "6913", + "id": "590", + "length": "7", + "line": "223", + "parentIndex": "587", + "start": "6907" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "591", + "name": "errorMessage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "591", + "src": { + "column": "8", + "end": "6951", + "id": "592", + "length": "26", + "line": "224", + "parentIndex": "581", + "start": "6926" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "593", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "6931", + "id": "594", + "length": "6", + "line": "224", + "parentIndex": "591", + "start": "6926" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "6951", + "id": "582", + "length": "64", + "line": "222", + "parentIndex": "579", + "start": "6888" + } + }, + "returnParameters": { + "id": "595", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "597", + "nodeType": "VARIABLE_DECLARATION", + "scope": "597", + "src": { + "column": "29", + "end": "6988", + "id": "598", + "length": "7", + "line": "225", + "parentIndex": "595", + "start": "6982" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "599", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "6988", + "id": "600", + "length": "7", + "line": "225", + "parentIndex": "597", + "start": "6982" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "6988", + "id": "596", + "length": "7", + "line": "225", + "parentIndex": "579", + "start": "6982" + } + }, + "scope": "69", + "src": { + "column": "4", + "end": "7095", + "id": "580", + "length": "230", + "line": "221", + "parentIndex": "69", + "start": "6866" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$_t_string$", + "typeString": "function(uint256,uint256,string)" + }, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "7097", + "length": "6476", + "line": "18", + "parentIndex": "65", + "start": "622" + } + } + } + ] + }, + "src": { + "id": 66, + "line": 18, + "start": 622, + "end": 7097, + "length": 6476, + "parent_index": 64 + } + }, + { + "id": 625, + "license": "MIT", + "name": "IERC20", + "absolute_path": "IERC20.sol", + "exported_symbols": [ + { + "id": 625, + "name": "IERC20", + "absolute_path": "IERC20.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "629", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "7155", + "id": "630", + "length": "23", + "line": "235", + "parentIndex": "625", + "start": "7133" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "635", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "635" + ], + "name": "IERC20", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "651", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "7377", + "id": "638", + "length": "55", + "line": "244", + "parentIndex": "637", + "start": "7323" + } + }, + "id": "637", + "kind": "KIND_FUNCTION", + "name": "totalSupply", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "639", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "641", + "nodeType": "VARIABLE_DECLARATION", + "scope": "641", + "src": { + "column": "50", + "end": "7375", + "id": "642", + "length": "7", + "line": "244", + "parentIndex": "639", + "start": "7369" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "643", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "7375", + "id": "644", + "length": "7", + "line": "244", + "parentIndex": "641", + "start": "7369" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "50", + "end": "7375", + "id": "640", + "length": "7", + "line": "244", + "parentIndex": "637", + "start": "7369" + } + }, + "returnParameters": { + "id": "645", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "647", + "nodeType": "VARIABLE_DECLARATION", + "scope": "647", + "src": { + "column": "50", + "end": "7375", + "id": "648", + "length": "7", + "line": "244", + "parentIndex": "645", + "start": "7369" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "649", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "7375", + "id": "650", + "length": "7", + "line": "244", + "parentIndex": "647", + "start": "7369" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "50", + "end": "7375", + "id": "646", + "length": "7", + "line": "244", + "parentIndex": "637", + "start": "7369" + } + }, + "scope": "635", + "src": { + "column": "4", + "end": "7377", + "id": "638", + "length": "55", + "line": "244", + "parentIndex": "635", + "start": "7323" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "667", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "7528", + "id": "654", + "length": "68", + "line": "249", + "parentIndex": "653", + "start": "7461" + } + }, + "id": "653", + "kind": "KIND_FUNCTION", + "name": "balanceOf", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "655", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "657", + "name": "account", + "nodeType": "VARIABLE_DECLARATION", + "scope": "657", + "src": { + "column": "23", + "end": "7494", + "id": "658", + "length": "15", + "line": "249", + "parentIndex": "655", + "start": "7480" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "659", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "7486", + "id": "660", + "length": "7", + "line": "249", + "parentIndex": "657", + "start": "7480" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "7494", + "id": "656", + "length": "15", + "line": "249", + "parentIndex": "653", + "start": "7480" + } + }, + "returnParameters": { + "id": "661", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "663", + "nodeType": "VARIABLE_DECLARATION", + "scope": "663", + "src": { + "column": "63", + "end": "7526", + "id": "664", + "length": "7", + "line": "249", + "parentIndex": "661", + "start": "7520" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "665", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "63", + "end": "7526", + "id": "666", + "length": "7", + "line": "249", + "parentIndex": "663", + "start": "7520" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "63", + "end": "7526", + "id": "662", + "length": "7", + "line": "249", + "parentIndex": "653", + "start": "7520" + } + }, + "scope": "635", + "src": { + "column": "4", + "end": "7528", + "id": "654", + "length": "68", + "line": "249", + "parentIndex": "635", + "start": "7461" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "687", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "7825", + "id": "670", + "length": "77", + "line": "258", + "parentIndex": "669", + "start": "7749" + } + }, + "id": "669", + "kind": "KIND_FUNCTION", + "name": "transfer", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "671", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "673", + "name": "recipient", + "nodeType": "VARIABLE_DECLARATION", + "scope": "673", + "src": { + "column": "22", + "end": "7783", + "id": "674", + "length": "17", + "line": "258", + "parentIndex": "671", + "start": "7767" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "675", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "7773", + "id": "676", + "length": "7", + "line": "258", + "parentIndex": "673", + "start": "7767" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "677", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "677", + "src": { + "column": "41", + "end": "7799", + "id": "678", + "length": "14", + "line": "258", + "parentIndex": "671", + "start": "7786" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "679", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "41", + "end": "7792", + "id": "680", + "length": "7", + "line": "258", + "parentIndex": "677", + "start": "7786" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "22", + "end": "7799", + "id": "672", + "length": "33", + "line": "258", + "parentIndex": "669", + "start": "7767" + } + }, + "returnParameters": { + "id": "681", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "683", + "nodeType": "VARIABLE_DECLARATION", + "scope": "683", + "src": { + "column": "75", + "end": "7823", + "id": "684", + "length": "4", + "line": "258", + "parentIndex": "681", + "start": "7820" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "685", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "75", + "end": "7823", + "id": "686", + "length": "4", + "line": "258", + "parentIndex": "683", + "start": "7820" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "75", + "end": "7823", + "id": "682", + "length": "4", + "line": "258", + "parentIndex": "669", + "start": "7820" + } + }, + "scope": "635", + "src": { + "column": "4", + "end": "7825", + "id": "670", + "length": "77", + "line": "258", + "parentIndex": "635", + "start": "7749" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "707", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "8183", + "id": "690", + "length": "83", + "line": "267", + "parentIndex": "689", + "start": "8101" + } + }, + "id": "689", + "kind": "KIND_FUNCTION", + "name": "allowance", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "691", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "693", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "693", + "src": { + "column": "23", + "end": "8132", + "id": "694", + "length": "13", + "line": "267", + "parentIndex": "691", + "start": "8120" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "695", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "8126", + "id": "696", + "length": "7", + "line": "267", + "parentIndex": "693", + "start": "8120" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "697", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "697", + "src": { + "column": "38", + "end": "8149", + "id": "698", + "length": "15", + "line": "267", + "parentIndex": "691", + "start": "8135" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "699", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "38", + "end": "8141", + "id": "700", + "length": "7", + "line": "267", + "parentIndex": "697", + "start": "8135" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "8149", + "id": "692", + "length": "30", + "line": "267", + "parentIndex": "689", + "start": "8120" + } + }, + "returnParameters": { + "id": "701", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "703", + "nodeType": "VARIABLE_DECLARATION", + "scope": "703", + "src": { + "column": "78", + "end": "8181", + "id": "704", + "length": "7", + "line": "267", + "parentIndex": "701", + "start": "8175" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "705", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "78", + "end": "8181", + "id": "706", + "length": "7", + "line": "267", + "parentIndex": "703", + "start": "8175" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "78", + "end": "8181", + "id": "702", + "length": "7", + "line": "267", + "parentIndex": "689", + "start": "8175" + } + }, + "scope": "635", + "src": { + "column": "4", + "end": "8183", + "id": "690", + "length": "83", + "line": "267", + "parentIndex": "635", + "start": "8101" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "727", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "8910", + "id": "710", + "length": "74", + "line": "283", + "parentIndex": "709", + "start": "8837" + } + }, + "id": "709", + "kind": "KIND_FUNCTION", + "name": "approve", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "711", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "713", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "713", + "src": { + "column": "21", + "end": "8868", + "id": "714", + "length": "15", + "line": "283", + "parentIndex": "711", + "start": "8854" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "715", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "21", + "end": "8860", + "id": "716", + "length": "7", + "line": "283", + "parentIndex": "713", + "start": "8854" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "717", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "717", + "src": { + "column": "38", + "end": "8884", + "id": "718", + "length": "14", + "line": "283", + "parentIndex": "711", + "start": "8871" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "719", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "38", + "end": "8877", + "id": "720", + "length": "7", + "line": "283", + "parentIndex": "717", + "start": "8871" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "21", + "end": "8884", + "id": "712", + "length": "31", + "line": "283", + "parentIndex": "709", + "start": "8854" + } + }, + "returnParameters": { + "id": "721", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "723", + "nodeType": "VARIABLE_DECLARATION", + "scope": "723", + "src": { + "column": "72", + "end": "8908", + "id": "724", + "length": "4", + "line": "283", + "parentIndex": "721", + "start": "8905" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "725", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "72", + "end": "8908", + "id": "726", + "length": "4", + "line": "283", + "parentIndex": "723", + "start": "8905" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "72", + "end": "8908", + "id": "722", + "length": "4", + "line": "283", + "parentIndex": "709", + "start": "8905" + } + }, + "scope": "635", + "src": { + "column": "4", + "end": "8910", + "id": "710", + "length": "74", + "line": "283", + "parentIndex": "635", + "start": "8837" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "751", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "9344", + "id": "730", + "length": "127", + "line": "294", + "parentIndex": "729", + "start": "9218" + } + }, + "id": "729", + "kind": "KIND_FUNCTION", + "name": "transferFrom", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "731", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "733", + "name": "sender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "733", + "src": { + "column": "8", + "end": "9262", + "id": "734", + "length": "14", + "line": "295", + "parentIndex": "731", + "start": "9249" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "735", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "9255", + "id": "736", + "length": "7", + "line": "295", + "parentIndex": "733", + "start": "9249" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "737", + "name": "recipient", + "nodeType": "VARIABLE_DECLARATION", + "scope": "737", + "src": { + "column": "8", + "end": "9289", + "id": "738", + "length": "17", + "line": "296", + "parentIndex": "731", + "start": "9273" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "739", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "9279", + "id": "740", + "length": "7", + "line": "296", + "parentIndex": "737", + "start": "9273" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "741", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "741", + "src": { + "column": "8", + "end": "9313", + "id": "742", + "length": "14", + "line": "297", + "parentIndex": "731", + "start": "9300" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "743", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "9306", + "id": "744", + "length": "7", + "line": "297", + "parentIndex": "741", + "start": "9300" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "9313", + "id": "732", + "length": "65", + "line": "295", + "parentIndex": "729", + "start": "9249" + } + }, + "returnParameters": { + "id": "745", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "747", + "nodeType": "VARIABLE_DECLARATION", + "scope": "747", + "src": { + "column": "24", + "end": "9342", + "id": "748", + "length": "4", + "line": "298", + "parentIndex": "745", + "start": "9339" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "749", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "9342", + "id": "750", + "length": "4", + "line": "298", + "parentIndex": "747", + "start": "9339" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "9342", + "id": "746", + "length": "4", + "line": "298", + "parentIndex": "729", + "start": "9339" + } + }, + "scope": "635", + "src": { + "column": "4", + "end": "9344", + "id": "730", + "length": "127", + "line": "294", + "parentIndex": "635", + "start": "9218" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "753", + "name": "Transfer", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "755", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "756", + "indexed": true, + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "756", + "src": { + "column": "19", + "end": "9548", + "id": "757", + "length": "20", + "line": "306", + "parentIndex": "755", + "start": "9529" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "758", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "19", + "end": "9535", + "id": "759", + "length": "7", + "line": "306", + "parentIndex": "756", + "start": "9529" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "760", + "indexed": true, + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "760", + "src": { + "column": "41", + "end": "9568", + "id": "761", + "length": "18", + "line": "306", + "parentIndex": "755", + "start": "9551" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "762", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "41", + "end": "9557", + "id": "763", + "length": "7", + "line": "306", + "parentIndex": "760", + "start": "9551" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "764", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "764", + "src": { + "column": "61", + "end": "9583", + "id": "765", + "length": "13", + "line": "306", + "parentIndex": "755", + "start": "9571" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "766", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "61", + "end": "9577", + "id": "767", + "length": "7", + "line": "306", + "parentIndex": "764", + "start": "9571" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "9585", + "id": "754", + "length": "72", + "line": "306", + "parentIndex": "753", + "start": "9514" + } + }, + "src": { + "column": "4", + "end": "9585", + "id": "754", + "length": "72", + "line": "306", + "parentIndex": "635", + "start": "9514" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u0026753", + "typeString": "event IERC20.Transfer" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "769", + "name": "Approval", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "771", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "772", + "indexed": true, + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "772", + "src": { + "column": "19", + "end": "9780", + "id": "773", + "length": "21", + "line": "312", + "parentIndex": "771", + "start": "9760" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "774", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "19", + "end": "9766", + "id": "775", + "length": "7", + "line": "312", + "parentIndex": "772", + "start": "9760" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "776", + "indexed": true, + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "776", + "src": { + "column": "42", + "end": "9805", + "id": "777", + "length": "23", + "line": "312", + "parentIndex": "771", + "start": "9783" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "778", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "42", + "end": "9789", + "id": "779", + "length": "7", + "line": "312", + "parentIndex": "776", + "start": "9783" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "780", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "780", + "src": { + "column": "67", + "end": "9820", + "id": "781", + "length": "13", + "line": "312", + "parentIndex": "771", + "start": "9808" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "782", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "67", + "end": "9814", + "id": "783", + "length": "7", + "line": "312", + "parentIndex": "780", + "start": "9808" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "9822", + "id": "770", + "length": "78", + "line": "312", + "parentIndex": "769", + "start": "9745" + } + }, + "src": { + "column": "4", + "end": "9822", + "id": "770", + "length": "78", + "line": "312", + "parentIndex": "635", + "start": "9745" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IERC20_Approval_\u0026769", + "typeString": "event IERC20.Approval" + } + } + } + ], + "src": { + "end": "9824", + "length": "2596", + "line": "240", + "parentIndex": "625", + "start": "7229" + } + } + } + ] + }, + "src": { + "id": 626, + "line": 240, + "start": 7229, + "end": 9824, + "length": 2596, + "parent_index": 64 + } + }, + { + "id": 784, + "license": "MIT", + "name": "IERC20Metadata", + "absolute_path": "IERC20Metadata.sol", + "exported_symbols": [ + { + "id": 784, + "name": "IERC20Metadata", + "absolute_path": "IERC20Metadata.sol" + }, + { + "id": 625, + "name": "IERC20", + "absolute_path": "IERC20.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "790", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "9959", + "id": "791", + "length": "23", + "line": "318", + "parentIndex": "784", + "start": "9937" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IERC20.sol", + "file": "../IERC20.sol", + "id": "792", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "784", + "sourceUnit": "625", + "src": { + "end": "9984", + "length": "23", + "line": "320", + "parentIndex": "784", + "start": "9962" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "799", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "625", + "src": { + "column": "28", + "end": "10137", + "id": "800", + "length": "6", + "line": "327", + "parentIndex": "796", + "start": "10132" + } + }, + "id": "797", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "28", + "end": "10137", + "id": "798", + "length": "6", + "line": "327", + "parentIndex": "796", + "start": "10132" + } + } + ], + "contractDependencies": [ + "625", + "792" + ], + "fullyImplemented": true, + "id": "796", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "625", + "796", + "792" + ], + "name": "IERC20Metadata", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "816", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "10257", + "id": "803", + "length": "54", + "line": "331", + "parentIndex": "802", + "start": "10204" + } + }, + "id": "802", + "kind": "KIND_FUNCTION", + "name": "name", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "804", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "806", + "nodeType": "VARIABLE_DECLARATION", + "scope": "806", + "src": { + "column": "43", + "end": "10255", + "id": "807", + "length": "13", + "line": "331", + "parentIndex": "804", + "start": "10243" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "808", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "43", + "end": "10248", + "id": "809", + "length": "6", + "line": "331", + "parentIndex": "806", + "start": "10243" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "43", + "end": "10255", + "id": "805", + "length": "13", + "line": "331", + "parentIndex": "802", + "start": "10243" + } + }, + "returnParameters": { + "id": "810", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "812", + "nodeType": "VARIABLE_DECLARATION", + "scope": "812", + "src": { + "column": "43", + "end": "10255", + "id": "813", + "length": "13", + "line": "331", + "parentIndex": "810", + "start": "10243" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "814", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "43", + "end": "10248", + "id": "815", + "length": "6", + "line": "331", + "parentIndex": "812", + "start": "10243" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "43", + "end": "10255", + "id": "811", + "length": "13", + "line": "331", + "parentIndex": "802", + "start": "10243" + } + }, + "scope": "796", + "src": { + "column": "4", + "end": "10257", + "id": "803", + "length": "54", + "line": "331", + "parentIndex": "796", + "start": "10204" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_string$", + "typeString": "function(string)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "832", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "10380", + "id": "819", + "length": "56", + "line": "336", + "parentIndex": "818", + "start": "10325" + } + }, + "id": "818", + "kind": "KIND_FUNCTION", + "name": "symbol", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "820", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "822", + "nodeType": "VARIABLE_DECLARATION", + "scope": "822", + "src": { + "column": "45", + "end": "10378", + "id": "823", + "length": "13", + "line": "336", + "parentIndex": "820", + "start": "10366" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "824", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "45", + "end": "10371", + "id": "825", + "length": "6", + "line": "336", + "parentIndex": "822", + "start": "10366" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "45", + "end": "10378", + "id": "821", + "length": "13", + "line": "336", + "parentIndex": "818", + "start": "10366" + } + }, + "returnParameters": { + "id": "826", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "828", + "nodeType": "VARIABLE_DECLARATION", + "scope": "828", + "src": { + "column": "45", + "end": "10378", + "id": "829", + "length": "13", + "line": "336", + "parentIndex": "826", + "start": "10366" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "830", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "45", + "end": "10371", + "id": "831", + "length": "6", + "line": "336", + "parentIndex": "828", + "start": "10366" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "45", + "end": "10378", + "id": "827", + "length": "13", + "line": "336", + "parentIndex": "818", + "start": "10366" + } + }, + "scope": "796", + "src": { + "column": "4", + "end": "10380", + "id": "819", + "length": "56", + "line": "336", + "parentIndex": "796", + "start": "10325" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_string$", + "typeString": "function(string)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "848", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "10506", + "id": "835", + "length": "50", + "line": "341", + "parentIndex": "834", + "start": "10457" + } + }, + "id": "834", + "kind": "KIND_FUNCTION", + "name": "decimals", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "836", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "838", + "nodeType": "VARIABLE_DECLARATION", + "scope": "838", + "src": { + "column": "47", + "end": "10504", + "id": "839", + "length": "5", + "line": "341", + "parentIndex": "836", + "start": "10500" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "840", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "10504", + "id": "841", + "length": "5", + "line": "341", + "parentIndex": "838", + "start": "10500" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "47", + "end": "10504", + "id": "837", + "length": "5", + "line": "341", + "parentIndex": "834", + "start": "10500" + } + }, + "returnParameters": { + "id": "842", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "844", + "nodeType": "VARIABLE_DECLARATION", + "scope": "844", + "src": { + "column": "47", + "end": "10504", + "id": "845", + "length": "5", + "line": "341", + "parentIndex": "842", + "start": "10500" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "846", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "10504", + "id": "847", + "length": "5", + "line": "341", + "parentIndex": "844", + "start": "10500" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "47", + "end": "10504", + "id": "843", + "length": "5", + "line": "341", + "parentIndex": "834", + "start": "10500" + } + }, + "scope": "796", + "src": { + "column": "4", + "end": "10506", + "id": "835", + "length": "50", + "line": "341", + "parentIndex": "796", + "start": "10457" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint8$", + "typeString": "function(uint8)" + }, + "visibility": "EXTERNAL" + } + } + ], + "src": { + "end": "10508", + "length": "405", + "line": "327", + "parentIndex": "784", + "start": "10104" + } + } + } + ] + }, + "src": { + "id": 785, + "line": 327, + "start": 10104, + "end": 10508, + "length": 405, + "parent_index": 64 + } + }, + { + "id": 849, + "license": "MIT", + "name": "Context", + "absolute_path": "Context.sol", + "exported_symbols": [ + { + "id": 849, + "name": "Context", + "absolute_path": "Context.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "857", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "10619", + "id": "858", + "length": "23", + "line": "347", + "parentIndex": "849", + "start": "10597" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "860", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "860" + ], + "name": "Context", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "876", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "66", + "end": "11246", + "id": "877", + "length": "34", + "line": "360", + "parentIndex": "862", + "start": "11213" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "882", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "11232", + "id": "883", + "length": "3", + "line": "361", + "parentIndex": "880", + "start": "11230" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "880", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "11239", + "id": "881", + "length": "10", + "line": "361", + "parentIndex": "876", + "start": "11230" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "functionReturnParameters": "862", + "id": "878", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "11240", + "id": "879", + "length": "18", + "line": "361", + "parentIndex": "862", + "start": "11223" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ] + }, + "id": "862", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_msgSender", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "864", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "866", + "nodeType": "VARIABLE_DECLARATION", + "scope": "866", + "src": { + "column": "57", + "end": "11210", + "id": "867", + "length": "7", + "line": "360", + "parentIndex": "864", + "start": "11204" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "868", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "57", + "end": "11210", + "id": "869", + "length": "7", + "line": "360", + "parentIndex": "866", + "start": "11204" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "57", + "end": "11210", + "id": "865", + "length": "7", + "line": "360", + "parentIndex": "862", + "start": "11204" + } + }, + "returnParameters": { + "id": "870", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "872", + "nodeType": "VARIABLE_DECLARATION", + "scope": "872", + "src": { + "column": "57", + "end": "11210", + "id": "873", + "length": "7", + "line": "360", + "parentIndex": "870", + "start": "11204" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "874", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "57", + "end": "11210", + "id": "875", + "length": "7", + "line": "360", + "parentIndex": "872", + "start": "11204" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "57", + "end": "11210", + "id": "871", + "length": "7", + "line": "360", + "parentIndex": "862", + "start": "11204" + } + }, + "scope": "860", + "src": { + "column": "4", + "end": "11246", + "id": "863", + "length": "96", + "line": "360", + "parentIndex": "860", + "start": "11151" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "899", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "71", + "end": "11351", + "id": "900", + "length": "32", + "line": "364", + "parentIndex": "885", + "start": "11320" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "905", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "11339", + "id": "906", + "length": "3", + "line": "365", + "parentIndex": "903", + "start": "11337" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "903", + "memberName": "data", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "11344", + "id": "904", + "length": "8", + "line": "365", + "parentIndex": "899", + "start": "11337" + }, + "typeDescription": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + }, + "functionReturnParameters": "885", + "id": "901", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "11345", + "id": "902", + "length": "16", + "line": "365", + "parentIndex": "885", + "start": "11330" + }, + "typeDescription": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + } + ] + }, + "id": "885", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_msgData", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "887", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "889", + "nodeType": "VARIABLE_DECLARATION", + "scope": "889", + "src": { + "column": "55", + "end": "11317", + "id": "890", + "length": "14", + "line": "364", + "parentIndex": "887", + "start": "11304" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "891", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "55", + "end": "11308", + "id": "892", + "length": "5", + "line": "364", + "parentIndex": "889", + "start": "11304" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "55", + "end": "11317", + "id": "888", + "length": "14", + "line": "364", + "parentIndex": "885", + "start": "11304" + } + }, + "returnParameters": { + "id": "893", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "895", + "nodeType": "VARIABLE_DECLARATION", + "scope": "895", + "src": { + "column": "55", + "end": "11317", + "id": "896", + "length": "14", + "line": "364", + "parentIndex": "893", + "start": "11304" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "897", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "55", + "end": "11308", + "id": "898", + "length": "5", + "line": "364", + "parentIndex": "895", + "start": "11304" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "55", + "end": "11317", + "id": "894", + "length": "14", + "line": "364", + "parentIndex": "885", + "start": "11304" + } + }, + "scope": "860", + "src": { + "column": "4", + "end": "11351", + "id": "886", + "length": "99", + "line": "364", + "parentIndex": "860", + "start": "11253" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "11353", + "length": "235", + "line": "359", + "parentIndex": "849", + "start": "11119" + } + } + } + ] + }, + "src": { + "id": 850, + "line": 359, + "start": 11119, + "end": 11353, + "length": 235, + "parent_index": 64 + } + }, + { + "id": 907, + "license": "MIT", + "name": "ERC20", + "absolute_path": "ERC20.sol", + "exported_symbols": [ + { + "id": 907, + "name": "ERC20", + "absolute_path": "ERC20.sol" + }, + { + "id": 924, + "name": "Context" + }, + { + "id": 928, + "name": "IERC20" + }, + { + "id": 932, + "name": "IERC20Metadata" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "917", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "11483", + "id": "918", + "length": "23", + "line": "372", + "parentIndex": "907", + "start": "11461" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "926", + "name": "Context", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "849", + "src": { + "column": "18", + "end": "12891", + "id": "927", + "length": "7", + "line": "406", + "parentIndex": "923", + "start": "12885" + } + }, + "id": "924", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "18", + "end": "12891", + "id": "925", + "length": "7", + "line": "406", + "parentIndex": "923", + "start": "12885" + } + }, + { + "baseName": { + "id": "930", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "625", + "src": { + "column": "27", + "end": "12899", + "id": "931", + "length": "6", + "line": "406", + "parentIndex": "923", + "start": "12894" + } + }, + "id": "928", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "27", + "end": "12899", + "id": "929", + "length": "6", + "line": "406", + "parentIndex": "923", + "start": "12894" + } + }, + { + "baseName": { + "id": "934", + "name": "IERC20Metadata", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "784", + "src": { + "column": "35", + "end": "12915", + "id": "935", + "length": "14", + "line": "406", + "parentIndex": "923", + "start": "12902" + } + }, + "id": "932", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "35", + "end": "12915", + "id": "933", + "length": "14", + "line": "406", + "parentIndex": "923", + "start": "12902" + } + } + ], + "contractDependencies": [ + "849", + "625", + "784" + ], + "fullyImplemented": true, + "id": "923", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "849", + "625", + "784", + "923" + ], + "name": "ERC20", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "937", + "isStateVariable": true, + "name": "_balances", + "nodeType": "VARIABLE_DECLARATION", + "scope": "923", + "src": { + "column": "4", + "end": "12968", + "id": "938", + "length": "46", + "line": "407", + "parentIndex": "923", + "start": "12923" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + "typeName": { + "id": "939", + "keyType": { + "id": "941", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "12937", + "id": "942", + "length": "7", + "line": "407", + "parentIndex": "939", + "start": "12931" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": { + "column": "4", + "end": "12949", + "id": "940", + "length": "27", + "line": "407", + "parentIndex": "937", + "start": "12923" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + "valueType": { + "id": "943", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "12948", + "id": "944", + "length": "7", + "line": "407", + "parentIndex": "939", + "start": "12942" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "946", + "isStateVariable": true, + "name": "_allowances", + "nodeType": "VARIABLE_DECLARATION", + "scope": "923", + "src": { + "column": "4", + "end": "13042", + "id": "947", + "length": "68", + "line": "409", + "parentIndex": "923", + "start": "12975" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003emapping(address=\u003euint256))" + }, + "typeName": { + "id": "948", + "keyType": { + "id": "950", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "12989", + "id": "951", + "length": "7", + "line": "409", + "parentIndex": "948", + "start": "12983" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": { + "column": "4", + "end": "13021", + "id": "949", + "length": "47", + "line": "409", + "parentIndex": "946", + "start": "12975" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003emapping(address=\u003euint256))" + }, + "valueType": { + "id": "952", + "keyType": { + "id": "955", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "13008", + "id": "956", + "length": "7", + "line": "409", + "parentIndex": "948", + "start": "13002" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "name": "mapping(address=\u003euint256)", + "nodeType": "MAPPING_TYPE_NAME", + "src": { + "column": "23", + "end": "13020", + "id": "953", + "length": "27", + "line": "409", + "parentIndex": "948", + "start": "12994" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256", + "typeString": "mapping(address=\u003euint256)" + }, + "valueType": { + "id": "957", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "42", + "end": "13019", + "id": "958", + "length": "7", + "line": "409", + "parentIndex": "948", + "start": "13013" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "960", + "isStateVariable": true, + "name": "_totalSupply", + "nodeType": "VARIABLE_DECLARATION", + "scope": "923", + "src": { + "column": "4", + "end": "13077", + "id": "961", + "length": "29", + "line": "411", + "parentIndex": "923", + "start": "13049" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "962", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "13055", + "id": "963", + "length": "7", + "line": "411", + "parentIndex": "960", + "start": "13049" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "965", + "isStateVariable": true, + "name": "_name", + "nodeType": "VARIABLE_DECLARATION", + "scope": "923", + "src": { + "column": "4", + "end": "13104", + "id": "966", + "length": "21", + "line": "413", + "parentIndex": "923", + "start": "13084" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "967", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "13089", + "id": "968", + "length": "6", + "line": "413", + "parentIndex": "965", + "start": "13084" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "970", + "isStateVariable": true, + "name": "_symbol", + "nodeType": "VARIABLE_DECLARATION", + "scope": "923", + "src": { + "column": "4", + "end": "13132", + "id": "971", + "length": "23", + "line": "414", + "parentIndex": "923", + "start": "13110" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "972", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "13115", + "id": "973", + "length": "6", + "line": "414", + "parentIndex": "970", + "start": "13110" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "988", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "60", + "end": "13427", + "id": "989", + "length": "57", + "line": "422", + "parentIndex": "975", + "start": "13371" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "992", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "994", + "name": "_name", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "965", + "src": { + "column": "8", + "end": "13385", + "id": "995", + "length": "5", + "line": "423", + "parentIndex": "992", + "start": "13381" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "996", + "name": "name_", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "996", + "src": { + "column": "16", + "end": "13393", + "id": "997", + "length": "5", + "line": "423", + "parentIndex": "992", + "start": "13389" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + "src": { + "column": "8", + "end": "13393", + "id": "993", + "length": "13", + "line": "423", + "parentIndex": "988", + "start": "13381" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + "id": "990", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "13394", + "id": "991", + "length": "14", + "line": "423", + "parentIndex": "988", + "start": "13381" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1000", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1002", + "name": "_symbol", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "970", + "src": { + "column": "8", + "end": "13410", + "id": "1003", + "length": "7", + "line": "424", + "parentIndex": "1000", + "start": "13404" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1004", + "name": "symbol_", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1004", + "src": { + "column": "18", + "end": "13420", + "id": "1005", + "length": "7", + "line": "424", + "parentIndex": "1000", + "start": "13414" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + "src": { + "column": "8", + "end": "13420", + "id": "1001", + "length": "17", + "line": "424", + "parentIndex": "988", + "start": "13404" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + "id": "998", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "13421", + "id": "999", + "length": "18", + "line": "424", + "parentIndex": "988", + "start": "13404" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ] + }, + "id": "975", + "implemented": true, + "kind": "CONSTRUCTOR", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "977", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "979", + "name": "name_", + "nodeType": "VARIABLE_DECLARATION", + "scope": "979", + "src": { + "column": "16", + "end": "13345", + "id": "980", + "length": "19", + "line": "422", + "parentIndex": "977", + "start": "13327" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "981", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "13332", + "id": "982", + "length": "6", + "line": "422", + "parentIndex": "979", + "start": "13327" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "983", + "name": "symbol_", + "nodeType": "VARIABLE_DECLARATION", + "scope": "983", + "src": { + "column": "37", + "end": "13368", + "id": "984", + "length": "21", + "line": "422", + "parentIndex": "977", + "start": "13348" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "985", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "37", + "end": "13353", + "id": "986", + "length": "6", + "line": "422", + "parentIndex": "983", + "start": "13348" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "16", + "end": "13368", + "id": "978", + "length": "42", + "line": "422", + "parentIndex": "975", + "start": "13327" + } + }, + "returnParameters": { + "id": "987", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "13427", + "id": "976", + "length": "113", + "line": "422", + "parentIndex": "975", + "start": "13315" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "13427", + "id": "976", + "length": "113", + "line": "422", + "parentIndex": "923", + "start": "13315" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "$_t_constructor", + "typeString": "constructor" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1023", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "73", + "end": "13590", + "id": "1024", + "length": "29", + "line": "430", + "parentIndex": "1007", + "start": "13562" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1027", + "name": "_name", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "965", + "src": { + "column": "15", + "end": "13583", + "id": "1028", + "length": "5", + "line": "431", + "parentIndex": "1023", + "start": "13579" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + "functionReturnParameters": "1007", + "id": "1025", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "13584", + "id": "1026", + "length": "13", + "line": "431", + "parentIndex": "1007", + "start": "13572" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ] + }, + "id": "1007", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "name", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "1009", + "name": "name", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "802", + "src": { + "column": "40", + "end": "13536", + "id": "1010", + "length": "8", + "line": "430", + "parentIndex": "1007", + "start": "13529" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_string$", + "typeString": "function(string)" + } + } + ], + "parameters": { + "id": "1011", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1013", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1013", + "src": { + "column": "58", + "end": "13559", + "id": "1014", + "length": "13", + "line": "430", + "parentIndex": "1011", + "start": "13547" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "1015", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "58", + "end": "13552", + "id": "1016", + "length": "6", + "line": "430", + "parentIndex": "1013", + "start": "13547" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "58", + "end": "13559", + "id": "1012", + "length": "13", + "line": "430", + "parentIndex": "1007", + "start": "13547" + } + }, + "returnParameters": { + "id": "1017", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1019", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1019", + "src": { + "column": "58", + "end": "13559", + "id": "1020", + "length": "13", + "line": "430", + "parentIndex": "1017", + "start": "13547" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "1021", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "58", + "end": "13552", + "id": "1022", + "length": "6", + "line": "430", + "parentIndex": "1019", + "start": "13547" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "58", + "end": "13559", + "id": "1018", + "length": "13", + "line": "430", + "parentIndex": "1007", + "start": "13547" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "13590", + "id": "1008", + "length": "98", + "line": "430", + "parentIndex": "923", + "start": "13493" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_string$", + "typeString": "function(string)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1046", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "75", + "end": "13805", + "id": "1047", + "length": "31", + "line": "438", + "parentIndex": "1030", + "start": "13775" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1050", + "name": "_symbol", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "970", + "src": { + "column": "15", + "end": "13798", + "id": "1051", + "length": "7", + "line": "439", + "parentIndex": "1046", + "start": "13792" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + "functionReturnParameters": "1030", + "id": "1048", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "13799", + "id": "1049", + "length": "15", + "line": "439", + "parentIndex": "1030", + "start": "13785" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ] + }, + "id": "1030", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "symbol", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "1032", + "name": "symbol", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "818", + "src": { + "column": "42", + "end": "13749", + "id": "1033", + "length": "8", + "line": "438", + "parentIndex": "1030", + "start": "13742" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_string$", + "typeString": "function(string)" + } + } + ], + "parameters": { + "id": "1034", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1036", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1036", + "src": { + "column": "60", + "end": "13772", + "id": "1037", + "length": "13", + "line": "438", + "parentIndex": "1034", + "start": "13760" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "1038", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "60", + "end": "13765", + "id": "1039", + "length": "6", + "line": "438", + "parentIndex": "1036", + "start": "13760" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "60", + "end": "13772", + "id": "1035", + "length": "13", + "line": "438", + "parentIndex": "1030", + "start": "13760" + } + }, + "returnParameters": { + "id": "1040", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1042", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1042", + "src": { + "column": "60", + "end": "13772", + "id": "1043", + "length": "13", + "line": "438", + "parentIndex": "1040", + "start": "13760" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "1044", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "60", + "end": "13765", + "id": "1045", + "length": "6", + "line": "438", + "parentIndex": "1042", + "start": "13760" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "60", + "end": "13772", + "id": "1041", + "length": "13", + "line": "438", + "parentIndex": "1030", + "start": "13760" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "13805", + "id": "1031", + "length": "102", + "line": "438", + "parentIndex": "923", + "start": "13704" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_string$", + "typeString": "function(string)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1069", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "69", + "end": "14529", + "id": "1070", + "length": "26", + "line": "455", + "parentIndex": "1053", + "start": "14504" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "3138", + "id": "1073", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "15", + "end": "14522", + "id": "1074", + "length": "2", + "line": "456", + "parentIndex": "1069", + "start": "14521" + }, + "typeDescription": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + } + }, + "functionReturnParameters": "1053", + "id": "1071", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "14523", + "id": "1072", + "length": "10", + "line": "456", + "parentIndex": "1053", + "start": "14514" + }, + "typeDescription": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + } + } + } + ] + }, + "id": "1053", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "decimals", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "1055", + "name": "decimals", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "834", + "src": { + "column": "44", + "end": "14486", + "id": "1056", + "length": "8", + "line": "455", + "parentIndex": "1053", + "start": "14479" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint8$", + "typeString": "function(uint8)" + } + } + ], + "parameters": { + "id": "1057", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1059", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1059", + "src": { + "column": "62", + "end": "14501", + "id": "1060", + "length": "5", + "line": "455", + "parentIndex": "1057", + "start": "14497" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "1061", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "14501", + "id": "1062", + "length": "5", + "line": "455", + "parentIndex": "1059", + "start": "14497" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "14501", + "id": "1058", + "length": "5", + "line": "455", + "parentIndex": "1053", + "start": "14497" + } + }, + "returnParameters": { + "id": "1063", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1065", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1065", + "src": { + "column": "62", + "end": "14501", + "id": "1066", + "length": "5", + "line": "455", + "parentIndex": "1063", + "start": "14497" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "1067", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "14501", + "id": "1068", + "length": "5", + "line": "455", + "parentIndex": "1065", + "start": "14497" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "14501", + "id": "1064", + "length": "5", + "line": "455", + "parentIndex": "1053", + "start": "14497" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "14529", + "id": "1054", + "length": "91", + "line": "455", + "parentIndex": "923", + "start": "14439" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint8$", + "typeString": "function(uint8)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1092", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "74", + "end": "14695", + "id": "1093", + "length": "36", + "line": "462", + "parentIndex": "1076", + "start": "14660" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1096", + "name": "_totalSupply", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "960", + "src": { + "column": "15", + "end": "14688", + "id": "1097", + "length": "12", + "line": "463", + "parentIndex": "1092", + "start": "14677" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "1076", + "id": "1094", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "14689", + "id": "1095", + "length": "20", + "line": "463", + "parentIndex": "1076", + "start": "14670" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "1076", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "totalSupply", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "1078", + "name": "totalSupply", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "637", + "src": { + "column": "47", + "end": "14640", + "id": "1079", + "length": "8", + "line": "462", + "parentIndex": "1076", + "start": "14633" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + } + } + ], + "parameters": { + "id": "1080", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1082", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1082", + "src": { + "column": "65", + "end": "14657", + "id": "1083", + "length": "7", + "line": "462", + "parentIndex": "1080", + "start": "14651" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1084", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "65", + "end": "14657", + "id": "1085", + "length": "7", + "line": "462", + "parentIndex": "1082", + "start": "14651" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "14657", + "id": "1081", + "length": "7", + "line": "462", + "parentIndex": "1076", + "start": "14651" + } + }, + "returnParameters": { + "id": "1086", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1088", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1088", + "src": { + "column": "65", + "end": "14657", + "id": "1089", + "length": "7", + "line": "462", + "parentIndex": "1086", + "start": "14651" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1090", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "65", + "end": "14657", + "id": "1091", + "length": "7", + "line": "462", + "parentIndex": "1088", + "start": "14651" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "14657", + "id": "1087", + "length": "7", + "line": "462", + "parentIndex": "1076", + "start": "14651" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "14695", + "id": "1077", + "length": "106", + "line": "462", + "parentIndex": "923", + "start": "14590" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1115", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "87", + "end": "14878", + "id": "1116", + "length": "42", + "line": "469", + "parentIndex": "1099", + "start": "14837" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1123", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1123", + "src": { + "column": "25", + "end": "14870", + "id": "1124", + "length": "7", + "line": "470", + "parentIndex": "1119", + "start": "14864" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1119", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1121", + "name": "_balances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "937", + "src": { + "column": "15", + "end": "14862", + "id": "1122", + "length": "9", + "line": "470", + "parentIndex": "1119", + "start": "14854" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "15", + "end": "14871", + "id": "1120", + "length": "18", + "line": "470", + "parentIndex": "1115", + "start": "14854" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "functionReturnParameters": "1099", + "id": "1117", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "14872", + "id": "1118", + "length": "26", + "line": "470", + "parentIndex": "1099", + "start": "14847" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + } + ] + }, + "id": "1099", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "balanceOf", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "1101", + "name": "balanceOf", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "653", + "src": { + "column": "60", + "end": "14817", + "id": "1102", + "length": "8", + "line": "469", + "parentIndex": "1099", + "start": "14810" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + ], + "parameters": { + "id": "1103", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1105", + "name": "account", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1105", + "src": { + "column": "23", + "end": "14787", + "id": "1106", + "length": "15", + "line": "469", + "parentIndex": "1103", + "start": "14773" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1107", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "14779", + "id": "1108", + "length": "7", + "line": "469", + "parentIndex": "1105", + "start": "14773" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "14787", + "id": "1104", + "length": "15", + "line": "469", + "parentIndex": "1099", + "start": "14773" + } + }, + "returnParameters": { + "id": "1109", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1111", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1111", + "src": { + "column": "78", + "end": "14834", + "id": "1112", + "length": "7", + "line": "469", + "parentIndex": "1109", + "start": "14828" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1113", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "78", + "end": "14834", + "id": "1114", + "length": "7", + "line": "469", + "parentIndex": "1111", + "start": "14828" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "78", + "end": "14834", + "id": "1110", + "length": "7", + "line": "469", + "parentIndex": "1099", + "start": "14828" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "14878", + "id": "1100", + "length": "125", + "line": "469", + "parentIndex": "923", + "start": "14754" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1146", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "89", + "end": "15263", + "id": "1147", + "length": "104", + "line": "481", + "parentIndex": "1126", + "start": "15160" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "1150" + ], + "declarations": [ + { + "id": "1150", + "mutability": "MUTABLE", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1146", + "src": { + "column": "8", + "end": "15182", + "id": "1151", + "length": "13", + "line": "482", + "parentIndex": "1148", + "start": "15170" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1152", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "15176", + "id": "1153", + "length": "7", + "line": "482", + "parentIndex": "1150", + "start": "15170" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "1148", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1156", + "name": "_msgSender", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "15195", + "id": "1157", + "length": "10", + "line": "482", + "parentIndex": "1154", + "start": "15186" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1154", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "15197", + "id": "1155", + "length": "12", + "line": "482", + "parentIndex": "1148", + "start": "15186" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "15198", + "id": "1149", + "length": "29", + "line": "482", + "parentIndex": "1146", + "start": "15170" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1162", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1148", + "src": { + "column": "18", + "end": "15222", + "id": "1163", + "length": "5", + "line": "483", + "parentIndex": "1158", + "start": "15218" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1164", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1164", + "src": { + "column": "25", + "end": "15226", + "id": "1165", + "length": "2", + "line": "483", + "parentIndex": "1158", + "start": "15225" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1166", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1166", + "src": { + "column": "29", + "end": "15234", + "id": "1167", + "length": "6", + "line": "483", + "parentIndex": "1158", + "start": "15229" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1160", + "name": "_transfer", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "15216", + "id": "1161", + "length": "9", + "line": "483", + "parentIndex": "1158", + "start": "15208" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1158", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "15235", + "id": "1159", + "length": "28", + "line": "483", + "parentIndex": "1146", + "start": "15208" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "1170", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "15", + "end": "15256", + "id": "1171", + "length": "4", + "line": "484", + "parentIndex": "1146", + "start": "15253" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + "functionReturnParameters": "1126", + "id": "1168", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "15257", + "id": "1169", + "length": "12", + "line": "484", + "parentIndex": "1126", + "start": "15246" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ] + }, + "id": "1126", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "transfer", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "1128", + "name": "transfer", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "669", + "src": { + "column": "65", + "end": "15143", + "id": "1129", + "length": "8", + "line": "481", + "parentIndex": "1126", + "start": "15136" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + } + } + ], + "parameters": { + "id": "1130", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1132", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1132", + "src": { + "column": "22", + "end": "15102", + "id": "1133", + "length": "10", + "line": "481", + "parentIndex": "1130", + "start": "15093" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1134", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "15099", + "id": "1135", + "length": "7", + "line": "481", + "parentIndex": "1132", + "start": "15093" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1136", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1136", + "src": { + "column": "34", + "end": "15118", + "id": "1137", + "length": "14", + "line": "481", + "parentIndex": "1130", + "start": "15105" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1138", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "34", + "end": "15111", + "id": "1139", + "length": "7", + "line": "481", + "parentIndex": "1136", + "start": "15105" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "22", + "end": "15118", + "id": "1131", + "length": "26", + "line": "481", + "parentIndex": "1126", + "start": "15093" + } + }, + "returnParameters": { + "id": "1140", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1142", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1142", + "src": { + "column": "83", + "end": "15157", + "id": "1143", + "length": "4", + "line": "481", + "parentIndex": "1140", + "start": "15154" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "1144", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "83", + "end": "15157", + "id": "1145", + "length": "4", + "line": "481", + "parentIndex": "1142", + "start": "15154" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "83", + "end": "15157", + "id": "1141", + "length": "4", + "line": "481", + "parentIndex": "1126", + "start": "15154" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "15263", + "id": "1127", + "length": "189", + "line": "481", + "parentIndex": "923", + "start": "15075" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1193", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "102", + "end": "15470", + "id": "1194", + "length": "51", + "line": "490", + "parentIndex": "1173", + "start": "15420" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1205", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1205", + "src": { + "column": "34", + "end": "15462", + "id": "1206", + "length": "7", + "line": "491", + "parentIndex": "1197", + "start": "15456" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1197", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1203", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1203", + "src": { + "column": "27", + "end": "15453", + "id": "1204", + "length": "5", + "line": "491", + "parentIndex": "1199", + "start": "15449" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1199", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1201", + "name": "_allowances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "946", + "src": { + "column": "15", + "end": "15447", + "id": "1202", + "length": "11", + "line": "491", + "parentIndex": "1199", + "start": "15437" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003emapping(address=\u003euint256))" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "15", + "end": "15454", + "id": "1200", + "length": "18", + "line": "491", + "parentIndex": "1197", + "start": "15437" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003emapping(address=\u003euint256)):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003emapping(address=\u003euint256))" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "15", + "end": "15463", + "id": "1198", + "length": "27", + "line": "491", + "parentIndex": "1193", + "start": "15437" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$", + "typeString": "index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003emapping(address=\u003euint256)):address]" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "functionReturnParameters": "1173", + "id": "1195", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "15464", + "id": "1196", + "length": "35", + "line": "491", + "parentIndex": "1173", + "start": "15430" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$", + "typeString": "index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]" + } + } + } + ] + }, + "id": "1173", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "allowance", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "1175", + "name": "allowance", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "689", + "src": { + "column": "75", + "end": "15400", + "id": "1176", + "length": "8", + "line": "490", + "parentIndex": "1173", + "start": "15393" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + } + } + ], + "parameters": { + "id": "1177", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1179", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1179", + "src": { + "column": "23", + "end": "15353", + "id": "1180", + "length": "13", + "line": "490", + "parentIndex": "1177", + "start": "15341" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1181", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "15347", + "id": "1182", + "length": "7", + "line": "490", + "parentIndex": "1179", + "start": "15341" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1183", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1183", + "src": { + "column": "38", + "end": "15370", + "id": "1184", + "length": "15", + "line": "490", + "parentIndex": "1177", + "start": "15356" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1185", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "38", + "end": "15362", + "id": "1186", + "length": "7", + "line": "490", + "parentIndex": "1183", + "start": "15356" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "15370", + "id": "1178", + "length": "30", + "line": "490", + "parentIndex": "1173", + "start": "15341" + } + }, + "returnParameters": { + "id": "1187", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1189", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1189", + "src": { + "column": "93", + "end": "15417", + "id": "1190", + "length": "7", + "line": "490", + "parentIndex": "1187", + "start": "15411" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1191", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "93", + "end": "15417", + "id": "1192", + "length": "7", + "line": "490", + "parentIndex": "1189", + "start": "15411" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "93", + "end": "15417", + "id": "1188", + "length": "7", + "line": "490", + "parentIndex": "1173", + "start": "15411" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "15470", + "id": "1174", + "length": "149", + "line": "490", + "parentIndex": "923", + "start": "15322" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1228", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "93", + "end": "15975", + "id": "1229", + "length": "108", + "line": "504", + "parentIndex": "1208", + "start": "15868" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "1232" + ], + "declarations": [ + { + "id": "1232", + "mutability": "MUTABLE", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1228", + "src": { + "column": "8", + "end": "15890", + "id": "1233", + "length": "13", + "line": "505", + "parentIndex": "1230", + "start": "15878" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1234", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "15884", + "id": "1235", + "length": "7", + "line": "505", + "parentIndex": "1232", + "start": "15878" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "1230", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1238", + "name": "_msgSender", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "15903", + "id": "1239", + "length": "10", + "line": "505", + "parentIndex": "1236", + "start": "15894" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1236", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "15905", + "id": "1237", + "length": "12", + "line": "505", + "parentIndex": "1230", + "start": "15894" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "15906", + "id": "1231", + "length": "29", + "line": "505", + "parentIndex": "1228", + "start": "15878" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1244", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1230", + "src": { + "column": "17", + "end": "15929", + "id": "1245", + "length": "5", + "line": "506", + "parentIndex": "1240", + "start": "15925" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1246", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1246", + "src": { + "column": "24", + "end": "15938", + "id": "1247", + "length": "7", + "line": "506", + "parentIndex": "1240", + "start": "15932" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1248", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1248", + "src": { + "column": "33", + "end": "15946", + "id": "1249", + "length": "6", + "line": "506", + "parentIndex": "1240", + "start": "15941" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1242", + "name": "_approve", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "15923", + "id": "1243", + "length": "8", + "line": "506", + "parentIndex": "1240", + "start": "15916" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1240", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "15947", + "id": "1241", + "length": "32", + "line": "506", + "parentIndex": "1228", + "start": "15916" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "1252", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "15", + "end": "15968", + "id": "1253", + "length": "4", + "line": "507", + "parentIndex": "1228", + "start": "15965" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + "functionReturnParameters": "1208", + "id": "1250", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "15969", + "id": "1251", + "length": "12", + "line": "507", + "parentIndex": "1208", + "start": "15958" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ] + }, + "id": "1208", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "approve", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "1210", + "name": "approve", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "709", + "src": { + "column": "69", + "end": "15851", + "id": "1211", + "length": "8", + "line": "504", + "parentIndex": "1208", + "start": "15844" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + } + } + ], + "parameters": { + "id": "1212", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1214", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1214", + "src": { + "column": "21", + "end": "15810", + "id": "1215", + "length": "15", + "line": "504", + "parentIndex": "1212", + "start": "15796" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1216", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "21", + "end": "15802", + "id": "1217", + "length": "7", + "line": "504", + "parentIndex": "1214", + "start": "15796" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1218", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1218", + "src": { + "column": "38", + "end": "15826", + "id": "1219", + "length": "14", + "line": "504", + "parentIndex": "1212", + "start": "15813" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1220", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "38", + "end": "15819", + "id": "1221", + "length": "7", + "line": "504", + "parentIndex": "1218", + "start": "15813" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "21", + "end": "15826", + "id": "1213", + "length": "31", + "line": "504", + "parentIndex": "1208", + "start": "15796" + } + }, + "returnParameters": { + "id": "1222", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1224", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1224", + "src": { + "column": "87", + "end": "15865", + "id": "1225", + "length": "4", + "line": "504", + "parentIndex": "1222", + "start": "15862" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "1226", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "87", + "end": "15865", + "id": "1227", + "length": "4", + "line": "504", + "parentIndex": "1224", + "start": "15862" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "87", + "end": "15865", + "id": "1223", + "length": "4", + "line": "504", + "parentIndex": "1208", + "start": "15862" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "15975", + "id": "1209", + "length": "197", + "line": "504", + "parentIndex": "923", + "start": "15779" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1279", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "107", + "end": "16793", + "id": "1280", + "length": "153", + "line": "526", + "parentIndex": "1255", + "start": "16641" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "1283" + ], + "declarations": [ + { + "id": "1283", + "mutability": "MUTABLE", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1279", + "src": { + "column": "8", + "end": "16665", + "id": "1284", + "length": "15", + "line": "527", + "parentIndex": "1281", + "start": "16651" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1285", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "16657", + "id": "1286", + "length": "7", + "line": "527", + "parentIndex": "1283", + "start": "16651" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "1281", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1289", + "name": "_msgSender", + "nodeType": "IDENTIFIER", + "src": { + "column": "26", + "end": "16678", + "id": "1290", + "length": "10", + "line": "527", + "parentIndex": "1287", + "start": "16669" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1287", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "26", + "end": "16680", + "id": "1288", + "length": "12", + "line": "527", + "parentIndex": "1281", + "start": "16669" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "16681", + "id": "1282", + "length": "31", + "line": "527", + "parentIndex": "1279", + "start": "16651" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1295", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1295", + "src": { + "column": "24", + "end": "16710", + "id": "1296", + "length": "4", + "line": "528", + "parentIndex": "1291", + "start": "16707" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1297", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1281", + "src": { + "column": "30", + "end": "16719", + "id": "1298", + "length": "7", + "line": "528", + "parentIndex": "1291", + "start": "16713" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1299", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1299", + "src": { + "column": "39", + "end": "16727", + "id": "1300", + "length": "6", + "line": "528", + "parentIndex": "1291", + "start": "16722" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1293", + "name": "_spendAllowance", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "16705", + "id": "1294", + "length": "15", + "line": "528", + "parentIndex": "1291", + "start": "16691" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1291", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "16728", + "id": "1292", + "length": "38", + "line": "528", + "parentIndex": "1279", + "start": "16691" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1305", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1305", + "src": { + "column": "18", + "end": "16752", + "id": "1306", + "length": "4", + "line": "529", + "parentIndex": "1301", + "start": "16749" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1307", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1307", + "src": { + "column": "24", + "end": "16756", + "id": "1308", + "length": "2", + "line": "529", + "parentIndex": "1301", + "start": "16755" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1309", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1309", + "src": { + "column": "28", + "end": "16764", + "id": "1310", + "length": "6", + "line": "529", + "parentIndex": "1301", + "start": "16759" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1303", + "name": "_transfer", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "16747", + "id": "1304", + "length": "9", + "line": "529", + "parentIndex": "1301", + "start": "16739" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1301", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "16765", + "id": "1302", + "length": "27", + "line": "529", + "parentIndex": "1279", + "start": "16739" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "1313", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "15", + "end": "16786", + "id": "1314", + "length": "4", + "line": "530", + "parentIndex": "1279", + "start": "16783" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + "functionReturnParameters": "1255", + "id": "1311", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "16787", + "id": "1312", + "length": "12", + "line": "530", + "parentIndex": "1255", + "start": "16776" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ] + }, + "id": "1255", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "transferFrom", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "1257", + "name": "transferFrom", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "729", + "src": { + "column": "83", + "end": "16624", + "id": "1258", + "length": "8", + "line": "526", + "parentIndex": "1255", + "start": "16617" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + ], + "parameters": { + "id": "1259", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1261", + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1261", + "src": { + "column": "26", + "end": "16571", + "id": "1262", + "length": "12", + "line": "526", + "parentIndex": "1259", + "start": "16560" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1263", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "26", + "end": "16566", + "id": "1264", + "length": "7", + "line": "526", + "parentIndex": "1261", + "start": "16560" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1265", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1265", + "src": { + "column": "40", + "end": "16583", + "id": "1266", + "length": "10", + "line": "526", + "parentIndex": "1259", + "start": "16574" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1267", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "40", + "end": "16580", + "id": "1268", + "length": "7", + "line": "526", + "parentIndex": "1265", + "start": "16574" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1269", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1269", + "src": { + "column": "52", + "end": "16599", + "id": "1270", + "length": "14", + "line": "526", + "parentIndex": "1259", + "start": "16586" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1271", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "52", + "end": "16592", + "id": "1272", + "length": "7", + "line": "526", + "parentIndex": "1269", + "start": "16586" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "26", + "end": "16599", + "id": "1260", + "length": "40", + "line": "526", + "parentIndex": "1255", + "start": "16560" + } + }, + "returnParameters": { + "id": "1273", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1275", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1275", + "src": { + "column": "101", + "end": "16638", + "id": "1276", + "length": "4", + "line": "526", + "parentIndex": "1273", + "start": "16635" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "1277", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "101", + "end": "16638", + "id": "1278", + "length": "4", + "line": "526", + "parentIndex": "1275", + "start": "16635" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "101", + "end": "16638", + "id": "1274", + "length": "4", + "line": "526", + "parentIndex": "1255", + "start": "16635" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "16793", + "id": "1256", + "length": "256", + "line": "526", + "parentIndex": "923", + "start": "16538" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1334", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "98", + "end": "17422", + "id": "1335", + "length": "140", + "line": "545", + "parentIndex": "1316", + "start": "17283" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "1338" + ], + "declarations": [ + { + "id": "1338", + "mutability": "MUTABLE", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1334", + "src": { + "column": "8", + "end": "17305", + "id": "1339", + "length": "13", + "line": "546", + "parentIndex": "1336", + "start": "17293" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1340", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "17299", + "id": "1341", + "length": "7", + "line": "546", + "parentIndex": "1338", + "start": "17293" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "1336", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1344", + "name": "_msgSender", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "17318", + "id": "1345", + "length": "10", + "line": "546", + "parentIndex": "1342", + "start": "17309" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1342", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "17320", + "id": "1343", + "length": "12", + "line": "546", + "parentIndex": "1336", + "start": "17309" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "17321", + "id": "1337", + "length": "29", + "line": "546", + "parentIndex": "1334", + "start": "17293" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1350", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1336", + "src": { + "column": "17", + "end": "17344", + "id": "1351", + "length": "5", + "line": "547", + "parentIndex": "1346", + "start": "17340" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1352", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1352", + "src": { + "column": "24", + "end": "17353", + "id": "1353", + "length": "7", + "line": "547", + "parentIndex": "1346", + "start": "17347" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1354", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1360", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1336", + "src": { + "column": "43", + "end": "17370", + "id": "1361", + "length": "5", + "line": "547", + "parentIndex": "1356", + "start": "17366" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1362", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1362", + "src": { + "column": "50", + "end": "17379", + "id": "1363", + "length": "7", + "line": "547", + "parentIndex": "1356", + "start": "17373" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1358", + "name": "allowance", + "nodeType": "IDENTIFIER", + "src": { + "column": "33", + "end": "17364", + "id": "1359", + "length": "9", + "line": "547", + "parentIndex": "1356", + "start": "17356" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1356", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "33", + "end": "17380", + "id": "1357", + "length": "25", + "line": "547", + "parentIndex": "1354", + "start": "17356" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "ADDITION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1364", + "name": "addedValue", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1364", + "src": { + "column": "61", + "end": "17393", + "id": "1365", + "length": "10", + "line": "547", + "parentIndex": "1354", + "start": "17384" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "33", + "end": "17393", + "id": "1355", + "length": "38", + "line": "547", + "parentIndex": "1346", + "start": "17356" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1348", + "name": "_approve", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "17338", + "id": "1349", + "length": "8", + "line": "547", + "parentIndex": "1346", + "start": "17331" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1346", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "17394", + "id": "1347", + "length": "64", + "line": "547", + "parentIndex": "1334", + "start": "17331" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_function_$_t_address$_t_address$", + "typeString": "function(address,address,function(address,address))" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "1368", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "15", + "end": "17415", + "id": "1369", + "length": "4", + "line": "548", + "parentIndex": "1334", + "start": "17412" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + "functionReturnParameters": "1316", + "id": "1366", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "17416", + "id": "1367", + "length": "12", + "line": "548", + "parentIndex": "1316", + "start": "17405" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ] + }, + "id": "1316", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "increaseAllowance", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1318", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1320", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1320", + "src": { + "column": "31", + "end": "17230", + "id": "1321", + "length": "15", + "line": "545", + "parentIndex": "1318", + "start": "17216" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1322", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "17222", + "id": "1323", + "length": "7", + "line": "545", + "parentIndex": "1320", + "start": "17216" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1324", + "name": "addedValue", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1324", + "src": { + "column": "48", + "end": "17250", + "id": "1325", + "length": "18", + "line": "545", + "parentIndex": "1318", + "start": "17233" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1326", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "48", + "end": "17239", + "id": "1327", + "length": "7", + "line": "545", + "parentIndex": "1324", + "start": "17233" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "31", + "end": "17250", + "id": "1319", + "length": "35", + "line": "545", + "parentIndex": "1316", + "start": "17216" + } + }, + "returnParameters": { + "id": "1328", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1330", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1330", + "src": { + "column": "92", + "end": "17280", + "id": "1331", + "length": "4", + "line": "545", + "parentIndex": "1328", + "start": "17277" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "1332", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "92", + "end": "17280", + "id": "1333", + "length": "4", + "line": "545", + "parentIndex": "1330", + "start": "17277" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "92", + "end": "17280", + "id": "1329", + "length": "4", + "line": "545", + "parentIndex": "1316", + "start": "17277" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "17422", + "id": "1317", + "length": "234", + "line": "545", + "parentIndex": "923", + "start": "17189" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1389", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "103", + "end": "18336", + "id": "1390", + "length": "328", + "line": "565", + "parentIndex": "1371", + "start": "18009" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "1393" + ], + "declarations": [ + { + "id": "1393", + "mutability": "MUTABLE", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1389", + "src": { + "column": "8", + "end": "18031", + "id": "1394", + "length": "13", + "line": "566", + "parentIndex": "1391", + "start": "18019" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1395", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "18025", + "id": "1396", + "length": "7", + "line": "566", + "parentIndex": "1393", + "start": "18019" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "1391", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1399", + "name": "_msgSender", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "18044", + "id": "1400", + "length": "10", + "line": "566", + "parentIndex": "1397", + "start": "18035" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1397", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "18046", + "id": "1398", + "length": "12", + "line": "566", + "parentIndex": "1391", + "start": "18035" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "18047", + "id": "1392", + "length": "29", + "line": "566", + "parentIndex": "1389", + "start": "18019" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "1403" + ], + "declarations": [ + { + "id": "1403", + "mutability": "MUTABLE", + "name": "currentAllowance", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1389", + "src": { + "column": "8", + "end": "18080", + "id": "1404", + "length": "24", + "line": "567", + "parentIndex": "1401", + "start": "18057" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1405", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "18063", + "id": "1406", + "length": "7", + "line": "567", + "parentIndex": "1403", + "start": "18057" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "1401", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1411", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1391", + "src": { + "column": "45", + "end": "18098", + "id": "1412", + "length": "5", + "line": "567", + "parentIndex": "1407", + "start": "18094" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1413", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1413", + "src": { + "column": "52", + "end": "18107", + "id": "1414", + "length": "7", + "line": "567", + "parentIndex": "1407", + "start": "18101" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1409", + "name": "allowance", + "nodeType": "IDENTIFIER", + "src": { + "column": "35", + "end": "18092", + "id": "1410", + "length": "9", + "line": "567", + "parentIndex": "1407", + "start": "18084" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1407", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "35", + "end": "18108", + "id": "1408", + "length": "25", + "line": "567", + "parentIndex": "1401", + "start": "18084" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "18109", + "id": "1402", + "length": "53", + "line": "567", + "parentIndex": "1389", + "start": "18057" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1419", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1421", + "name": "currentAllowance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1401", + "src": { + "column": "16", + "end": "18142", + "id": "1422", + "length": "16", + "line": "568", + "parentIndex": "1419", + "start": "18127" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1423", + "name": "subtractedValue", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1423", + "src": { + "column": "36", + "end": "18161", + "id": "1424", + "length": "15", + "line": "568", + "parentIndex": "1419", + "start": "18147" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "18161", + "id": "1420", + "length": "35", + "line": "568", + "parentIndex": "1415", + "start": "18127" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "id": "1425", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "53", + "end": "18202", + "id": "1426", + "length": "39", + "line": "568", + "parentIndex": "1415", + "start": "18164" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + }, + "value": "ERC20: decreased allowance below zero" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1417", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "18125", + "id": "1418", + "length": "7", + "line": "568", + "parentIndex": "1415", + "start": "18119" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1415", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "18203", + "id": "1416", + "length": "85", + "line": "568", + "parentIndex": "1389", + "start": "18119" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "1429", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "15", + "end": "18329", + "id": "1430", + "length": "4", + "line": "573", + "parentIndex": "1389", + "start": "18326" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + "functionReturnParameters": "1371", + "id": "1427", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "18330", + "id": "1428", + "length": "12", + "line": "573", + "parentIndex": "1371", + "start": "18319" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "1431", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "18308", + "id": "1432", + "length": "95", + "line": "569", + "parentIndex": "923", + "start": "18214" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1437", + "name": "owner", + "nodeType": "IDENTIFIER", + "src": { + "column": "21", + "end": "18251", + "id": "1438", + "length": "5", + "line": "570", + "parentIndex": "1433", + "start": "18247" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "id": "1439", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1439", + "src": { + "column": "28", + "end": "18260", + "id": "1440", + "length": "7", + "line": "570", + "parentIndex": "1433", + "start": "18254" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1441", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1443", + "name": "currentAllowance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1401", + "src": { + "column": "37", + "end": "18278", + "id": "1444", + "length": "16", + "line": "570", + "parentIndex": "1441", + "start": "18263" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1445", + "name": "subtractedValue", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1445", + "src": { + "column": "56", + "end": "18296", + "id": "1446", + "length": "15", + "line": "570", + "parentIndex": "1441", + "start": "18282" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "37", + "end": "18296", + "id": "1442", + "length": "34", + "line": "570", + "parentIndex": "1433", + "start": "18263" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1435", + "name": "_approve", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "18245", + "id": "1436", + "length": "8", + "line": "570", + "parentIndex": "1433", + "start": "18238" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1433", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "18297", + "id": "1434", + "length": "60", + "line": "570", + "parentIndex": "1431", + "start": "18238" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_uint256$", + "typeString": "function(function(),address,uint256)" + } + } + } + ] + } + } + ] + }, + "id": "1371", + "kind": "KIND_FUNCTION", + "name": "decreaseAllowance", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1373", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1375", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1375", + "src": { + "column": "31", + "end": "17951", + "id": "1376", + "length": "15", + "line": "565", + "parentIndex": "1373", + "start": "17937" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1377", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "17943", + "id": "1378", + "length": "7", + "line": "565", + "parentIndex": "1375", + "start": "17937" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1379", + "name": "subtractedValue", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1379", + "src": { + "column": "48", + "end": "17976", + "id": "1380", + "length": "23", + "line": "565", + "parentIndex": "1373", + "start": "17954" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1381", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "48", + "end": "17960", + "id": "1382", + "length": "7", + "line": "565", + "parentIndex": "1379", + "start": "17954" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "31", + "end": "17976", + "id": "1374", + "length": "40", + "line": "565", + "parentIndex": "1371", + "start": "17937" + } + }, + "returnParameters": { + "id": "1383", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1385", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1385", + "src": { + "column": "97", + "end": "18006", + "id": "1386", + "length": "4", + "line": "565", + "parentIndex": "1383", + "start": "18003" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "1387", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "97", + "end": "18006", + "id": "1388", + "length": "4", + "line": "565", + "parentIndex": "1385", + "start": "18003" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "97", + "end": "18006", + "id": "1384", + "length": "4", + "line": "565", + "parentIndex": "1371", + "start": "18003" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "18336", + "id": "1372", + "length": "427", + "line": "565", + "parentIndex": "923", + "start": "17910" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1465", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "82", + "end": "19578", + "id": "1466", + "length": "710", + "line": "590", + "parentIndex": "1448", + "start": "18869" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1471", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1473", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1473", + "src": { + "column": "16", + "end": "18890", + "id": "1474", + "length": "4", + "line": "591", + "parentIndex": "1471", + "start": "18887" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1481", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "32", + "end": "18903", + "id": "1482", + "length": "1", + "line": "591", + "parentIndex": "1475", + "start": "18903" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1477", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "18901", + "id": "1478", + "length": "7", + "line": "591", + "parentIndex": "1475", + "start": "18895" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1479", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "18901", + "id": "1480", + "length": "7", + "line": "591", + "parentIndex": "1477", + "start": "18895" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1475", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "18904", + "id": "1476", + "length": "10", + "line": "591", + "parentIndex": "1471", + "start": "18895" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "16", + "end": "18904", + "id": "1472", + "length": "18", + "line": "591", + "parentIndex": "1467", + "start": "18887" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", + "id": "1483", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "18945", + "id": "1484", + "length": "39", + "line": "591", + "parentIndex": "1467", + "start": "18907" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + }, + "value": "ERC20: transfer from the zero address" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1469", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "18885", + "id": "1470", + "length": "7", + "line": "591", + "parentIndex": "1467", + "start": "18879" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1467", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "18946", + "id": "1468", + "length": "68", + "line": "591", + "parentIndex": "1465", + "start": "18879" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1489", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1491", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1491", + "src": { + "column": "16", + "end": "18966", + "id": "1492", + "length": "2", + "line": "592", + "parentIndex": "1489", + "start": "18965" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1499", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "30", + "end": "18979", + "id": "1500", + "length": "1", + "line": "592", + "parentIndex": "1493", + "start": "18979" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1495", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "22", + "end": "18977", + "id": "1496", + "length": "7", + "line": "592", + "parentIndex": "1493", + "start": "18971" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1497", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "18977", + "id": "1498", + "length": "7", + "line": "592", + "parentIndex": "1495", + "start": "18971" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1493", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "22", + "end": "18980", + "id": "1494", + "length": "10", + "line": "592", + "parentIndex": "1489", + "start": "18971" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "16", + "end": "18980", + "id": "1490", + "length": "16", + "line": "592", + "parentIndex": "1485", + "start": "18965" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": "1501", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "34", + "end": "19019", + "id": "1502", + "length": "37", + "line": "592", + "parentIndex": "1485", + "start": "18983" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + }, + "value": "ERC20: transfer to the zero address" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1487", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "18963", + "id": "1488", + "length": "7", + "line": "592", + "parentIndex": "1485", + "start": "18957" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1485", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "19020", + "id": "1486", + "length": "64", + "line": "592", + "parentIndex": "1465", + "start": "18957" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1507", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1507", + "src": { + "column": "29", + "end": "19056", + "id": "1508", + "length": "4", + "line": "594", + "parentIndex": "1503", + "start": "19053" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1509", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1509", + "src": { + "column": "35", + "end": "19060", + "id": "1510", + "length": "2", + "line": "594", + "parentIndex": "1503", + "start": "19059" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1511", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1511", + "src": { + "column": "39", + "end": "19068", + "id": "1512", + "length": "6", + "line": "594", + "parentIndex": "1503", + "start": "19063" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1505", + "name": "_beforeTokenTransfer", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "19051", + "id": "1506", + "length": "20", + "line": "594", + "parentIndex": "1503", + "start": "19032" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1503", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "19069", + "id": "1504", + "length": "38", + "line": "594", + "parentIndex": "1465", + "start": "19032" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "1515" + ], + "declarations": [ + { + "id": "1515", + "mutability": "MUTABLE", + "name": "fromBalance", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1465", + "src": { + "column": "8", + "end": "19099", + "id": "1516", + "length": "19", + "line": "596", + "parentIndex": "1513", + "start": "19081" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1517", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "19087", + "id": "1518", + "length": "7", + "line": "596", + "parentIndex": "1515", + "start": "19081" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "1513", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1523", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1523", + "src": { + "column": "40", + "end": "19116", + "id": "1524", + "length": "4", + "line": "596", + "parentIndex": "1519", + "start": "19113" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1519", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1521", + "name": "_balances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "937", + "src": { + "column": "30", + "end": "19111", + "id": "1522", + "length": "9", + "line": "596", + "parentIndex": "1519", + "start": "19103" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "30", + "end": "19117", + "id": "1520", + "length": "15", + "line": "596", + "parentIndex": "1513", + "start": "19103" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "19118", + "id": "1514", + "length": "38", + "line": "596", + "parentIndex": "1465", + "start": "19081" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1529", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1531", + "name": "fromBalance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1513", + "src": { + "column": "16", + "end": "19146", + "id": "1532", + "length": "11", + "line": "597", + "parentIndex": "1529", + "start": "19136" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1533", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1533", + "src": { + "column": "31", + "end": "19156", + "id": "1534", + "length": "6", + "line": "597", + "parentIndex": "1529", + "start": "19151" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "19156", + "id": "1530", + "length": "21", + "line": "597", + "parentIndex": "1525", + "start": "19136" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", + "id": "1535", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "39", + "end": "19198", + "id": "1536", + "length": "40", + "line": "597", + "parentIndex": "1525", + "start": "19159" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + }, + "value": "ERC20: transfer amount exceeds balance" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1527", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "19134", + "id": "1528", + "length": "7", + "line": "597", + "parentIndex": "1525", + "start": "19128" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1525", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "19199", + "id": "1526", + "length": "72", + "line": "597", + "parentIndex": "1465", + "start": "19128" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1539", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1539", + "src": { + "column": "22", + "end": "19510", + "id": "1540", + "length": "4", + "line": "605", + "parentIndex": "1465", + "start": "19507" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1541", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1541", + "src": { + "column": "28", + "end": "19514", + "id": "1542", + "length": "2", + "line": "605", + "parentIndex": "1465", + "start": "19513" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1543", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1543", + "src": { + "column": "32", + "end": "19522", + "id": "1544", + "length": "6", + "line": "605", + "parentIndex": "1465", + "start": "19517" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1545", + "name": "Transfer", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "753", + "src": { + "column": "13", + "end": "19505", + "id": "1546", + "length": "8", + "line": "605", + "parentIndex": "1465", + "start": "19498" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u0026753", + "typeString": "event IERC20.Transfer" + } + } + }, + "id": "1537", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "19524", + "id": "1538", + "length": "32", + "line": "605", + "parentIndex": "1448", + "start": "19493" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1551", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1551", + "src": { + "column": "28", + "end": "19558", + "id": "1552", + "length": "4", + "line": "607", + "parentIndex": "1547", + "start": "19555" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1553", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1553", + "src": { + "column": "34", + "end": "19562", + "id": "1554", + "length": "2", + "line": "607", + "parentIndex": "1547", + "start": "19561" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1555", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1555", + "src": { + "column": "38", + "end": "19570", + "id": "1556", + "length": "6", + "line": "607", + "parentIndex": "1547", + "start": "19565" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1549", + "name": "_afterTokenTransfer", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "19553", + "id": "1550", + "length": "19", + "line": "607", + "parentIndex": "1547", + "start": "19535" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1547", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "19571", + "id": "1548", + "length": "37", + "line": "607", + "parentIndex": "1465", + "start": "19535" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "1557", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "19482", + "id": "1558", + "length": "273", + "line": "598", + "parentIndex": "923", + "start": "19210" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1561", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1567", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1567", + "src": { + "column": "22", + "end": "19247", + "id": "1568", + "length": "4", + "line": "599", + "parentIndex": "1563", + "start": "19244" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1563", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1565", + "name": "_balances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "937", + "src": { + "column": "12", + "end": "19242", + "id": "1566", + "length": "9", + "line": "599", + "parentIndex": "1563", + "start": "19234" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "12", + "end": "19248", + "id": "1564", + "length": "15", + "line": "599", + "parentIndex": "1561", + "start": "19234" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1569", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1571", + "name": "fromBalance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1513", + "src": { + "column": "30", + "end": "19262", + "id": "1572", + "length": "11", + "line": "599", + "parentIndex": "1569", + "start": "19252" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1573", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1573", + "src": { + "column": "44", + "end": "19271", + "id": "1574", + "length": "6", + "line": "599", + "parentIndex": "1569", + "start": "19266" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "30", + "end": "19271", + "id": "1570", + "length": "20", + "line": "599", + "parentIndex": "1561", + "start": "19252" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "12", + "end": "19271", + "id": "1562", + "length": "38", + "line": "599", + "parentIndex": "1557", + "start": "19234" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + }, + "id": "1559", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "19272", + "id": "1560", + "length": "39", + "line": "599", + "parentIndex": "1557", + "start": "19234" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1577", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1583", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1583", + "src": { + "column": "22", + "end": "19460", + "id": "1584", + "length": "2", + "line": "602", + "parentIndex": "1579", + "start": "19459" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1579", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1581", + "name": "_balances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "937", + "src": { + "column": "12", + "end": "19457", + "id": "1582", + "length": "9", + "line": "602", + "parentIndex": "1579", + "start": "19449" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "12", + "end": "19461", + "id": "1580", + "length": "13", + "line": "602", + "parentIndex": "1577", + "start": "19449" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "ASSIGNMENT", + "operator": "PLUS_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1585", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1585", + "src": { + "column": "29", + "end": "19471", + "id": "1586", + "length": "6", + "line": "602", + "parentIndex": "1577", + "start": "19466" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "12", + "end": "19471", + "id": "1578", + "length": "23", + "line": "602", + "parentIndex": "1557", + "start": "19449" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + }, + "id": "1575", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "19472", + "id": "1576", + "length": "24", + "line": "602", + "parentIndex": "1557", + "start": "19449" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + } + ] + } + } + ] + }, + "id": "1448", + "kind": "KIND_FUNCTION", + "name": "_transfer", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1450", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1452", + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1452", + "src": { + "column": "23", + "end": "18821", + "id": "1453", + "length": "12", + "line": "590", + "parentIndex": "1450", + "start": "18810" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1454", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "18816", + "id": "1455", + "length": "7", + "line": "590", + "parentIndex": "1452", + "start": "18810" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1456", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1456", + "src": { + "column": "37", + "end": "18833", + "id": "1457", + "length": "10", + "line": "590", + "parentIndex": "1450", + "start": "18824" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1458", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "37", + "end": "18830", + "id": "1459", + "length": "7", + "line": "590", + "parentIndex": "1456", + "start": "18824" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1460", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1460", + "src": { + "column": "49", + "end": "18849", + "id": "1461", + "length": "14", + "line": "590", + "parentIndex": "1450", + "start": "18836" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1462", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "49", + "end": "18842", + "id": "1463", + "length": "7", + "line": "590", + "parentIndex": "1460", + "start": "18836" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "18849", + "id": "1451", + "length": "40", + "line": "590", + "parentIndex": "1448", + "start": "18810" + } + }, + "returnParameters": { + "id": "1464", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "19578", + "id": "1449", + "length": "788", + "line": "590", + "parentIndex": "1448", + "start": "18791" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "19578", + "id": "1449", + "length": "788", + "line": "590", + "parentIndex": "923", + "start": "18791" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1601", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "69", + "end": "20389", + "id": "1602", + "length": "470", + "line": "619", + "parentIndex": "1588", + "start": "19920" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1607", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1609", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1609", + "src": { + "column": "16", + "end": "19944", + "id": "1610", + "length": "7", + "line": "620", + "parentIndex": "1607", + "start": "19938" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1617", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "35", + "end": "19957", + "id": "1618", + "length": "1", + "line": "620", + "parentIndex": "1611", + "start": "19957" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1613", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "27", + "end": "19955", + "id": "1614", + "length": "7", + "line": "620", + "parentIndex": "1611", + "start": "19949" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1615", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "27", + "end": "19955", + "id": "1616", + "length": "7", + "line": "620", + "parentIndex": "1613", + "start": "19949" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1611", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "27", + "end": "19958", + "id": "1612", + "length": "10", + "line": "620", + "parentIndex": "1607", + "start": "19949" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "16", + "end": "19958", + "id": "1608", + "length": "21", + "line": "620", + "parentIndex": "1603", + "start": "19938" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "id": "1619", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "39", + "end": "19993", + "id": "1620", + "length": "33", + "line": "620", + "parentIndex": "1603", + "start": "19961" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + }, + "value": "ERC20: mint to the zero address" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1605", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "19936", + "id": "1606", + "length": "7", + "line": "620", + "parentIndex": "1603", + "start": "19930" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1603", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "19994", + "id": "1604", + "length": "65", + "line": "620", + "parentIndex": "1601", + "start": "19930" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1631", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "37", + "end": "20035", + "id": "1632", + "length": "1", + "line": "622", + "parentIndex": "1625", + "start": "20035" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1627", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "29", + "end": "20033", + "id": "1628", + "length": "7", + "line": "622", + "parentIndex": "1625", + "start": "20027" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1629", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "20033", + "id": "1630", + "length": "7", + "line": "622", + "parentIndex": "1627", + "start": "20027" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1625", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "29", + "end": "20036", + "id": "1626", + "length": "10", + "line": "622", + "parentIndex": "1621", + "start": "20027" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + ], + "id": "1633", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1633", + "src": { + "column": "41", + "end": "20045", + "id": "1634", + "length": "7", + "line": "622", + "parentIndex": "1621", + "start": "20039" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1635", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1635", + "src": { + "column": "50", + "end": "20053", + "id": "1636", + "length": "6", + "line": "622", + "parentIndex": "1621", + "start": "20048" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1623", + "name": "_beforeTokenTransfer", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "20025", + "id": "1624", + "length": "20", + "line": "622", + "parentIndex": "1621", + "start": "20006" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1621", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "20054", + "id": "1622", + "length": "49", + "line": "622", + "parentIndex": "1601", + "start": "20006" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$_t_address$_t_uint256$", + "typeString": "function(function(int_const 0),address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1639", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1641", + "name": "_totalSupply", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "960", + "src": { + "column": "8", + "end": "20077", + "id": "1642", + "length": "12", + "line": "624", + "parentIndex": "1639", + "start": "20066" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "PLUS_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1643", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1643", + "src": { + "column": "24", + "end": "20087", + "id": "1644", + "length": "6", + "line": "624", + "parentIndex": "1639", + "start": "20082" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "8", + "end": "20087", + "id": "1640", + "length": "22", + "line": "624", + "parentIndex": "1601", + "start": "20066" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "1637", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "20088", + "id": "1638", + "length": "23", + "line": "624", + "parentIndex": "1601", + "start": "20066" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1653", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "30", + "end": "20304", + "id": "1654", + "length": "1", + "line": "629", + "parentIndex": "1647", + "start": "20304" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1649", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "22", + "end": "20302", + "id": "1650", + "length": "7", + "line": "629", + "parentIndex": "1647", + "start": "20296" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1651", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "20302", + "id": "1652", + "length": "7", + "line": "629", + "parentIndex": "1649", + "start": "20296" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1647", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "22", + "end": "20305", + "id": "1648", + "length": "10", + "line": "629", + "parentIndex": "1601", + "start": "20296" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1655", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1655", + "src": { + "column": "34", + "end": "20314", + "id": "1656", + "length": "7", + "line": "629", + "parentIndex": "1601", + "start": "20308" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1657", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1657", + "src": { + "column": "43", + "end": "20322", + "id": "1658", + "length": "6", + "line": "629", + "parentIndex": "1601", + "start": "20317" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1659", + "name": "Transfer", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "753", + "src": { + "column": "13", + "end": "20294", + "id": "1660", + "length": "8", + "line": "629", + "parentIndex": "1601", + "start": "20287" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u0026753", + "typeString": "event IERC20.Transfer" + } + } + }, + "id": "1645", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "20324", + "id": "1646", + "length": "43", + "line": "629", + "parentIndex": "1588", + "start": "20282" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1671", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "20363", + "id": "1672", + "length": "1", + "line": "631", + "parentIndex": "1665", + "start": "20363" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1667", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "28", + "end": "20361", + "id": "1668", + "length": "7", + "line": "631", + "parentIndex": "1665", + "start": "20355" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1669", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "20361", + "id": "1670", + "length": "7", + "line": "631", + "parentIndex": "1667", + "start": "20355" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1665", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "28", + "end": "20364", + "id": "1666", + "length": "10", + "line": "631", + "parentIndex": "1661", + "start": "20355" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + ], + "id": "1673", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1673", + "src": { + "column": "40", + "end": "20373", + "id": "1674", + "length": "7", + "line": "631", + "parentIndex": "1661", + "start": "20367" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1675", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1675", + "src": { + "column": "49", + "end": "20381", + "id": "1676", + "length": "6", + "line": "631", + "parentIndex": "1661", + "start": "20376" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1663", + "name": "_afterTokenTransfer", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "20353", + "id": "1664", + "length": "19", + "line": "631", + "parentIndex": "1661", + "start": "20335" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1661", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "20382", + "id": "1662", + "length": "48", + "line": "631", + "parentIndex": "1601", + "start": "20335" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$_t_address$_t_uint256$", + "typeString": "function(function(int_const 0),address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "1677", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "20272", + "id": "1678", + "length": "175", + "line": "625", + "parentIndex": "923", + "start": "20098" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1681", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1687", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1687", + "src": { + "column": "22", + "end": "20250", + "id": "1688", + "length": "7", + "line": "627", + "parentIndex": "1683", + "start": "20244" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1683", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1685", + "name": "_balances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "937", + "src": { + "column": "12", + "end": "20242", + "id": "1686", + "length": "9", + "line": "627", + "parentIndex": "1683", + "start": "20234" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "12", + "end": "20251", + "id": "1684", + "length": "18", + "line": "627", + "parentIndex": "1681", + "start": "20234" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "ASSIGNMENT", + "operator": "PLUS_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1689", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1689", + "src": { + "column": "34", + "end": "20261", + "id": "1690", + "length": "6", + "line": "627", + "parentIndex": "1681", + "start": "20256" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "12", + "end": "20261", + "id": "1682", + "length": "28", + "line": "627", + "parentIndex": "1677", + "start": "20234" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + }, + "id": "1679", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "20262", + "id": "1680", + "length": "29", + "line": "627", + "parentIndex": "1677", + "start": "20234" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + } + ] + } + } + ] + }, + "id": "1588", + "kind": "KIND_FUNCTION", + "name": "_mint", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1590", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1592", + "name": "account", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1592", + "src": { + "column": "19", + "end": "19884", + "id": "1593", + "length": "15", + "line": "619", + "parentIndex": "1590", + "start": "19870" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1594", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "19", + "end": "19876", + "id": "1595", + "length": "7", + "line": "619", + "parentIndex": "1592", + "start": "19870" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1596", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1596", + "src": { + "column": "36", + "end": "19900", + "id": "1597", + "length": "14", + "line": "619", + "parentIndex": "1590", + "start": "19887" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1598", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "36", + "end": "19893", + "id": "1599", + "length": "7", + "line": "619", + "parentIndex": "1596", + "start": "19887" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "19", + "end": "19900", + "id": "1591", + "length": "31", + "line": "619", + "parentIndex": "1588", + "start": "19870" + } + }, + "returnParameters": { + "id": "1600", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "20389", + "id": "1589", + "length": "535", + "line": "619", + "parentIndex": "1588", + "start": "19855" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "20389", + "id": "1589", + "length": "535", + "line": "619", + "parentIndex": "923", + "start": "19855" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1705", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "69", + "end": "21368", + "id": "1706", + "length": "594", + "line": "645", + "parentIndex": "1692", + "start": "20775" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1711", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1713", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1713", + "src": { + "column": "16", + "end": "20799", + "id": "1714", + "length": "7", + "line": "646", + "parentIndex": "1711", + "start": "20793" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1721", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "35", + "end": "20812", + "id": "1722", + "length": "1", + "line": "646", + "parentIndex": "1715", + "start": "20812" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1717", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "27", + "end": "20810", + "id": "1718", + "length": "7", + "line": "646", + "parentIndex": "1715", + "start": "20804" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1719", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "27", + "end": "20810", + "id": "1720", + "length": "7", + "line": "646", + "parentIndex": "1717", + "start": "20804" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1715", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "27", + "end": "20813", + "id": "1716", + "length": "10", + "line": "646", + "parentIndex": "1711", + "start": "20804" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "16", + "end": "20813", + "id": "1712", + "length": "21", + "line": "646", + "parentIndex": "1707", + "start": "20793" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", + "id": "1723", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "39", + "end": "20850", + "id": "1724", + "length": "35", + "line": "646", + "parentIndex": "1707", + "start": "20816" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + }, + "value": "ERC20: burn from the zero address" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1709", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "20791", + "id": "1710", + "length": "7", + "line": "646", + "parentIndex": "1707", + "start": "20785" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1707", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "20851", + "id": "1708", + "length": "67", + "line": "646", + "parentIndex": "1705", + "start": "20785" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1729", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1729", + "src": { + "column": "29", + "end": "20890", + "id": "1730", + "length": "7", + "line": "648", + "parentIndex": "1725", + "start": "20884" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1737", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "46", + "end": "20901", + "id": "1738", + "length": "1", + "line": "648", + "parentIndex": "1731", + "start": "20901" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1733", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "38", + "end": "20899", + "id": "1734", + "length": "7", + "line": "648", + "parentIndex": "1731", + "start": "20893" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1735", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "38", + "end": "20899", + "id": "1736", + "length": "7", + "line": "648", + "parentIndex": "1733", + "start": "20893" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1731", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "38", + "end": "20902", + "id": "1732", + "length": "10", + "line": "648", + "parentIndex": "1725", + "start": "20893" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + ], + "id": "1739", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1739", + "src": { + "column": "50", + "end": "20910", + "id": "1740", + "length": "6", + "line": "648", + "parentIndex": "1725", + "start": "20905" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1727", + "name": "_beforeTokenTransfer", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "20882", + "id": "1728", + "length": "20", + "line": "648", + "parentIndex": "1725", + "start": "20863" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1725", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "20911", + "id": "1726", + "length": "49", + "line": "648", + "parentIndex": "1705", + "start": "20863" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_function_$_t_rational_0_by_1$_t_uint256$", + "typeString": "function(address,function(int_const 0),uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "1743" + ], + "declarations": [ + { + "id": "1743", + "mutability": "MUTABLE", + "name": "accountBalance", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1705", + "src": { + "column": "8", + "end": "20944", + "id": "1744", + "length": "22", + "line": "650", + "parentIndex": "1741", + "start": "20923" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1745", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "20929", + "id": "1746", + "length": "7", + "line": "650", + "parentIndex": "1743", + "start": "20923" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "1741", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1751", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1751", + "src": { + "column": "43", + "end": "20964", + "id": "1752", + "length": "7", + "line": "650", + "parentIndex": "1747", + "start": "20958" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1747", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1749", + "name": "_balances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "937", + "src": { + "column": "33", + "end": "20956", + "id": "1750", + "length": "9", + "line": "650", + "parentIndex": "1747", + "start": "20948" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "33", + "end": "20965", + "id": "1748", + "length": "18", + "line": "650", + "parentIndex": "1741", + "start": "20948" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "20966", + "id": "1742", + "length": "44", + "line": "650", + "parentIndex": "1705", + "start": "20923" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1757", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1759", + "name": "accountBalance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1741", + "src": { + "column": "16", + "end": "20997", + "id": "1760", + "length": "14", + "line": "651", + "parentIndex": "1757", + "start": "20984" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1761", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1761", + "src": { + "column": "34", + "end": "21007", + "id": "1762", + "length": "6", + "line": "651", + "parentIndex": "1757", + "start": "21002" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "21007", + "id": "1758", + "length": "24", + "line": "651", + "parentIndex": "1753", + "start": "20984" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", + "id": "1763", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "42", + "end": "21045", + "id": "1764", + "length": "36", + "line": "651", + "parentIndex": "1753", + "start": "21010" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + }, + "value": "ERC20: burn amount exceeds balance" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1755", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "20982", + "id": "1756", + "length": "7", + "line": "651", + "parentIndex": "1753", + "start": "20976" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1753", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "21046", + "id": "1754", + "length": "71", + "line": "651", + "parentIndex": "1705", + "start": "20976" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1767", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1767", + "src": { + "column": "22", + "end": "21281", + "id": "1768", + "length": "7", + "line": "658", + "parentIndex": "1705", + "start": "21275" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1775", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "39", + "end": "21292", + "id": "1776", + "length": "1", + "line": "658", + "parentIndex": "1769", + "start": "21292" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1771", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "31", + "end": "21290", + "id": "1772", + "length": "7", + "line": "658", + "parentIndex": "1769", + "start": "21284" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1773", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "21290", + "id": "1774", + "length": "7", + "line": "658", + "parentIndex": "1771", + "start": "21284" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1769", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "31", + "end": "21293", + "id": "1770", + "length": "10", + "line": "658", + "parentIndex": "1705", + "start": "21284" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1777", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1777", + "src": { + "column": "43", + "end": "21301", + "id": "1778", + "length": "6", + "line": "658", + "parentIndex": "1705", + "start": "21296" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1779", + "name": "Transfer", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "753", + "src": { + "column": "13", + "end": "21273", + "id": "1780", + "length": "8", + "line": "658", + "parentIndex": "1705", + "start": "21266" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u0026753", + "typeString": "event IERC20.Transfer" + } + } + }, + "id": "1765", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "21303", + "id": "1766", + "length": "43", + "line": "658", + "parentIndex": "1692", + "start": "21261" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1785", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1785", + "src": { + "column": "28", + "end": "21340", + "id": "1786", + "length": "7", + "line": "660", + "parentIndex": "1781", + "start": "21334" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1793", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "45", + "end": "21351", + "id": "1794", + "length": "1", + "line": "660", + "parentIndex": "1787", + "start": "21351" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1789", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "37", + "end": "21349", + "id": "1790", + "length": "7", + "line": "660", + "parentIndex": "1787", + "start": "21343" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1791", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "37", + "end": "21349", + "id": "1792", + "length": "7", + "line": "660", + "parentIndex": "1789", + "start": "21343" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1787", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "37", + "end": "21352", + "id": "1788", + "length": "10", + "line": "660", + "parentIndex": "1781", + "start": "21343" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + ], + "id": "1795", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1795", + "src": { + "column": "49", + "end": "21360", + "id": "1796", + "length": "6", + "line": "660", + "parentIndex": "1781", + "start": "21355" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1783", + "name": "_afterTokenTransfer", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "21332", + "id": "1784", + "length": "19", + "line": "660", + "parentIndex": "1781", + "start": "21314" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1781", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "21361", + "id": "1782", + "length": "48", + "line": "660", + "parentIndex": "1705", + "start": "21314" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_function_$_t_rational_0_by_1$_t_uint256$", + "typeString": "function(address,function(int_const 0),uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "1797", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "21250", + "id": "1798", + "length": "194", + "line": "652", + "parentIndex": "923", + "start": "21057" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1801", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1807", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1807", + "src": { + "column": "22", + "end": "21097", + "id": "1808", + "length": "7", + "line": "653", + "parentIndex": "1803", + "start": "21091" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1803", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1805", + "name": "_balances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "937", + "src": { + "column": "12", + "end": "21089", + "id": "1806", + "length": "9", + "line": "653", + "parentIndex": "1803", + "start": "21081" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "12", + "end": "21098", + "id": "1804", + "length": "18", + "line": "653", + "parentIndex": "1801", + "start": "21081" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1809", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1811", + "name": "accountBalance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1741", + "src": { + "column": "33", + "end": "21115", + "id": "1812", + "length": "14", + "line": "653", + "parentIndex": "1809", + "start": "21102" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1813", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1813", + "src": { + "column": "50", + "end": "21124", + "id": "1814", + "length": "6", + "line": "653", + "parentIndex": "1809", + "start": "21119" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "33", + "end": "21124", + "id": "1810", + "length": "23", + "line": "653", + "parentIndex": "1801", + "start": "21102" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "12", + "end": "21124", + "id": "1802", + "length": "44", + "line": "653", + "parentIndex": "1797", + "start": "21081" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + }, + "id": "1799", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "21125", + "id": "1800", + "length": "45", + "line": "653", + "parentIndex": "1797", + "start": "21081" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1817", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1819", + "name": "_totalSupply", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "960", + "src": { + "column": "12", + "end": "21229", + "id": "1820", + "length": "12", + "line": "655", + "parentIndex": "1817", + "start": "21218" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "MINUS_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1821", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1821", + "src": { + "column": "28", + "end": "21239", + "id": "1822", + "length": "6", + "line": "655", + "parentIndex": "1817", + "start": "21234" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "12", + "end": "21239", + "id": "1818", + "length": "22", + "line": "655", + "parentIndex": "1797", + "start": "21218" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "1815", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "21240", + "id": "1816", + "length": "23", + "line": "655", + "parentIndex": "1797", + "start": "21218" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + } + } + ] + }, + "id": "1692", + "kind": "KIND_FUNCTION", + "name": "_burn", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1694", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1696", + "name": "account", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1696", + "src": { + "column": "19", + "end": "20739", + "id": "1697", + "length": "15", + "line": "645", + "parentIndex": "1694", + "start": "20725" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1698", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "19", + "end": "20731", + "id": "1699", + "length": "7", + "line": "645", + "parentIndex": "1696", + "start": "20725" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1700", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1700", + "src": { + "column": "36", + "end": "20755", + "id": "1701", + "length": "14", + "line": "645", + "parentIndex": "1694", + "start": "20742" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1702", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "36", + "end": "20748", + "id": "1703", + "length": "7", + "line": "645", + "parentIndex": "1700", + "start": "20742" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "19", + "end": "20755", + "id": "1695", + "length": "31", + "line": "645", + "parentIndex": "1692", + "start": "20725" + } + }, + "returnParameters": { + "id": "1704", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "21368", + "id": "1693", + "length": "659", + "line": "645", + "parentIndex": "1692", + "start": "20710" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "21368", + "id": "1693", + "length": "659", + "line": "645", + "parentIndex": "923", + "start": "20710" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1841", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "87", + "end": "22131", + "id": "1842", + "length": "257", + "line": "676", + "parentIndex": "1824", + "start": "21875" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1847", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1849", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1849", + "src": { + "column": "16", + "end": "21897", + "id": "1850", + "length": "5", + "line": "677", + "parentIndex": "1847", + "start": "21893" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1857", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "33", + "end": "21910", + "id": "1858", + "length": "1", + "line": "677", + "parentIndex": "1851", + "start": "21910" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1853", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "25", + "end": "21908", + "id": "1854", + "length": "7", + "line": "677", + "parentIndex": "1851", + "start": "21902" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1855", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "25", + "end": "21908", + "id": "1856", + "length": "7", + "line": "677", + "parentIndex": "1853", + "start": "21902" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1851", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "25", + "end": "21911", + "id": "1852", + "length": "10", + "line": "677", + "parentIndex": "1847", + "start": "21902" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "16", + "end": "21911", + "id": "1848", + "length": "19", + "line": "677", + "parentIndex": "1843", + "start": "21893" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", + "id": "1859", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "37", + "end": "21951", + "id": "1860", + "length": "38", + "line": "677", + "parentIndex": "1843", + "start": "21914" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + }, + "value": "ERC20: approve from the zero address" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1845", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "21891", + "id": "1846", + "length": "7", + "line": "677", + "parentIndex": "1843", + "start": "21885" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1843", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "21952", + "id": "1844", + "length": "68", + "line": "677", + "parentIndex": "1841", + "start": "21885" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1865", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1867", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1867", + "src": { + "column": "16", + "end": "21977", + "id": "1868", + "length": "7", + "line": "678", + "parentIndex": "1865", + "start": "21971" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1875", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "35", + "end": "21990", + "id": "1876", + "length": "1", + "line": "678", + "parentIndex": "1869", + "start": "21990" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1871", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "27", + "end": "21988", + "id": "1872", + "length": "7", + "line": "678", + "parentIndex": "1869", + "start": "21982" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1873", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "27", + "end": "21988", + "id": "1874", + "length": "7", + "line": "678", + "parentIndex": "1871", + "start": "21982" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1869", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "27", + "end": "21991", + "id": "1870", + "length": "10", + "line": "678", + "parentIndex": "1865", + "start": "21982" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "16", + "end": "21991", + "id": "1866", + "length": "21", + "line": "678", + "parentIndex": "1861", + "start": "21971" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", + "id": "1877", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "39", + "end": "22029", + "id": "1878", + "length": "36", + "line": "678", + "parentIndex": "1861", + "start": "21994" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + }, + "value": "ERC20: approve to the zero address" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1863", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "21969", + "id": "1864", + "length": "7", + "line": "678", + "parentIndex": "1861", + "start": "21963" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1861", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "22030", + "id": "1862", + "length": "68", + "line": "678", + "parentIndex": "1841", + "start": "21963" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1881", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1891", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1891", + "src": { + "column": "27", + "end": "22067", + "id": "1892", + "length": "7", + "line": "680", + "parentIndex": "1883", + "start": "22061" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1883", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1889", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1889", + "src": { + "column": "20", + "end": "22058", + "id": "1890", + "length": "5", + "line": "680", + "parentIndex": "1885", + "start": "22054" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1885", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1887", + "name": "_allowances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "946", + "src": { + "column": "8", + "end": "22052", + "id": "1888", + "length": "11", + "line": "680", + "parentIndex": "1885", + "start": "22042" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003emapping(address=\u003euint256))" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "8", + "end": "22059", + "id": "1886", + "length": "18", + "line": "680", + "parentIndex": "1883", + "start": "22042" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003emapping(address=\u003euint256)):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003emapping(address=\u003euint256))" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "8", + "end": "22068", + "id": "1884", + "length": "27", + "line": "680", + "parentIndex": "1881", + "start": "22042" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$", + "typeString": "index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003emapping(address=\u003euint256)):address]" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1893", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1893", + "src": { + "column": "38", + "end": "22077", + "id": "1894", + "length": "6", + "line": "680", + "parentIndex": "1881", + "start": "22072" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "8", + "end": "22077", + "id": "1882", + "length": "36", + "line": "680", + "parentIndex": "1841", + "start": "22042" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$", + "typeString": "index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]" + } + } + }, + "id": "1879", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "22078", + "id": "1880", + "length": "37", + "line": "680", + "parentIndex": "1841", + "start": "22042" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$", + "typeString": "index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1897", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1897", + "src": { + "column": "22", + "end": "22106", + "id": "1898", + "length": "5", + "line": "681", + "parentIndex": "1841", + "start": "22102" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1899", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1899", + "src": { + "column": "29", + "end": "22115", + "id": "1900", + "length": "7", + "line": "681", + "parentIndex": "1841", + "start": "22109" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1901", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1901", + "src": { + "column": "38", + "end": "22123", + "id": "1902", + "length": "6", + "line": "681", + "parentIndex": "1841", + "start": "22118" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1903", + "name": "Approval", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "769", + "src": { + "column": "13", + "end": "22100", + "id": "1904", + "length": "8", + "line": "681", + "parentIndex": "1841", + "start": "22093" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IERC20_Approval_\u0026769", + "typeString": "event IERC20.Approval" + } + } + }, + "id": "1895", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "22125", + "id": "1896", + "length": "38", + "line": "681", + "parentIndex": "1824", + "start": "22088" + } + } + } + ] + }, + "id": "1824", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_approve", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1826", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1828", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1828", + "src": { + "column": "22", + "end": "21822", + "id": "1829", + "length": "13", + "line": "676", + "parentIndex": "1826", + "start": "21810" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1830", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "21816", + "id": "1831", + "length": "7", + "line": "676", + "parentIndex": "1828", + "start": "21810" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1832", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1832", + "src": { + "column": "37", + "end": "21839", + "id": "1833", + "length": "15", + "line": "676", + "parentIndex": "1826", + "start": "21825" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1834", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "37", + "end": "21831", + "id": "1835", + "length": "7", + "line": "676", + "parentIndex": "1832", + "start": "21825" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1836", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1836", + "src": { + "column": "54", + "end": "21855", + "id": "1837", + "length": "14", + "line": "676", + "parentIndex": "1826", + "start": "21842" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1838", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "54", + "end": "21848", + "id": "1839", + "length": "7", + "line": "676", + "parentIndex": "1836", + "start": "21842" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "22", + "end": "21855", + "id": "1827", + "length": "46", + "line": "676", + "parentIndex": "1824", + "start": "21810" + } + }, + "returnParameters": { + "id": "1840", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "22131", + "id": "1825", + "length": "340", + "line": "676", + "parentIndex": "1824", + "start": "21792" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "22131", + "id": "1825", + "length": "340", + "line": "676", + "parentIndex": "923", + "start": "21792" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1923", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "94", + "end": "22823", + "id": "1924", + "length": "321", + "line": "692", + "parentIndex": "1906", + "start": "22503" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "1927" + ], + "declarations": [ + { + "id": "1927", + "mutability": "MUTABLE", + "name": "currentAllowance", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1923", + "src": { + "column": "8", + "end": "22536", + "id": "1928", + "length": "24", + "line": "693", + "parentIndex": "1925", + "start": "22513" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1929", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "22519", + "id": "1930", + "length": "7", + "line": "693", + "parentIndex": "1927", + "start": "22513" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "1925", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1935", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1935", + "src": { + "column": "45", + "end": "22554", + "id": "1936", + "length": "5", + "line": "693", + "parentIndex": "1931", + "start": "22550" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1937", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1937", + "src": { + "column": "52", + "end": "22563", + "id": "1938", + "length": "7", + "line": "693", + "parentIndex": "1931", + "start": "22557" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1933", + "name": "allowance", + "nodeType": "IDENTIFIER", + "src": { + "column": "35", + "end": "22548", + "id": "1934", + "length": "9", + "line": "693", + "parentIndex": "1931", + "start": "22540" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1931", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "35", + "end": "22564", + "id": "1932", + "length": "25", + "line": "693", + "parentIndex": "1925", + "start": "22540" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "22565", + "id": "1926", + "length": "53", + "line": "693", + "parentIndex": "1923", + "start": "22513" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "1949", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "51", + "end": "22817", + "id": "1950", + "length": "200", + "line": "694", + "parentIndex": "1906", + "start": "22618" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: insufficient allowance\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1955", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1957", + "name": "currentAllowance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1401", + "src": { + "column": "20", + "end": "22655", + "id": "1958", + "length": "16", + "line": "695", + "parentIndex": "1955", + "start": "22640" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1959", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1959", + "src": { + "column": "40", + "end": "22665", + "id": "1960", + "length": "6", + "line": "695", + "parentIndex": "1955", + "start": "22660" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "20", + "end": "22665", + "id": "1956", + "length": "26", + "line": "695", + "parentIndex": "1951", + "start": "22640" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365", + "id": "1961", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "48", + "end": "22698", + "id": "1962", + "length": "31", + "line": "695", + "parentIndex": "1951", + "start": "22668" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: insufficient allowance\"" + }, + "value": "ERC20: insufficient allowance" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1953", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "22638", + "id": "1954", + "length": "7", + "line": "695", + "parentIndex": "1951", + "start": "22632" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1951", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "22699", + "id": "1952", + "length": "68", + "line": "695", + "parentIndex": "1949", + "start": "22632" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1941", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1943", + "name": "currentAllowance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1925", + "src": { + "column": "12", + "end": "22594", + "id": "1944", + "length": "16", + "line": "694", + "parentIndex": "1941", + "start": "22579" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MetaType", + "value": { + "id": "1947", + "name": "type", + "nodeType": "IDENTIFIER", + "src": { + "column": "32", + "end": "22611", + "id": "1948", + "length": "13", + "line": "694", + "parentIndex": "1945", + "start": "22599" + }, + "typeDescription": { + "typeString": "type" + } + } + }, + "id": "1945", + "memberName": "max", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "32", + "end": "22615", + "id": "1946", + "length": "17", + "line": "694", + "parentIndex": "1941", + "start": "22599" + }, + "typeDescription": { + "typeString": "type" + } + } + }, + "src": { + "column": "12", + "end": "22615", + "id": "1942", + "length": "37", + "line": "694", + "parentIndex": "1939", + "start": "22579" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "1939", + "nodeType": "IF_STATEMENT", + "src": { + "end": "22817", + "id": "1940", + "length": "243", + "line": "694", + "parentIndex": "1923", + "start": "22575" + } + } + } + ] + }, + "id": "1906", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_spendAllowance", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1908", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1910", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1910", + "src": { + "column": "29", + "end": "22450", + "id": "1911", + "length": "13", + "line": "692", + "parentIndex": "1908", + "start": "22438" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1912", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "22444", + "id": "1913", + "length": "7", + "line": "692", + "parentIndex": "1910", + "start": "22438" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1914", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1914", + "src": { + "column": "44", + "end": "22467", + "id": "1915", + "length": "15", + "line": "692", + "parentIndex": "1908", + "start": "22453" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1916", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "44", + "end": "22459", + "id": "1917", + "length": "7", + "line": "692", + "parentIndex": "1914", + "start": "22453" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1918", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1918", + "src": { + "column": "61", + "end": "22483", + "id": "1919", + "length": "14", + "line": "692", + "parentIndex": "1908", + "start": "22470" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1920", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "61", + "end": "22476", + "id": "1921", + "length": "7", + "line": "692", + "parentIndex": "1918", + "start": "22470" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "22483", + "id": "1909", + "length": "46", + "line": "692", + "parentIndex": "1906", + "start": "22438" + } + }, + "returnParameters": { + "id": "1922", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "22823", + "id": "1907", + "length": "411", + "line": "692", + "parentIndex": "1906", + "start": "22413" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "22823", + "id": "1907", + "length": "411", + "line": "692", + "parentIndex": "923", + "start": "22413" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1981", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "93", + "end": "23498", + "id": "1982", + "length": "2", + "line": "716", + "parentIndex": "1964", + "start": "23497" + } + }, + "id": "1964", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_beforeTokenTransfer", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1966", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1968", + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1968", + "src": { + "column": "34", + "end": "23449", + "id": "1969", + "length": "12", + "line": "716", + "parentIndex": "1966", + "start": "23438" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1970", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "34", + "end": "23444", + "id": "1971", + "length": "7", + "line": "716", + "parentIndex": "1968", + "start": "23438" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1972", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1972", + "src": { + "column": "48", + "end": "23461", + "id": "1973", + "length": "10", + "line": "716", + "parentIndex": "1966", + "start": "23452" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1974", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "48", + "end": "23458", + "id": "1975", + "length": "7", + "line": "716", + "parentIndex": "1972", + "start": "23452" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1976", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1976", + "src": { + "column": "60", + "end": "23477", + "id": "1977", + "length": "14", + "line": "716", + "parentIndex": "1966", + "start": "23464" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1978", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "60", + "end": "23470", + "id": "1979", + "length": "7", + "line": "716", + "parentIndex": "1976", + "start": "23464" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "34", + "end": "23477", + "id": "1967", + "length": "40", + "line": "716", + "parentIndex": "1964", + "start": "23438" + } + }, + "returnParameters": { + "id": "1980", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "23498", + "id": "1965", + "length": "91", + "line": "716", + "parentIndex": "1964", + "start": "23408" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "23498", + "id": "1965", + "length": "91", + "line": "716", + "parentIndex": "923", + "start": "23408" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2001", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "92", + "end": "24176", + "id": "2002", + "length": "2", + "line": "732", + "parentIndex": "1984", + "start": "24175" + } + }, + "id": "1984", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_afterTokenTransfer", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1986", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1988", + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1988", + "src": { + "column": "33", + "end": "24127", + "id": "1989", + "length": "12", + "line": "732", + "parentIndex": "1986", + "start": "24116" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1990", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "33", + "end": "24122", + "id": "1991", + "length": "7", + "line": "732", + "parentIndex": "1988", + "start": "24116" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1992", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1992", + "src": { + "column": "47", + "end": "24139", + "id": "1993", + "length": "10", + "line": "732", + "parentIndex": "1986", + "start": "24130" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1994", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "24136", + "id": "1995", + "length": "7", + "line": "732", + "parentIndex": "1992", + "start": "24130" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1996", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1996", + "src": { + "column": "59", + "end": "24155", + "id": "1997", + "length": "14", + "line": "732", + "parentIndex": "1986", + "start": "24142" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1998", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "59", + "end": "24148", + "id": "1999", + "length": "7", + "line": "732", + "parentIndex": "1996", + "start": "24142" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "33", + "end": "24155", + "id": "1987", + "length": "40", + "line": "732", + "parentIndex": "1984", + "start": "24116" + } + }, + "returnParameters": { + "id": "2000", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "24176", + "id": "1985", + "length": "90", + "line": "732", + "parentIndex": "1984", + "start": "24087" + } + }, + "scope": "923", + "src": { + "column": "4", + "end": "24176", + "id": "1985", + "length": "90", + "line": "732", + "parentIndex": "923", + "start": "24087" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "24178", + "length": "11312", + "line": "406", + "parentIndex": "907", + "start": "12867" + } + } + } + ] + }, + "src": { + "id": 908, + "line": 406, + "start": 12867, + "end": 24178, + "length": 11312, + "parent_index": 64 + } + } + ], + "comments": [ + { + "id": 1, + "node_type": 33, + "src": { + "line": 1, + "end": 30, + "length": 31, + "parent_index": 2 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 2, + "node_type": 32, + "src": { + "line": 5, + "start": 58, + "end": 620, + "length": 563, + "parent_index": 3 + }, + "text": "/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */" + }, + { + "id": 3, + "node_type": 32, + "src": { + "line": 19, + "column": 4, + "start": 645, + "end": 775, + "length": 131, + "parent_index": 4 + }, + "text": "/**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */" + }, + { + "id": 4, + "node_type": 32, + "src": { + "line": 32, + "column": 4, + "start": 1003, + "end": 1137, + "length": 135, + "parent_index": 5 + }, + "text": "/**\n * @dev Returns the substraction of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */" + }, + { + "id": 5, + "node_type": 32, + "src": { + "line": 44, + "column": 4, + "start": 1338, + "end": 1474, + "length": 137, + "parent_index": 6 + }, + "text": "/**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */" + }, + { + "id": 6, + "node_type": 31, + "src": { + "line": 51, + "column": 12, + "start": 1590, + "end": 1668, + "length": 79, + "parent_index": 7 + }, + "text": "// Gas optimization: this is cheaper than requiring 'a' not being zero, but the" + }, + { + "id": 7, + "node_type": 31, + "src": { + "line": 52, + "column": 12, + "start": 1682, + "end": 1722, + "length": 41, + "parent_index": 8 + }, + "text": "// benefit is lost if 'b' is also tested." + }, + { + "id": 8, + "node_type": 31, + "src": { + "line": 53, + "column": 12, + "start": 1736, + "end": 1806, + "length": 71, + "parent_index": 9 + }, + "text": "// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522" + }, + { + "id": 9, + "node_type": 32, + "src": { + "line": 61, + "column": 4, + "start": 1979, + "end": 2116, + "length": 138, + "parent_index": 10 + }, + "text": "/**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */" + }, + { + "id": 10, + "node_type": 32, + "src": { + "line": 73, + "column": 4, + "start": 2318, + "end": 2465, + "length": 148, + "parent_index": 11 + }, + "text": "/**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */" + }, + { + "id": 11, + "node_type": 32, + "src": { + "line": 85, + "column": 4, + "start": 2667, + "end": 2890, + "length": 224, + "parent_index": 12 + }, + "text": "/**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */" + }, + { + "id": 12, + "node_type": 32, + "src": { + "line": 99, + "column": 4, + "start": 2998, + "end": 3257, + "length": 260, + "parent_index": 13 + }, + "text": "/**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */" + }, + { + "id": 13, + "node_type": 32, + "src": { + "line": 113, + "column": 4, + "start": 3365, + "end": 3600, + "length": 236, + "parent_index": 14 + }, + "text": "/**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */" + }, + { + "id": 14, + "node_type": 32, + "src": { + "line": 127, + "column": 4, + "start": 3708, + "end": 4160, + "length": 453, + "parent_index": 15 + }, + "text": "/**\n * @dev Returns the integer division of two unsigned integers, reverting on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */" + }, + { + "id": 15, + "node_type": 32, + "src": { + "line": 143, + "column": 4, + "start": 4268, + "end": 4709, + "length": 442, + "parent_index": 16 + }, + "text": "/**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */" + }, + { + "id": 16, + "node_type": 32, + "src": { + "line": 159, + "column": 4, + "start": 4817, + "end": 5269, + "length": 453, + "parent_index": 17 + }, + "text": "/**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {trySub}.\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */" + }, + { + "id": 17, + "node_type": 32, + "src": { + "line": 183, + "column": 4, + "start": 5512, + "end": 5984, + "length": 473, + "parent_index": 18 + }, + "text": "/**\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */" + }, + { + "id": 18, + "node_type": 32, + "src": { + "line": 206, + "column": 4, + "start": 6226, + "end": 6860, + "length": 635, + "parent_index": 19 + }, + "text": "/**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting with custom message when dividing by zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryMod}.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */" + }, + { + "id": 19, + "node_type": 33, + "src": { + "line": 233, + "start": 7100, + "end": 7130, + "length": 31, + "parent_index": 20 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 20, + "node_type": 32, + "src": { + "line": 237, + "start": 7158, + "end": 7227, + "length": 70, + "parent_index": 21 + }, + "text": "/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */" + }, + { + "id": 21, + "node_type": 32, + "src": { + "line": 241, + "column": 4, + "start": 7252, + "end": 7317, + "length": 66, + "parent_index": 22 + }, + "text": "/**\n * @dev Returns the amount of tokens in existence.\n */" + }, + { + "id": 22, + "node_type": 32, + "src": { + "line": 246, + "column": 4, + "start": 7384, + "end": 7455, + "length": 72, + "parent_index": 23 + }, + "text": "/**\n * @dev Returns the amount of tokens owned by `account`.\n */" + }, + { + "id": 23, + "node_type": 32, + "src": { + "line": 251, + "column": 4, + "start": 7535, + "end": 7743, + "length": 209, + "parent_index": 24 + }, + "text": "/**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */" + }, + { + "id": 24, + "node_type": 32, + "src": { + "line": 260, + "column": 4, + "start": 7832, + "end": 8095, + "length": 264, + "parent_index": 25 + }, + "text": "/**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */" + }, + { + "id": 25, + "node_type": 32, + "src": { + "line": 269, + "column": 4, + "start": 8190, + "end": 8831, + "length": 642, + "parent_index": 26 + }, + "text": "/**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race condition\n * is to first reduce the spender's allowance to 0 and set the desired value\n * afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */" + }, + { + "id": 26, + "node_type": 32, + "src": { + "line": 285, + "column": 4, + "start": 8917, + "end": 9212, + "length": 296, + "parent_index": 27 + }, + "text": "/**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */" + }, + { + "id": 27, + "node_type": 32, + "src": { + "line": 300, + "column": 4, + "start": 9351, + "end": 9508, + "length": 158, + "parent_index": 28 + }, + "text": "/**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */" + }, + { + "id": 28, + "node_type": 32, + "src": { + "line": 308, + "column": 4, + "start": 9592, + "end": 9739, + "length": 148, + "parent_index": 29 + }, + "text": "/**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */" + }, + { + "id": 29, + "node_type": 33, + "src": { + "line": 315, + "start": 9827, + "end": 9857, + "length": 31, + "parent_index": 30 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 30, + "node_type": 31, + "src": { + "line": 316, + "start": 9859, + "end": 9934, + "length": 76, + "parent_index": 31 + }, + "text": "// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)" + }, + { + "id": 31, + "node_type": 32, + "src": { + "line": 322, + "start": 9987, + "end": 10102, + "length": 116, + "parent_index": 32 + }, + "text": "/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */" + }, + { + "id": 32, + "node_type": 32, + "src": { + "line": 328, + "column": 4, + "start": 10145, + "end": 10198, + "length": 54, + "parent_index": 33 + }, + "text": "/**\n * @dev Returns the name of the token.\n */" + }, + { + "id": 33, + "node_type": 32, + "src": { + "line": 333, + "column": 4, + "start": 10264, + "end": 10319, + "length": 56, + "parent_index": 34 + }, + "text": "/**\n * @dev Returns the symbol of the token.\n */" + }, + { + "id": 34, + "node_type": 32, + "src": { + "line": 338, + "column": 4, + "start": 10387, + "end": 10451, + "length": 65, + "parent_index": 35 + }, + "text": "/**\n * @dev Returns the decimals places of the token.\n */" + }, + { + "id": 35, + "node_type": 33, + "src": { + "line": 344, + "start": 10511, + "end": 10541, + "length": 31, + "parent_index": 36 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 36, + "node_type": 31, + "src": { + "line": 345, + "start": 10543, + "end": 10594, + "length": 52, + "parent_index": 37 + }, + "text": "// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)" + }, + { + "id": 37, + "node_type": 32, + "src": { + "line": 349, + "start": 10622, + "end": 11117, + "length": 496, + "parent_index": 38 + }, + "text": "/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */" + }, + { + "id": 38, + "node_type": 33, + "src": { + "line": 369, + "start": 11356, + "end": 11386, + "length": 31, + "parent_index": 39 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 39, + "node_type": 31, + "src": { + "line": 370, + "start": 11388, + "end": 11458, + "length": 71, + "parent_index": 40 + }, + "text": "// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)" + }, + { + "id": 40, + "node_type": 32, + "src": { + "line": 378, + "start": 11565, + "end": 12865, + "length": 1301, + "parent_index": 41 + }, + "text": "/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */" + }, + { + "id": 41, + "node_type": 32, + "src": { + "line": 416, + "column": 4, + "start": 13139, + "end": 13309, + "length": 171, + "parent_index": 42 + }, + "text": "/**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */" + }, + { + "id": 42, + "node_type": 32, + "src": { + "line": 427, + "column": 4, + "start": 13434, + "end": 13487, + "length": 54, + "parent_index": 43 + }, + "text": "/**\n * @dev Returns the name of the token.\n */" + }, + { + "id": 43, + "node_type": 32, + "src": { + "line": 434, + "column": 4, + "start": 13597, + "end": 13698, + "length": 102, + "parent_index": 44 + }, + "text": "/**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */" + }, + { + "id": 44, + "node_type": 32, + "src": { + "line": 442, + "column": 4, + "start": 13812, + "end": 14433, + "length": 622, + "parent_index": 45 + }, + "text": "/**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */" + }, + { + "id": 45, + "node_type": 32, + "src": { + "line": 459, + "column": 4, + "start": 14536, + "end": 14584, + "length": 49, + "parent_index": 46 + }, + "text": "/**\n * @dev See {IERC20-totalSupply}.\n */" + }, + { + "id": 46, + "node_type": 32, + "src": { + "line": 466, + "column": 4, + "start": 14702, + "end": 14748, + "length": 47, + "parent_index": 47 + }, + "text": "/**\n * @dev See {IERC20-balanceOf}.\n */" + }, + { + "id": 47, + "node_type": 32, + "src": { + "line": 473, + "column": 4, + "start": 14885, + "end": 15069, + "length": 185, + "parent_index": 48 + }, + "text": "/**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */" + }, + { + "id": 48, + "node_type": 32, + "src": { + "line": 487, + "column": 4, + "start": 15270, + "end": 15316, + "length": 47, + "parent_index": 49 + }, + "text": "/**\n * @dev See {IERC20-allowance}.\n */" + }, + { + "id": 49, + "node_type": 32, + "src": { + "line": 494, + "column": 4, + "start": 15477, + "end": 15773, + "length": 297, + "parent_index": 50 + }, + "text": "/**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */" + }, + { + "id": 50, + "node_type": 32, + "src": { + "line": 510, + "column": 4, + "start": 15982, + "end": 16532, + "length": 551, + "parent_index": 51 + }, + "text": "/**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */" + }, + { + "id": 51, + "node_type": 32, + "src": { + "line": 533, + "column": 4, + "start": 16800, + "end": 17183, + "length": 384, + "parent_index": 52 + }, + "text": "/**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */" + }, + { + "id": 52, + "node_type": 32, + "src": { + "line": 551, + "column": 4, + "start": 17429, + "end": 17904, + "length": 476, + "parent_index": 53 + }, + "text": "/**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */" + }, + { + "id": 53, + "node_type": 32, + "src": { + "line": 576, + "column": 4, + "start": 18343, + "end": 18785, + "length": 443, + "parent_index": 54 + }, + "text": "/**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */" + }, + { + "id": 54, + "node_type": 31, + "src": { + "line": 600, + "column": 12, + "start": 19286, + "end": 19388, + "length": 103, + "parent_index": 55 + }, + "text": "// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by" + }, + { + "id": 55, + "node_type": 31, + "src": { + "line": 601, + "column": 12, + "start": 19402, + "end": 19435, + "length": 34, + "parent_index": 56 + }, + "text": "// decrementing then incrementing." + }, + { + "id": 56, + "node_type": 32, + "src": { + "line": 610, + "column": 4, + "start": 19585, + "end": 19849, + "length": 265, + "parent_index": 57 + }, + "text": "/** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */" + }, + { + "id": 57, + "node_type": 31, + "src": { + "line": 626, + "column": 12, + "start": 20122, + "end": 20220, + "length": 99, + "parent_index": 58 + }, + "text": "// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above." + }, + { + "id": 58, + "node_type": 32, + "src": { + "line": 634, + "column": 4, + "start": 20396, + "end": 20704, + "length": 309, + "parent_index": 59 + }, + "text": "/**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */" + }, + { + "id": 59, + "node_type": 31, + "src": { + "line": 654, + "column": 12, + "start": 21139, + "end": 21204, + "length": 66, + "parent_index": 60 + }, + "text": "// Overflow not possible: amount \u003c= accountBalance \u003c= totalSupply." + }, + { + "id": 60, + "node_type": 32, + "src": { + "line": 663, + "column": 4, + "start": 21375, + "end": 21786, + "length": 412, + "parent_index": 61 + }, + "text": "/**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */" + }, + { + "id": 61, + "node_type": 32, + "src": { + "line": 684, + "column": 4, + "start": 22138, + "end": 22407, + "length": 270, + "parent_index": 62 + }, + "text": "/**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */" + }, + { + "id": 62, + "node_type": 32, + "src": { + "line": 702, + "column": 4, + "start": 22830, + "end": 23402, + "length": 573, + "parent_index": 63 + }, + "text": "/**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */" + }, + { + "id": 63, + "node_type": 32, + "src": { + "line": 718, + "column": 4, + "start": 23505, + "end": 24081, + "length": 577, + "parent_index": 64 + }, + "text": "/**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */" + } + ] } \ No newline at end of file diff --git a/data/tests/ast/Empty.solgo.ast.proto.json b/data/tests/ast/Empty.solgo.ast.proto.json index ca8f8202..c094bc58 100644 --- a/data/tests/ast/Empty.solgo.ast.proto.json +++ b/data/tests/ast/Empty.solgo.ast.proto.json @@ -1,4 +1,4 @@ { - "id": 1, - "node_type": 80 + "id": 1, + "node_type": 80 } \ No newline at end of file diff --git a/data/tests/ast/IDummyContract.solgo.ast.json b/data/tests/ast/IDummyContract.solgo.ast.json index 6a31e7b6..562118a3 100644 --- a/data/tests/ast/IDummyContract.solgo.ast.json +++ b/data/tests/ast/IDummyContract.solgo.ast.json @@ -1,233 +1,233 @@ { - "id": 10, - "base_contracts": [], - "license": "MIT", - "exported_symbols": [ - { - "id": 10, - "name": "IDummyContract", - "absolute_path": "" - } - ], - "absolute_path": "", - "name": "IDummyContract", - "node_type": 1, - "nodes": [ - { - "id": 12, - "node_type": 10, - "src": { - "id": 13, - "line": 2, - "column": 0, - "start": 32, - "end": 54, - "length": 23, - "parent_index": 10 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "4", - ";" - ], - "text": "pragma solidity ^0.8.4;" - }, - { - "id": 14, - "name": "IDummyContract", - "node_type": 35, - "src": { - "id": 0, - "line": 4, - "column": 0, - "start": 57, - "end": 138, - "length": 82, - "parent_index": 10 - }, - "abstract": false, - "kind": 37, - "fully_implemented": true, - "nodes": [ - { - "id": 16, - "name": "dummyFunction", - "node_type": 42, - "kind": 41, - "src": { - "id": 17, - "line": 5, - "column": 4, - "start": 88, - "end": 136, - "length": 49, - "parent_index": 14 - }, - "body": { - "id": 30, - "node_type": 46, - "kind": 0, - "src": { - "id": 17, - "line": 5, - "column": 4, - "start": 88, - "end": 136, - "length": 49, - "parent_index": 16 - }, - "implemented": false, - "statements": [] - }, - "implemented": false, - "visibility": 4, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 18, - "node_type": 43, - "src": { - "id": 19, - "line": 5, - "column": 47, - "start": 131, - "end": 134, - "length": 4, - "parent_index": 16 - }, - "parameters": [ - { - "id": 20, - "node_type": 44, - "src": { - "id": 21, - "line": 5, - "column": 47, - "start": 131, - "end": 134, - "length": 4, - "parent_index": 18 - }, - "scope": 16, - "name": "", - "type_name": { - "id": 22, - "node_type": 30, - "src": { - "id": 23, - "line": 5, - "column": 47, - "start": 131, - "end": 134, - "length": 4, - "parent_index": 20 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "return_parameters": { - "id": 24, - "node_type": 43, - "src": { - "id": 25, - "line": 5, - "column": 47, - "start": 131, - "end": 134, - "length": 4, - "parent_index": 16 - }, - "parameters": [ - { - "id": 26, - "node_type": 44, - "src": { - "id": 27, - "line": 5, - "column": 47, - "start": 131, - "end": 134, - "length": 4, - "parent_index": 24 - }, - "scope": 16, - "name": "", - "type_name": { - "id": 28, - "node_type": 30, - "src": { - "id": 29, - "line": 5, - "column": 47, - "start": 131, - "end": 134, - "length": 4, - "parent_index": 26 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "scope": 14, - "type_description": { - "type_identifier": "t_function_$_t_bool", - "type_string": "function(bool)" - } - } - ], - "linearized_base_contracts": [ - 14 - ], - "base_contracts": [], - "contract_dependencies": [] - } - ], - "src": { - "id": 11, - "line": 4, - "column": 0, - "start": 57, - "end": 138, - "length": 82, - "parent_index": 9 - } + "id": 10, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 10, + "name": "IDummyContract", + "absolute_path": "" + } + ], + "absolute_path": "", + "name": "IDummyContract", + "node_type": 1, + "nodes": [ + { + "id": 12, + "node_type": 10, + "src": { + "id": 13, + "line": 2, + "column": 0, + "start": 32, + "end": 54, + "length": 23, + "parent_index": 10 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "4", + ";" + ], + "text": "pragma solidity ^0.8.4;" + }, + { + "id": 14, + "name": "IDummyContract", + "node_type": 35, + "src": { + "id": 0, + "line": 4, + "column": 0, + "start": 57, + "end": 138, + "length": 82, + "parent_index": 10 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 16, + "name": "dummyFunction", + "node_type": 42, + "kind": 41, + "src": { + "id": 17, + "line": 5, + "column": 4, + "start": 88, + "end": 136, + "length": 49, + "parent_index": 14 + }, + "body": { + "id": 30, + "node_type": 46, + "kind": 0, + "src": { + "id": 17, + "line": 5, + "column": 4, + "start": 88, + "end": 136, + "length": 49, + "parent_index": 16 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 18, + "node_type": 43, + "src": { + "id": 19, + "line": 5, + "column": 47, + "start": 131, + "end": 134, + "length": 4, + "parent_index": 16 + }, + "parameters": [ + { + "id": 20, + "node_type": 44, + "src": { + "id": 21, + "line": 5, + "column": 47, + "start": 131, + "end": 134, + "length": 4, + "parent_index": 18 + }, + "scope": 16, + "name": "", + "type_name": { + "id": 22, + "node_type": 30, + "src": { + "id": 23, + "line": 5, + "column": 47, + "start": 131, + "end": 134, + "length": 4, + "parent_index": 20 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "return_parameters": { + "id": 24, + "node_type": 43, + "src": { + "id": 25, + "line": 5, + "column": 47, + "start": 131, + "end": 134, + "length": 4, + "parent_index": 16 + }, + "parameters": [ + { + "id": 26, + "node_type": 44, + "src": { + "id": 27, + "line": 5, + "column": 47, + "start": 131, + "end": 134, + "length": 4, + "parent_index": 24 + }, + "scope": 16, + "name": "", + "type_name": { + "id": 28, + "node_type": 30, + "src": { + "id": 29, + "line": 5, + "column": 47, + "start": 131, + "end": 134, + "length": 4, + "parent_index": 26 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "scope": 14, + "type_description": { + "type_identifier": "t_function_$_t_bool$", + "type_string": "function(bool)" + } + } + ], + "linearized_base_contracts": [ + 14 + ], + "base_contracts": [], + "contract_dependencies": [] + } + ], + "src": { + "id": 11, + "line": 4, + "column": 0, + "start": 57, + "end": 138, + "length": 82, + "parent_index": 9 + } } \ No newline at end of file diff --git a/data/tests/ast/IERC20.solgo.ast.json b/data/tests/ast/IERC20.solgo.ast.json index 5a9c9da0..f214cddf 100644 --- a/data/tests/ast/IERC20.solgo.ast.json +++ b/data/tests/ast/IERC20.solgo.ast.json @@ -1,1553 +1,1553 @@ { - "id": 31, - "base_contracts": [], - "license": "MIT", - "exported_symbols": [ - { - "id": 31, - "name": "IERC20", - "absolute_path": "IERC20.sol" - } - ], - "absolute_path": "IERC20.sol", - "name": "IERC20", - "node_type": 1, - "nodes": [ - { - "id": 33, - "node_type": 10, - "src": { - "id": 34, - "line": 3, - "column": 0, - "start": 33, - "end": 55, - "length": 23, - "parent_index": 31 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 37, - "name": "IERC20", - "node_type": 35, - "src": { - "id": 0, - "line": 8, - "column": 0, - "start": 129, - "end": 2724, - "length": 2596, - "parent_index": 31 - }, - "abstract": false, - "kind": 37, - "fully_implemented": true, - "nodes": [ - { - "id": 39, - "name": "totalSupply", - "node_type": 42, - "kind": 41, - "src": { - "id": 40, - "line": 12, - "column": 4, - "start": 223, - "end": 277, - "length": 55, - "parent_index": 37 - }, - "body": { - "id": 53, - "node_type": 46, - "kind": 0, - "src": { - "id": 40, - "line": 12, - "column": 4, - "start": 223, - "end": 277, - "length": 55, - "parent_index": 39 - }, - "implemented": false, - "statements": [] - }, - "implemented": false, - "visibility": 4, - "state_mutability": 5, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 41, - "node_type": 43, - "src": { - "id": 42, - "line": 12, - "column": 50, - "start": 269, - "end": 275, - "length": 7, - "parent_index": 39 - }, - "parameters": [ - { - "id": 43, - "node_type": 44, - "src": { - "id": 44, - "line": 12, - "column": 50, - "start": 269, - "end": 275, - "length": 7, - "parent_index": 41 - }, - "scope": 39, - "name": "", - "type_name": { - "id": 45, - "node_type": 30, - "src": { - "id": 46, - "line": 12, - "column": 50, - "start": 269, - "end": 275, - "length": 7, - "parent_index": 43 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 47, - "node_type": 43, - "src": { - "id": 48, - "line": 12, - "column": 50, - "start": 269, - "end": 275, - "length": 7, - "parent_index": 39 - }, - "parameters": [ - { - "id": 49, - "node_type": 44, - "src": { - "id": 50, - "line": 12, - "column": 50, - "start": 269, - "end": 275, - "length": 7, - "parent_index": 47 - }, - "scope": 39, - "name": "", - "type_name": { - "id": 51, - "node_type": 30, - "src": { - "id": 52, - "line": 12, - "column": 50, - "start": 269, - "end": 275, - "length": 7, - "parent_index": 49 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 37, - "type_description": { - "type_identifier": "t_function_$_t_uint256", - "type_string": "function(uint256)" - } - }, - { - "id": 55, - "name": "balanceOf", - "node_type": 42, - "kind": 41, - "src": { - "id": 56, - "line": 17, - "column": 4, - "start": 361, - "end": 428, - "length": 68, - "parent_index": 37 - }, - "body": { - "id": 69, - "node_type": 46, - "kind": 0, - "src": { - "id": 56, - "line": 17, - "column": 4, - "start": 361, - "end": 428, - "length": 68, - "parent_index": 55 - }, - "implemented": false, - "statements": [] - }, - "implemented": false, - "visibility": 4, - "state_mutability": 5, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 57, - "node_type": 43, - "src": { - "id": 58, - "line": 17, - "column": 23, - "start": 380, - "end": 394, - "length": 15, - "parent_index": 55 - }, - "parameters": [ - { - "id": 59, - "node_type": 44, - "src": { - "id": 60, - "line": 17, - "column": 23, - "start": 380, - "end": 394, - "length": 15, - "parent_index": 57 - }, - "scope": 55, - "name": "account", - "type_name": { - "id": 61, - "node_type": 30, - "src": { - "id": 62, - "line": 17, - "column": 23, - "start": 380, - "end": 386, - "length": 7, - "parent_index": 59 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 63, - "node_type": 43, - "src": { - "id": 64, - "line": 17, - "column": 63, - "start": 420, - "end": 426, - "length": 7, - "parent_index": 55 - }, - "parameters": [ - { - "id": 65, - "node_type": 44, - "src": { - "id": 66, - "line": 17, - "column": 63, - "start": 420, - "end": 426, - "length": 7, - "parent_index": 63 - }, - "scope": 55, - "name": "", - "type_name": { - "id": 67, - "node_type": 30, - "src": { - "id": 68, - "line": 17, - "column": 63, - "start": 420, - "end": 426, - "length": 7, - "parent_index": 65 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 37, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 71, - "name": "transfer", - "node_type": 42, - "kind": 41, - "src": { - "id": 72, - "line": 26, - "column": 4, - "start": 649, - "end": 725, - "length": 77, - "parent_index": 37 - }, - "body": { - "id": 89, - "node_type": 46, - "kind": 0, - "src": { - "id": 72, - "line": 26, - "column": 4, - "start": 649, - "end": 725, - "length": 77, - "parent_index": 71 - }, - "implemented": false, - "statements": [] - }, - "implemented": false, - "visibility": 4, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 73, - "node_type": 43, - "src": { - "id": 74, - "line": 26, - "column": 22, - "start": 667, - "end": 699, - "length": 33, - "parent_index": 71 - }, - "parameters": [ - { - "id": 75, - "node_type": 44, - "src": { - "id": 76, - "line": 26, - "column": 22, - "start": 667, - "end": 683, - "length": 17, - "parent_index": 73 - }, - "scope": 71, - "name": "recipient", - "type_name": { - "id": 77, - "node_type": 30, - "src": { - "id": 78, - "line": 26, - "column": 22, - "start": 667, - "end": 673, - "length": 7, - "parent_index": 75 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 79, - "node_type": 44, - "src": { - "id": 80, - "line": 26, - "column": 41, - "start": 686, - "end": 699, - "length": 14, - "parent_index": 73 - }, - "scope": 71, - "name": "amount", - "type_name": { - "id": 81, - "node_type": 30, - "src": { - "id": 82, - "line": 26, - "column": 41, - "start": 686, - "end": 692, - "length": 7, - "parent_index": 79 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 83, - "node_type": 43, - "src": { - "id": 84, - "line": 26, - "column": 75, - "start": 720, - "end": 723, - "length": 4, - "parent_index": 71 - }, - "parameters": [ - { - "id": 85, - "node_type": 44, - "src": { - "id": 86, - "line": 26, - "column": 75, - "start": 720, - "end": 723, - "length": 4, - "parent_index": 83 - }, - "scope": 71, - "name": "", - "type_name": { - "id": 87, - "node_type": 30, - "src": { - "id": 88, - "line": 26, - "column": 75, - "start": 720, - "end": 723, - "length": 4, - "parent_index": 85 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "scope": 37, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_uint256", - "type_string": "function(address,uint256)" - } - }, - { - "id": 91, - "name": "allowance", - "node_type": 42, - "kind": 41, - "src": { - "id": 92, - "line": 35, - "column": 4, - "start": 1001, - "end": 1083, - "length": 83, - "parent_index": 37 - }, - "body": { - "id": 109, - "node_type": 46, - "kind": 0, - "src": { - "id": 92, - "line": 35, - "column": 4, - "start": 1001, - "end": 1083, - "length": 83, - "parent_index": 91 - }, - "implemented": false, - "statements": [] - }, - "implemented": false, - "visibility": 4, - "state_mutability": 5, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 93, - "node_type": 43, - "src": { - "id": 94, - "line": 35, - "column": 23, - "start": 1020, - "end": 1049, - "length": 30, - "parent_index": 91 - }, - "parameters": [ - { - "id": 95, - "node_type": 44, - "src": { - "id": 96, - "line": 35, - "column": 23, - "start": 1020, - "end": 1032, - "length": 13, - "parent_index": 93 - }, - "scope": 91, - "name": "owner", - "type_name": { - "id": 97, - "node_type": 30, - "src": { - "id": 98, - "line": 35, - "column": 23, - "start": 1020, - "end": 1026, - "length": 7, - "parent_index": 95 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 99, - "node_type": 44, - "src": { - "id": 100, - "line": 35, - "column": 38, - "start": 1035, - "end": 1049, - "length": 15, - "parent_index": 93 - }, - "scope": 91, - "name": "spender", - "type_name": { - "id": 101, - "node_type": 30, - "src": { - "id": 102, - "line": 35, - "column": 38, - "start": 1035, - "end": 1041, - "length": 7, - "parent_index": 99 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 103, - "node_type": 43, - "src": { - "id": 104, - "line": 35, - "column": 78, - "start": 1075, - "end": 1081, - "length": 7, - "parent_index": 91 - }, - "parameters": [ - { - "id": 105, - "node_type": 44, - "src": { - "id": 106, - "line": 35, - "column": 78, - "start": 1075, - "end": 1081, - "length": 7, - "parent_index": 103 - }, - "scope": 91, - "name": "", - "type_name": { - "id": 107, - "node_type": 30, - "src": { - "id": 108, - "line": 35, - "column": 78, - "start": 1075, - "end": 1081, - "length": 7, - "parent_index": 105 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 37, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address", - "type_string": "function(address,address)" - } - }, - { - "id": 111, - "name": "approve", - "node_type": 42, - "kind": 41, - "src": { - "id": 112, - "line": 51, - "column": 4, - "start": 1737, - "end": 1810, - "length": 74, - "parent_index": 37 - }, - "body": { - "id": 129, - "node_type": 46, - "kind": 0, - "src": { - "id": 112, - "line": 51, - "column": 4, - "start": 1737, - "end": 1810, - "length": 74, - "parent_index": 111 - }, - "implemented": false, - "statements": [] - }, - "implemented": false, - "visibility": 4, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 113, - "node_type": 43, - "src": { - "id": 114, - "line": 51, - "column": 21, - "start": 1754, - "end": 1784, - "length": 31, - "parent_index": 111 - }, - "parameters": [ - { - "id": 115, - "node_type": 44, - "src": { - "id": 116, - "line": 51, - "column": 21, - "start": 1754, - "end": 1768, - "length": 15, - "parent_index": 113 - }, - "scope": 111, - "name": "spender", - "type_name": { - "id": 117, - "node_type": 30, - "src": { - "id": 118, - "line": 51, - "column": 21, - "start": 1754, - "end": 1760, - "length": 7, - "parent_index": 115 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 119, - "node_type": 44, - "src": { - "id": 120, - "line": 51, - "column": 38, - "start": 1771, - "end": 1784, - "length": 14, - "parent_index": 113 - }, - "scope": 111, - "name": "amount", - "type_name": { - "id": 121, - "node_type": 30, - "src": { - "id": 122, - "line": 51, - "column": 38, - "start": 1771, - "end": 1777, - "length": 7, - "parent_index": 119 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 123, - "node_type": 43, - "src": { - "id": 124, - "line": 51, - "column": 72, - "start": 1805, - "end": 1808, - "length": 4, - "parent_index": 111 - }, - "parameters": [ - { - "id": 125, - "node_type": 44, - "src": { - "id": 126, - "line": 51, - "column": 72, - "start": 1805, - "end": 1808, - "length": 4, - "parent_index": 123 - }, - "scope": 111, - "name": "", - "type_name": { - "id": 127, - "node_type": 30, - "src": { - "id": 128, - "line": 51, - "column": 72, - "start": 1805, - "end": 1808, - "length": 4, - "parent_index": 125 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "scope": 37, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_uint256", - "type_string": "function(address,uint256)" - } - }, - { - "id": 131, - "name": "transferFrom", - "node_type": 42, - "kind": 41, - "src": { - "id": 132, - "line": 62, - "column": 4, - "start": 2118, - "end": 2244, - "length": 127, - "parent_index": 37 - }, - "body": { - "id": 153, - "node_type": 46, - "kind": 0, - "src": { - "id": 132, - "line": 62, - "column": 4, - "start": 2118, - "end": 2244, - "length": 127, - "parent_index": 131 - }, - "implemented": false, - "statements": [] - }, - "implemented": false, - "visibility": 4, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 133, - "node_type": 43, - "src": { - "id": 134, - "line": 63, - "column": 8, - "start": 2149, - "end": 2213, - "length": 65, - "parent_index": 131 - }, - "parameters": [ - { - "id": 135, - "node_type": 44, - "src": { - "id": 136, - "line": 63, - "column": 8, - "start": 2149, - "end": 2162, - "length": 14, - "parent_index": 133 - }, - "scope": 131, - "name": "sender", - "type_name": { - "id": 137, - "node_type": 30, - "src": { - "id": 138, - "line": 63, - "column": 8, - "start": 2149, - "end": 2155, - "length": 7, - "parent_index": 135 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 139, - "node_type": 44, - "src": { - "id": 140, - "line": 64, - "column": 8, - "start": 2173, - "end": 2189, - "length": 17, - "parent_index": 133 - }, - "scope": 131, - "name": "recipient", - "type_name": { - "id": 141, - "node_type": 30, - "src": { - "id": 142, - "line": 64, - "column": 8, - "start": 2173, - "end": 2179, - "length": 7, - "parent_index": 139 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 143, - "node_type": 44, - "src": { - "id": 144, - "line": 65, - "column": 8, - "start": 2200, - "end": 2213, - "length": 14, - "parent_index": 133 - }, - "scope": 131, - "name": "amount", - "type_name": { - "id": 145, - "node_type": 30, - "src": { - "id": 146, - "line": 65, - "column": 8, - "start": 2200, - "end": 2206, - "length": 7, - "parent_index": 143 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 147, - "node_type": 43, - "src": { - "id": 148, - "line": 66, - "column": 24, - "start": 2239, - "end": 2242, - "length": 4, - "parent_index": 131 - }, - "parameters": [ - { - "id": 149, - "node_type": 44, - "src": { - "id": 150, - "line": 66, - "column": 24, - "start": 2239, - "end": 2242, - "length": 4, - "parent_index": 147 - }, - "scope": 131, - "name": "", - "type_name": { - "id": 151, - "node_type": 30, - "src": { - "id": 152, - "line": 66, - "column": 24, - "start": 2239, - "end": 2242, - "length": 4, - "parent_index": 149 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "scope": 37, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "type_string": "function(address,address,uint256)" - } - }, - { - "id": 155, - "node_type": 57, - "src": { - "id": 156, - "line": 74, - "column": 4, - "start": 2414, - "end": 2485, - "length": 72, - "parent_index": 37 - }, - "parameters": { - "id": 157, - "node_type": 43, - "src": { - "id": 156, - "line": 74, - "column": 4, - "start": 2414, - "end": 2485, - "length": 72, - "parent_index": 155 - }, - "parameters": [ - { - "id": 158, - "node_type": 44, - "src": { - "id": 159, - "line": 74, - "column": 19, - "start": 2429, - "end": 2448, - "length": 20, - "parent_index": 157 - }, - "scope": 155, - "name": "from", - "type_name": { - "id": 160, - "node_type": 30, - "src": { - "id": 161, - "line": 74, - "column": 19, - "start": 2429, - "end": 2435, - "length": 7, - "parent_index": 158 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4, - "indexed": true - }, - { - "id": 162, - "node_type": 44, - "src": { - "id": 163, - "line": 74, - "column": 41, - "start": 2451, - "end": 2468, - "length": 18, - "parent_index": 157 - }, - "scope": 155, - "name": "to", - "type_name": { - "id": 164, - "node_type": 30, - "src": { - "id": 165, - "line": 74, - "column": 41, - "start": 2451, - "end": 2457, - "length": 7, - "parent_index": 162 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4, - "indexed": true - }, - { - "id": 166, - "node_type": 44, - "src": { - "id": 167, - "line": 74, - "column": 61, - "start": 2471, - "end": 2483, - "length": 13, - "parent_index": 157 - }, - "scope": 155, - "name": "value", - "type_name": { - "id": 168, - "node_type": 30, - "src": { - "id": 169, - "line": 74, - "column": 61, - "start": 2471, - "end": 2477, - "length": 7, - "parent_index": 166 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "name": "Transfer", - "anonymous": false - }, - { - "id": 171, - "node_type": 57, - "src": { - "id": 172, - "line": 80, - "column": 4, - "start": 2645, - "end": 2722, - "length": 78, - "parent_index": 37 - }, - "parameters": { - "id": 173, - "node_type": 43, - "src": { - "id": 172, - "line": 80, - "column": 4, - "start": 2645, - "end": 2722, - "length": 78, - "parent_index": 171 - }, - "parameters": [ - { - "id": 174, - "node_type": 44, - "src": { - "id": 175, - "line": 80, - "column": 19, - "start": 2660, - "end": 2680, - "length": 21, - "parent_index": 173 - }, - "scope": 171, - "name": "owner", - "type_name": { - "id": 176, - "node_type": 30, - "src": { - "id": 177, - "line": 80, - "column": 19, - "start": 2660, - "end": 2666, - "length": 7, - "parent_index": 174 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4, - "indexed": true - }, - { - "id": 178, - "node_type": 44, - "src": { - "id": 179, - "line": 80, - "column": 42, - "start": 2683, - "end": 2705, - "length": 23, - "parent_index": 173 - }, - "scope": 171, - "name": "spender", - "type_name": { - "id": 180, - "node_type": 30, - "src": { - "id": 181, - "line": 80, - "column": 42, - "start": 2683, - "end": 2689, - "length": 7, - "parent_index": 178 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4, - "indexed": true - }, - { - "id": 182, - "node_type": 44, - "src": { - "id": 183, - "line": 80, - "column": 67, - "start": 2708, - "end": 2720, - "length": 13, - "parent_index": 173 - }, - "scope": 171, - "name": "value", - "type_name": { - "id": 184, - "node_type": 30, - "src": { - "id": 185, - "line": 80, - "column": 67, - "start": 2708, - "end": 2714, - "length": 7, - "parent_index": 182 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "name": "Approval", - "anonymous": false - } - ], - "linearized_base_contracts": [ - 37 - ], - "base_contracts": [], - "contract_dependencies": [] - } - ], - "src": { - "id": 32, - "line": 8, - "column": 0, - "start": 129, - "end": 2724, - "length": 2596, - "parent_index": 30 - } + "id": 31, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 31, + "name": "IERC20", + "absolute_path": "IERC20.sol" + } + ], + "absolute_path": "IERC20.sol", + "name": "IERC20", + "node_type": 1, + "nodes": [ + { + "id": 33, + "node_type": 10, + "src": { + "id": 34, + "line": 3, + "column": 0, + "start": 33, + "end": 55, + "length": 23, + "parent_index": 31 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 37, + "name": "IERC20", + "node_type": 35, + "src": { + "id": 0, + "line": 8, + "column": 0, + "start": 129, + "end": 2724, + "length": 2596, + "parent_index": 31 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 39, + "name": "totalSupply", + "node_type": 42, + "kind": 41, + "src": { + "id": 40, + "line": 12, + "column": 4, + "start": 223, + "end": 277, + "length": 55, + "parent_index": 37 + }, + "body": { + "id": 53, + "node_type": 46, + "kind": 0, + "src": { + "id": 40, + "line": 12, + "column": 4, + "start": 223, + "end": 277, + "length": 55, + "parent_index": 39 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 41, + "node_type": 43, + "src": { + "id": 42, + "line": 12, + "column": 50, + "start": 269, + "end": 275, + "length": 7, + "parent_index": 39 + }, + "parameters": [ + { + "id": 43, + "node_type": 44, + "src": { + "id": 44, + "line": 12, + "column": 50, + "start": 269, + "end": 275, + "length": 7, + "parent_index": 41 + }, + "scope": 39, + "name": "", + "type_name": { + "id": 45, + "node_type": 30, + "src": { + "id": 46, + "line": 12, + "column": 50, + "start": 269, + "end": 275, + "length": 7, + "parent_index": 43 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 47, + "node_type": 43, + "src": { + "id": 48, + "line": 12, + "column": 50, + "start": 269, + "end": 275, + "length": 7, + "parent_index": 39 + }, + "parameters": [ + { + "id": 49, + "node_type": 44, + "src": { + "id": 50, + "line": 12, + "column": 50, + "start": 269, + "end": 275, + "length": 7, + "parent_index": 47 + }, + "scope": 39, + "name": "", + "type_name": { + "id": 51, + "node_type": 30, + "src": { + "id": 52, + "line": 12, + "column": 50, + "start": 269, + "end": 275, + "length": 7, + "parent_index": 49 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 37, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + }, + { + "id": 55, + "name": "balanceOf", + "node_type": 42, + "kind": 41, + "src": { + "id": 56, + "line": 17, + "column": 4, + "start": 361, + "end": 428, + "length": 68, + "parent_index": 37 + }, + "body": { + "id": 69, + "node_type": 46, + "kind": 0, + "src": { + "id": 56, + "line": 17, + "column": 4, + "start": 361, + "end": 428, + "length": 68, + "parent_index": 55 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 57, + "node_type": 43, + "src": { + "id": 58, + "line": 17, + "column": 23, + "start": 380, + "end": 394, + "length": 15, + "parent_index": 55 + }, + "parameters": [ + { + "id": 59, + "node_type": 44, + "src": { + "id": 60, + "line": 17, + "column": 23, + "start": 380, + "end": 394, + "length": 15, + "parent_index": 57 + }, + "scope": 55, + "name": "account", + "type_name": { + "id": 61, + "node_type": 30, + "src": { + "id": 62, + "line": 17, + "column": 23, + "start": 380, + "end": 386, + "length": 7, + "parent_index": 59 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 63, + "node_type": 43, + "src": { + "id": 64, + "line": 17, + "column": 63, + "start": 420, + "end": 426, + "length": 7, + "parent_index": 55 + }, + "parameters": [ + { + "id": 65, + "node_type": 44, + "src": { + "id": 66, + "line": 17, + "column": 63, + "start": 420, + "end": 426, + "length": 7, + "parent_index": 63 + }, + "scope": 55, + "name": "", + "type_name": { + "id": 67, + "node_type": 30, + "src": { + "id": 68, + "line": 17, + "column": 63, + "start": 420, + "end": 426, + "length": 7, + "parent_index": 65 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 37, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 71, + "name": "transfer", + "node_type": 42, + "kind": 41, + "src": { + "id": 72, + "line": 26, + "column": 4, + "start": 649, + "end": 725, + "length": 77, + "parent_index": 37 + }, + "body": { + "id": 89, + "node_type": 46, + "kind": 0, + "src": { + "id": 72, + "line": 26, + "column": 4, + "start": 649, + "end": 725, + "length": 77, + "parent_index": 71 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 73, + "node_type": 43, + "src": { + "id": 74, + "line": 26, + "column": 22, + "start": 667, + "end": 699, + "length": 33, + "parent_index": 71 + }, + "parameters": [ + { + "id": 75, + "node_type": 44, + "src": { + "id": 76, + "line": 26, + "column": 22, + "start": 667, + "end": 683, + "length": 17, + "parent_index": 73 + }, + "scope": 71, + "name": "recipient", + "type_name": { + "id": 77, + "node_type": 30, + "src": { + "id": 78, + "line": 26, + "column": 22, + "start": 667, + "end": 673, + "length": 7, + "parent_index": 75 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 79, + "node_type": 44, + "src": { + "id": 80, + "line": 26, + "column": 41, + "start": 686, + "end": 699, + "length": 14, + "parent_index": 73 + }, + "scope": 71, + "name": "amount", + "type_name": { + "id": 81, + "node_type": 30, + "src": { + "id": 82, + "line": 26, + "column": 41, + "start": 686, + "end": 692, + "length": 7, + "parent_index": 79 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 83, + "node_type": 43, + "src": { + "id": 84, + "line": 26, + "column": 75, + "start": 720, + "end": 723, + "length": 4, + "parent_index": 71 + }, + "parameters": [ + { + "id": 85, + "node_type": 44, + "src": { + "id": 86, + "line": 26, + "column": 75, + "start": 720, + "end": 723, + "length": 4, + "parent_index": 83 + }, + "scope": 71, + "name": "", + "type_name": { + "id": 87, + "node_type": 30, + "src": { + "id": 88, + "line": 26, + "column": 75, + "start": 720, + "end": 723, + "length": 4, + "parent_index": 85 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "scope": 37, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_uint256$", + "type_string": "function(address,uint256)" + } + }, + { + "id": 91, + "name": "allowance", + "node_type": 42, + "kind": 41, + "src": { + "id": 92, + "line": 35, + "column": 4, + "start": 1001, + "end": 1083, + "length": 83, + "parent_index": 37 + }, + "body": { + "id": 109, + "node_type": 46, + "kind": 0, + "src": { + "id": 92, + "line": 35, + "column": 4, + "start": 1001, + "end": 1083, + "length": 83, + "parent_index": 91 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 93, + "node_type": 43, + "src": { + "id": 94, + "line": 35, + "column": 23, + "start": 1020, + "end": 1049, + "length": 30, + "parent_index": 91 + }, + "parameters": [ + { + "id": 95, + "node_type": 44, + "src": { + "id": 96, + "line": 35, + "column": 23, + "start": 1020, + "end": 1032, + "length": 13, + "parent_index": 93 + }, + "scope": 91, + "name": "owner", + "type_name": { + "id": 97, + "node_type": 30, + "src": { + "id": 98, + "line": 35, + "column": 23, + "start": 1020, + "end": 1026, + "length": 7, + "parent_index": 95 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 99, + "node_type": 44, + "src": { + "id": 100, + "line": 35, + "column": 38, + "start": 1035, + "end": 1049, + "length": 15, + "parent_index": 93 + }, + "scope": 91, + "name": "spender", + "type_name": { + "id": 101, + "node_type": 30, + "src": { + "id": 102, + "line": 35, + "column": 38, + "start": 1035, + "end": 1041, + "length": 7, + "parent_index": 99 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 103, + "node_type": 43, + "src": { + "id": 104, + "line": 35, + "column": 78, + "start": 1075, + "end": 1081, + "length": 7, + "parent_index": 91 + }, + "parameters": [ + { + "id": 105, + "node_type": 44, + "src": { + "id": 106, + "line": 35, + "column": 78, + "start": 1075, + "end": 1081, + "length": 7, + "parent_index": 103 + }, + "scope": 91, + "name": "", + "type_name": { + "id": 107, + "node_type": 30, + "src": { + "id": 108, + "line": 35, + "column": 78, + "start": 1075, + "end": 1081, + "length": 7, + "parent_index": 105 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 37, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$", + "type_string": "function(address,address)" + } + }, + { + "id": 111, + "name": "approve", + "node_type": 42, + "kind": 41, + "src": { + "id": 112, + "line": 51, + "column": 4, + "start": 1737, + "end": 1810, + "length": 74, + "parent_index": 37 + }, + "body": { + "id": 129, + "node_type": 46, + "kind": 0, + "src": { + "id": 112, + "line": 51, + "column": 4, + "start": 1737, + "end": 1810, + "length": 74, + "parent_index": 111 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 113, + "node_type": 43, + "src": { + "id": 114, + "line": 51, + "column": 21, + "start": 1754, + "end": 1784, + "length": 31, + "parent_index": 111 + }, + "parameters": [ + { + "id": 115, + "node_type": 44, + "src": { + "id": 116, + "line": 51, + "column": 21, + "start": 1754, + "end": 1768, + "length": 15, + "parent_index": 113 + }, + "scope": 111, + "name": "spender", + "type_name": { + "id": 117, + "node_type": 30, + "src": { + "id": 118, + "line": 51, + "column": 21, + "start": 1754, + "end": 1760, + "length": 7, + "parent_index": 115 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 119, + "node_type": 44, + "src": { + "id": 120, + "line": 51, + "column": 38, + "start": 1771, + "end": 1784, + "length": 14, + "parent_index": 113 + }, + "scope": 111, + "name": "amount", + "type_name": { + "id": 121, + "node_type": 30, + "src": { + "id": 122, + "line": 51, + "column": 38, + "start": 1771, + "end": 1777, + "length": 7, + "parent_index": 119 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 123, + "node_type": 43, + "src": { + "id": 124, + "line": 51, + "column": 72, + "start": 1805, + "end": 1808, + "length": 4, + "parent_index": 111 + }, + "parameters": [ + { + "id": 125, + "node_type": 44, + "src": { + "id": 126, + "line": 51, + "column": 72, + "start": 1805, + "end": 1808, + "length": 4, + "parent_index": 123 + }, + "scope": 111, + "name": "", + "type_name": { + "id": 127, + "node_type": 30, + "src": { + "id": 128, + "line": 51, + "column": 72, + "start": 1805, + "end": 1808, + "length": 4, + "parent_index": 125 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "scope": 37, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_uint256$", + "type_string": "function(address,uint256)" + } + }, + { + "id": 131, + "name": "transferFrom", + "node_type": 42, + "kind": 41, + "src": { + "id": 132, + "line": 62, + "column": 4, + "start": 2118, + "end": 2244, + "length": 127, + "parent_index": 37 + }, + "body": { + "id": 153, + "node_type": 46, + "kind": 0, + "src": { + "id": 132, + "line": 62, + "column": 4, + "start": 2118, + "end": 2244, + "length": 127, + "parent_index": 131 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 133, + "node_type": 43, + "src": { + "id": 134, + "line": 63, + "column": 8, + "start": 2149, + "end": 2213, + "length": 65, + "parent_index": 131 + }, + "parameters": [ + { + "id": 135, + "node_type": 44, + "src": { + "id": 136, + "line": 63, + "column": 8, + "start": 2149, + "end": 2162, + "length": 14, + "parent_index": 133 + }, + "scope": 131, + "name": "sender", + "type_name": { + "id": 137, + "node_type": 30, + "src": { + "id": 138, + "line": 63, + "column": 8, + "start": 2149, + "end": 2155, + "length": 7, + "parent_index": 135 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 139, + "node_type": 44, + "src": { + "id": 140, + "line": 64, + "column": 8, + "start": 2173, + "end": 2189, + "length": 17, + "parent_index": 133 + }, + "scope": 131, + "name": "recipient", + "type_name": { + "id": 141, + "node_type": 30, + "src": { + "id": 142, + "line": 64, + "column": 8, + "start": 2173, + "end": 2179, + "length": 7, + "parent_index": 139 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 143, + "node_type": 44, + "src": { + "id": 144, + "line": 65, + "column": 8, + "start": 2200, + "end": 2213, + "length": 14, + "parent_index": 133 + }, + "scope": 131, + "name": "amount", + "type_name": { + "id": 145, + "node_type": 30, + "src": { + "id": 146, + "line": 65, + "column": 8, + "start": 2200, + "end": 2206, + "length": 7, + "parent_index": 143 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 147, + "node_type": 43, + "src": { + "id": 148, + "line": 66, + "column": 24, + "start": 2239, + "end": 2242, + "length": 4, + "parent_index": 131 + }, + "parameters": [ + { + "id": 149, + "node_type": 44, + "src": { + "id": 150, + "line": 66, + "column": 24, + "start": 2239, + "end": 2242, + "length": 4, + "parent_index": 147 + }, + "scope": 131, + "name": "", + "type_name": { + "id": 151, + "node_type": 30, + "src": { + "id": 152, + "line": 66, + "column": 24, + "start": 2239, + "end": 2242, + "length": 4, + "parent_index": 149 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "scope": 37, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + }, + { + "id": 155, + "node_type": 57, + "src": { + "id": 156, + "line": 74, + "column": 4, + "start": 2414, + "end": 2485, + "length": 72, + "parent_index": 37 + }, + "parameters": { + "id": 157, + "node_type": 43, + "src": { + "id": 156, + "line": 74, + "column": 4, + "start": 2414, + "end": 2485, + "length": 72, + "parent_index": 155 + }, + "parameters": [ + { + "id": 158, + "node_type": 44, + "src": { + "id": 159, + "line": 74, + "column": 19, + "start": 2429, + "end": 2448, + "length": 20, + "parent_index": 157 + }, + "scope": 155, + "name": "from", + "type_name": { + "id": 160, + "node_type": 30, + "src": { + "id": 161, + "line": 74, + "column": 19, + "start": 2429, + "end": 2435, + "length": 7, + "parent_index": 158 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + }, + { + "id": 162, + "node_type": 44, + "src": { + "id": 163, + "line": 74, + "column": 41, + "start": 2451, + "end": 2468, + "length": 18, + "parent_index": 157 + }, + "scope": 155, + "name": "to", + "type_name": { + "id": 164, + "node_type": 30, + "src": { + "id": 165, + "line": 74, + "column": 41, + "start": 2451, + "end": 2457, + "length": 7, + "parent_index": 162 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + }, + { + "id": 166, + "node_type": 44, + "src": { + "id": 167, + "line": 74, + "column": 61, + "start": 2471, + "end": 2483, + "length": 13, + "parent_index": 157 + }, + "scope": 155, + "name": "value", + "type_name": { + "id": 168, + "node_type": 30, + "src": { + "id": 169, + "line": 74, + "column": 61, + "start": 2471, + "end": 2477, + "length": 7, + "parent_index": 166 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "name": "Transfer", + "anonymous": false + }, + { + "id": 171, + "node_type": 57, + "src": { + "id": 172, + "line": 80, + "column": 4, + "start": 2645, + "end": 2722, + "length": 78, + "parent_index": 37 + }, + "parameters": { + "id": 173, + "node_type": 43, + "src": { + "id": 172, + "line": 80, + "column": 4, + "start": 2645, + "end": 2722, + "length": 78, + "parent_index": 171 + }, + "parameters": [ + { + "id": 174, + "node_type": 44, + "src": { + "id": 175, + "line": 80, + "column": 19, + "start": 2660, + "end": 2680, + "length": 21, + "parent_index": 173 + }, + "scope": 171, + "name": "owner", + "type_name": { + "id": 176, + "node_type": 30, + "src": { + "id": 177, + "line": 80, + "column": 19, + "start": 2660, + "end": 2666, + "length": 7, + "parent_index": 174 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + }, + { + "id": 178, + "node_type": 44, + "src": { + "id": 179, + "line": 80, + "column": 42, + "start": 2683, + "end": 2705, + "length": 23, + "parent_index": 173 + }, + "scope": 171, + "name": "spender", + "type_name": { + "id": 180, + "node_type": 30, + "src": { + "id": 181, + "line": 80, + "column": 42, + "start": 2683, + "end": 2689, + "length": 7, + "parent_index": 178 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + }, + { + "id": 182, + "node_type": 44, + "src": { + "id": 183, + "line": 80, + "column": 67, + "start": 2708, + "end": 2720, + "length": 13, + "parent_index": 173 + }, + "scope": 171, + "name": "value", + "type_name": { + "id": 184, + "node_type": 30, + "src": { + "id": 185, + "line": 80, + "column": 67, + "start": 2708, + "end": 2714, + "length": 7, + "parent_index": 182 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "name": "Approval", + "anonymous": false + } + ], + "linearized_base_contracts": [ + 37 + ], + "base_contracts": [], + "contract_dependencies": [] + } + ], + "src": { + "id": 32, + "line": 8, + "column": 0, + "start": 129, + "end": 2724, + "length": 2596, + "parent_index": 30 + } } \ No newline at end of file diff --git a/data/tests/ast/IERC20Metadata.solgo.ast.json b/data/tests/ast/IERC20Metadata.solgo.ast.json index cafd845a..1fe78383 100644 --- a/data/tests/ast/IERC20Metadata.solgo.ast.json +++ b/data/tests/ast/IERC20Metadata.solgo.ast.json @@ -1,635 +1,635 @@ { - "id": 207, - "base_contracts": [ - { - "id": 219, - "node_type": 62, - "src": { - "id": 220, - "line": 93, - "column": 28, - "start": 3044, - "end": 3049, - "length": 6, - "parent_index": 218 - }, - "base_name": { - "id": 221, - "node_type": 52, - "src": { - "id": 222, - "line": 93, - "column": 28, - "start": 3044, - "end": 3049, - "length": 6, - "parent_index": 218 - }, - "name": "IERC20", - "referenced_declaration": 49 - } - } - ], - "license": "MIT", - "exported_symbols": [ - { - "id": 207, - "name": "IERC20Metadata", - "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol" - }, - { - "id": 49, - "name": "IERC20", - "absolute_path": "IERC20.sol" - } - ], - "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "name": "IERC20Metadata", - "node_type": 1, - "nodes": [ - { - "id": 211, - "node_type": 10, - "src": { - "id": 212, - "line": 84, - "column": 0, - "start": 2849, - "end": 2871, - "length": 23, - "parent_index": 207 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 213, - "node_type": 29, - "src": { - "id": 0, - "line": 86, - "column": 0, - "start": 2874, - "end": 2896, - "length": 23, - "parent_index": 207 - }, - "absolute_path": "IERC20.sol", - "file": "../IERC20.sol", - "scope": 207, - "unit_alias": "", - "source_unit": 49 - }, - { - "id": 218, - "name": "IERC20Metadata", - "node_type": 35, - "src": { - "id": 0, - "line": 93, - "column": 0, - "start": 3016, - "end": 3420, - "length": 405, - "parent_index": 207 - }, - "abstract": false, - "kind": 37, - "fully_implemented": true, - "nodes": [ - { - "id": 224, - "name": "name", - "node_type": 42, - "kind": 41, - "src": { - "id": 225, - "line": 97, - "column": 4, - "start": 3116, - "end": 3169, - "length": 54, - "parent_index": 218 - }, - "body": { - "id": 238, - "node_type": 46, - "kind": 0, - "src": { - "id": 225, - "line": 97, - "column": 4, - "start": 3116, - "end": 3169, - "length": 54, - "parent_index": 224 - }, - "implemented": false, - "statements": [] - }, - "implemented": false, - "visibility": 4, - "state_mutability": 5, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 226, - "node_type": 43, - "src": { - "id": 227, - "line": 97, - "column": 43, - "start": 3155, - "end": 3167, - "length": 13, - "parent_index": 224 - }, - "parameters": [ - { - "id": 228, - "node_type": 44, - "src": { - "id": 229, - "line": 97, - "column": 43, - "start": 3155, - "end": 3167, - "length": 13, - "parent_index": 226 - }, - "scope": 224, - "name": "", - "type_name": { - "id": 230, - "node_type": 30, - "src": { - "id": 231, - "line": 97, - "column": 43, - "start": 3155, - "end": 3160, - "length": 6, - "parent_index": 228 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "return_parameters": { - "id": 232, - "node_type": 43, - "src": { - "id": 233, - "line": 97, - "column": 43, - "start": 3155, - "end": 3167, - "length": 13, - "parent_index": 224 - }, - "parameters": [ - { - "id": 234, - "node_type": 44, - "src": { - "id": 235, - "line": 97, - "column": 43, - "start": 3155, - "end": 3167, - "length": 13, - "parent_index": 232 - }, - "scope": 224, - "name": "", - "type_name": { - "id": 236, - "node_type": 30, - "src": { - "id": 237, - "line": 97, - "column": 43, - "start": 3155, - "end": 3160, - "length": 6, - "parent_index": 234 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "scope": 218, - "type_description": { - "type_identifier": "t_function_$_t_string", - "type_string": "function(string)" - } - }, - { - "id": 240, - "name": "symbol", - "node_type": 42, - "kind": 41, - "src": { - "id": 241, - "line": 102, - "column": 4, - "start": 3237, - "end": 3292, - "length": 56, - "parent_index": 218 - }, - "body": { - "id": 254, - "node_type": 46, - "kind": 0, - "src": { - "id": 241, - "line": 102, - "column": 4, - "start": 3237, - "end": 3292, - "length": 56, - "parent_index": 240 - }, - "implemented": false, - "statements": [] - }, - "implemented": false, - "visibility": 4, - "state_mutability": 5, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 242, - "node_type": 43, - "src": { - "id": 243, - "line": 102, - "column": 45, - "start": 3278, - "end": 3290, - "length": 13, - "parent_index": 240 - }, - "parameters": [ - { - "id": 244, - "node_type": 44, - "src": { - "id": 245, - "line": 102, - "column": 45, - "start": 3278, - "end": 3290, - "length": 13, - "parent_index": 242 - }, - "scope": 240, - "name": "", - "type_name": { - "id": 246, - "node_type": 30, - "src": { - "id": 247, - "line": 102, - "column": 45, - "start": 3278, - "end": 3283, - "length": 6, - "parent_index": 244 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "return_parameters": { - "id": 248, - "node_type": 43, - "src": { - "id": 249, - "line": 102, - "column": 45, - "start": 3278, - "end": 3290, - "length": 13, - "parent_index": 240 - }, - "parameters": [ - { - "id": 250, - "node_type": 44, - "src": { - "id": 251, - "line": 102, - "column": 45, - "start": 3278, - "end": 3290, - "length": 13, - "parent_index": 248 - }, - "scope": 240, - "name": "", - "type_name": { - "id": 252, - "node_type": 30, - "src": { - "id": 253, - "line": 102, - "column": 45, - "start": 3278, - "end": 3283, - "length": 6, - "parent_index": 250 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "scope": 218, - "type_description": { - "type_identifier": "t_function_$_t_string", - "type_string": "function(string)" - } - }, - { - "id": 256, - "name": "decimals", - "node_type": 42, - "kind": 41, - "src": { - "id": 257, - "line": 107, - "column": 4, - "start": 3369, - "end": 3418, - "length": 50, - "parent_index": 218 - }, - "body": { - "id": 270, - "node_type": 46, - "kind": 0, - "src": { - "id": 257, - "line": 107, - "column": 4, - "start": 3369, - "end": 3418, - "length": 50, - "parent_index": 256 - }, - "implemented": false, - "statements": [] - }, - "implemented": false, - "visibility": 4, - "state_mutability": 5, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 258, - "node_type": 43, - "src": { - "id": 259, - "line": 107, - "column": 47, - "start": 3412, - "end": 3416, - "length": 5, - "parent_index": 256 - }, - "parameters": [ - { - "id": 260, - "node_type": 44, - "src": { - "id": 261, - "line": 107, - "column": 47, - "start": 3412, - "end": 3416, - "length": 5, - "parent_index": 258 - }, - "scope": 256, - "name": "", - "type_name": { - "id": 262, - "node_type": 30, - "src": { - "id": 263, - "line": 107, - "column": 47, - "start": 3412, - "end": 3416, - "length": 5, - "parent_index": 260 - }, - "name": "uint8", - "type_description": { - "type_identifier": "t_uint8", - "type_string": "uint8" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint8", - "type_string": "uint8" - } - ] - }, - "return_parameters": { - "id": 264, - "node_type": 43, - "src": { - "id": 265, - "line": 107, - "column": 47, - "start": 3412, - "end": 3416, - "length": 5, - "parent_index": 256 - }, - "parameters": [ - { - "id": 266, - "node_type": 44, - "src": { - "id": 267, - "line": 107, - "column": 47, - "start": 3412, - "end": 3416, - "length": 5, - "parent_index": 264 - }, - "scope": 256, - "name": "", - "type_name": { - "id": 268, - "node_type": 30, - "src": { - "id": 269, - "line": 107, - "column": 47, - "start": 3412, - "end": 3416, - "length": 5, - "parent_index": 266 - }, - "name": "uint8", - "type_description": { - "type_identifier": "t_uint8", - "type_string": "uint8" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint8", - "type_string": "uint8" - } - ] - }, - "scope": 218, - "type_description": { - "type_identifier": "t_function_$_t_uint8", - "type_string": "function(uint8)" - } - } - ], - "linearized_base_contracts": [ - 49, - 218, - 213 - ], - "base_contracts": [ - { - "id": 219, - "node_type": 62, - "src": { - "id": 220, - "line": 93, - "column": 28, - "start": 3044, - "end": 3049, - "length": 6, - "parent_index": 218 - }, - "base_name": { - "id": 221, - "node_type": 52, - "src": { - "id": 222, - "line": 93, - "column": 28, - "start": 3044, - "end": 3049, - "length": 6, - "parent_index": 218 - }, - "name": "IERC20", - "referenced_declaration": 49 - } - } - ], - "contract_dependencies": [ - 49, - 213 - ] - } - ], - "src": { - "id": 208, - "line": 93, - "column": 0, - "start": 3016, - "end": 3420, - "length": 405, - "parent_index": 48 - } + "id": 207, + "base_contracts": [ + { + "id": 219, + "node_type": 62, + "src": { + "id": 220, + "line": 93, + "column": 28, + "start": 3044, + "end": 3049, + "length": 6, + "parent_index": 218 + }, + "base_name": { + "id": 221, + "node_type": 52, + "src": { + "id": 222, + "line": 93, + "column": 28, + "start": 3044, + "end": 3049, + "length": 6, + "parent_index": 218 + }, + "name": "IERC20", + "referenced_declaration": 49 + } + } + ], + "license": "MIT", + "exported_symbols": [ + { + "id": 207, + "name": "IERC20Metadata", + "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol" + }, + { + "id": 49, + "name": "IERC20", + "absolute_path": "IERC20.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "name": "IERC20Metadata", + "node_type": 1, + "nodes": [ + { + "id": 211, + "node_type": 10, + "src": { + "id": 212, + "line": 84, + "column": 0, + "start": 2849, + "end": 2871, + "length": 23, + "parent_index": 207 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 213, + "node_type": 29, + "src": { + "id": 0, + "line": 86, + "column": 0, + "start": 2874, + "end": 2896, + "length": 23, + "parent_index": 207 + }, + "absolute_path": "IERC20.sol", + "file": "../IERC20.sol", + "scope": 207, + "unit_alias": "", + "source_unit": 49 + }, + { + "id": 218, + "name": "IERC20Metadata", + "node_type": 35, + "src": { + "id": 0, + "line": 93, + "column": 0, + "start": 3016, + "end": 3420, + "length": 405, + "parent_index": 207 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 224, + "name": "name", + "node_type": 42, + "kind": 41, + "src": { + "id": 225, + "line": 97, + "column": 4, + "start": 3116, + "end": 3169, + "length": 54, + "parent_index": 218 + }, + "body": { + "id": 238, + "node_type": 46, + "kind": 0, + "src": { + "id": 225, + "line": 97, + "column": 4, + "start": 3116, + "end": 3169, + "length": 54, + "parent_index": 224 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 226, + "node_type": 43, + "src": { + "id": 227, + "line": 97, + "column": 43, + "start": 3155, + "end": 3167, + "length": 13, + "parent_index": 224 + }, + "parameters": [ + { + "id": 228, + "node_type": 44, + "src": { + "id": 229, + "line": 97, + "column": 43, + "start": 3155, + "end": 3167, + "length": 13, + "parent_index": 226 + }, + "scope": 224, + "name": "", + "type_name": { + "id": 230, + "node_type": 30, + "src": { + "id": 231, + "line": 97, + "column": 43, + "start": 3155, + "end": 3160, + "length": 6, + "parent_index": 228 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 232, + "node_type": 43, + "src": { + "id": 233, + "line": 97, + "column": 43, + "start": 3155, + "end": 3167, + "length": 13, + "parent_index": 224 + }, + "parameters": [ + { + "id": 234, + "node_type": 44, + "src": { + "id": 235, + "line": 97, + "column": 43, + "start": 3155, + "end": 3167, + "length": 13, + "parent_index": 232 + }, + "scope": 224, + "name": "", + "type_name": { + "id": 236, + "node_type": 30, + "src": { + "id": 237, + "line": 97, + "column": 43, + "start": 3155, + "end": 3160, + "length": 6, + "parent_index": 234 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "scope": 218, + "type_description": { + "type_identifier": "t_function_$_t_string$", + "type_string": "function(string)" + } + }, + { + "id": 240, + "name": "symbol", + "node_type": 42, + "kind": 41, + "src": { + "id": 241, + "line": 102, + "column": 4, + "start": 3237, + "end": 3292, + "length": 56, + "parent_index": 218 + }, + "body": { + "id": 254, + "node_type": 46, + "kind": 0, + "src": { + "id": 241, + "line": 102, + "column": 4, + "start": 3237, + "end": 3292, + "length": 56, + "parent_index": 240 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 242, + "node_type": 43, + "src": { + "id": 243, + "line": 102, + "column": 45, + "start": 3278, + "end": 3290, + "length": 13, + "parent_index": 240 + }, + "parameters": [ + { + "id": 244, + "node_type": 44, + "src": { + "id": 245, + "line": 102, + "column": 45, + "start": 3278, + "end": 3290, + "length": 13, + "parent_index": 242 + }, + "scope": 240, + "name": "", + "type_name": { + "id": 246, + "node_type": 30, + "src": { + "id": 247, + "line": 102, + "column": 45, + "start": 3278, + "end": 3283, + "length": 6, + "parent_index": 244 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 248, + "node_type": 43, + "src": { + "id": 249, + "line": 102, + "column": 45, + "start": 3278, + "end": 3290, + "length": 13, + "parent_index": 240 + }, + "parameters": [ + { + "id": 250, + "node_type": 44, + "src": { + "id": 251, + "line": 102, + "column": 45, + "start": 3278, + "end": 3290, + "length": 13, + "parent_index": 248 + }, + "scope": 240, + "name": "", + "type_name": { + "id": 252, + "node_type": 30, + "src": { + "id": 253, + "line": 102, + "column": 45, + "start": 3278, + "end": 3283, + "length": 6, + "parent_index": 250 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "scope": 218, + "type_description": { + "type_identifier": "t_function_$_t_string$", + "type_string": "function(string)" + } + }, + { + "id": 256, + "name": "decimals", + "node_type": 42, + "kind": 41, + "src": { + "id": 257, + "line": 107, + "column": 4, + "start": 3369, + "end": 3418, + "length": 50, + "parent_index": 218 + }, + "body": { + "id": 270, + "node_type": 46, + "kind": 0, + "src": { + "id": 257, + "line": 107, + "column": 4, + "start": 3369, + "end": 3418, + "length": 50, + "parent_index": 256 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 258, + "node_type": 43, + "src": { + "id": 259, + "line": 107, + "column": 47, + "start": 3412, + "end": 3416, + "length": 5, + "parent_index": 256 + }, + "parameters": [ + { + "id": 260, + "node_type": 44, + "src": { + "id": 261, + "line": 107, + "column": 47, + "start": 3412, + "end": 3416, + "length": 5, + "parent_index": 258 + }, + "scope": 256, + "name": "", + "type_name": { + "id": 262, + "node_type": 30, + "src": { + "id": 263, + "line": 107, + "column": 47, + "start": 3412, + "end": 3416, + "length": 5, + "parent_index": 260 + }, + "name": "uint8", + "type_description": { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint8", + "type_string": "uint8" + } + ] + }, + "return_parameters": { + "id": 264, + "node_type": 43, + "src": { + "id": 265, + "line": 107, + "column": 47, + "start": 3412, + "end": 3416, + "length": 5, + "parent_index": 256 + }, + "parameters": [ + { + "id": 266, + "node_type": 44, + "src": { + "id": 267, + "line": 107, + "column": 47, + "start": 3412, + "end": 3416, + "length": 5, + "parent_index": 264 + }, + "scope": 256, + "name": "", + "type_name": { + "id": 268, + "node_type": 30, + "src": { + "id": 269, + "line": 107, + "column": 47, + "start": 3412, + "end": 3416, + "length": 5, + "parent_index": 266 + }, + "name": "uint8", + "type_description": { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint8", + "type_string": "uint8" + } + ] + }, + "scope": 218, + "type_description": { + "type_identifier": "t_function_$_t_uint8$", + "type_string": "function(uint8)" + } + } + ], + "linearized_base_contracts": [ + 49, + 218, + 213 + ], + "base_contracts": [ + { + "id": 219, + "node_type": 62, + "src": { + "id": 220, + "line": 93, + "column": 28, + "start": 3044, + "end": 3049, + "length": 6, + "parent_index": 218 + }, + "base_name": { + "id": 221, + "node_type": 52, + "src": { + "id": 222, + "line": 93, + "column": 28, + "start": 3044, + "end": 3049, + "length": 6, + "parent_index": 218 + }, + "name": "IERC20", + "referenced_declaration": 49 + } + } + ], + "contract_dependencies": [ + 49, + 213 + ] + } + ], + "src": { + "id": 208, + "line": 93, + "column": 0, + "start": 3016, + "end": 3420, + "length": 405, + "parent_index": 48 + } } \ No newline at end of file diff --git a/data/tests/ast/Lottery.solgo.ast.json b/data/tests/ast/Lottery.solgo.ast.json index 96493151..3dfb8cfc 100644 --- a/data/tests/ast/Lottery.solgo.ast.json +++ b/data/tests/ast/Lottery.solgo.ast.json @@ -1 +1 @@ -{"id":9,"node_type":80,"entry_source_unit":31,"root":[{"id":10,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":10,"name":"IDummyContract","absolute_path":""}],"absolute_path":"","name":"IDummyContract","node_type":1,"nodes":[{"id":12,"node_type":10,"src":{"id":13,"line":2,"column":0,"start":32,"end":54,"length":23,"parent_index":10},"literals":["pragma","solidity","^","0",".","8",".","4",";"],"text":"pragma solidity ^0.8.4;"},{"id":14,"name":"IDummyContract","node_type":35,"src":{"id":0,"line":4,"column":0,"start":57,"end":138,"length":82,"parent_index":10},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":16,"name":"dummyFunction","node_type":42,"kind":41,"src":{"id":17,"line":5,"column":4,"start":88,"end":136,"length":49,"parent_index":14},"body":{"id":30,"node_type":46,"kind":0,"src":{"id":17,"line":5,"column":4,"start":88,"end":136,"length":49,"parent_index":16},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":18,"node_type":43,"src":{"id":19,"line":5,"column":47,"start":131,"end":134,"length":4,"parent_index":16},"parameters":[{"id":20,"node_type":44,"src":{"id":21,"line":5,"column":47,"start":131,"end":134,"length":4,"parent_index":18},"scope":16,"name":"","type_name":{"id":22,"node_type":30,"src":{"id":23,"line":5,"column":47,"start":131,"end":134,"length":4,"parent_index":20},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"return_parameters":{"id":24,"node_type":43,"src":{"id":25,"line":5,"column":47,"start":131,"end":134,"length":4,"parent_index":16},"parameters":[{"id":26,"node_type":44,"src":{"id":27,"line":5,"column":47,"start":131,"end":134,"length":4,"parent_index":24},"scope":16,"name":"","type_name":{"id":28,"node_type":30,"src":{"id":29,"line":5,"column":47,"start":131,"end":134,"length":4,"parent_index":26},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":14,"type_description":{"type_identifier":"t_function_$_t_bool","type_string":"function(bool)"}}],"linearized_base_contracts":[14],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":11,"line":4,"column":0,"start":57,"end":138,"length":82,"parent_index":9}},{"id":31,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":31,"name":"Lottery","absolute_path":"Lottery.sol"}],"absolute_path":"Lottery.sol","name":"Lottery","node_type":1,"nodes":[{"id":33,"node_type":10,"src":{"id":34,"line":2,"column":0,"start":32,"end":54,"length":23,"parent_index":31},"literals":["pragma","solidity","^","0",".","8",".","4",";"],"text":"pragma solidity ^0.8.4;"},{"id":35,"name":"Lottery","node_type":35,"src":{"id":0,"line":8,"column":0,"start":141,"end":4473,"length":4333,"parent_index":31},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":37,"name":"DUMMY_CONSTANT","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":38,"line":9,"column":4,"start":164,"end":210,"length":47,"parent_index":35},"scope":35,"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"visibility":3,"storage_location":1,"mutability":1,"type_name":{"id":39,"node_type":30,"src":{"id":40,"line":9,"column":4,"start":164,"end":170,"length":7,"parent_index":37},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0}},{"id":42,"node_type":66,"src":{"id":43,"line":11,"column":4,"start":217,"end":257,"length":40,"parent_index":35},"name":"LotteryState","canonical_name":"Lottery.LotteryState","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"members":[{"id":44,"node_type":15,"src":{"id":0,"line":11,"column":24,"start":237,"end":245,"length":8,"parent_index":42},"name":"Accepting","type_description":{"type_identifier":"t_enum_$_LotteryState$_Accepting_$44","type_string":"enum Lottery.LotteryState.Accepting"}},{"id":45,"node_type":15,"src":{"id":0,"line":11,"column":35,"start":248,"end":255,"length":7,"parent_index":42},"name":"Finished","type_description":{"type_identifier":"t_enum_$_LotteryState$_Finished_$45","type_string":"enum Lottery.LotteryState.Finished"}}]},{"id":47,"node_type":67,"src":{"id":48,"line":12,"column":4,"start":263,"end":334,"length":72,"parent_index":31},"name":"Player","canonical_name":"Lottery.Player","type_description":{"type_identifier":"t_struct$_Lottery_Player_$47","type_string":"struct Lottery.Player"},"members":[{"id":49,"node_type":44,"src":{"id":50,"line":13,"column":8,"start":287,"end":299,"length":13,"parent_index":47},"scope":35,"name":"addr","type_name":{"id":51,"node_type":30,"src":{"id":52,"line":13,"column":8,"start":287,"end":293,"length":7,"parent_index":49},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":53,"node_type":44,"src":{"id":54,"line":14,"column":8,"start":309,"end":328,"length":20,"parent_index":47},"scope":35,"name":"ticketCount","type_name":{"id":55,"node_type":30,"src":{"id":56,"line":14,"column":8,"start":309,"end":315,"length":7,"parent_index":53},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":58,"name":"players","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":59,"line":16,"column":4,"start":340,"end":381,"length":42,"parent_index":35},"scope":35,"type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},"visibility":3,"storage_location":1,"mutability":1,"type_name":{"id":60,"node_type":69,"src":{"id":66,"line":16,"column":23,"start":359,"end":364,"length":6,"parent_index":60},"name":"Player","type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},"key_type":{"id":62,"node_type":30,"src":{"id":63,"line":16,"column":12,"start":348,"end":354,"length":7,"parent_index":60},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0},"value_type":{"id":64,"node_type":30,"src":{"id":65,"line":16,"column":23,"start":359,"end":364,"length":6,"parent_index":60},"name":"Player","type_description":{"type_identifier":"t_struct$_Lottery_Player_$47","type_string":"struct Lottery.Player"},"referenced_declaration":47},"path_node":{"id":67,"name":"Player","node_type":52,"referenced_declaration":47,"src":{"id":68,"line":16,"column":23,"start":359,"end":364,"length":6,"parent_index":60}},"referenced_declaration":47}},{"id":70,"name":"playerAddresses","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":71,"line":17,"column":4,"start":387,"end":419,"length":33,"parent_index":35},"scope":35,"type_description":{"type_identifier":"t_address","type_string":"address"},"visibility":3,"storage_location":1,"mutability":1,"type_name":{"id":72,"node_type":0,"src":{"id":74,"line":17,"column":4,"start":387,"end":393,"length":7,"parent_index":70},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0}},{"id":76,"name":"state","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":77,"line":19,"column":4,"start":426,"end":451,"length":26,"parent_index":35},"scope":35,"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"visibility":3,"storage_location":1,"mutability":1,"type_name":{"id":78,"node_type":69,"src":{"id":79,"line":19,"column":4,"start":426,"end":437,"length":12,"parent_index":76},"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"path_node":{"id":80,"name":"LotteryState","node_type":52,"referenced_declaration":42,"src":{"id":81,"line":19,"column":4,"start":426,"end":437,"length":12,"parent_index":78}},"referenced_declaration":42}},{"id":83,"node_type":57,"src":{"id":84,"line":21,"column":4,"start":458,"end":490,"length":33,"parent_index":35},"parameters":{"id":85,"node_type":43,"src":{"id":84,"line":21,"column":4,"start":458,"end":490,"length":33,"parent_index":83},"parameters":[{"id":86,"node_type":44,"src":{"id":87,"line":21,"column":23,"start":477,"end":488,"length":12,"parent_index":85},"scope":83,"name":"addr","type_name":{"id":88,"node_type":30,"src":{"id":89,"line":21,"column":23,"start":477,"end":483,"length":7,"parent_index":86},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"name":"PlayerJoined","anonymous":false},{"id":91,"node_type":57,"src":{"id":92,"line":22,"column":4,"start":496,"end":533,"length":38,"parent_index":35},"parameters":{"id":93,"node_type":43,"src":{"id":92,"line":22,"column":4,"start":496,"end":533,"length":38,"parent_index":91},"parameters":[{"id":94,"node_type":44,"src":{"id":95,"line":22,"column":26,"start":518,"end":531,"length":14,"parent_index":93},"scope":91,"name":"winner","type_name":{"id":96,"node_type":30,"src":{"id":97,"line":22,"column":26,"start":518,"end":524,"length":7,"parent_index":94},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"name":"LotteryFinished","anonymous":false},{"id":99,"node_type":57,"src":{"id":100,"line":23,"column":4,"start":539,"end":569,"length":31,"parent_index":35},"parameters":{"id":101,"node_type":43,"src":{"id":100,"line":23,"column":4,"start":539,"end":569,"length":31,"parent_index":99},"parameters":[],"parameter_types":[]},"name":"ExternalCallSuccessful","anonymous":false},{"id":103,"node_type":57,"src":{"id":104,"line":24,"column":4,"start":575,"end":614,"length":40,"parent_index":35},"parameters":{"id":105,"node_type":43,"src":{"id":104,"line":24,"column":4,"start":575,"end":614,"length":40,"parent_index":103},"parameters":[{"id":106,"node_type":44,"src":{"id":107,"line":24,"column":29,"start":600,"end":612,"length":13,"parent_index":105},"scope":103,"name":"reason","type_name":{"id":108,"node_type":30,"src":{"id":109,"line":24,"column":29,"start":600,"end":605,"length":6,"parent_index":106},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"name":"ExternalCallFailed","anonymous":false},{"id":111,"node_type":77,"src":{"id":112,"line":27,"column":4,"start":649,"end":669,"length":21,"parent_index":35},"name":"InvalidState","parameters":{"id":113,"node_type":43,"src":{"id":112,"line":27,"column":4,"start":649,"end":669,"length":21,"parent_index":111},"parameters":[],"parameter_types":[]},"type_description":{"type_identifier":"t_error$_Lottery_InvalidState_$111","type_string":"error Lottery.InvalidState"}},{"id":115,"node_type":77,"src":{"id":116,"line":28,"column":4,"start":675,"end":705,"length":31,"parent_index":35},"name":"OwnerCannotParticipate","parameters":{"id":117,"node_type":43,"src":{"id":116,"line":28,"column":4,"start":675,"end":705,"length":31,"parent_index":115},"parameters":[],"parameter_types":[]},"type_description":{"type_identifier":"t_error$_Lottery_OwnerCannotParticipate_$115","type_string":"error Lottery.OwnerCannotParticipate"}},{"id":119,"node_type":77,"src":{"id":120,"line":29,"column":4,"start":711,"end":734,"length":24,"parent_index":35},"name":"NoValueProvided","parameters":{"id":121,"node_type":43,"src":{"id":120,"line":29,"column":4,"start":711,"end":734,"length":24,"parent_index":119},"parameters":[],"parameter_types":[]},"type_description":{"type_identifier":"t_error$_Lottery_NoValueProvided_$119","type_string":"error Lottery.NoValueProvided"}},{"id":123,"node_type":77,"src":{"id":124,"line":30,"column":4,"start":740,"end":761,"length":22,"parent_index":35},"name":"InvalidWinner","parameters":{"id":125,"node_type":43,"src":{"id":124,"line":30,"column":4,"start":740,"end":761,"length":22,"parent_index":123},"parameters":[],"parameter_types":[]},"type_description":{"type_identifier":"t_error$_Lottery_InvalidWinner_$123","type_string":"error Lottery.InvalidWinner"}},{"id":127,"node_type":77,"src":{"id":128,"line":31,"column":4,"start":767,"end":795,"length":29,"parent_index":35},"name":"InvalidPlayerAddress","parameters":{"id":129,"node_type":43,"src":{"id":128,"line":31,"column":4,"start":767,"end":795,"length":29,"parent_index":127},"parameters":[],"parameter_types":[]},"type_description":{"type_identifier":"t_error$_Lottery_InvalidPlayerAddress_$127","type_string":"error Lottery.InvalidPlayerAddress"}},{"id":131,"node_type":77,"src":{"id":132,"line":32,"column":4,"start":801,"end":825,"length":25,"parent_index":35},"name":"OnlyOwnerCanCall","parameters":{"id":133,"node_type":43,"src":{"id":132,"line":32,"column":4,"start":801,"end":825,"length":25,"parent_index":131},"parameters":[],"parameter_types":[]},"type_description":{"type_identifier":"t_error$_Lottery_OnlyOwnerCanCall_$131","type_string":"error Lottery.OnlyOwnerCanCall"}},{"id":135,"name":"inState","node_type":68,"src":{"id":136,"line":34,"column":4,"start":832,"end":963,"length":132,"parent_index":35},"visibility":1,"virtual":false,"parameters":{"id":137,"node_type":43,"src":{"id":138,"line":34,"column":21,"start":849,"end":867,"length":19,"parent_index":35},"parameters":[{"id":139,"node_type":44,"src":{"id":140,"line":34,"column":21,"start":849,"end":867,"length":19,"parent_index":137},"scope":35,"name":"_state","type_name":{"id":141,"node_type":69,"src":{"id":142,"line":34,"column":21,"start":849,"end":860,"length":12,"parent_index":139},"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"path_node":{"id":143,"name":"LotteryState","node_type":52,"referenced_declaration":42,"src":{"id":144,"line":34,"column":21,"start":849,"end":860,"length":12,"parent_index":141}},"referenced_declaration":42},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}]},"body":{"id":145,"node_type":46,"kind":0,"src":{"id":146,"line":34,"column":42,"start":870,"end":963,"length":94,"parent_index":135},"implemented":true,"statements":[{"id":147,"node_type":48,"src":{"id":148,"line":35,"column":0,"start":880,"end":946,"length":67,"parent_index":145},"condition":{"id":149,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":150,"line":35,"column":12,"start":884,"end":898,"length":15,"parent_index":147},"operator":12,"left_expression":{"id":151,"node_type":16,"src":{"id":152,"line":35,"column":12,"start":884,"end":888,"length":5,"parent_index":149},"name":"state","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"overloaded_declarations":[],"referenced_declaration":76,"is_pure":false},"right_expression":{"id":153,"node_type":16,"src":{"id":154,"line":35,"column":21,"start":893,"end":898,"length":6,"parent_index":149},"name":"_state","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"overloaded_declarations":[],"referenced_declaration":139,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":155,"node_type":46,"kind":0,"src":{"id":156,"line":35,"column":29,"start":901,"end":946,"length":46,"parent_index":135},"implemented":true,"statements":[{"id":157,"node_type":78,"src":{"id":158,"line":36,"column":12,"start":915,"end":936,"length":22,"parent_index":135},"arguments":[],"expression":{"id":159,"node_type":16,"src":{"id":160,"line":36,"column":19,"start":922,"end":933,"length":12,"parent_index":155},"name":"InvalidState","type_description":{"type_identifier":"t_error$_Lottery_InvalidState_$111","type_string":"error Lottery.InvalidState"},"overloaded_declarations":[],"referenced_declaration":111,"is_pure":false}}]}},{"id":161,"node_type":82,"src":{"id":162,"line":38,"column":8,"start":956,"end":956,"length":1,"parent_index":145},"name":"_","type_description":{"type_identifier":"t_placeholder_literal","type_string":"t_placeholder"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}]}},{"id":164,"name":"notOwner","node_type":68,"src":{"id":165,"line":41,"column":4,"start":970,"end":1099,"length":130,"parent_index":35},"visibility":1,"virtual":false,"parameters":{"id":166,"node_type":43,"src":{"id":165,"line":41,"column":4,"start":970,"end":1099,"length":130,"parent_index":35},"parameters":[],"parameter_types":[]},"body":{"id":167,"node_type":46,"kind":0,"src":{"id":168,"line":41,"column":24,"start":990,"end":1099,"length":110,"parent_index":164},"implemented":true,"statements":[{"id":169,"node_type":48,"src":{"id":170,"line":42,"column":0,"start":1000,"end":1082,"length":83,"parent_index":167},"condition":{"id":171,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":172,"line":42,"column":12,"start":1004,"end":1024,"length":21,"parent_index":169},"operator":11,"left_expression":{"id":173,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":174,"line":42,"column":12,"start":1004,"end":1013,"length":10,"parent_index":171},"expression":{"id":175,"node_type":16,"src":{"id":176,"line":42,"column":12,"start":1004,"end":1006,"length":3,"parent_index":173},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"right_expression":{"id":177,"node_type":24,"kind":24,"src":{"id":178,"line":42,"column":26,"start":1018,"end":1024,"length":7,"parent_index":171},"argument_types":[],"arguments":[],"expression":{"id":179,"node_type":16,"src":{"id":180,"line":42,"column":26,"start":1018,"end":1022,"length":5,"parent_index":177},"name":"owner","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":181,"node_type":46,"kind":0,"src":{"id":182,"line":42,"column":35,"start":1027,"end":1082,"length":56,"parent_index":164},"implemented":true,"statements":[{"id":183,"node_type":78,"src":{"id":184,"line":43,"column":12,"start":1041,"end":1072,"length":32,"parent_index":164},"arguments":[],"expression":{"id":185,"node_type":16,"src":{"id":186,"line":43,"column":19,"start":1048,"end":1069,"length":22,"parent_index":181},"name":"OwnerCannotParticipate","type_description":{"type_identifier":"t_error$_Lottery_OwnerCannotParticipate_$115","type_string":"error Lottery.OwnerCannotParticipate"},"overloaded_declarations":[],"referenced_declaration":115,"is_pure":false}}]}},{"id":187,"node_type":82,"src":{"id":188,"line":45,"column":8,"start":1092,"end":1092,"length":1,"parent_index":167},"name":"_","type_description":{"type_identifier":"t_placeholder_literal","type_string":"t_placeholder"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}]}},{"id":190,"node_type":42,"kind":70,"src":{"id":191,"line":48,"column":4,"start":1106,"end":1136,"length":31,"parent_index":35},"implemented":true,"visibility":1,"state_mutability":3,"modifiers":[],"overrides":[],"parameters":{"id":192,"node_type":43,"src":{"id":191,"line":48,"column":4,"start":1106,"end":1136,"length":31,"parent_index":190},"parameters":[],"parameter_types":[]},"return_parameters":{"id":193,"node_type":43,"src":{"id":191,"line":48,"column":4,"start":1106,"end":1136,"length":31,"parent_index":190},"parameters":[],"parameter_types":[]},"body":{"id":194,"node_type":46,"kind":0,"src":{"id":195,"line":48,"column":32,"start":1134,"end":1136,"length":3,"parent_index":190},"implemented":true,"statements":[]},"virtual":false},{"id":197,"node_type":42,"kind":71,"src":{"id":198,"line":49,"column":4,"start":1142,"end":1171,"length":30,"parent_index":35},"implemented":true,"visibility":1,"state_mutability":4,"modifiers":[],"overrides":[],"parameters":{"id":199,"node_type":43,"src":{"id":198,"line":49,"column":4,"start":1142,"end":1171,"length":30,"parent_index":197},"parameters":[],"parameter_types":[]},"return_parameters":{"id":200,"node_type":43,"src":{"id":198,"line":49,"column":4,"start":1142,"end":1171,"length":30,"parent_index":197},"parameters":[],"parameter_types":[]},"body":{"id":201,"node_type":46,"kind":0,"src":{"id":202,"line":49,"column":31,"start":1169,"end":1171,"length":3,"parent_index":197},"implemented":true,"statements":[]},"virtual":false,"payable":false},{"id":204,"node_type":42,"src":{"id":205,"line":51,"column":4,"start":1178,"end":1238,"length":61,"parent_index":35},"kind":11,"state_mutability":4,"visibility":1,"implemented":true,"modifiers":[],"parameters":{"id":206,"node_type":43,"src":{"id":205,"line":51,"column":4,"start":1178,"end":1238,"length":61,"parent_index":204},"parameters":[],"parameter_types":[]},"return_parameters":{"id":207,"node_type":43,"src":{"id":205,"line":51,"column":4,"start":1178,"end":1238,"length":61,"parent_index":204},"parameters":[],"parameter_types":[]},"scope":35,"body":{"id":208,"node_type":46,"kind":0,"src":{"id":209,"line":51,"column":18,"start":1192,"end":1238,"length":47,"parent_index":204},"implemented":true,"statements":[{"id":210,"node_type":81,"src":{"id":211,"line":52,"column":8,"start":1202,"end":1232,"length":31,"parent_index":208},"expression":{"id":212,"node_type":27,"src":{"id":213,"line":52,"column":8,"start":1202,"end":1231,"length":30,"parent_index":208},"operator":11,"left_expression":{"id":214,"node_type":16,"src":{"id":215,"line":52,"column":8,"start":1202,"end":1206,"length":5,"parent_index":212},"name":"state","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"overloaded_declarations":[],"referenced_declaration":76,"is_pure":false},"right_expression":{"id":216,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":217,"line":52,"column":16,"start":1210,"end":1231,"length":22,"parent_index":212},"expression":{"id":218,"node_type":16,"src":{"id":219,"line":52,"column":16,"start":1210,"end":1221,"length":12,"parent_index":216},"name":"LotteryState","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"overloaded_declarations":[],"referenced_declaration":42,"is_pure":false},"member_name":"Accepting","argument_types":[],"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}},"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}}}]}},{"id":221,"name":"join","node_type":42,"kind":41,"src":{"id":222,"line":55,"column":4,"start":1245,"end":1658,"length":414,"parent_index":35},"body":{"id":237,"node_type":46,"kind":0,"src":{"id":238,"line":55,"column":76,"start":1317,"end":1658,"length":342,"parent_index":221},"implemented":true,"statements":[{"id":239,"node_type":48,"src":{"id":240,"line":56,"column":0,"start":1327,"end":1395,"length":69,"parent_index":237},"condition":{"id":241,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":242,"line":56,"column":12,"start":1331,"end":1344,"length":14,"parent_index":239},"operator":11,"left_expression":{"id":243,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":244,"line":56,"column":12,"start":1331,"end":1339,"length":9,"parent_index":241},"expression":{"id":245,"node_type":16,"src":{"id":246,"line":56,"column":12,"start":1331,"end":1333,"length":3,"parent_index":243},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"right_expression":{"id":247,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":248,"line":56,"column":25,"start":1344,"end":1344,"length":1,"parent_index":241},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":249,"node_type":46,"kind":0,"src":{"id":250,"line":56,"column":28,"start":1347,"end":1395,"length":49,"parent_index":221},"implemented":true,"statements":[{"id":251,"node_type":78,"src":{"id":252,"line":57,"column":12,"start":1361,"end":1385,"length":25,"parent_index":221},"arguments":[],"expression":{"id":253,"node_type":16,"src":{"id":254,"line":57,"column":19,"start":1368,"end":1382,"length":15,"parent_index":249},"name":"NoValueProvided","type_description":{"type_identifier":"t_error$_Lottery_NoValueProvided_$119","type_string":"error Lottery.NoValueProvided"},"overloaded_declarations":[],"referenced_declaration":119,"is_pure":false}}]}},{"id":255,"node_type":48,"src":{"id":256,"line":60,"column":0,"start":1406,"end":1557,"length":152,"parent_index":237},"condition":{"id":257,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":258,"line":60,"column":12,"start":1410,"end":1447,"length":38,"parent_index":255},"operator":11,"left_expression":{"id":259,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":260,"line":60,"column":12,"start":1410,"end":1433,"length":24,"parent_index":257},"expression":{"id":261,"node_type":22,"src":{"id":262,"line":60,"column":12,"start":1410,"end":1428,"length":19,"parent_index":259},"index_expression":{"id":263,"node_type":16,"src":{"id":264,"line":60,"column":12,"start":1410,"end":1416,"length":7,"parent_index":261},"name":"players","type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},"overloaded_declarations":[],"referenced_declaration":58,"is_pure":false},"base_expression":{"id":265,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":266,"line":60,"column":20,"start":1418,"end":1427,"length":10,"parent_index":261},"expression":{"id":267,"node_type":16,"src":{"id":268,"line":60,"column":20,"start":1418,"end":1420,"length":3,"parent_index":265},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"}},"member_name":"addr","argument_types":[],"type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"}},"right_expression":{"id":269,"node_type":24,"kind":24,"src":{"id":270,"line":60,"column":40,"start":1438,"end":1447,"length":10,"parent_index":257},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":271,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":272,"line":60,"column":48,"start":1446,"end":1446,"length":1,"parent_index":269},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":273,"node_type":16,"src":{"id":274,"line":60,"column":40,"start":1438,"end":1444,"length":7,"parent_index":269},"type_name":{"id":275,"node_type":30,"src":{"id":276,"line":60,"column":40,"start":1438,"end":1444,"length":7,"parent_index":273},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":277,"node_type":46,"kind":0,"src":{"id":278,"line":60,"column":52,"start":1450,"end":1557,"length":108,"parent_index":221},"implemented":true,"statements":[{"id":279,"node_type":81,"src":{"id":280,"line":61,"column":12,"start":1464,"end":1501,"length":38,"parent_index":277},"expression":{"id":281,"node_type":27,"src":{"id":282,"line":61,"column":12,"start":1464,"end":1500,"length":37,"parent_index":277},"operator":11,"left_expression":{"id":283,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":284,"line":61,"column":12,"start":1464,"end":1487,"length":24,"parent_index":281},"expression":{"id":285,"node_type":22,"src":{"id":286,"line":61,"column":12,"start":1464,"end":1482,"length":19,"parent_index":283},"index_expression":{"id":287,"node_type":16,"src":{"id":288,"line":61,"column":12,"start":1464,"end":1470,"length":7,"parent_index":285},"name":"players","type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},"overloaded_declarations":[],"referenced_declaration":58,"is_pure":false},"base_expression":{"id":289,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":290,"line":61,"column":20,"start":1472,"end":1481,"length":10,"parent_index":285},"expression":{"id":291,"node_type":16,"src":{"id":292,"line":61,"column":20,"start":1472,"end":1474,"length":3,"parent_index":289},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"}},"member_name":"addr","argument_types":[],"type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"}},"right_expression":{"id":293,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":294,"line":61,"column":39,"start":1491,"end":1500,"length":10,"parent_index":281},"expression":{"id":295,"node_type":16,"src":{"id":296,"line":61,"column":39,"start":1491,"end":1493,"length":3,"parent_index":293},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"}}},{"id":297,"node_type":24,"kind":24,"src":{"id":298,"line":62,"column":12,"start":1515,"end":1546,"length":32,"parent_index":277},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":299,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":300,"line":62,"column":33,"start":1536,"end":1545,"length":10,"parent_index":297},"expression":{"id":301,"node_type":16,"src":{"id":302,"line":62,"column":33,"start":1536,"end":1538,"length":3,"parent_index":299},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}}],"expression":{"id":303,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":304,"line":62,"column":12,"start":1515,"end":1534,"length":20,"parent_index":297},"expression":{"id":305,"node_type":16,"src":{"id":306,"line":62,"column":12,"start":1515,"end":1529,"length":15,"parent_index":303},"name":"playerAddresses","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":70,"is_pure":false},"member_name":"push","argument_types":[{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}]}},{"id":307,"node_type":81,"src":{"id":308,"line":65,"column":8,"start":1568,"end":1612,"length":45,"parent_index":237},"expression":{"id":309,"node_type":27,"src":{"id":310,"line":65,"column":8,"start":1568,"end":1611,"length":44,"parent_index":237},"operator":13,"left_expression":{"id":311,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":312,"line":65,"column":8,"start":1568,"end":1598,"length":31,"parent_index":309},"expression":{"id":313,"node_type":22,"src":{"id":314,"line":65,"column":8,"start":1568,"end":1586,"length":19,"parent_index":311},"index_expression":{"id":315,"node_type":16,"src":{"id":316,"line":65,"column":8,"start":1568,"end":1574,"length":7,"parent_index":313},"name":"players","type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},"overloaded_declarations":[],"referenced_declaration":58,"is_pure":false},"base_expression":{"id":317,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":318,"line":65,"column":16,"start":1576,"end":1585,"length":10,"parent_index":313},"expression":{"id":319,"node_type":16,"src":{"id":320,"line":65,"column":16,"start":1576,"end":1578,"length":3,"parent_index":317},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"}},"member_name":"ticketCount","argument_types":[],"type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"}},"right_expression":{"id":321,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":322,"line":65,"column":43,"start":1603,"end":1611,"length":9,"parent_index":309},"expression":{"id":323,"node_type":16,"src":{"id":324,"line":65,"column":43,"start":1603,"end":1605,"length":3,"parent_index":321},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"}}},{"id":325,"node_type":64,"src":{"id":326,"line":67,"column":8,"start":1623,"end":1652,"length":30,"parent_index":221},"arguments":[{"id":327,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":328,"line":67,"column":26,"start":1641,"end":1650,"length":10,"parent_index":237},"expression":{"id":329,"node_type":16,"src":{"id":330,"line":67,"column":26,"start":1641,"end":1643,"length":3,"parent_index":327},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}}],"expression":{"id":331,"node_type":16,"src":{"id":332,"line":67,"column":13,"start":1628,"end":1639,"length":12,"parent_index":237},"name":"PlayerJoined","type_description":{"type_identifier":"t_event\u0026_Lottery_PlayerJoined_\u002683","type_string":"event Lottery.PlayerJoined"},"overloaded_declarations":[],"referenced_declaration":83,"is_pure":false}}]},"implemented":true,"visibility":3,"state_mutability":3,"virtual":false,"modifiers":[{"id":223,"name":"inState","node_type":72,"kind":72,"src":{"id":224,"line":55,"column":35,"start":1276,"end":1306,"length":31,"parent_index":221},"argument_types":[{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}],"arguments":[{"id":227,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":228,"line":55,"column":43,"start":1284,"end":1305,"length":22,"parent_index":223},"expression":{"id":229,"node_type":16,"src":{"id":230,"line":55,"column":43,"start":1284,"end":1295,"length":12,"parent_index":227},"name":"LotteryState","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"overloaded_declarations":[],"referenced_declaration":42,"is_pure":false},"member_name":"Accepting","argument_types":[],"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}}],"modifier_name":{"id":225,"name":"inState","node_type":0,"src":{"id":226,"line":55,"column":35,"start":1276,"end":1282,"length":7,"parent_index":223}}},{"id":231,"name":"notOwner","node_type":72,"kind":72,"src":{"id":232,"line":55,"column":67,"start":1308,"end":1315,"length":8,"parent_index":221},"argument_types":[],"arguments":[],"modifier_name":{"id":233,"name":"notOwner","node_type":0,"src":{"id":234,"line":55,"column":67,"start":1308,"end":1315,"length":8,"parent_index":231}}}],"overrides":[],"parameters":{"id":235,"node_type":43,"src":{"id":222,"line":55,"column":4,"start":1245,"end":1658,"length":414,"parent_index":221},"parameters":[],"parameter_types":[]},"return_parameters":{"id":236,"node_type":43,"src":{"id":222,"line":55,"column":4,"start":1245,"end":1658,"length":414,"parent_index":221},"parameters":[],"parameter_types":[]},"scope":35,"type_description":{"type_identifier":"t_function_","type_string":"function()"}},{"id":334,"name":"finishLottery","node_type":42,"kind":41,"src":{"id":335,"line":70,"column":4,"start":1665,"end":2467,"length":803,"parent_index":35},"body":{"id":346,"node_type":46,"kind":0,"src":{"id":347,"line":70,"column":68,"start":1729,"end":2467,"length":739,"parent_index":334},"implemented":true,"statements":[{"id":348,"node_type":81,"src":{"id":349,"line":71,"column":8,"start":1739,"end":1768,"length":30,"parent_index":346},"expression":{"id":350,"node_type":27,"src":{"id":351,"line":71,"column":8,"start":1739,"end":1767,"length":29,"parent_index":346},"operator":11,"left_expression":{"id":352,"node_type":16,"src":{"id":353,"line":71,"column":8,"start":1739,"end":1743,"length":5,"parent_index":350},"name":"state","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"overloaded_declarations":[],"referenced_declaration":76,"is_pure":false},"right_expression":{"id":354,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":355,"line":71,"column":16,"start":1747,"end":1767,"length":21,"parent_index":350},"expression":{"id":356,"node_type":16,"src":{"id":357,"line":71,"column":16,"start":1747,"end":1758,"length":12,"parent_index":354},"name":"LotteryState","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"overloaded_declarations":[],"referenced_declaration":42,"is_pure":false},"member_name":"Finished","argument_types":[],"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}},"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}}},{"id":358,"node_type":44,"src":{"id":359,"line":73,"column":8,"start":1779,"end":1844,"length":66,"parent_index":346},"assignments":[360],"declarations":[{"is_constant":false,"id":360,"state_mutability":1,"name":"index","node_type":44,"scope":346,"src":{"id":361,"line":73,"column":8,"start":1779,"end":1791,"length":13,"parent_index":358},"is_state_variable":false,"storage_location":1,"type_name":{"id":362,"node_type":30,"src":{"id":363,"line":73,"column":8,"start":1779,"end":1785,"length":7,"parent_index":360},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":364,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":365,"line":73,"column":24,"start":1795,"end":1843,"length":49,"parent_index":358},"operator":5,"left_expression":{"id":366,"node_type":24,"kind":24,"src":{"id":367,"line":73,"column":24,"start":1795,"end":1818,"length":24,"parent_index":358},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":368,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":369,"line":73,"column":32,"start":1803,"end":1817,"length":15,"parent_index":366},"expression":{"id":370,"node_type":16,"src":{"id":371,"line":73,"column":32,"start":1803,"end":1807,"length":5,"parent_index":368},"name":"block","type_description":{"type_identifier":"t_magic_block","type_string":"block"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"timestamp","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}],"expression":{"id":372,"node_type":16,"src":{"id":373,"line":73,"column":24,"start":1795,"end":1801,"length":7,"parent_index":366},"type_name":{"id":374,"node_type":30,"src":{"id":375,"line":73,"column":24,"start":1795,"end":1801,"length":7,"parent_index":372},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_uint256","type_string":"function(uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},"right_expression":{"id":376,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":377,"line":73,"column":51,"start":1822,"end":1843,"length":22,"parent_index":358},"expression":{"id":378,"node_type":16,"src":{"id":379,"line":73,"column":51,"start":1822,"end":1836,"length":15,"parent_index":376},"name":"playerAddresses","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":70,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}}},{"id":380,"node_type":44,"src":{"id":381,"line":74,"column":8,"start":1854,"end":1881,"length":28,"parent_index":346},"assignments":[382],"declarations":[{"is_constant":false,"id":382,"state_mutability":1,"name":"winner","node_type":44,"scope":346,"src":{"id":383,"line":74,"column":8,"start":1854,"end":1867,"length":14,"parent_index":380},"is_state_variable":false,"storage_location":1,"type_name":{"id":384,"node_type":30,"src":{"id":385,"line":74,"column":8,"start":1854,"end":1860,"length":7,"parent_index":382},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":386,"node_type":24,"kind":24,"src":{"id":387,"line":74,"column":25,"start":1871,"end":1880,"length":10,"parent_index":380},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":388,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":389,"line":74,"column":33,"start":1879,"end":1879,"length":1,"parent_index":386},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":390,"node_type":16,"src":{"id":391,"line":74,"column":25,"start":1871,"end":1877,"length":7,"parent_index":386},"type_name":{"id":392,"node_type":30,"src":{"id":393,"line":74,"column":25,"start":1871,"end":1877,"length":7,"parent_index":390},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}}},{"id":394,"node_type":44,"src":{"id":395,"line":75,"column":8,"start":1891,"end":1908,"length":18,"parent_index":346},"assignments":[396],"declarations":[{"is_constant":false,"id":396,"state_mutability":1,"name":"count","node_type":44,"scope":346,"src":{"id":397,"line":75,"column":8,"start":1891,"end":1903,"length":13,"parent_index":394},"is_state_variable":false,"storage_location":1,"type_name":{"id":398,"node_type":30,"src":{"id":399,"line":75,"column":8,"start":1891,"end":1897,"length":7,"parent_index":396},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":400,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":401,"line":75,"column":24,"start":1907,"end":1907,"length":1,"parent_index":394},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}},{"id":0,"node_type":73,"kind":83,"src":{"id":402,"line":77,"column":0,"start":1927,"end":2246,"length":320,"parent_index":346},"condition":{"id":403,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":404,"line":77,"column":14,"start":1933,"end":1962,"length":30,"parent_index":0},"operator":9,"left_expression":{"id":405,"node_type":16,"src":{"id":406,"line":77,"column":14,"start":1933,"end":1937,"length":5,"parent_index":403},"name":"count","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":394,"is_pure":false},"right_expression":{"id":407,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":408,"line":77,"column":22,"start":1941,"end":1962,"length":22,"parent_index":403},"expression":{"id":409,"node_type":16,"src":{"id":410,"line":77,"column":22,"start":1941,"end":1955,"length":15,"parent_index":407},"name":"playerAddresses","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":70,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":411,"node_type":46,"kind":0,"src":{"id":412,"line":77,"column":46,"start":1965,"end":2246,"length":282,"parent_index":0},"implemented":true,"statements":[{"id":413,"node_type":48,"src":{"id":414,"line":78,"column":0,"start":1979,"end":2083,"length":105,"parent_index":411},"condition":{"id":415,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":416,"line":78,"column":15,"start":1982,"end":1995,"length":14,"parent_index":413},"operator":11,"left_expression":{"id":417,"node_type":16,"src":{"id":418,"line":78,"column":15,"start":1982,"end":1986,"length":5,"parent_index":415},"name":"index","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":358,"is_pure":false},"right_expression":{"id":419,"node_type":16,"src":{"id":420,"line":78,"column":24,"start":1991,"end":1995,"length":5,"parent_index":415},"name":"count","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":394,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":421,"node_type":46,"kind":0,"src":{"id":422,"line":78,"column":30,"start":1997,"end":2083,"length":87,"parent_index":0},"implemented":true,"statements":[{"id":423,"node_type":81,"src":{"id":424,"line":79,"column":16,"start":2015,"end":2046,"length":32,"parent_index":421},"expression":{"id":425,"node_type":27,"src":{"id":426,"line":79,"column":16,"start":2015,"end":2045,"length":31,"parent_index":421},"operator":11,"left_expression":{"id":427,"node_type":16,"src":{"id":428,"line":79,"column":16,"start":2015,"end":2020,"length":6,"parent_index":425},"name":"winner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":380,"is_pure":false},"right_expression":{"id":429,"node_type":22,"src":{"id":430,"line":79,"column":25,"start":2024,"end":2045,"length":22,"parent_index":425},"index_expression":{"id":431,"node_type":16,"src":{"id":432,"line":79,"column":25,"start":2024,"end":2038,"length":15,"parent_index":429},"name":"playerAddresses","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":70,"is_pure":false},"base_expression":{"id":433,"node_type":16,"src":{"id":434,"line":79,"column":41,"start":2040,"end":2044,"length":5,"parent_index":429},"name":"count","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":394,"is_pure":false},"type_descriptions":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_address","type_string":"address"}}},{"id":435,"node_type":74,"src":{"id":436,"line":80,"column":0,"start":2064,"end":2069,"length":6,"parent_index":421}}]}},{"id":437,"node_type":18,"src":{"id":438,"line":83,"column":12,"start":2098,"end":2104,"length":7,"parent_index":0},"operator":27,"expression":{"id":439,"node_type":16,"src":{"id":440,"line":83,"column":12,"start":2098,"end":2102,"length":5,"parent_index":437},"name":"count","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":394,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"prefix":false,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false},{"id":441,"node_type":48,"src":{"id":442,"line":86,"column":0,"start":2176,"end":2236,"length":61,"parent_index":411},"condition":{"id":443,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":444,"line":86,"column":16,"start":2180,"end":2193,"length":14,"parent_index":441},"operator":11,"left_expression":{"id":445,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":446,"line":86,"column":16,"start":2180,"end":2188,"length":9,"parent_index":443},"operator":5,"left_expression":{"id":447,"node_type":16,"src":{"id":448,"line":86,"column":16,"start":2180,"end":2184,"length":5,"parent_index":445},"name":"count","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":394,"is_pure":false},"right_expression":{"id":449,"node_type":17,"kind":49,"value":"2","hex_value":"32","src":{"id":450,"line":86,"column":24,"start":2188,"end":2188,"length":1,"parent_index":445},"type_description":{"type_identifier":"t_rational_2_by_1","type_string":"int_const 2"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"right_expression":{"id":451,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":452,"line":86,"column":29,"start":2193,"end":2193,"length":1,"parent_index":443},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":453,"node_type":46,"kind":0,"src":{"id":454,"line":86,"column":32,"start":2196,"end":2236,"length":41,"parent_index":0},"implemented":true,"statements":[{"id":455,"node_type":75,"src":{"id":456,"line":87,"column":0,"start":2214,"end":2222,"length":9,"parent_index":453}}]}}]}},{"id":457,"node_type":48,"src":{"id":458,"line":91,"column":0,"start":2257,"end":2329,"length":73,"parent_index":346},"condition":{"id":459,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":460,"line":91,"column":12,"start":2261,"end":2280,"length":20,"parent_index":457},"operator":11,"left_expression":{"id":461,"node_type":16,"src":{"id":462,"line":91,"column":12,"start":2261,"end":2266,"length":6,"parent_index":459},"name":"winner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":380,"is_pure":false},"right_expression":{"id":463,"node_type":24,"kind":24,"src":{"id":464,"line":91,"column":22,"start":2271,"end":2280,"length":10,"parent_index":459},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":465,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":466,"line":91,"column":30,"start":2279,"end":2279,"length":1,"parent_index":463},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":467,"node_type":16,"src":{"id":468,"line":91,"column":22,"start":2271,"end":2277,"length":7,"parent_index":463},"type_name":{"id":469,"node_type":30,"src":{"id":470,"line":91,"column":22,"start":2271,"end":2277,"length":7,"parent_index":467},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":471,"node_type":46,"kind":0,"src":{"id":472,"line":91,"column":34,"start":2283,"end":2329,"length":47,"parent_index":334},"implemented":true,"statements":[{"id":473,"node_type":78,"src":{"id":474,"line":92,"column":12,"start":2297,"end":2319,"length":23,"parent_index":334},"arguments":[],"expression":{"id":475,"node_type":16,"src":{"id":476,"line":92,"column":19,"start":2304,"end":2316,"length":13,"parent_index":471},"name":"InvalidWinner","type_description":{"type_identifier":"t_error$_Lottery_InvalidWinner_$123","type_string":"error Lottery.InvalidWinner"},"overloaded_declarations":[],"referenced_declaration":123,"is_pure":false}}]}},{"id":477,"node_type":64,"src":{"id":478,"line":95,"column":8,"start":2340,"end":2368,"length":29,"parent_index":334},"arguments":[{"id":479,"node_type":16,"src":{"id":480,"line":95,"column":29,"start":2361,"end":2366,"length":6,"parent_index":346},"name":"winner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":380,"is_pure":false}],"expression":{"id":481,"node_type":16,"src":{"id":482,"line":95,"column":13,"start":2345,"end":2359,"length":15,"parent_index":346},"name":"LotteryFinished","type_description":{"type_identifier":"t_event\u0026_Lottery_LotteryFinished_\u002691","type_string":"event Lottery.LotteryFinished"},"overloaded_declarations":[],"referenced_declaration":91,"is_pure":false}},{"id":483,"node_type":44,"src":{"id":484,"line":97,"column":8,"start":2379,"end":2418,"length":40,"parent_index":346},"assignments":[485],"declarations":[{"is_constant":false,"id":485,"state_mutability":1,"name":"balance","node_type":44,"scope":346,"src":{"id":486,"line":97,"column":8,"start":2379,"end":2393,"length":15,"parent_index":483},"is_state_variable":false,"storage_location":1,"type_name":{"id":487,"node_type":30,"src":{"id":488,"line":97,"column":8,"start":2379,"end":2385,"length":7,"parent_index":485},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":489,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":490,"line":97,"column":26,"start":2397,"end":2417,"length":21,"parent_index":483},"expression":{"id":491,"node_type":24,"kind":24,"src":{"id":492,"line":97,"column":26,"start":2397,"end":2409,"length":13,"parent_index":483},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"arguments":[{"id":493,"node_type":16,"src":{"id":494,"line":97,"column":34,"start":2405,"end":2408,"length":4,"parent_index":491},"name":"this","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":495,"node_type":16,"src":{"id":496,"line":97,"column":26,"start":2397,"end":2403,"length":7,"parent_index":491},"type_name":{"id":497,"node_type":30,"src":{"id":498,"line":97,"column":26,"start":2397,"end":2403,"length":7,"parent_index":495},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}]},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"balance","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}},{"id":499,"node_type":24,"kind":24,"src":{"id":500,"line":98,"column":8,"start":2428,"end":2460,"length":33,"parent_index":346},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":501,"node_type":16,"src":{"id":502,"line":98,"column":33,"start":2453,"end":2459,"length":7,"parent_index":499},"name":"balance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":483,"is_pure":false}],"expression":{"id":503,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":504,"line":98,"column":8,"start":2428,"end":2451,"length":24,"parent_index":499},"expression":{"id":505,"node_type":84,"src":{"id":506,"line":98,"column":8,"start":2428,"end":2442,"length":15,"parent_index":503},"arguments":[{"id":507,"node_type":16,"src":{"id":508,"line":98,"column":16,"start":2436,"end":2441,"length":6,"parent_index":505},"name":"winner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":380,"is_pure":false}],"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_function_payable$_t_address$","type_string":"function(address) payable"},"payable":true},"member_name":"transfer","argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_function_payable$_t_address$","type_string":"function(address) payable"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":false,"modifiers":[{"id":336,"name":"inState","node_type":72,"kind":72,"src":{"id":337,"line":70,"column":36,"start":1697,"end":1727,"length":31,"parent_index":334},"argument_types":[{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}],"arguments":[{"id":340,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":341,"line":70,"column":44,"start":1705,"end":1726,"length":22,"parent_index":336},"expression":{"id":342,"node_type":16,"src":{"id":343,"line":70,"column":44,"start":1705,"end":1716,"length":12,"parent_index":340},"name":"LotteryState","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"overloaded_declarations":[],"referenced_declaration":42,"is_pure":false},"member_name":"Accepting","argument_types":[],"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}}],"modifier_name":{"id":338,"name":"inState","node_type":0,"src":{"id":339,"line":70,"column":36,"start":1697,"end":1703,"length":7,"parent_index":336}}}],"overrides":[],"parameters":{"id":344,"node_type":43,"src":{"id":335,"line":70,"column":4,"start":1665,"end":2467,"length":803,"parent_index":334},"parameters":[],"parameter_types":[]},"return_parameters":{"id":345,"node_type":43,"src":{"id":335,"line":70,"column":4,"start":1665,"end":2467,"length":803,"parent_index":334},"parameters":[],"parameter_types":[]},"scope":35,"type_description":{"type_identifier":"t_function_","type_string":"function()"}},{"id":510,"name":"owner","node_type":42,"kind":41,"src":{"id":511,"line":101,"column":4,"start":2474,"end":2557,"length":84,"parent_index":35},"body":{"id":524,"node_type":46,"kind":0,"src":{"id":525,"line":101,"column":51,"start":2521,"end":2557,"length":37,"parent_index":510},"implemented":true,"statements":[{"id":526,"node_type":47,"src":{"id":527,"line":102,"column":8,"start":2531,"end":2551,"length":21,"parent_index":510},"function_return_parameters":510,"expression":{"id":528,"node_type":24,"kind":24,"src":{"id":529,"line":102,"column":15,"start":2538,"end":2550,"length":13,"parent_index":524},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"arguments":[{"id":530,"node_type":16,"src":{"id":531,"line":102,"column":23,"start":2546,"end":2549,"length":4,"parent_index":528},"name":"this","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":532,"node_type":16,"src":{"id":533,"line":102,"column":15,"start":2538,"end":2544,"length":7,"parent_index":528},"type_name":{"id":534,"node_type":30,"src":{"id":535,"line":102,"column":15,"start":2538,"end":2544,"length":7,"parent_index":532},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}]},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":512,"node_type":43,"src":{"id":513,"line":101,"column":42,"start":2512,"end":2518,"length":7,"parent_index":510},"parameters":[{"id":514,"node_type":44,"src":{"id":515,"line":101,"column":42,"start":2512,"end":2518,"length":7,"parent_index":512},"scope":510,"name":"","type_name":{"id":516,"node_type":30,"src":{"id":517,"line":101,"column":42,"start":2512,"end":2518,"length":7,"parent_index":514},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":518,"node_type":43,"src":{"id":519,"line":101,"column":42,"start":2512,"end":2518,"length":7,"parent_index":510},"parameters":[{"id":520,"node_type":44,"src":{"id":521,"line":101,"column":42,"start":2512,"end":2518,"length":7,"parent_index":518},"scope":510,"name":"","type_name":{"id":522,"node_type":30,"src":{"id":523,"line":101,"column":42,"start":2512,"end":2518,"length":7,"parent_index":520},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":35,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":537,"name":"balance","node_type":42,"kind":41,"src":{"id":538,"line":105,"column":4,"start":2564,"end":2657,"length":94,"parent_index":35},"body":{"id":551,"node_type":46,"kind":0,"src":{"id":552,"line":105,"column":53,"start":2613,"end":2657,"length":45,"parent_index":537},"implemented":true,"statements":[{"id":553,"node_type":47,"src":{"id":554,"line":106,"column":8,"start":2623,"end":2651,"length":29,"parent_index":537},"function_return_parameters":537,"expression":{"id":555,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":556,"line":106,"column":15,"start":2630,"end":2650,"length":21,"parent_index":551},"expression":{"id":557,"node_type":24,"kind":24,"src":{"id":558,"line":106,"column":15,"start":2630,"end":2642,"length":13,"parent_index":555},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"arguments":[{"id":559,"node_type":16,"src":{"id":560,"line":106,"column":23,"start":2638,"end":2641,"length":4,"parent_index":557},"name":"this","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":561,"node_type":16,"src":{"id":562,"line":106,"column":15,"start":2630,"end":2636,"length":7,"parent_index":557},"type_name":{"id":563,"node_type":30,"src":{"id":564,"line":106,"column":15,"start":2630,"end":2636,"length":7,"parent_index":561},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}]},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"balance","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":539,"node_type":43,"src":{"id":540,"line":105,"column":44,"start":2604,"end":2610,"length":7,"parent_index":537},"parameters":[{"id":541,"node_type":44,"src":{"id":542,"line":105,"column":44,"start":2604,"end":2610,"length":7,"parent_index":539},"scope":537,"name":"","type_name":{"id":543,"node_type":30,"src":{"id":544,"line":105,"column":44,"start":2604,"end":2610,"length":7,"parent_index":541},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":545,"node_type":43,"src":{"id":546,"line":105,"column":44,"start":2604,"end":2610,"length":7,"parent_index":537},"parameters":[{"id":547,"node_type":44,"src":{"id":548,"line":105,"column":44,"start":2604,"end":2610,"length":7,"parent_index":545},"scope":537,"name":"","type_name":{"id":549,"node_type":30,"src":{"id":550,"line":105,"column":44,"start":2604,"end":2610,"length":7,"parent_index":547},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":35,"type_description":{"type_identifier":"t_function_$_t_uint256","type_string":"function(uint256)"}},{"id":566,"name":"checkAllPlayers","node_type":42,"kind":41,"src":{"id":567,"line":110,"column":4,"start":2699,"end":2977,"length":279,"parent_index":35},"body":{"id":580,"node_type":46,"kind":0,"src":{"id":581,"line":110,"column":58,"start":2753,"end":2977,"length":225,"parent_index":566},"implemented":true,"statements":[{"id":582,"node_type":79,"src":{"id":583,"line":111,"column":0,"start":2763,"end":2950,"length":188,"parent_index":580},"initialiser":{"id":584,"node_type":44,"src":{"id":585,"line":111,"column":13,"start":2768,"end":2778,"length":11,"parent_index":580},"assignments":[586],"declarations":[{"is_constant":false,"id":586,"state_mutability":1,"name":"i","node_type":44,"scope":580,"src":{"id":587,"line":111,"column":13,"start":2768,"end":2773,"length":6,"parent_index":584},"is_state_variable":false,"storage_location":1,"type_name":{"id":588,"node_type":30,"src":{"id":589,"line":111,"column":13,"start":2768,"end":2771,"length":4,"parent_index":586},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":590,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":591,"line":111,"column":22,"start":2777,"end":2777,"length":1,"parent_index":584},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}},"condition":{"id":592,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":593,"line":111,"column":25,"start":2780,"end":2805,"length":26,"parent_index":582},"operator":9,"left_expression":{"id":594,"node_type":16,"src":{"id":595,"line":111,"column":25,"start":2780,"end":2780,"length":1,"parent_index":592},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":584,"is_pure":false},"right_expression":{"id":596,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":597,"line":111,"column":29,"start":2784,"end":2805,"length":22,"parent_index":592},"expression":{"id":598,"node_type":16,"src":{"id":599,"line":111,"column":29,"start":2784,"end":2798,"length":15,"parent_index":596},"name":"playerAddresses","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":70,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"closure":{"id":600,"node_type":18,"src":{"id":601,"line":111,"column":53,"start":2808,"end":2810,"length":3,"parent_index":566},"operator":27,"expression":{"id":602,"node_type":16,"src":{"id":603,"line":111,"column":53,"start":2808,"end":2808,"length":1,"parent_index":600},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":584,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"prefix":false,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false},"body":{"id":604,"node_type":46,"kind":0,"src":{"id":605,"line":111,"column":58,"start":2813,"end":2950,"length":138,"parent_index":582},"implemented":true,"statements":[{"id":606,"node_type":48,"src":{"id":607,"line":112,"column":0,"start":2827,"end":2940,"length":114,"parent_index":604},"condition":{"id":608,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":609,"line":112,"column":16,"start":2831,"end":2876,"length":46,"parent_index":606},"operator":11,"left_expression":{"id":610,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":611,"line":112,"column":16,"start":2831,"end":2862,"length":32,"parent_index":608},"expression":{"id":612,"node_type":22,"src":{"id":613,"line":112,"column":16,"start":2831,"end":2857,"length":27,"parent_index":610},"index_expression":{"id":614,"node_type":16,"src":{"id":615,"line":112,"column":16,"start":2831,"end":2837,"length":7,"parent_index":612},"name":"players","type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},"overloaded_declarations":[],"referenced_declaration":58,"is_pure":false},"base_expression":{"id":616,"node_type":22,"src":{"id":617,"line":112,"column":24,"start":2839,"end":2856,"length":18,"parent_index":612},"index_expression":{"id":618,"node_type":16,"src":{"id":619,"line":112,"column":24,"start":2839,"end":2853,"length":15,"parent_index":616},"name":"playerAddresses","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":70,"is_pure":false},"base_expression":{"id":620,"node_type":16,"src":{"id":621,"line":112,"column":40,"start":2855,"end":2855,"length":1,"parent_index":616},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":584,"is_pure":false},"type_descriptions":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"}},"member_name":"addr","argument_types":[],"type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"}},"right_expression":{"id":622,"node_type":24,"kind":24,"src":{"id":623,"line":112,"column":52,"start":2867,"end":2876,"length":10,"parent_index":608},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":624,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":625,"line":112,"column":60,"start":2875,"end":2875,"length":1,"parent_index":622},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":626,"node_type":16,"src":{"id":627,"line":112,"column":52,"start":2867,"end":2873,"length":7,"parent_index":622},"type_name":{"id":628,"node_type":30,"src":{"id":629,"line":112,"column":52,"start":2867,"end":2873,"length":7,"parent_index":626},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":630,"node_type":46,"kind":0,"src":{"id":631,"line":112,"column":64,"start":2879,"end":2940,"length":62,"parent_index":582},"implemented":true,"statements":[{"id":632,"node_type":78,"src":{"id":633,"line":113,"column":16,"start":2897,"end":2926,"length":30,"parent_index":582},"arguments":[],"expression":{"id":634,"node_type":16,"src":{"id":635,"line":113,"column":23,"start":2904,"end":2923,"length":20,"parent_index":630},"name":"InvalidPlayerAddress","type_description":{"type_identifier":"t_error$_Lottery_InvalidPlayerAddress_$127","type_string":"error Lottery.InvalidPlayerAddress"},"overloaded_declarations":[],"referenced_declaration":127,"is_pure":false}}]}}]}},{"id":636,"node_type":47,"src":{"id":637,"line":116,"column":8,"start":2960,"end":2971,"length":12,"parent_index":566},"function_return_parameters":566,"expression":{"id":638,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":639,"line":116,"column":15,"start":2967,"end":2970,"length":4,"parent_index":580},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":568,"node_type":43,"src":{"id":569,"line":110,"column":52,"start":2747,"end":2750,"length":4,"parent_index":566},"parameters":[{"id":570,"node_type":44,"src":{"id":571,"line":110,"column":52,"start":2747,"end":2750,"length":4,"parent_index":568},"scope":566,"name":"","type_name":{"id":572,"node_type":30,"src":{"id":573,"line":110,"column":52,"start":2747,"end":2750,"length":4,"parent_index":570},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"return_parameters":{"id":574,"node_type":43,"src":{"id":575,"line":110,"column":52,"start":2747,"end":2750,"length":4,"parent_index":566},"parameters":[{"id":576,"node_type":44,"src":{"id":577,"line":110,"column":52,"start":2747,"end":2750,"length":4,"parent_index":574},"scope":566,"name":"","type_name":{"id":578,"node_type":30,"src":{"id":579,"line":110,"column":52,"start":2747,"end":2750,"length":4,"parent_index":576},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":35,"type_description":{"type_identifier":"t_function_$_t_bool","type_string":"function(bool)"}},{"id":641,"name":"requireOwner","node_type":42,"kind":41,"src":{"id":642,"line":120,"column":4,"start":3017,"end":3145,"length":129,"parent_index":35},"body":{"id":645,"node_type":46,"kind":0,"src":{"id":646,"line":120,"column":40,"start":3053,"end":3145,"length":93,"parent_index":641},"implemented":true,"statements":[{"id":647,"node_type":48,"src":{"id":648,"line":121,"column":0,"start":3063,"end":3139,"length":77,"parent_index":645},"condition":{"id":649,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":650,"line":121,"column":12,"start":3067,"end":3087,"length":21,"parent_index":647},"operator":12,"left_expression":{"id":651,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":652,"line":121,"column":12,"start":3067,"end":3076,"length":10,"parent_index":649},"expression":{"id":653,"node_type":16,"src":{"id":654,"line":121,"column":12,"start":3067,"end":3069,"length":3,"parent_index":651},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"right_expression":{"id":655,"node_type":24,"kind":24,"src":{"id":656,"line":121,"column":26,"start":3081,"end":3087,"length":7,"parent_index":649},"argument_types":[],"arguments":[],"expression":{"id":657,"node_type":16,"src":{"id":658,"line":121,"column":26,"start":3081,"end":3085,"length":5,"parent_index":655},"name":"owner","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":659,"node_type":46,"kind":0,"src":{"id":660,"line":121,"column":35,"start":3090,"end":3139,"length":50,"parent_index":641},"implemented":true,"statements":[{"id":661,"node_type":78,"src":{"id":662,"line":122,"column":12,"start":3104,"end":3129,"length":26,"parent_index":641},"arguments":[],"expression":{"id":663,"node_type":16,"src":{"id":664,"line":122,"column":19,"start":3111,"end":3126,"length":16,"parent_index":659},"name":"OnlyOwnerCanCall","type_description":{"type_identifier":"t_error$_Lottery_OnlyOwnerCanCall_$131","type_string":"error Lottery.OnlyOwnerCanCall"},"overloaded_declarations":[],"referenced_declaration":131,"is_pure":false}}]}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":643,"node_type":43,"src":{"id":642,"line":120,"column":4,"start":3017,"end":3145,"length":129,"parent_index":641},"parameters":[],"parameter_types":[]},"return_parameters":{"id":644,"node_type":43,"src":{"id":642,"line":120,"column":4,"start":3017,"end":3145,"length":129,"parent_index":641},"parameters":[],"parameter_types":[]},"scope":35,"type_description":{"type_identifier":"t_function_","type_string":"function()"}},{"id":666,"name":"callExternalFunction","node_type":42,"kind":41,"src":{"id":667,"line":126,"column":4,"start":3152,"end":3521,"length":370,"parent_index":35},"body":{"id":675,"node_type":46,"kind":0,"src":{"id":676,"line":126,"column":74,"start":3222,"end":3521,"length":300,"parent_index":666},"implemented":true,"statements":[{"id":677,"node_type":44,"src":{"id":678,"line":127,"column":8,"start":3232,"end":3302,"length":71,"parent_index":675},"assignments":[679],"declarations":[{"is_constant":false,"id":679,"state_mutability":1,"name":"dummyContract","node_type":44,"scope":675,"src":{"id":680,"line":127,"column":8,"start":3232,"end":3259,"length":28,"parent_index":677},"is_state_variable":false,"storage_location":1,"type_name":{"id":681,"node_type":69,"src":{"id":682,"line":127,"column":8,"start":3232,"end":3245,"length":14,"parent_index":679},"type_description":{"type_identifier":"t_contract$_IDummyContract_$10","type_string":"contract IDummyContract"},"path_node":{"id":683,"name":"IDummyContract","node_type":52,"referenced_declaration":10,"src":{"id":684,"line":127,"column":8,"start":3232,"end":3245,"length":14,"parent_index":681}},"referenced_declaration":10},"visibility":1}],"initial_value":{"id":685,"node_type":24,"kind":24,"src":{"id":686,"line":127,"column":39,"start":3263,"end":3301,"length":39,"parent_index":677},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":687,"node_type":16,"src":{"id":688,"line":127,"column":54,"start":3278,"end":3300,"length":23,"parent_index":685},"name":"externalContractAddress","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":687,"is_pure":false}],"expression":{"id":689,"node_type":16,"src":{"id":690,"line":127,"column":39,"start":3263,"end":3276,"length":14,"parent_index":685},"name":"IDummyContract","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}},{"id":691,"node_type":85,"src":{"id":692,"line":129,"column":0,"start":3313,"end":3515,"length":203,"parent_index":675},"body":{"id":699,"node_type":46,"kind":0,"src":{"id":700,"line":129,"column":42,"start":3347,"end":3400,"length":54,"parent_index":691},"implemented":true,"statements":[{"id":701,"node_type":64,"src":{"id":702,"line":130,"column":12,"start":3361,"end":3390,"length":30,"parent_index":691},"arguments":[],"expression":{"id":703,"node_type":16,"src":{"id":704,"line":130,"column":17,"start":3366,"end":3387,"length":22,"parent_index":699},"name":"ExternalCallSuccessful","type_description":{"type_identifier":"t_event\u0026_Lottery_ExternalCallSuccessful_\u002699","type_string":"event Lottery.ExternalCallSuccessful"},"overloaded_declarations":[],"referenced_declaration":99,"is_pure":false}}]},"kind":86,"expression":{"id":693,"node_type":24,"kind":24,"src":{"id":694,"line":129,"column":12,"start":3317,"end":3345,"length":29,"parent_index":691},"argument_types":[],"arguments":[],"expression":{"id":695,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":696,"line":129,"column":12,"start":3317,"end":3343,"length":27,"parent_index":693},"expression":{"id":697,"node_type":16,"src":{"id":698,"line":129,"column":12,"start":3317,"end":3329,"length":13,"parent_index":695},"name":"dummyContract","type_description":{"type_identifier":"t_contract$_IDummyContract_$10","type_string":"contract IDummyContract"},"overloaded_declarations":[],"referenced_declaration":677,"is_pure":false},"member_name":"dummyFunction","argument_types":[],"type_description":{"type_identifier":"t_contract$_IDummyContract_$10","type_string":"contract IDummyContract"}},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"clauses":[{"id":0,"node_type":87,"kind":88,"src":{"id":705,"line":131,"column":0,"start":3402,"end":3515,"length":114,"parent_index":691},"body":{"id":712,"node_type":46,"kind":0,"src":{"id":713,"line":131,"column":48,"start":3440,"end":3515,"length":76,"parent_index":0},"implemented":true,"statements":[{"id":714,"node_type":64,"src":{"id":715,"line":132,"column":12,"start":3454,"end":3505,"length":52,"parent_index":0},"arguments":[{"id":716,"node_type":17,"kind":50,"value":"External contract failed","hex_value":"45787465726e616c20636f6e7472616374206661696c6564","src":{"id":717,"line":132,"column":36,"start":3478,"end":3503,"length":26,"parent_index":712},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"External contract failed\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":718,"node_type":16,"src":{"id":719,"line":132,"column":17,"start":3459,"end":3476,"length":18,"parent_index":712},"name":"ExternalCallFailed","type_description":{"type_identifier":"t_event\u0026_Lottery_ExternalCallFailed_\u0026103","type_string":"event Lottery.ExternalCallFailed"},"overloaded_declarations":[],"referenced_declaration":103,"is_pure":false}}]},"parameters":{"id":706,"node_type":43,"src":{"id":707,"line":131,"column":17,"start":3409,"end":3420,"length":12,"parent_index":0},"parameters":[{"id":708,"node_type":44,"src":{"id":709,"line":131,"column":17,"start":3409,"end":3420,"length":12,"parent_index":706},"name":"","type_name":{"id":710,"node_type":30,"src":{"id":711,"line":131,"column":17,"start":3409,"end":3413,"length":5,"parent_index":708},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]}}]}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":668,"node_type":43,"src":{"id":669,"line":126,"column":34,"start":3182,"end":3212,"length":31,"parent_index":666},"parameters":[{"id":670,"node_type":44,"src":{"id":671,"line":126,"column":34,"start":3182,"end":3212,"length":31,"parent_index":668},"scope":666,"name":"externalContractAddress","type_name":{"id":672,"node_type":30,"src":{"id":673,"line":126,"column":34,"start":3182,"end":3188,"length":7,"parent_index":670},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":674,"node_type":43,"src":{"id":667,"line":126,"column":4,"start":3152,"end":3521,"length":370,"parent_index":666},"parameters":[],"parameter_types":[]},"scope":35,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":721,"name":"integerToString","node_type":42,"kind":41,"src":{"id":722,"line":136,"column":4,"start":3528,"end":4071,"length":544,"parent_index":35},"body":{"id":735,"node_type":46,"kind":0,"src":{"id":736,"line":137,"column":32,"start":3609,"end":4071,"length":463,"parent_index":721},"implemented":true,"statements":[{"id":737,"node_type":48,"src":{"id":738,"line":139,"column":0,"start":3628,"end":3675,"length":48,"parent_index":735},"condition":{"id":739,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":740,"line":139,"column":12,"start":3632,"end":3638,"length":7,"parent_index":737},"operator":11,"left_expression":{"id":741,"node_type":16,"src":{"id":742,"line":139,"column":12,"start":3632,"end":3633,"length":2,"parent_index":739},"name":"_i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":741,"is_pure":false},"right_expression":{"id":743,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":744,"line":139,"column":18,"start":3638,"end":3638,"length":1,"parent_index":739},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":745,"node_type":46,"kind":0,"src":{"id":746,"line":139,"column":21,"start":3641,"end":3675,"length":35,"parent_index":721},"implemented":true,"statements":[{"id":747,"node_type":47,"src":{"id":748,"line":140,"column":12,"start":3655,"end":3665,"length":11,"parent_index":721},"function_return_parameters":721,"expression":{"id":749,"node_type":17,"kind":50,"value":"0","hex_value":"30","src":{"id":750,"line":140,"column":19,"start":3662,"end":3664,"length":3,"parent_index":745},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"0\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]}},{"id":751,"node_type":44,"src":{"id":752,"line":142,"column":8,"start":3685,"end":3696,"length":12,"parent_index":735},"assignments":[753],"declarations":[{"is_constant":false,"id":753,"state_mutability":1,"name":"j","node_type":44,"scope":735,"src":{"id":754,"line":142,"column":8,"start":3685,"end":3690,"length":6,"parent_index":751},"is_state_variable":false,"storage_location":1,"type_name":{"id":755,"node_type":30,"src":{"id":756,"line":142,"column":8,"start":3685,"end":3688,"length":4,"parent_index":753},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":757,"node_type":16,"src":{"id":758,"line":142,"column":17,"start":3694,"end":3695,"length":2,"parent_index":751},"name":"_i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":757,"is_pure":false}},{"id":759,"node_type":44,"src":{"id":760,"line":143,"column":8,"start":3706,"end":3714,"length":9,"parent_index":735},"assignments":[761],"declarations":[{"is_constant":false,"id":761,"state_mutability":1,"name":"len","node_type":44,"scope":735,"src":{"id":762,"line":143,"column":8,"start":3706,"end":3713,"length":8,"parent_index":759},"is_state_variable":false,"storage_location":1,"type_name":{"id":763,"node_type":30,"src":{"id":764,"line":143,"column":8,"start":3706,"end":3709,"length":4,"parent_index":761},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}]},{"id":0,"node_type":73,"kind":83,"src":{"id":765,"line":145,"column":0,"start":3733,"end":3798,"length":66,"parent_index":735},"condition":{"id":766,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":767,"line":145,"column":15,"start":3740,"end":3745,"length":6,"parent_index":0},"operator":12,"left_expression":{"id":768,"node_type":16,"src":{"id":769,"line":145,"column":15,"start":3740,"end":3740,"length":1,"parent_index":766},"name":"j","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":751,"is_pure":false},"right_expression":{"id":770,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":771,"line":145,"column":20,"start":3745,"end":3745,"length":1,"parent_index":766},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":772,"node_type":46,"kind":0,"src":{"id":773,"line":145,"column":23,"start":3748,"end":3798,"length":51,"parent_index":0},"implemented":true,"statements":[{"id":774,"node_type":18,"src":{"id":775,"line":146,"column":12,"start":3762,"end":3766,"length":5,"parent_index":0},"operator":27,"expression":{"id":776,"node_type":16,"src":{"id":777,"line":146,"column":12,"start":3762,"end":3764,"length":3,"parent_index":774},"name":"len","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":759,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"prefix":false,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false},{"id":778,"node_type":81,"src":{"id":779,"line":147,"column":12,"start":3781,"end":3788,"length":8,"parent_index":772},"expression":{"id":780,"node_type":27,"src":{"id":781,"line":147,"column":12,"start":3781,"end":3787,"length":7,"parent_index":772},"operator":4,"left_expression":{"id":782,"node_type":16,"src":{"id":783,"line":147,"column":12,"start":3781,"end":3781,"length":1,"parent_index":780},"name":"j","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":751,"is_pure":false},"right_expression":{"id":784,"node_type":17,"kind":49,"value":"10","hex_value":"3130","src":{"id":785,"line":147,"column":17,"start":3786,"end":3787,"length":2,"parent_index":780},"type_description":{"type_identifier":"t_rational_10_by_1","type_string":"int_const 10"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]}},{"id":786,"node_type":44,"src":{"id":787,"line":149,"column":8,"start":3808,"end":3842,"length":35,"parent_index":735},"assignments":[788],"declarations":[{"is_constant":false,"id":788,"state_mutability":1,"name":"bstr","node_type":44,"scope":735,"src":{"id":789,"line":149,"column":8,"start":3808,"end":3824,"length":17,"parent_index":786},"is_state_variable":false,"storage_location":2,"type_name":{"id":790,"node_type":30,"src":{"id":791,"line":149,"column":8,"start":3808,"end":3812,"length":5,"parent_index":788},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":792,"node_type":24,"kind":24,"src":{"id":793,"line":149,"column":28,"start":3828,"end":3841,"length":14,"parent_index":786},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":794,"node_type":16,"src":{"id":795,"line":149,"column":38,"start":3838,"end":3840,"length":3,"parent_index":792},"name":"len","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":759,"is_pure":false}],"expression":{"id":796,"node_type":25,"src":{"id":797,"line":149,"column":28,"start":3828,"end":3836,"length":9,"parent_index":792},"argument_types":[],"type_name":{"id":798,"node_type":30,"src":{"id":799,"line":149,"column":32,"start":3832,"end":3836,"length":5,"parent_index":796},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"type_description":{"type_identifier":"t_bytes","type_string":"bytes"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}}},{"id":800,"node_type":44,"src":{"id":801,"line":150,"column":8,"start":3852,"end":3868,"length":17,"parent_index":735},"assignments":[802],"declarations":[{"is_constant":false,"id":802,"state_mutability":1,"name":"k","node_type":44,"scope":735,"src":{"id":803,"line":150,"column":8,"start":3852,"end":3857,"length":6,"parent_index":800},"is_state_variable":false,"storage_location":1,"type_name":{"id":804,"node_type":30,"src":{"id":805,"line":150,"column":8,"start":3852,"end":3855,"length":4,"parent_index":802},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":806,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":807,"line":150,"column":17,"start":3861,"end":3867,"length":7,"parent_index":800},"operator":2,"left_expression":{"id":808,"node_type":16,"src":{"id":809,"line":150,"column":17,"start":3861,"end":3863,"length":3,"parent_index":806},"name":"len","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":759,"is_pure":false},"right_expression":{"id":810,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":811,"line":150,"column":23,"start":3867,"end":3867,"length":1,"parent_index":806},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":812,"node_type":76,"src":{"id":813,"line":152,"column":0,"start":3887,"end":4036,"length":150,"parent_index":735},"condition":{"id":814,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":815,"line":156,"column":15,"start":4028,"end":4034,"length":7,"parent_index":735},"operator":12,"left_expression":{"id":816,"node_type":16,"src":{"id":817,"line":156,"column":15,"start":4028,"end":4029,"length":2,"parent_index":814},"name":"_i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":816,"is_pure":false},"right_expression":{"id":818,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":819,"line":156,"column":21,"start":4034,"end":4034,"length":1,"parent_index":814},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":820,"node_type":46,"kind":0,"src":{"id":821,"line":152,"column":11,"start":3890,"end":4011,"length":122,"parent_index":812},"implemented":true,"statements":[{"id":822,"node_type":81,"src":{"id":823,"line":153,"column":12,"start":3940,"end":3979,"length":40,"parent_index":820},"expression":{"id":824,"node_type":27,"src":{"id":825,"line":153,"column":12,"start":3940,"end":3978,"length":39,"parent_index":820},"operator":11,"left_expression":{"id":826,"node_type":22,"src":{"id":827,"line":153,"column":12,"start":3940,"end":3948,"length":9,"parent_index":824},"index_expression":{"id":828,"node_type":16,"src":{"id":829,"line":153,"column":12,"start":3940,"end":3943,"length":4,"parent_index":826},"name":"bstr","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":786,"is_pure":false},"base_expression":{"id":830,"node_type":18,"src":{"id":831,"line":153,"column":17,"start":3945,"end":3947,"length":3,"parent_index":812},"operator":28,"expression":{"id":832,"node_type":16,"src":{"id":833,"line":153,"column":17,"start":3945,"end":3945,"length":1,"parent_index":830},"name":"k","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":800,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"prefix":false,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false},"type_descriptions":[{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_bytes","type_string":"bytes"}},"right_expression":{"id":834,"node_type":24,"kind":24,"src":{"id":835,"line":153,"column":24,"start":3952,"end":3978,"length":27,"parent_index":824},"argument_types":[{"type_identifier":"t_function_$_t_rational_48_by_1$","type_string":"function(int_const 48)"}],"arguments":[{"id":836,"node_type":24,"kind":24,"src":{"id":837,"line":153,"column":31,"start":3959,"end":3977,"length":19,"parent_index":834},"argument_types":[{"type_identifier":"t_rational_48_by_1","type_string":"int_const 48"}],"arguments":[{"id":838,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":839,"line":153,"column":37,"start":3965,"end":3976,"length":12,"parent_index":836},"operator":1,"left_expression":{"id":840,"node_type":17,"kind":49,"value":"48","hex_value":"3438","src":{"id":841,"line":153,"column":37,"start":3965,"end":3966,"length":2,"parent_index":838},"type_description":{"type_identifier":"t_rational_48_by_1","type_string":"int_const 48"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"right_expression":{"id":842,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":843,"line":153,"column":42,"start":3970,"end":3976,"length":7,"parent_index":838},"operator":5,"left_expression":{"id":844,"node_type":16,"src":{"id":845,"line":153,"column":42,"start":3970,"end":3971,"length":2,"parent_index":842},"name":"_i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":741,"is_pure":false},"right_expression":{"id":846,"node_type":17,"kind":49,"value":"10","hex_value":"3130","src":{"id":847,"line":153,"column":47,"start":3975,"end":3976,"length":2,"parent_index":842},"type_description":{"type_identifier":"t_rational_10_by_1","type_string":"int_const 10"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_rational_48_by_1","type_string":"int_const 48"}}],"expression":{"id":848,"node_type":16,"src":{"id":849,"line":153,"column":31,"start":3959,"end":3963,"length":5,"parent_index":836},"type_name":{"id":850,"node_type":30,"src":{"id":851,"line":153,"column":31,"start":3959,"end":3963,"length":5,"parent_index":848},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_48_by_1","type_string":"function(int_const 48)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_48_by_1","type_string":"int_const 48"}]},"type_description":{"type_identifier":"t_function_$_t_rational_48_by_1$","type_string":"function(int_const 48)"}}],"expression":{"id":852,"node_type":16,"src":{"id":853,"line":153,"column":24,"start":3952,"end":3957,"length":6,"parent_index":834},"type_name":{"id":854,"node_type":30,"src":{"id":855,"line":153,"column":24,"start":3952,"end":3957,"length":6,"parent_index":852},"name":"bytes1","type_description":{"type_identifier":"t_bytes1","type_string":"bytes1"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_function_$_t_rational_48_by_1$","type_string":"function(function(int_const 48))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_rational_48_by_1$","type_string":"function(int_const 48)"}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_rational_48_by_1$$","type_string":"function(function(int_const 48))"}},"type_description":{"type_identifier":"t_bytes","type_string":"bytes"}}},{"id":856,"node_type":81,"src":{"id":857,"line":154,"column":12,"start":3993,"end":4001,"length":9,"parent_index":820},"expression":{"id":858,"node_type":27,"src":{"id":859,"line":154,"column":12,"start":3993,"end":4000,"length":8,"parent_index":820},"operator":4,"left_expression":{"id":860,"node_type":16,"src":{"id":861,"line":154,"column":12,"start":3993,"end":3994,"length":2,"parent_index":858},"name":"_i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":741,"is_pure":false},"right_expression":{"id":862,"node_type":17,"kind":49,"value":"10","hex_value":"3130","src":{"id":863,"line":154,"column":18,"start":3999,"end":4000,"length":2,"parent_index":858},"type_description":{"type_identifier":"t_rational_10_by_1","type_string":"int_const 10"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"referenced_declaration":741,"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]}},{"id":864,"node_type":47,"src":{"id":865,"line":157,"column":8,"start":4046,"end":4065,"length":20,"parent_index":721},"function_return_parameters":721,"expression":{"id":866,"node_type":24,"kind":24,"src":{"id":867,"line":157,"column":15,"start":4053,"end":4064,"length":12,"parent_index":735},"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":868,"node_type":16,"src":{"id":869,"line":157,"column":22,"start":4060,"end":4063,"length":4,"parent_index":866},"name":"bstr","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":786,"is_pure":false}],"expression":{"id":870,"node_type":16,"src":{"id":871,"line":157,"column":15,"start":4053,"end":4058,"length":6,"parent_index":866},"type_name":{"id":872,"node_type":30,"src":{"id":873,"line":157,"column":15,"start":4053,"end":4058,"length":6,"parent_index":870},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_bytes","type_string":"function(bytes)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":723,"node_type":43,"src":{"id":724,"line":136,"column":29,"start":3553,"end":3559,"length":7,"parent_index":721},"parameters":[{"id":725,"node_type":44,"src":{"id":726,"line":136,"column":29,"start":3553,"end":3559,"length":7,"parent_index":723},"scope":721,"name":"_i","type_name":{"id":727,"node_type":30,"src":{"id":728,"line":136,"column":29,"start":3553,"end":3556,"length":4,"parent_index":725},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":729,"node_type":43,"src":{"id":730,"line":137,"column":17,"start":3594,"end":3606,"length":13,"parent_index":721},"parameters":[{"id":731,"node_type":44,"src":{"id":732,"line":137,"column":17,"start":3594,"end":3606,"length":13,"parent_index":729},"scope":721,"name":"","type_name":{"id":733,"node_type":30,"src":{"id":734,"line":137,"column":17,"start":3594,"end":3599,"length":6,"parent_index":731},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"scope":35,"type_description":{"type_identifier":"t_function_$_t_uint256","type_string":"function(uint256)"}},{"id":875,"name":"dummyFunctionAssembly","node_type":42,"kind":41,"src":{"id":876,"line":160,"column":4,"start":4078,"end":4232,"length":155,"parent_index":35},"body":{"id":889,"node_type":46,"kind":0,"src":{"id":890,"line":160,"column":74,"start":4148,"end":4232,"length":85,"parent_index":875},"implemented":true,"statements":[{"id":891,"node_type":89,"src":{"id":892,"line":161,"column":8,"start":4158,"end":4226,"length":69,"parent_index":889},"body":{"id":894,"node_type":90,"kind":0,"src":{"id":892,"line":161,"column":8,"start":4158,"end":4226,"length":69,"parent_index":891},"implemented":false,"statements":[{"id":893,"node_type":91,"src":{"id":895,"line":162,"column":12,"start":4181,"end":4199,"length":19,"parent_index":891},"body":[]}]}}]},"implemented":true,"visibility":3,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":877,"node_type":43,"src":{"id":878,"line":160,"column":58,"start":4132,"end":4145,"length":14,"parent_index":875},"parameters":[{"id":879,"node_type":44,"src":{"id":880,"line":160,"column":58,"start":4132,"end":4145,"length":14,"parent_index":877},"scope":875,"name":"result","type_name":{"id":881,"node_type":30,"src":{"id":882,"line":160,"column":58,"start":4132,"end":4138,"length":7,"parent_index":879},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":883,"node_type":43,"src":{"id":884,"line":160,"column":58,"start":4132,"end":4145,"length":14,"parent_index":875},"parameters":[{"id":885,"node_type":44,"src":{"id":886,"line":160,"column":58,"start":4132,"end":4145,"length":14,"parent_index":883},"scope":875,"name":"result","type_name":{"id":887,"node_type":30,"src":{"id":888,"line":160,"column":58,"start":4132,"end":4138,"length":7,"parent_index":885},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":35,"type_description":{"type_identifier":"t_function_$_t_uint256","type_string":"function(uint256)"}}],"linearized_base_contracts":[35],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":32,"line":8,"column":0,"start":141,"end":4473,"length":4333,"parent_index":9}}],"comments":[{"id":1,"src":{"id":0,"line":1,"column":0,"start":0,"end":30,"length":31,"parent_index":2},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":2,"src":{"id":0,"line":26,"column":4,"start":621,"end":643,"length":23,"parent_index":3},"node_type":31,"text":"// Define custom errors"},{"id":3,"src":{"id":0,"line":85,"column":12,"start":2132,"end":2162,"length":31,"parent_index":4},"node_type":31,"text":"// Odd numbers to continue loop"},{"id":4,"src":{"id":0,"line":109,"column":4,"start":2664,"end":2693,"length":30,"parent_index":5},"node_type":31,"text":"// New function using for loop"},{"id":5,"src":{"id":0,"line":119,"column":4,"start":2984,"end":3011,"length":28,"parent_index":6},"node_type":31,"text":"// New function using revert"},{"id":6,"src":{"id":0,"line":131,"column":30,"start":3422,"end":3437,"length":16,"parent_index":7},"node_type":32,"text":"/*lowLevelData*/"},{"id":7,"src":{"id":0,"line":152,"column":31,"start":3910,"end":3926,"length":17,"parent_index":8},"node_type":31,"text":"// do while loop"},{"id":8,"src":{"id":0,"line":166,"column":4,"start":4239,"end":4471,"length":233,"parent_index":9},"node_type":32,"text":"/** \n function dummyFunctionYul() public pure returns (uint256 result) {\n assembly {\n // Yul code\n let x := calldataload(0)\n let y := add(x, 1)\n result := y\n }\n }\n */"}]} \ No newline at end of file +{"id":9,"node_type":80,"entry_source_unit":31,"root":[{"id":10,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":10,"name":"IDummyContract","absolute_path":""}],"absolute_path":"","name":"IDummyContract","node_type":1,"nodes":[{"id":12,"node_type":10,"src":{"id":13,"line":2,"column":0,"start":32,"end":54,"length":23,"parent_index":10},"literals":["pragma","solidity","^","0",".","8",".","4",";"],"text":"pragma solidity ^0.8.4;"},{"id":14,"name":"IDummyContract","node_type":35,"src":{"id":0,"line":4,"column":0,"start":57,"end":138,"length":82,"parent_index":10},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":16,"name":"dummyFunction","node_type":42,"kind":41,"src":{"id":17,"line":5,"column":4,"start":88,"end":136,"length":49,"parent_index":14},"body":{"id":30,"node_type":46,"kind":0,"src":{"id":17,"line":5,"column":4,"start":88,"end":136,"length":49,"parent_index":16},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":18,"node_type":43,"src":{"id":19,"line":5,"column":47,"start":131,"end":134,"length":4,"parent_index":16},"parameters":[{"id":20,"node_type":44,"src":{"id":21,"line":5,"column":47,"start":131,"end":134,"length":4,"parent_index":18},"scope":16,"name":"","type_name":{"id":22,"node_type":30,"src":{"id":23,"line":5,"column":47,"start":131,"end":134,"length":4,"parent_index":20},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"return_parameters":{"id":24,"node_type":43,"src":{"id":25,"line":5,"column":47,"start":131,"end":134,"length":4,"parent_index":16},"parameters":[{"id":26,"node_type":44,"src":{"id":27,"line":5,"column":47,"start":131,"end":134,"length":4,"parent_index":24},"scope":16,"name":"","type_name":{"id":28,"node_type":30,"src":{"id":29,"line":5,"column":47,"start":131,"end":134,"length":4,"parent_index":26},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":14,"type_description":{"type_identifier":"t_function_$_t_bool$","type_string":"function(bool)"}}],"linearized_base_contracts":[14],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":11,"line":4,"column":0,"start":57,"end":138,"length":82,"parent_index":9}},{"id":31,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":31,"name":"Lottery","absolute_path":"Lottery.sol"}],"absolute_path":"Lottery.sol","name":"Lottery","node_type":1,"nodes":[{"id":33,"node_type":10,"src":{"id":34,"line":2,"column":0,"start":32,"end":54,"length":23,"parent_index":31},"literals":["pragma","solidity","^","0",".","8",".","4",";"],"text":"pragma solidity ^0.8.4;"},{"id":35,"name":"Lottery","node_type":35,"src":{"id":0,"line":8,"column":0,"start":141,"end":4473,"length":4333,"parent_index":31},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":37,"name":"DUMMY_CONSTANT","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":38,"line":9,"column":4,"start":164,"end":210,"length":47,"parent_index":35},"scope":35,"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"visibility":3,"storage_location":1,"mutability":1,"type_name":{"id":39,"node_type":30,"src":{"id":40,"line":9,"column":4,"start":164,"end":170,"length":7,"parent_index":37},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0}},{"id":42,"node_type":66,"src":{"id":43,"line":11,"column":4,"start":217,"end":257,"length":40,"parent_index":35},"name":"LotteryState","canonical_name":"Lottery.LotteryState","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"members":[{"id":44,"node_type":15,"src":{"id":0,"line":11,"column":24,"start":237,"end":245,"length":8,"parent_index":42},"name":"Accepting","type_description":{"type_identifier":"t_enum_$_LotteryState$_Accepting_$44","type_string":"enum Lottery.LotteryState.Accepting"}},{"id":45,"node_type":15,"src":{"id":0,"line":11,"column":35,"start":248,"end":255,"length":7,"parent_index":42},"name":"Finished","type_description":{"type_identifier":"t_enum_$_LotteryState$_Finished_$45","type_string":"enum Lottery.LotteryState.Finished"}}]},{"id":47,"node_type":67,"src":{"id":48,"line":12,"column":4,"start":263,"end":334,"length":72,"parent_index":31},"name":"Player","canonical_name":"Lottery.Player","type_description":{"type_identifier":"t_struct$_Lottery_Player_$47","type_string":"struct Lottery.Player"},"members":[{"id":49,"node_type":44,"src":{"id":50,"line":13,"column":8,"start":287,"end":299,"length":13,"parent_index":47},"scope":35,"name":"addr","type_name":{"id":51,"node_type":30,"src":{"id":52,"line":13,"column":8,"start":287,"end":293,"length":7,"parent_index":49},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":53,"node_type":44,"src":{"id":54,"line":14,"column":8,"start":309,"end":328,"length":20,"parent_index":47},"scope":35,"name":"ticketCount","type_name":{"id":55,"node_type":30,"src":{"id":56,"line":14,"column":8,"start":309,"end":315,"length":7,"parent_index":53},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":58,"name":"players","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":59,"line":16,"column":4,"start":340,"end":381,"length":42,"parent_index":35},"scope":35,"type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},"visibility":3,"storage_location":1,"mutability":1,"type_name":{"id":60,"node_type":69,"src":{"id":66,"line":16,"column":23,"start":359,"end":364,"length":6,"parent_index":60},"name":"Player","type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},"key_type":{"id":62,"node_type":30,"src":{"id":63,"line":16,"column":12,"start":348,"end":354,"length":7,"parent_index":60},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0},"value_type":{"id":64,"node_type":30,"src":{"id":65,"line":16,"column":23,"start":359,"end":364,"length":6,"parent_index":60},"name":"Player","type_description":{"type_identifier":"t_struct$_Lottery_Player_$47","type_string":"struct Lottery.Player"},"referenced_declaration":47},"path_node":{"id":67,"name":"Player","node_type":52,"referenced_declaration":47,"src":{"id":68,"line":16,"column":23,"start":359,"end":364,"length":6,"parent_index":60}},"referenced_declaration":47}},{"id":70,"name":"playerAddresses","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":71,"line":17,"column":4,"start":387,"end":419,"length":33,"parent_index":35},"scope":35,"type_description":{"type_identifier":"t_address","type_string":"address"},"visibility":3,"storage_location":1,"mutability":1,"type_name":{"id":72,"node_type":16,"src":{"id":74,"line":17,"column":4,"start":387,"end":393,"length":7,"parent_index":70},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0}},{"id":76,"name":"state","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":77,"line":19,"column":4,"start":426,"end":451,"length":26,"parent_index":35},"scope":35,"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"visibility":3,"storage_location":1,"mutability":1,"type_name":{"id":78,"node_type":69,"src":{"id":79,"line":19,"column":4,"start":426,"end":437,"length":12,"parent_index":76},"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"path_node":{"id":80,"name":"LotteryState","node_type":52,"referenced_declaration":42,"src":{"id":81,"line":19,"column":4,"start":426,"end":437,"length":12,"parent_index":78}},"referenced_declaration":42}},{"id":83,"node_type":57,"src":{"id":84,"line":21,"column":4,"start":458,"end":490,"length":33,"parent_index":35},"parameters":{"id":85,"node_type":43,"src":{"id":84,"line":21,"column":4,"start":458,"end":490,"length":33,"parent_index":83},"parameters":[{"id":86,"node_type":44,"src":{"id":87,"line":21,"column":23,"start":477,"end":488,"length":12,"parent_index":85},"scope":83,"name":"addr","type_name":{"id":88,"node_type":30,"src":{"id":89,"line":21,"column":23,"start":477,"end":483,"length":7,"parent_index":86},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"name":"PlayerJoined","anonymous":false},{"id":91,"node_type":57,"src":{"id":92,"line":22,"column":4,"start":496,"end":533,"length":38,"parent_index":35},"parameters":{"id":93,"node_type":43,"src":{"id":92,"line":22,"column":4,"start":496,"end":533,"length":38,"parent_index":91},"parameters":[{"id":94,"node_type":44,"src":{"id":95,"line":22,"column":26,"start":518,"end":531,"length":14,"parent_index":93},"scope":91,"name":"winner","type_name":{"id":96,"node_type":30,"src":{"id":97,"line":22,"column":26,"start":518,"end":524,"length":7,"parent_index":94},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"name":"LotteryFinished","anonymous":false},{"id":99,"node_type":57,"src":{"id":100,"line":23,"column":4,"start":539,"end":569,"length":31,"parent_index":35},"parameters":{"id":101,"node_type":43,"src":{"id":100,"line":23,"column":4,"start":539,"end":569,"length":31,"parent_index":99},"parameters":[],"parameter_types":[]},"name":"ExternalCallSuccessful","anonymous":false},{"id":103,"node_type":57,"src":{"id":104,"line":24,"column":4,"start":575,"end":614,"length":40,"parent_index":35},"parameters":{"id":105,"node_type":43,"src":{"id":104,"line":24,"column":4,"start":575,"end":614,"length":40,"parent_index":103},"parameters":[{"id":106,"node_type":44,"src":{"id":107,"line":24,"column":29,"start":600,"end":612,"length":13,"parent_index":105},"scope":103,"name":"reason","type_name":{"id":108,"node_type":30,"src":{"id":109,"line":24,"column":29,"start":600,"end":605,"length":6,"parent_index":106},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"name":"ExternalCallFailed","anonymous":false},{"id":111,"node_type":77,"src":{"id":112,"line":27,"column":4,"start":649,"end":669,"length":21,"parent_index":35},"name":"InvalidState","parameters":{"id":113,"node_type":43,"src":{"id":112,"line":27,"column":4,"start":649,"end":669,"length":21,"parent_index":111},"parameters":[],"parameter_types":[]},"type_description":{"type_identifier":"t_error$_Lottery_InvalidState_$111","type_string":"error Lottery.InvalidState"}},{"id":115,"node_type":77,"src":{"id":116,"line":28,"column":4,"start":675,"end":705,"length":31,"parent_index":35},"name":"OwnerCannotParticipate","parameters":{"id":117,"node_type":43,"src":{"id":116,"line":28,"column":4,"start":675,"end":705,"length":31,"parent_index":115},"parameters":[],"parameter_types":[]},"type_description":{"type_identifier":"t_error$_Lottery_OwnerCannotParticipate_$115","type_string":"error Lottery.OwnerCannotParticipate"}},{"id":119,"node_type":77,"src":{"id":120,"line":29,"column":4,"start":711,"end":734,"length":24,"parent_index":35},"name":"NoValueProvided","parameters":{"id":121,"node_type":43,"src":{"id":120,"line":29,"column":4,"start":711,"end":734,"length":24,"parent_index":119},"parameters":[],"parameter_types":[]},"type_description":{"type_identifier":"t_error$_Lottery_NoValueProvided_$119","type_string":"error Lottery.NoValueProvided"}},{"id":123,"node_type":77,"src":{"id":124,"line":30,"column":4,"start":740,"end":761,"length":22,"parent_index":35},"name":"InvalidWinner","parameters":{"id":125,"node_type":43,"src":{"id":124,"line":30,"column":4,"start":740,"end":761,"length":22,"parent_index":123},"parameters":[],"parameter_types":[]},"type_description":{"type_identifier":"t_error$_Lottery_InvalidWinner_$123","type_string":"error Lottery.InvalidWinner"}},{"id":127,"node_type":77,"src":{"id":128,"line":31,"column":4,"start":767,"end":795,"length":29,"parent_index":35},"name":"InvalidPlayerAddress","parameters":{"id":129,"node_type":43,"src":{"id":128,"line":31,"column":4,"start":767,"end":795,"length":29,"parent_index":127},"parameters":[],"parameter_types":[]},"type_description":{"type_identifier":"t_error$_Lottery_InvalidPlayerAddress_$127","type_string":"error Lottery.InvalidPlayerAddress"}},{"id":131,"node_type":77,"src":{"id":132,"line":32,"column":4,"start":801,"end":825,"length":25,"parent_index":35},"name":"OnlyOwnerCanCall","parameters":{"id":133,"node_type":43,"src":{"id":132,"line":32,"column":4,"start":801,"end":825,"length":25,"parent_index":131},"parameters":[],"parameter_types":[]},"type_description":{"type_identifier":"t_error$_Lottery_OnlyOwnerCanCall_$131","type_string":"error Lottery.OnlyOwnerCanCall"}},{"id":135,"name":"inState","node_type":68,"src":{"id":136,"line":34,"column":4,"start":832,"end":963,"length":132,"parent_index":35},"visibility":1,"virtual":false,"parameters":{"id":137,"node_type":43,"src":{"id":138,"line":34,"column":21,"start":849,"end":867,"length":19,"parent_index":35},"parameters":[{"id":139,"node_type":44,"src":{"id":140,"line":34,"column":21,"start":849,"end":867,"length":19,"parent_index":137},"scope":35,"name":"_state","type_name":{"id":141,"node_type":69,"src":{"id":142,"line":34,"column":21,"start":849,"end":860,"length":12,"parent_index":139},"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"path_node":{"id":143,"name":"LotteryState","node_type":52,"referenced_declaration":42,"src":{"id":144,"line":34,"column":21,"start":849,"end":860,"length":12,"parent_index":141}},"referenced_declaration":42},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}]},"body":{"id":145,"node_type":46,"kind":0,"src":{"id":146,"line":34,"column":42,"start":870,"end":963,"length":94,"parent_index":135},"implemented":true,"statements":[{"id":147,"node_type":48,"src":{"id":148,"line":35,"column":0,"start":880,"end":946,"length":67,"parent_index":145},"condition":{"id":149,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":150,"line":35,"column":12,"start":884,"end":898,"length":15,"parent_index":147},"operator":12,"left_expression":{"id":151,"node_type":16,"src":{"id":152,"line":35,"column":12,"start":884,"end":888,"length":5,"parent_index":149},"name":"state","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"overloaded_declarations":[],"referenced_declaration":76,"is_pure":false},"right_expression":{"id":153,"node_type":16,"src":{"id":154,"line":35,"column":21,"start":893,"end":898,"length":6,"parent_index":149},"name":"_state","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"overloaded_declarations":[],"referenced_declaration":139,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":155,"node_type":46,"kind":0,"src":{"id":156,"line":35,"column":29,"start":901,"end":946,"length":46,"parent_index":135},"implemented":true,"statements":[{"id":157,"node_type":78,"src":{"id":158,"line":36,"column":12,"start":915,"end":936,"length":22,"parent_index":135},"arguments":[],"expression":{"id":159,"node_type":16,"src":{"id":160,"line":36,"column":19,"start":922,"end":933,"length":12,"parent_index":155},"name":"InvalidState","type_description":{"type_identifier":"t_error$_Lottery_InvalidState_$111","type_string":"error Lottery.InvalidState"},"overloaded_declarations":[],"referenced_declaration":111,"is_pure":false}}]}},{"id":161,"node_type":82,"src":{"id":162,"line":38,"column":8,"start":956,"end":956,"length":1,"parent_index":145},"name":"_","type_description":{"type_identifier":"t_placeholder_literal","type_string":"t_placeholder"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}]}},{"id":164,"name":"notOwner","node_type":68,"src":{"id":165,"line":41,"column":4,"start":970,"end":1099,"length":130,"parent_index":35},"visibility":1,"virtual":false,"parameters":{"id":166,"node_type":43,"src":{"id":165,"line":41,"column":4,"start":970,"end":1099,"length":130,"parent_index":35},"parameters":[],"parameter_types":[]},"body":{"id":167,"node_type":46,"kind":0,"src":{"id":168,"line":41,"column":24,"start":990,"end":1099,"length":110,"parent_index":164},"implemented":true,"statements":[{"id":169,"node_type":48,"src":{"id":170,"line":42,"column":0,"start":1000,"end":1082,"length":83,"parent_index":167},"condition":{"id":171,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":172,"line":42,"column":12,"start":1004,"end":1024,"length":21,"parent_index":169},"operator":11,"left_expression":{"id":173,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":174,"line":42,"column":12,"start":1004,"end":1013,"length":10,"parent_index":171},"expression":{"id":175,"node_type":16,"src":{"id":176,"line":42,"column":12,"start":1004,"end":1006,"length":3,"parent_index":173},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"right_expression":{"id":177,"node_type":24,"kind":24,"src":{"id":178,"line":42,"column":26,"start":1018,"end":1024,"length":7,"parent_index":171},"argument_types":[],"arguments":[],"expression":{"id":179,"node_type":16,"src":{"id":180,"line":42,"column":26,"start":1018,"end":1022,"length":5,"parent_index":177},"name":"owner","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":181,"node_type":46,"kind":0,"src":{"id":182,"line":42,"column":35,"start":1027,"end":1082,"length":56,"parent_index":164},"implemented":true,"statements":[{"id":183,"node_type":78,"src":{"id":184,"line":43,"column":12,"start":1041,"end":1072,"length":32,"parent_index":164},"arguments":[],"expression":{"id":185,"node_type":16,"src":{"id":186,"line":43,"column":19,"start":1048,"end":1069,"length":22,"parent_index":181},"name":"OwnerCannotParticipate","type_description":{"type_identifier":"t_error$_Lottery_OwnerCannotParticipate_$115","type_string":"error Lottery.OwnerCannotParticipate"},"overloaded_declarations":[],"referenced_declaration":115,"is_pure":false}}]}},{"id":187,"node_type":82,"src":{"id":188,"line":45,"column":8,"start":1092,"end":1092,"length":1,"parent_index":167},"name":"_","type_description":{"type_identifier":"t_placeholder_literal","type_string":"t_placeholder"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}]}},{"id":190,"node_type":42,"kind":70,"src":{"id":191,"line":48,"column":4,"start":1106,"end":1136,"length":31,"parent_index":35},"implemented":true,"visibility":1,"state_mutability":3,"modifiers":[],"overrides":[],"parameters":{"id":192,"node_type":43,"src":{"id":191,"line":48,"column":4,"start":1106,"end":1136,"length":31,"parent_index":190},"parameters":[],"parameter_types":[]},"return_parameters":{"id":193,"node_type":43,"src":{"id":191,"line":48,"column":4,"start":1106,"end":1136,"length":31,"parent_index":190},"parameters":[],"parameter_types":[]},"body":{"id":194,"node_type":46,"kind":0,"src":{"id":195,"line":48,"column":32,"start":1134,"end":1136,"length":3,"parent_index":190},"implemented":true,"statements":[]},"virtual":false},{"id":197,"node_type":42,"kind":71,"src":{"id":198,"line":49,"column":4,"start":1142,"end":1171,"length":30,"parent_index":35},"implemented":true,"visibility":1,"state_mutability":4,"modifiers":[],"overrides":[],"parameters":{"id":199,"node_type":43,"src":{"id":198,"line":49,"column":4,"start":1142,"end":1171,"length":30,"parent_index":197},"parameters":[],"parameter_types":[]},"return_parameters":{"id":200,"node_type":43,"src":{"id":198,"line":49,"column":4,"start":1142,"end":1171,"length":30,"parent_index":197},"parameters":[],"parameter_types":[]},"body":{"id":201,"node_type":46,"kind":0,"src":{"id":202,"line":49,"column":31,"start":1169,"end":1171,"length":3,"parent_index":197},"implemented":true,"statements":[]},"virtual":false,"payable":false},{"id":204,"node_type":42,"src":{"id":205,"line":51,"column":4,"start":1178,"end":1238,"length":61,"parent_index":35},"kind":11,"state_mutability":4,"visibility":1,"implemented":true,"modifiers":[],"parameters":{"id":206,"node_type":43,"src":{"id":205,"line":51,"column":4,"start":1178,"end":1238,"length":61,"parent_index":204},"parameters":[],"parameter_types":[]},"return_parameters":{"id":207,"node_type":43,"src":{"id":205,"line":51,"column":4,"start":1178,"end":1238,"length":61,"parent_index":204},"parameters":[],"parameter_types":[]},"scope":35,"body":{"id":208,"node_type":46,"kind":0,"src":{"id":209,"line":51,"column":18,"start":1192,"end":1238,"length":47,"parent_index":204},"implemented":true,"statements":[{"id":210,"node_type":81,"src":{"id":211,"line":52,"column":8,"start":1202,"end":1232,"length":31,"parent_index":208},"expression":{"id":212,"node_type":27,"src":{"id":213,"line":52,"column":8,"start":1202,"end":1231,"length":30,"parent_index":208},"operator":11,"left_expression":{"id":214,"node_type":16,"src":{"id":215,"line":52,"column":8,"start":1202,"end":1206,"length":5,"parent_index":212},"name":"state","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"overloaded_declarations":[],"referenced_declaration":76,"is_pure":false},"right_expression":{"id":216,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":217,"line":52,"column":16,"start":1210,"end":1231,"length":22,"parent_index":212},"expression":{"id":218,"node_type":16,"src":{"id":219,"line":52,"column":16,"start":1210,"end":1221,"length":12,"parent_index":216},"name":"LotteryState","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"overloaded_declarations":[],"referenced_declaration":42,"is_pure":false},"member_name":"Accepting","argument_types":[],"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}},"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}},"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}}]}},{"id":221,"name":"join","node_type":42,"kind":41,"src":{"id":222,"line":55,"column":4,"start":1245,"end":1658,"length":414,"parent_index":35},"body":{"id":237,"node_type":46,"kind":0,"src":{"id":238,"line":55,"column":76,"start":1317,"end":1658,"length":342,"parent_index":221},"implemented":true,"statements":[{"id":239,"node_type":48,"src":{"id":240,"line":56,"column":0,"start":1327,"end":1395,"length":69,"parent_index":237},"condition":{"id":241,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":242,"line":56,"column":12,"start":1331,"end":1344,"length":14,"parent_index":239},"operator":11,"left_expression":{"id":243,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":244,"line":56,"column":12,"start":1331,"end":1339,"length":9,"parent_index":241},"expression":{"id":245,"node_type":16,"src":{"id":246,"line":56,"column":12,"start":1331,"end":1333,"length":3,"parent_index":243},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"right_expression":{"id":247,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":248,"line":56,"column":25,"start":1344,"end":1344,"length":1,"parent_index":241},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":249,"node_type":46,"kind":0,"src":{"id":250,"line":56,"column":28,"start":1347,"end":1395,"length":49,"parent_index":221},"implemented":true,"statements":[{"id":251,"node_type":78,"src":{"id":252,"line":57,"column":12,"start":1361,"end":1385,"length":25,"parent_index":221},"arguments":[],"expression":{"id":253,"node_type":16,"src":{"id":254,"line":57,"column":19,"start":1368,"end":1382,"length":15,"parent_index":249},"name":"NoValueProvided","type_description":{"type_identifier":"t_error$_Lottery_NoValueProvided_$119","type_string":"error Lottery.NoValueProvided"},"overloaded_declarations":[],"referenced_declaration":119,"is_pure":false}}]}},{"id":255,"node_type":48,"src":{"id":256,"line":60,"column":0,"start":1406,"end":1557,"length":152,"parent_index":237},"condition":{"id":257,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":258,"line":60,"column":12,"start":1410,"end":1447,"length":38,"parent_index":255},"operator":11,"left_expression":{"id":259,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":260,"line":60,"column":12,"start":1410,"end":1433,"length":24,"parent_index":257},"expression":{"id":261,"node_type":22,"src":{"id":262,"line":60,"column":12,"start":1410,"end":1428,"length":19,"parent_index":259},"index_expression":{"id":263,"node_type":16,"src":{"id":264,"line":60,"column":12,"start":1410,"end":1416,"length":7,"parent_index":261},"name":"players","type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},"overloaded_declarations":[],"referenced_declaration":58,"is_pure":false},"base_expression":{"id":265,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":266,"line":60,"column":20,"start":1418,"end":1427,"length":10,"parent_index":261},"expression":{"id":267,"node_type":16,"src":{"id":268,"line":60,"column":20,"start":1418,"end":1420,"length":3,"parent_index":265},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$","type_string":"index[mapping(address=\u003ePlayer):address]"}},"member_name":"addr","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$","type_string":"index[mapping(address=\u003ePlayer):address]"}},"right_expression":{"id":269,"node_type":24,"kind":24,"src":{"id":270,"line":60,"column":40,"start":1438,"end":1447,"length":10,"parent_index":257},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":275,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":276,"line":60,"column":48,"start":1446,"end":1446,"length":1,"parent_index":269},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":271,"node_type":16,"src":{"id":272,"line":60,"column":40,"start":1438,"end":1444,"length":7,"parent_index":269},"name":"address","type_name":{"id":273,"node_type":30,"src":{"id":274,"line":60,"column":40,"start":1438,"end":1444,"length":7,"parent_index":271},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":277,"node_type":46,"kind":0,"src":{"id":278,"line":60,"column":52,"start":1450,"end":1557,"length":108,"parent_index":221},"implemented":true,"statements":[{"id":279,"node_type":81,"src":{"id":280,"line":61,"column":12,"start":1464,"end":1501,"length":38,"parent_index":277},"expression":{"id":281,"node_type":27,"src":{"id":282,"line":61,"column":12,"start":1464,"end":1500,"length":37,"parent_index":277},"operator":11,"left_expression":{"id":283,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":284,"line":61,"column":12,"start":1464,"end":1487,"length":24,"parent_index":281},"expression":{"id":285,"node_type":22,"src":{"id":286,"line":61,"column":12,"start":1464,"end":1482,"length":19,"parent_index":283},"index_expression":{"id":287,"node_type":16,"src":{"id":288,"line":61,"column":12,"start":1464,"end":1470,"length":7,"parent_index":285},"name":"players","type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},"overloaded_declarations":[],"referenced_declaration":58,"is_pure":false},"base_expression":{"id":289,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":290,"line":61,"column":20,"start":1472,"end":1481,"length":10,"parent_index":285},"expression":{"id":291,"node_type":16,"src":{"id":292,"line":61,"column":20,"start":1472,"end":1474,"length":3,"parent_index":289},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$","type_string":"index[mapping(address=\u003ePlayer):address]"}},"member_name":"addr","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$","type_string":"index[mapping(address=\u003ePlayer):address]"}},"right_expression":{"id":293,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":294,"line":61,"column":39,"start":1491,"end":1500,"length":10,"parent_index":281},"expression":{"id":295,"node_type":16,"src":{"id":296,"line":61,"column":39,"start":1491,"end":1493,"length":3,"parent_index":293},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$","type_string":"index[mapping(address=\u003ePlayer):address]"}},"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$","type_string":"index[mapping(address=\u003ePlayer):address]"}},{"id":297,"node_type":24,"kind":24,"src":{"id":298,"line":62,"column":12,"start":1515,"end":1546,"length":32,"parent_index":277},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":303,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":304,"line":62,"column":33,"start":1536,"end":1545,"length":10,"parent_index":297},"expression":{"id":305,"node_type":16,"src":{"id":306,"line":62,"column":33,"start":1536,"end":1538,"length":3,"parent_index":303},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}}],"expression":{"id":299,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":300,"line":62,"column":12,"start":1515,"end":1534,"length":20,"parent_index":297},"expression":{"id":301,"node_type":16,"src":{"id":302,"line":62,"column":12,"start":1515,"end":1529,"length":15,"parent_index":299},"name":"playerAddresses","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":70,"is_pure":false},"member_name":"push","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}]}},{"id":307,"node_type":81,"src":{"id":308,"line":65,"column":8,"start":1568,"end":1612,"length":45,"parent_index":237},"expression":{"id":309,"node_type":27,"src":{"id":310,"line":65,"column":8,"start":1568,"end":1611,"length":44,"parent_index":237},"operator":13,"left_expression":{"id":311,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":312,"line":65,"column":8,"start":1568,"end":1598,"length":31,"parent_index":309},"expression":{"id":313,"node_type":22,"src":{"id":314,"line":65,"column":8,"start":1568,"end":1586,"length":19,"parent_index":311},"index_expression":{"id":315,"node_type":16,"src":{"id":316,"line":65,"column":8,"start":1568,"end":1574,"length":7,"parent_index":313},"name":"players","type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},"overloaded_declarations":[],"referenced_declaration":58,"is_pure":false},"base_expression":{"id":317,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":318,"line":65,"column":16,"start":1576,"end":1585,"length":10,"parent_index":313},"expression":{"id":319,"node_type":16,"src":{"id":320,"line":65,"column":16,"start":1576,"end":1578,"length":3,"parent_index":317},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$","type_string":"index[mapping(address=\u003ePlayer):address]"}},"member_name":"ticketCount","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$","type_string":"index[mapping(address=\u003ePlayer):address]"}},"right_expression":{"id":321,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":322,"line":65,"column":43,"start":1603,"end":1611,"length":9,"parent_index":309},"expression":{"id":323,"node_type":16,"src":{"id":324,"line":65,"column":43,"start":1603,"end":1605,"length":3,"parent_index":321},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$","type_string":"index[mapping(address=\u003ePlayer):address]"}},"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$","type_string":"index[mapping(address=\u003ePlayer):address]"}},{"id":325,"node_type":64,"src":{"id":326,"line":67,"column":8,"start":1623,"end":1652,"length":30,"parent_index":221},"arguments":[{"id":327,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":328,"line":67,"column":26,"start":1641,"end":1650,"length":10,"parent_index":237},"expression":{"id":329,"node_type":16,"src":{"id":330,"line":67,"column":26,"start":1641,"end":1643,"length":3,"parent_index":327},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}}],"expression":{"id":331,"node_type":16,"src":{"id":332,"line":67,"column":13,"start":1628,"end":1639,"length":12,"parent_index":237},"name":"PlayerJoined","type_description":{"type_identifier":"t_event\u0026_Lottery_PlayerJoined_\u002683","type_string":"event Lottery.PlayerJoined"},"overloaded_declarations":[],"referenced_declaration":83,"is_pure":false}}]},"implemented":true,"visibility":3,"state_mutability":3,"virtual":false,"modifiers":[{"id":223,"name":"inState","node_type":72,"kind":72,"src":{"id":224,"line":55,"column":35,"start":1276,"end":1306,"length":31,"parent_index":221},"argument_types":[{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}],"arguments":[{"id":227,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":228,"line":55,"column":43,"start":1284,"end":1305,"length":22,"parent_index":223},"expression":{"id":229,"node_type":16,"src":{"id":230,"line":55,"column":43,"start":1284,"end":1295,"length":12,"parent_index":227},"name":"LotteryState","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"overloaded_declarations":[],"referenced_declaration":42,"is_pure":false},"member_name":"Accepting","argument_types":[],"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}}],"modifier_name":{"id":225,"name":"inState","node_type":0,"src":{"id":226,"line":55,"column":35,"start":1276,"end":1282,"length":7,"parent_index":223}}},{"id":231,"name":"notOwner","node_type":72,"kind":72,"src":{"id":232,"line":55,"column":67,"start":1308,"end":1315,"length":8,"parent_index":221},"argument_types":[],"arguments":[],"modifier_name":{"id":233,"name":"notOwner","node_type":0,"src":{"id":234,"line":55,"column":67,"start":1308,"end":1315,"length":8,"parent_index":231}}}],"overrides":[],"parameters":{"id":235,"node_type":43,"src":{"id":222,"line":55,"column":4,"start":1245,"end":1658,"length":414,"parent_index":221},"parameters":[],"parameter_types":[]},"return_parameters":{"id":236,"node_type":43,"src":{"id":222,"line":55,"column":4,"start":1245,"end":1658,"length":414,"parent_index":221},"parameters":[],"parameter_types":[]},"scope":35,"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},{"id":334,"name":"finishLottery","node_type":42,"kind":41,"src":{"id":335,"line":70,"column":4,"start":1665,"end":2467,"length":803,"parent_index":35},"body":{"id":346,"node_type":46,"kind":0,"src":{"id":347,"line":70,"column":68,"start":1729,"end":2467,"length":739,"parent_index":334},"implemented":true,"statements":[{"id":348,"node_type":81,"src":{"id":349,"line":71,"column":8,"start":1739,"end":1768,"length":30,"parent_index":346},"expression":{"id":350,"node_type":27,"src":{"id":351,"line":71,"column":8,"start":1739,"end":1767,"length":29,"parent_index":346},"operator":11,"left_expression":{"id":352,"node_type":16,"src":{"id":353,"line":71,"column":8,"start":1739,"end":1743,"length":5,"parent_index":350},"name":"state","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"overloaded_declarations":[],"referenced_declaration":76,"is_pure":false},"right_expression":{"id":354,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":355,"line":71,"column":16,"start":1747,"end":1767,"length":21,"parent_index":350},"expression":{"id":356,"node_type":16,"src":{"id":357,"line":71,"column":16,"start":1747,"end":1758,"length":12,"parent_index":354},"name":"LotteryState","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"overloaded_declarations":[],"referenced_declaration":42,"is_pure":false},"member_name":"Finished","argument_types":[],"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}},"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}},"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}},{"id":358,"node_type":44,"src":{"id":359,"line":73,"column":8,"start":1779,"end":1844,"length":66,"parent_index":346},"assignments":[360],"declarations":[{"is_constant":false,"id":360,"state_mutability":1,"name":"index","node_type":44,"scope":346,"src":{"id":361,"line":73,"column":8,"start":1779,"end":1791,"length":13,"parent_index":358},"is_state_variable":false,"storage_location":1,"type_name":{"id":362,"node_type":30,"src":{"id":363,"line":73,"column":8,"start":1779,"end":1785,"length":7,"parent_index":360},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":364,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":365,"line":73,"column":24,"start":1795,"end":1843,"length":49,"parent_index":358},"operator":5,"left_expression":{"id":366,"node_type":24,"kind":24,"src":{"id":367,"line":73,"column":24,"start":1795,"end":1818,"length":24,"parent_index":358},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":372,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":373,"line":73,"column":32,"start":1803,"end":1817,"length":15,"parent_index":366},"expression":{"id":374,"node_type":16,"src":{"id":375,"line":73,"column":32,"start":1803,"end":1807,"length":5,"parent_index":372},"name":"block","type_description":{"type_identifier":"t_magic_block","type_string":"block"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"timestamp","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}],"expression":{"id":368,"node_type":16,"src":{"id":369,"line":73,"column":24,"start":1795,"end":1801,"length":7,"parent_index":366},"name":"uint256","type_name":{"id":370,"node_type":30,"src":{"id":371,"line":73,"column":24,"start":1795,"end":1801,"length":7,"parent_index":368},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},"right_expression":{"id":376,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":377,"line":73,"column":51,"start":1822,"end":1843,"length":22,"parent_index":358},"expression":{"id":378,"node_type":16,"src":{"id":379,"line":73,"column":51,"start":1822,"end":1836,"length":15,"parent_index":376},"name":"playerAddresses","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":70,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}}},{"id":380,"node_type":44,"src":{"id":381,"line":74,"column":8,"start":1854,"end":1881,"length":28,"parent_index":346},"assignments":[382],"declarations":[{"is_constant":false,"id":382,"state_mutability":1,"name":"winner","node_type":44,"scope":346,"src":{"id":383,"line":74,"column":8,"start":1854,"end":1867,"length":14,"parent_index":380},"is_state_variable":false,"storage_location":1,"type_name":{"id":384,"node_type":30,"src":{"id":385,"line":74,"column":8,"start":1854,"end":1860,"length":7,"parent_index":382},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":386,"node_type":24,"kind":24,"src":{"id":387,"line":74,"column":25,"start":1871,"end":1880,"length":10,"parent_index":380},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":392,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":393,"line":74,"column":33,"start":1879,"end":1879,"length":1,"parent_index":386},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":388,"node_type":16,"src":{"id":389,"line":74,"column":25,"start":1871,"end":1877,"length":7,"parent_index":386},"name":"address","type_name":{"id":390,"node_type":30,"src":{"id":391,"line":74,"column":25,"start":1871,"end":1877,"length":7,"parent_index":388},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}}},{"id":394,"node_type":44,"src":{"id":395,"line":75,"column":8,"start":1891,"end":1908,"length":18,"parent_index":346},"assignments":[396],"declarations":[{"is_constant":false,"id":396,"state_mutability":1,"name":"count","node_type":44,"scope":346,"src":{"id":397,"line":75,"column":8,"start":1891,"end":1903,"length":13,"parent_index":394},"is_state_variable":false,"storage_location":1,"type_name":{"id":398,"node_type":30,"src":{"id":399,"line":75,"column":8,"start":1891,"end":1897,"length":7,"parent_index":396},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":400,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":401,"line":75,"column":24,"start":1907,"end":1907,"length":1,"parent_index":394},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}},{"id":0,"node_type":73,"kind":83,"src":{"id":402,"line":77,"column":0,"start":1927,"end":2246,"length":320,"parent_index":346},"condition":{"id":403,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":404,"line":77,"column":14,"start":1933,"end":1962,"length":30,"parent_index":0},"operator":9,"left_expression":{"id":405,"node_type":16,"src":{"id":406,"line":77,"column":14,"start":1933,"end":1937,"length":5,"parent_index":403},"name":"count","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":394,"is_pure":false},"right_expression":{"id":407,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":408,"line":77,"column":22,"start":1941,"end":1962,"length":22,"parent_index":403},"expression":{"id":409,"node_type":16,"src":{"id":410,"line":77,"column":22,"start":1941,"end":1955,"length":15,"parent_index":407},"name":"playerAddresses","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":70,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":411,"node_type":46,"kind":0,"src":{"id":412,"line":77,"column":46,"start":1965,"end":2246,"length":282,"parent_index":0},"implemented":true,"statements":[{"id":413,"node_type":48,"src":{"id":414,"line":78,"column":0,"start":1979,"end":2083,"length":105,"parent_index":411},"condition":{"id":415,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":416,"line":78,"column":15,"start":1982,"end":1995,"length":14,"parent_index":413},"operator":11,"left_expression":{"id":417,"node_type":16,"src":{"id":418,"line":78,"column":15,"start":1982,"end":1986,"length":5,"parent_index":415},"name":"index","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":358,"is_pure":false},"right_expression":{"id":419,"node_type":16,"src":{"id":420,"line":78,"column":24,"start":1991,"end":1995,"length":5,"parent_index":415},"name":"count","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":394,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":421,"node_type":46,"kind":0,"src":{"id":422,"line":78,"column":30,"start":1997,"end":2083,"length":87,"parent_index":0},"implemented":true,"statements":[{"id":423,"node_type":81,"src":{"id":424,"line":79,"column":16,"start":2015,"end":2046,"length":32,"parent_index":421},"expression":{"id":425,"node_type":27,"src":{"id":426,"line":79,"column":16,"start":2015,"end":2045,"length":31,"parent_index":421},"operator":11,"left_expression":{"id":427,"node_type":16,"src":{"id":428,"line":79,"column":16,"start":2015,"end":2020,"length":6,"parent_index":425},"name":"winner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":94,"is_pure":false},"right_expression":{"id":429,"node_type":22,"src":{"id":430,"line":79,"column":25,"start":2024,"end":2045,"length":22,"parent_index":425},"index_expression":{"id":431,"node_type":16,"src":{"id":432,"line":79,"column":25,"start":2024,"end":2038,"length":15,"parent_index":429},"name":"playerAddresses","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":70,"is_pure":false},"base_expression":{"id":433,"node_type":16,"src":{"id":434,"line":79,"column":41,"start":2040,"end":2044,"length":5,"parent_index":429},"name":"count","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":394,"is_pure":false},"type_descriptions":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"}},"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_address","type_string":"address"}},{"id":435,"node_type":74,"src":{"id":436,"line":80,"column":0,"start":2064,"end":2069,"length":6,"parent_index":421}}]}},{"id":437,"node_type":18,"src":{"id":438,"line":83,"column":12,"start":2098,"end":2104,"length":7,"parent_index":0},"operator":27,"expression":{"id":439,"node_type":16,"src":{"id":440,"line":83,"column":12,"start":2098,"end":2102,"length":5,"parent_index":437},"name":"count","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":394,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"prefix":false,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false},{"id":441,"node_type":48,"src":{"id":442,"line":86,"column":0,"start":2176,"end":2236,"length":61,"parent_index":411},"condition":{"id":443,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":444,"line":86,"column":16,"start":2180,"end":2193,"length":14,"parent_index":441},"operator":11,"left_expression":{"id":445,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":446,"line":86,"column":16,"start":2180,"end":2188,"length":9,"parent_index":443},"operator":5,"left_expression":{"id":447,"node_type":16,"src":{"id":448,"line":86,"column":16,"start":2180,"end":2184,"length":5,"parent_index":445},"name":"count","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":394,"is_pure":false},"right_expression":{"id":449,"node_type":17,"kind":49,"value":"2","hex_value":"32","src":{"id":450,"line":86,"column":24,"start":2188,"end":2188,"length":1,"parent_index":445},"type_description":{"type_identifier":"t_rational_2_by_1","type_string":"int_const 2"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"right_expression":{"id":451,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":452,"line":86,"column":29,"start":2193,"end":2193,"length":1,"parent_index":443},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":453,"node_type":46,"kind":0,"src":{"id":454,"line":86,"column":32,"start":2196,"end":2236,"length":41,"parent_index":0},"implemented":true,"statements":[{"id":455,"node_type":75,"src":{"id":456,"line":87,"column":0,"start":2214,"end":2222,"length":9,"parent_index":453}}]}}]}},{"id":457,"node_type":48,"src":{"id":458,"line":91,"column":0,"start":2257,"end":2329,"length":73,"parent_index":346},"condition":{"id":459,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":460,"line":91,"column":12,"start":2261,"end":2280,"length":20,"parent_index":457},"operator":11,"left_expression":{"id":461,"node_type":16,"src":{"id":462,"line":91,"column":12,"start":2261,"end":2266,"length":6,"parent_index":459},"name":"winner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":380,"is_pure":false},"right_expression":{"id":463,"node_type":24,"kind":24,"src":{"id":464,"line":91,"column":22,"start":2271,"end":2280,"length":10,"parent_index":459},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":469,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":470,"line":91,"column":30,"start":2279,"end":2279,"length":1,"parent_index":463},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":465,"node_type":16,"src":{"id":466,"line":91,"column":22,"start":2271,"end":2277,"length":7,"parent_index":463},"name":"address","type_name":{"id":467,"node_type":30,"src":{"id":468,"line":91,"column":22,"start":2271,"end":2277,"length":7,"parent_index":465},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":471,"node_type":46,"kind":0,"src":{"id":472,"line":91,"column":34,"start":2283,"end":2329,"length":47,"parent_index":334},"implemented":true,"statements":[{"id":473,"node_type":78,"src":{"id":474,"line":92,"column":12,"start":2297,"end":2319,"length":23,"parent_index":334},"arguments":[],"expression":{"id":475,"node_type":16,"src":{"id":476,"line":92,"column":19,"start":2304,"end":2316,"length":13,"parent_index":471},"name":"InvalidWinner","type_description":{"type_identifier":"t_error$_Lottery_InvalidWinner_$123","type_string":"error Lottery.InvalidWinner"},"overloaded_declarations":[],"referenced_declaration":123,"is_pure":false}}]}},{"id":477,"node_type":64,"src":{"id":478,"line":95,"column":8,"start":2340,"end":2368,"length":29,"parent_index":334},"arguments":[{"id":479,"node_type":16,"src":{"id":480,"line":95,"column":29,"start":2361,"end":2366,"length":6,"parent_index":346},"name":"winner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":380,"is_pure":false}],"expression":{"id":481,"node_type":16,"src":{"id":482,"line":95,"column":13,"start":2345,"end":2359,"length":15,"parent_index":346},"name":"LotteryFinished","type_description":{"type_identifier":"t_event\u0026_Lottery_LotteryFinished_\u002691","type_string":"event Lottery.LotteryFinished"},"overloaded_declarations":[],"referenced_declaration":91,"is_pure":false}},{"id":483,"node_type":44,"src":{"id":484,"line":97,"column":8,"start":2379,"end":2418,"length":40,"parent_index":346},"assignments":[485],"declarations":[{"is_constant":false,"id":485,"state_mutability":1,"name":"balance","node_type":44,"scope":346,"src":{"id":486,"line":97,"column":8,"start":2379,"end":2393,"length":15,"parent_index":483},"is_state_variable":false,"storage_location":1,"type_name":{"id":487,"node_type":30,"src":{"id":488,"line":97,"column":8,"start":2379,"end":2385,"length":7,"parent_index":485},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":489,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":490,"line":97,"column":26,"start":2397,"end":2417,"length":21,"parent_index":483},"expression":{"id":491,"node_type":24,"kind":24,"src":{"id":492,"line":97,"column":26,"start":2397,"end":2409,"length":13,"parent_index":483},"argument_types":[{"type_identifier":"t_contract$_Lottery_$31","type_string":"contract Lottery"}],"arguments":[{"id":497,"node_type":16,"src":{"id":498,"line":97,"column":34,"start":2405,"end":2408,"length":4,"parent_index":491},"name":"this","type_description":{"type_identifier":"t_contract$_Lottery_$31","type_string":"contract Lottery"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":493,"node_type":16,"src":{"id":494,"line":97,"column":26,"start":2397,"end":2403,"length":7,"parent_index":491},"name":"address","type_name":{"id":495,"node_type":30,"src":{"id":496,"line":97,"column":26,"start":2397,"end":2403,"length":7,"parent_index":493},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"balance","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}},{"id":499,"node_type":24,"kind":24,"src":{"id":500,"line":98,"column":8,"start":2428,"end":2460,"length":33,"parent_index":346},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":507,"node_type":16,"src":{"id":508,"line":98,"column":33,"start":2453,"end":2459,"length":7,"parent_index":499},"name":"balance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":483,"is_pure":false}],"expression":{"id":501,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":502,"line":98,"column":8,"start":2428,"end":2451,"length":24,"parent_index":499},"expression":{"id":503,"node_type":84,"src":{"id":504,"line":98,"column":8,"start":2428,"end":2442,"length":15,"parent_index":501},"arguments":[{"id":505,"node_type":16,"src":{"id":506,"line":98,"column":16,"start":2436,"end":2441,"length":6,"parent_index":503},"name":"winner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":380,"is_pure":false}],"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_function_payable$_t_address$","type_string":"function(address) payable"},"payable":true},"member_name":"transfer","argument_types":[],"type_description":{"type_identifier":"t_function_payable$_t_address$","type_string":"function(address) payable"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":false,"modifiers":[{"id":336,"name":"inState","node_type":72,"kind":72,"src":{"id":337,"line":70,"column":36,"start":1697,"end":1727,"length":31,"parent_index":334},"argument_types":[{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}],"arguments":[{"id":340,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":341,"line":70,"column":44,"start":1705,"end":1726,"length":22,"parent_index":336},"expression":{"id":342,"node_type":16,"src":{"id":343,"line":70,"column":44,"start":1705,"end":1716,"length":12,"parent_index":340},"name":"LotteryState","type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"},"overloaded_declarations":[],"referenced_declaration":42,"is_pure":false},"member_name":"Accepting","argument_types":[],"type_description":{"type_identifier":"t_enum_$_LotteryState_$42","type_string":"enum Lottery.LotteryState"}}],"modifier_name":{"id":338,"name":"inState","node_type":0,"src":{"id":339,"line":70,"column":36,"start":1697,"end":1703,"length":7,"parent_index":336}}}],"overrides":[],"parameters":{"id":344,"node_type":43,"src":{"id":335,"line":70,"column":4,"start":1665,"end":2467,"length":803,"parent_index":334},"parameters":[],"parameter_types":[]},"return_parameters":{"id":345,"node_type":43,"src":{"id":335,"line":70,"column":4,"start":1665,"end":2467,"length":803,"parent_index":334},"parameters":[],"parameter_types":[]},"scope":35,"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},{"id":510,"name":"owner","node_type":42,"kind":41,"src":{"id":511,"line":101,"column":4,"start":2474,"end":2557,"length":84,"parent_index":35},"body":{"id":524,"node_type":46,"kind":0,"src":{"id":525,"line":101,"column":51,"start":2521,"end":2557,"length":37,"parent_index":510},"implemented":true,"statements":[{"id":526,"node_type":47,"src":{"id":527,"line":102,"column":8,"start":2531,"end":2551,"length":21,"parent_index":510},"function_return_parameters":510,"expression":{"id":528,"node_type":24,"kind":24,"src":{"id":529,"line":102,"column":15,"start":2538,"end":2550,"length":13,"parent_index":524},"argument_types":[{"type_identifier":"t_contract$_Lottery_$31","type_string":"contract Lottery"}],"arguments":[{"id":534,"node_type":16,"src":{"id":535,"line":102,"column":23,"start":2546,"end":2549,"length":4,"parent_index":528},"name":"this","type_description":{"type_identifier":"t_contract$_Lottery_$31","type_string":"contract Lottery"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":530,"node_type":16,"src":{"id":531,"line":102,"column":15,"start":2538,"end":2544,"length":7,"parent_index":528},"name":"address","type_name":{"id":532,"node_type":30,"src":{"id":533,"line":102,"column":15,"start":2538,"end":2544,"length":7,"parent_index":530},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":512,"node_type":43,"src":{"id":513,"line":101,"column":42,"start":2512,"end":2518,"length":7,"parent_index":510},"parameters":[{"id":514,"node_type":44,"src":{"id":515,"line":101,"column":42,"start":2512,"end":2518,"length":7,"parent_index":512},"scope":510,"name":"","type_name":{"id":516,"node_type":30,"src":{"id":517,"line":101,"column":42,"start":2512,"end":2518,"length":7,"parent_index":514},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":518,"node_type":43,"src":{"id":519,"line":101,"column":42,"start":2512,"end":2518,"length":7,"parent_index":510},"parameters":[{"id":520,"node_type":44,"src":{"id":521,"line":101,"column":42,"start":2512,"end":2518,"length":7,"parent_index":518},"scope":510,"name":"","type_name":{"id":522,"node_type":30,"src":{"id":523,"line":101,"column":42,"start":2512,"end":2518,"length":7,"parent_index":520},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":35,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":537,"name":"balance","node_type":42,"kind":41,"src":{"id":538,"line":105,"column":4,"start":2564,"end":2657,"length":94,"parent_index":35},"body":{"id":551,"node_type":46,"kind":0,"src":{"id":552,"line":105,"column":53,"start":2613,"end":2657,"length":45,"parent_index":537},"implemented":true,"statements":[{"id":553,"node_type":47,"src":{"id":554,"line":106,"column":8,"start":2623,"end":2651,"length":29,"parent_index":537},"function_return_parameters":537,"expression":{"id":555,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":556,"line":106,"column":15,"start":2630,"end":2650,"length":21,"parent_index":551},"expression":{"id":557,"node_type":24,"kind":24,"src":{"id":558,"line":106,"column":15,"start":2630,"end":2642,"length":13,"parent_index":555},"argument_types":[{"type_identifier":"t_contract$_Lottery_$31","type_string":"contract Lottery"}],"arguments":[{"id":563,"node_type":16,"src":{"id":564,"line":106,"column":23,"start":2638,"end":2641,"length":4,"parent_index":557},"name":"this","type_description":{"type_identifier":"t_contract$_Lottery_$31","type_string":"contract Lottery"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":559,"node_type":16,"src":{"id":560,"line":106,"column":15,"start":2630,"end":2636,"length":7,"parent_index":557},"name":"address","type_name":{"id":561,"node_type":30,"src":{"id":562,"line":106,"column":15,"start":2630,"end":2636,"length":7,"parent_index":559},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"balance","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":539,"node_type":43,"src":{"id":540,"line":105,"column":44,"start":2604,"end":2610,"length":7,"parent_index":537},"parameters":[{"id":541,"node_type":44,"src":{"id":542,"line":105,"column":44,"start":2604,"end":2610,"length":7,"parent_index":539},"scope":537,"name":"","type_name":{"id":543,"node_type":30,"src":{"id":544,"line":105,"column":44,"start":2604,"end":2610,"length":7,"parent_index":541},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":545,"node_type":43,"src":{"id":546,"line":105,"column":44,"start":2604,"end":2610,"length":7,"parent_index":537},"parameters":[{"id":547,"node_type":44,"src":{"id":548,"line":105,"column":44,"start":2604,"end":2610,"length":7,"parent_index":545},"scope":537,"name":"","type_name":{"id":549,"node_type":30,"src":{"id":550,"line":105,"column":44,"start":2604,"end":2610,"length":7,"parent_index":547},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":35,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},{"id":566,"name":"checkAllPlayers","node_type":42,"kind":41,"src":{"id":567,"line":110,"column":4,"start":2699,"end":2977,"length":279,"parent_index":35},"body":{"id":580,"node_type":46,"kind":0,"src":{"id":581,"line":110,"column":58,"start":2753,"end":2977,"length":225,"parent_index":566},"implemented":true,"statements":[{"id":582,"node_type":79,"src":{"id":583,"line":111,"column":0,"start":2763,"end":2950,"length":188,"parent_index":580},"initialiser":{"id":584,"node_type":44,"src":{"id":585,"line":111,"column":13,"start":2768,"end":2778,"length":11,"parent_index":580},"assignments":[586],"declarations":[{"is_constant":false,"id":586,"state_mutability":1,"name":"i","node_type":44,"scope":580,"src":{"id":587,"line":111,"column":13,"start":2768,"end":2773,"length":6,"parent_index":584},"is_state_variable":false,"storage_location":1,"type_name":{"id":588,"node_type":30,"src":{"id":589,"line":111,"column":13,"start":2768,"end":2771,"length":4,"parent_index":586},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":590,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":591,"line":111,"column":22,"start":2777,"end":2777,"length":1,"parent_index":584},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}},"condition":{"id":592,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":593,"line":111,"column":25,"start":2780,"end":2805,"length":26,"parent_index":582},"operator":9,"left_expression":{"id":594,"node_type":16,"src":{"id":595,"line":111,"column":25,"start":2780,"end":2780,"length":1,"parent_index":592},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":584,"is_pure":false},"right_expression":{"id":596,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":597,"line":111,"column":29,"start":2784,"end":2805,"length":22,"parent_index":592},"expression":{"id":598,"node_type":16,"src":{"id":599,"line":111,"column":29,"start":2784,"end":2798,"length":15,"parent_index":596},"name":"playerAddresses","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":70,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"closure":{"id":600,"node_type":18,"src":{"id":601,"line":111,"column":53,"start":2808,"end":2810,"length":3,"parent_index":566},"operator":27,"expression":{"id":602,"node_type":16,"src":{"id":603,"line":111,"column":53,"start":2808,"end":2808,"length":1,"parent_index":600},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":584,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"prefix":false,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false},"body":{"id":604,"node_type":46,"kind":0,"src":{"id":605,"line":111,"column":58,"start":2813,"end":2950,"length":138,"parent_index":582},"implemented":true,"statements":[{"id":606,"node_type":48,"src":{"id":607,"line":112,"column":0,"start":2827,"end":2940,"length":114,"parent_index":604},"condition":{"id":608,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":609,"line":112,"column":16,"start":2831,"end":2876,"length":46,"parent_index":606},"operator":11,"left_expression":{"id":610,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":611,"line":112,"column":16,"start":2831,"end":2862,"length":32,"parent_index":608},"expression":{"id":612,"node_type":22,"src":{"id":613,"line":112,"column":16,"start":2831,"end":2857,"length":27,"parent_index":610},"index_expression":{"id":614,"node_type":16,"src":{"id":615,"line":112,"column":16,"start":2831,"end":2837,"length":7,"parent_index":612},"name":"players","type_description":{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},"overloaded_declarations":[],"referenced_declaration":58,"is_pure":false},"base_expression":{"id":616,"node_type":22,"src":{"id":617,"line":112,"column":24,"start":2839,"end":2856,"length":18,"parent_index":612},"index_expression":{"id":618,"node_type":16,"src":{"id":619,"line":112,"column":24,"start":2839,"end":2853,"length":15,"parent_index":616},"name":"playerAddresses","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":70,"is_pure":false},"base_expression":{"id":620,"node_type":16,"src":{"id":621,"line":112,"column":40,"start":2855,"end":2855,"length":1,"parent_index":616},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":584,"is_pure":false},"type_descriptions":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"}},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_struct$_Lottery_Player_$47$","type_string":"mapping(address=\u003ePlayer)"},{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"}],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_[_[$_t_address]$_t_uint256]$","type_string":"index[mapping(address=\u003ePlayer):index[address:uint256]]"}},"member_name":"addr","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_[_[$_t_address]$_t_uint256]$","type_string":"index[mapping(address=\u003ePlayer):index[address:uint256]]"}},"right_expression":{"id":622,"node_type":24,"kind":24,"src":{"id":623,"line":112,"column":52,"start":2867,"end":2876,"length":10,"parent_index":608},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":628,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":629,"line":112,"column":60,"start":2875,"end":2875,"length":1,"parent_index":622},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":624,"node_type":16,"src":{"id":625,"line":112,"column":52,"start":2867,"end":2873,"length":7,"parent_index":622},"name":"address","type_name":{"id":626,"node_type":30,"src":{"id":627,"line":112,"column":52,"start":2867,"end":2873,"length":7,"parent_index":624},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":630,"node_type":46,"kind":0,"src":{"id":631,"line":112,"column":64,"start":2879,"end":2940,"length":62,"parent_index":582},"implemented":true,"statements":[{"id":632,"node_type":78,"src":{"id":633,"line":113,"column":16,"start":2897,"end":2926,"length":30,"parent_index":582},"arguments":[],"expression":{"id":634,"node_type":16,"src":{"id":635,"line":113,"column":23,"start":2904,"end":2923,"length":20,"parent_index":630},"name":"InvalidPlayerAddress","type_description":{"type_identifier":"t_error$_Lottery_InvalidPlayerAddress_$127","type_string":"error Lottery.InvalidPlayerAddress"},"overloaded_declarations":[],"referenced_declaration":127,"is_pure":false}}]}}]}},{"id":636,"node_type":47,"src":{"id":637,"line":116,"column":8,"start":2960,"end":2971,"length":12,"parent_index":566},"function_return_parameters":566,"expression":{"id":638,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":639,"line":116,"column":15,"start":2967,"end":2970,"length":4,"parent_index":580},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":568,"node_type":43,"src":{"id":569,"line":110,"column":52,"start":2747,"end":2750,"length":4,"parent_index":566},"parameters":[{"id":570,"node_type":44,"src":{"id":571,"line":110,"column":52,"start":2747,"end":2750,"length":4,"parent_index":568},"scope":566,"name":"","type_name":{"id":572,"node_type":30,"src":{"id":573,"line":110,"column":52,"start":2747,"end":2750,"length":4,"parent_index":570},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"return_parameters":{"id":574,"node_type":43,"src":{"id":575,"line":110,"column":52,"start":2747,"end":2750,"length":4,"parent_index":566},"parameters":[{"id":576,"node_type":44,"src":{"id":577,"line":110,"column":52,"start":2747,"end":2750,"length":4,"parent_index":574},"scope":566,"name":"","type_name":{"id":578,"node_type":30,"src":{"id":579,"line":110,"column":52,"start":2747,"end":2750,"length":4,"parent_index":576},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":35,"type_description":{"type_identifier":"t_function_$_t_bool$","type_string":"function(bool)"}},{"id":641,"name":"requireOwner","node_type":42,"kind":41,"src":{"id":642,"line":120,"column":4,"start":3017,"end":3145,"length":129,"parent_index":35},"body":{"id":645,"node_type":46,"kind":0,"src":{"id":646,"line":120,"column":40,"start":3053,"end":3145,"length":93,"parent_index":641},"implemented":true,"statements":[{"id":647,"node_type":48,"src":{"id":648,"line":121,"column":0,"start":3063,"end":3139,"length":77,"parent_index":645},"condition":{"id":649,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":650,"line":121,"column":12,"start":3067,"end":3087,"length":21,"parent_index":647},"operator":12,"left_expression":{"id":651,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":652,"line":121,"column":12,"start":3067,"end":3076,"length":10,"parent_index":649},"expression":{"id":653,"node_type":16,"src":{"id":654,"line":121,"column":12,"start":3067,"end":3069,"length":3,"parent_index":651},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"right_expression":{"id":655,"node_type":24,"kind":24,"src":{"id":656,"line":121,"column":26,"start":3081,"end":3087,"length":7,"parent_index":649},"argument_types":[],"arguments":[],"expression":{"id":657,"node_type":16,"src":{"id":658,"line":121,"column":26,"start":3081,"end":3085,"length":5,"parent_index":655},"name":"owner","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":659,"node_type":46,"kind":0,"src":{"id":660,"line":121,"column":35,"start":3090,"end":3139,"length":50,"parent_index":641},"implemented":true,"statements":[{"id":661,"node_type":78,"src":{"id":662,"line":122,"column":12,"start":3104,"end":3129,"length":26,"parent_index":641},"arguments":[],"expression":{"id":663,"node_type":16,"src":{"id":664,"line":122,"column":19,"start":3111,"end":3126,"length":16,"parent_index":659},"name":"OnlyOwnerCanCall","type_description":{"type_identifier":"t_error$_Lottery_OnlyOwnerCanCall_$131","type_string":"error Lottery.OnlyOwnerCanCall"},"overloaded_declarations":[],"referenced_declaration":131,"is_pure":false}}]}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":643,"node_type":43,"src":{"id":642,"line":120,"column":4,"start":3017,"end":3145,"length":129,"parent_index":641},"parameters":[],"parameter_types":[]},"return_parameters":{"id":644,"node_type":43,"src":{"id":642,"line":120,"column":4,"start":3017,"end":3145,"length":129,"parent_index":641},"parameters":[],"parameter_types":[]},"scope":35,"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},{"id":666,"name":"callExternalFunction","node_type":42,"kind":41,"src":{"id":667,"line":126,"column":4,"start":3152,"end":3521,"length":370,"parent_index":35},"body":{"id":675,"node_type":46,"kind":0,"src":{"id":676,"line":126,"column":74,"start":3222,"end":3521,"length":300,"parent_index":666},"implemented":true,"statements":[{"id":677,"node_type":44,"src":{"id":678,"line":127,"column":8,"start":3232,"end":3302,"length":71,"parent_index":675},"assignments":[679],"declarations":[{"is_constant":false,"id":679,"state_mutability":1,"name":"dummyContract","node_type":44,"scope":675,"src":{"id":680,"line":127,"column":8,"start":3232,"end":3259,"length":28,"parent_index":677},"is_state_variable":false,"storage_location":1,"type_name":{"id":681,"node_type":69,"src":{"id":682,"line":127,"column":8,"start":3232,"end":3245,"length":14,"parent_index":679},"type_description":{"type_identifier":"t_contract$_IDummyContract_$10","type_string":"contract IDummyContract"},"path_node":{"id":683,"name":"IDummyContract","node_type":52,"referenced_declaration":10,"src":{"id":684,"line":127,"column":8,"start":3232,"end":3245,"length":14,"parent_index":681}},"referenced_declaration":10},"visibility":1}],"initial_value":{"id":685,"node_type":24,"kind":24,"src":{"id":686,"line":127,"column":39,"start":3263,"end":3301,"length":39,"parent_index":677},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":689,"node_type":16,"src":{"id":690,"line":127,"column":54,"start":3278,"end":3300,"length":23,"parent_index":685},"name":"externalContractAddress","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":689,"is_pure":false}],"expression":{"id":687,"node_type":16,"src":{"id":688,"line":127,"column":39,"start":3263,"end":3276,"length":14,"parent_index":685},"name":"IDummyContract","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}},{"id":691,"node_type":85,"src":{"id":692,"line":129,"column":0,"start":3313,"end":3515,"length":203,"parent_index":675},"body":{"id":699,"node_type":46,"kind":0,"src":{"id":700,"line":129,"column":42,"start":3347,"end":3400,"length":54,"parent_index":691},"implemented":true,"statements":[{"id":701,"node_type":64,"src":{"id":702,"line":130,"column":12,"start":3361,"end":3390,"length":30,"parent_index":691},"arguments":[],"expression":{"id":703,"node_type":16,"src":{"id":704,"line":130,"column":17,"start":3366,"end":3387,"length":22,"parent_index":699},"name":"ExternalCallSuccessful","type_description":{"type_identifier":"t_event\u0026_Lottery_ExternalCallSuccessful_\u002699","type_string":"event Lottery.ExternalCallSuccessful"},"overloaded_declarations":[],"referenced_declaration":99,"is_pure":false}}]},"kind":86,"expression":{"id":693,"node_type":24,"kind":24,"src":{"id":694,"line":129,"column":12,"start":3317,"end":3345,"length":29,"parent_index":691},"argument_types":[],"arguments":[],"expression":{"id":695,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":696,"line":129,"column":12,"start":3317,"end":3343,"length":27,"parent_index":693},"expression":{"id":697,"node_type":16,"src":{"id":698,"line":129,"column":12,"start":3317,"end":3329,"length":13,"parent_index":695},"name":"dummyContract","type_description":{"type_identifier":"t_contract$_IDummyContract_$10","type_string":"contract IDummyContract"},"overloaded_declarations":[],"referenced_declaration":677,"is_pure":false},"member_name":"dummyFunction","argument_types":[],"type_description":{"type_identifier":"t_contract$_IDummyContract_$10","type_string":"contract IDummyContract"}},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"clauses":[{"id":0,"node_type":87,"kind":88,"src":{"id":705,"line":131,"column":0,"start":3402,"end":3515,"length":114,"parent_index":691},"body":{"id":712,"node_type":46,"kind":0,"src":{"id":713,"line":131,"column":48,"start":3440,"end":3515,"length":76,"parent_index":0},"implemented":true,"statements":[{"id":714,"node_type":64,"src":{"id":715,"line":132,"column":12,"start":3454,"end":3505,"length":52,"parent_index":0},"arguments":[{"id":716,"node_type":17,"kind":50,"value":"External contract failed","hex_value":"45787465726e616c20636f6e7472616374206661696c6564","src":{"id":717,"line":132,"column":36,"start":3478,"end":3503,"length":26,"parent_index":712},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"External contract failed\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":718,"node_type":16,"src":{"id":719,"line":132,"column":17,"start":3459,"end":3476,"length":18,"parent_index":712},"name":"ExternalCallFailed","type_description":{"type_identifier":"t_event\u0026_Lottery_ExternalCallFailed_\u0026103","type_string":"event Lottery.ExternalCallFailed"},"overloaded_declarations":[],"referenced_declaration":103,"is_pure":false}}]},"parameters":{"id":706,"node_type":43,"src":{"id":707,"line":131,"column":17,"start":3409,"end":3420,"length":12,"parent_index":0},"parameters":[{"id":708,"node_type":44,"src":{"id":709,"line":131,"column":17,"start":3409,"end":3420,"length":12,"parent_index":706},"name":"","type_name":{"id":710,"node_type":30,"src":{"id":711,"line":131,"column":17,"start":3409,"end":3413,"length":5,"parent_index":708},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]}}]}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":668,"node_type":43,"src":{"id":669,"line":126,"column":34,"start":3182,"end":3212,"length":31,"parent_index":666},"parameters":[{"id":670,"node_type":44,"src":{"id":671,"line":126,"column":34,"start":3182,"end":3212,"length":31,"parent_index":668},"scope":666,"name":"externalContractAddress","type_name":{"id":672,"node_type":30,"src":{"id":673,"line":126,"column":34,"start":3182,"end":3188,"length":7,"parent_index":670},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":674,"node_type":43,"src":{"id":667,"line":126,"column":4,"start":3152,"end":3521,"length":370,"parent_index":666},"parameters":[],"parameter_types":[]},"scope":35,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":721,"name":"integerToString","node_type":42,"kind":41,"src":{"id":722,"line":136,"column":4,"start":3528,"end":4071,"length":544,"parent_index":35},"body":{"id":735,"node_type":46,"kind":0,"src":{"id":736,"line":137,"column":32,"start":3609,"end":4071,"length":463,"parent_index":721},"implemented":true,"statements":[{"id":737,"node_type":48,"src":{"id":738,"line":139,"column":0,"start":3628,"end":3675,"length":48,"parent_index":735},"condition":{"id":739,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":740,"line":139,"column":12,"start":3632,"end":3638,"length":7,"parent_index":737},"operator":11,"left_expression":{"id":741,"node_type":16,"src":{"id":742,"line":139,"column":12,"start":3632,"end":3633,"length":2,"parent_index":739},"name":"_i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":741,"is_pure":false},"right_expression":{"id":743,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":744,"line":139,"column":18,"start":3638,"end":3638,"length":1,"parent_index":739},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":745,"node_type":46,"kind":0,"src":{"id":746,"line":139,"column":21,"start":3641,"end":3675,"length":35,"parent_index":721},"implemented":true,"statements":[{"id":747,"node_type":47,"src":{"id":748,"line":140,"column":12,"start":3655,"end":3665,"length":11,"parent_index":721},"function_return_parameters":721,"expression":{"id":749,"node_type":17,"kind":50,"value":"0","hex_value":"30","src":{"id":750,"line":140,"column":19,"start":3662,"end":3664,"length":3,"parent_index":745},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"0\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]}},{"id":751,"node_type":44,"src":{"id":752,"line":142,"column":8,"start":3685,"end":3696,"length":12,"parent_index":735},"assignments":[753],"declarations":[{"is_constant":false,"id":753,"state_mutability":1,"name":"j","node_type":44,"scope":735,"src":{"id":754,"line":142,"column":8,"start":3685,"end":3690,"length":6,"parent_index":751},"is_state_variable":false,"storage_location":1,"type_name":{"id":755,"node_type":30,"src":{"id":756,"line":142,"column":8,"start":3685,"end":3688,"length":4,"parent_index":753},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":757,"node_type":16,"src":{"id":758,"line":142,"column":17,"start":3694,"end":3695,"length":2,"parent_index":751},"name":"_i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":757,"is_pure":false}},{"id":759,"node_type":44,"src":{"id":760,"line":143,"column":8,"start":3706,"end":3714,"length":9,"parent_index":735},"assignments":[761],"declarations":[{"is_constant":false,"id":761,"state_mutability":1,"name":"len","node_type":44,"scope":735,"src":{"id":762,"line":143,"column":8,"start":3706,"end":3713,"length":8,"parent_index":759},"is_state_variable":false,"storage_location":1,"type_name":{"id":763,"node_type":30,"src":{"id":764,"line":143,"column":8,"start":3706,"end":3709,"length":4,"parent_index":761},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}]},{"id":0,"node_type":73,"kind":83,"src":{"id":765,"line":145,"column":0,"start":3733,"end":3798,"length":66,"parent_index":735},"condition":{"id":766,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":767,"line":145,"column":15,"start":3740,"end":3745,"length":6,"parent_index":0},"operator":12,"left_expression":{"id":768,"node_type":16,"src":{"id":769,"line":145,"column":15,"start":3740,"end":3740,"length":1,"parent_index":766},"name":"j","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":751,"is_pure":false},"right_expression":{"id":770,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":771,"line":145,"column":20,"start":3745,"end":3745,"length":1,"parent_index":766},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":772,"node_type":46,"kind":0,"src":{"id":773,"line":145,"column":23,"start":3748,"end":3798,"length":51,"parent_index":0},"implemented":true,"statements":[{"id":774,"node_type":18,"src":{"id":775,"line":146,"column":12,"start":3762,"end":3766,"length":5,"parent_index":0},"operator":27,"expression":{"id":776,"node_type":16,"src":{"id":777,"line":146,"column":12,"start":3762,"end":3764,"length":3,"parent_index":774},"name":"len","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":759,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"prefix":false,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false},{"id":778,"node_type":81,"src":{"id":779,"line":147,"column":12,"start":3781,"end":3788,"length":8,"parent_index":772},"expression":{"id":780,"node_type":27,"src":{"id":781,"line":147,"column":12,"start":3781,"end":3787,"length":7,"parent_index":772},"operator":4,"left_expression":{"id":782,"node_type":16,"src":{"id":783,"line":147,"column":12,"start":3781,"end":3781,"length":1,"parent_index":780},"name":"j","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":751,"is_pure":false},"right_expression":{"id":784,"node_type":17,"kind":49,"value":"10","hex_value":"3130","src":{"id":785,"line":147,"column":17,"start":3786,"end":3787,"length":2,"parent_index":780},"type_description":{"type_identifier":"t_rational_10_by_1","type_string":"int_const 10"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}]}},{"id":786,"node_type":44,"src":{"id":787,"line":149,"column":8,"start":3808,"end":3842,"length":35,"parent_index":735},"assignments":[788],"declarations":[{"is_constant":false,"id":788,"state_mutability":1,"name":"bstr","node_type":44,"scope":735,"src":{"id":789,"line":149,"column":8,"start":3808,"end":3824,"length":17,"parent_index":786},"is_state_variable":false,"storage_location":2,"type_name":{"id":790,"node_type":30,"src":{"id":791,"line":149,"column":8,"start":3808,"end":3812,"length":5,"parent_index":788},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":792,"node_type":24,"kind":24,"src":{"id":793,"line":149,"column":28,"start":3828,"end":3841,"length":14,"parent_index":786},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":798,"node_type":16,"src":{"id":799,"line":149,"column":38,"start":3838,"end":3840,"length":3,"parent_index":792},"name":"len","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":759,"is_pure":false}],"expression":{"id":794,"node_type":25,"src":{"id":795,"line":149,"column":28,"start":3828,"end":3836,"length":9,"parent_index":792},"argument_types":[],"type_name":{"id":796,"node_type":30,"src":{"id":797,"line":149,"column":32,"start":3832,"end":3836,"length":5,"parent_index":794},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"type_description":{"type_identifier":"t_bytes","type_string":"bytes"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}}},{"id":800,"node_type":44,"src":{"id":801,"line":150,"column":8,"start":3852,"end":3868,"length":17,"parent_index":735},"assignments":[802],"declarations":[{"is_constant":false,"id":802,"state_mutability":1,"name":"k","node_type":44,"scope":735,"src":{"id":803,"line":150,"column":8,"start":3852,"end":3857,"length":6,"parent_index":800},"is_state_variable":false,"storage_location":1,"type_name":{"id":804,"node_type":30,"src":{"id":805,"line":150,"column":8,"start":3852,"end":3855,"length":4,"parent_index":802},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":806,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":807,"line":150,"column":17,"start":3861,"end":3867,"length":7,"parent_index":800},"operator":2,"left_expression":{"id":808,"node_type":16,"src":{"id":809,"line":150,"column":17,"start":3861,"end":3863,"length":3,"parent_index":806},"name":"len","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":759,"is_pure":false},"right_expression":{"id":810,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":811,"line":150,"column":23,"start":3867,"end":3867,"length":1,"parent_index":806},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":812,"node_type":76,"src":{"id":813,"line":152,"column":0,"start":3887,"end":4036,"length":150,"parent_index":735},"condition":{"id":814,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":815,"line":156,"column":15,"start":4028,"end":4034,"length":7,"parent_index":735},"operator":12,"left_expression":{"id":816,"node_type":16,"src":{"id":817,"line":156,"column":15,"start":4028,"end":4029,"length":2,"parent_index":814},"name":"_i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":816,"is_pure":false},"right_expression":{"id":818,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":819,"line":156,"column":21,"start":4034,"end":4034,"length":1,"parent_index":814},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":820,"node_type":46,"kind":0,"src":{"id":821,"line":152,"column":11,"start":3890,"end":4011,"length":122,"parent_index":812},"implemented":true,"statements":[{"id":822,"node_type":81,"src":{"id":823,"line":153,"column":12,"start":3940,"end":3979,"length":40,"parent_index":820},"expression":{"id":824,"node_type":27,"src":{"id":825,"line":153,"column":12,"start":3940,"end":3978,"length":39,"parent_index":820},"operator":11,"left_expression":{"id":826,"node_type":22,"src":{"id":827,"line":153,"column":12,"start":3940,"end":3948,"length":9,"parent_index":824},"index_expression":{"id":828,"node_type":16,"src":{"id":829,"line":153,"column":12,"start":3940,"end":3943,"length":4,"parent_index":826},"name":"bstr","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":786,"is_pure":false},"base_expression":{"id":830,"node_type":18,"src":{"id":831,"line":153,"column":17,"start":3945,"end":3947,"length":3,"parent_index":812},"operator":28,"expression":{"id":832,"node_type":16,"src":{"id":833,"line":153,"column":17,"start":3945,"end":3945,"length":1,"parent_index":830},"name":"k","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":800,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"prefix":false,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false},"type_descriptions":[{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_bytes]$_t_uint256]$","type_string":"index[bytes:uint256]"}},"right_expression":{"id":834,"node_type":24,"kind":24,"src":{"id":835,"line":153,"column":24,"start":3952,"end":3978,"length":27,"parent_index":824},"argument_types":[{"type_identifier":"t_function_$_t_rational_48_by_1$","type_string":"function(int_const 48)"}],"arguments":[{"id":840,"node_type":24,"kind":24,"src":{"id":841,"line":153,"column":31,"start":3959,"end":3977,"length":19,"parent_index":834},"argument_types":[{"type_identifier":"t_rational_48_by_1","type_string":"int_const 48"}],"arguments":[{"id":846,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":847,"line":153,"column":37,"start":3965,"end":3976,"length":12,"parent_index":840},"operator":1,"left_expression":{"id":848,"node_type":17,"kind":49,"value":"48","hex_value":"3438","src":{"id":849,"line":153,"column":37,"start":3965,"end":3966,"length":2,"parent_index":846},"type_description":{"type_identifier":"t_rational_48_by_1","type_string":"int_const 48"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"right_expression":{"id":850,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":851,"line":153,"column":42,"start":3970,"end":3976,"length":7,"parent_index":846},"operator":5,"left_expression":{"id":852,"node_type":16,"src":{"id":853,"line":153,"column":42,"start":3970,"end":3971,"length":2,"parent_index":850},"name":"_i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":725,"is_pure":false},"right_expression":{"id":854,"node_type":17,"kind":49,"value":"10","hex_value":"3130","src":{"id":855,"line":153,"column":47,"start":3975,"end":3976,"length":2,"parent_index":850},"type_description":{"type_identifier":"t_rational_10_by_1","type_string":"int_const 10"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_rational_48_by_1","type_string":"int_const 48"}}],"expression":{"id":842,"node_type":16,"src":{"id":843,"line":153,"column":31,"start":3959,"end":3963,"length":5,"parent_index":840},"name":"uint8","type_name":{"id":844,"node_type":30,"src":{"id":845,"line":153,"column":31,"start":3959,"end":3963,"length":5,"parent_index":842},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_uint8$","type_string":"function(uint8)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_uint8","type_string":"uint8"}]},"type_description":{"type_identifier":"t_function_$_t_rational_48_by_1$","type_string":"function(int_const 48)"}}],"expression":{"id":836,"node_type":16,"src":{"id":837,"line":153,"column":24,"start":3952,"end":3957,"length":6,"parent_index":834},"name":"bytes1","type_name":{"id":838,"node_type":30,"src":{"id":839,"line":153,"column":24,"start":3952,"end":3957,"length":6,"parent_index":836},"name":"bytes1","type_description":{"type_identifier":"t_bytes1","type_string":"bytes1"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_bytes1$","type_string":"function(bytes1)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bytes1","type_string":"bytes1"}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_rational_48_by_1$","type_string":"function(function(int_const 48))"}},"type_description":{"type_identifier":"t_[_[$_t_bytes]$_t_uint256]$","type_string":"index[bytes:uint256]"}},"type_description":{"type_identifier":"t_[_[$_t_bytes]$_t_uint256]$","type_string":"index[bytes:uint256]"}},{"id":856,"node_type":81,"src":{"id":857,"line":154,"column":12,"start":3993,"end":4001,"length":9,"parent_index":820},"expression":{"id":858,"node_type":27,"src":{"id":859,"line":154,"column":12,"start":3993,"end":4000,"length":8,"parent_index":820},"operator":4,"left_expression":{"id":860,"node_type":16,"src":{"id":861,"line":154,"column":12,"start":3993,"end":3994,"length":2,"parent_index":858},"name":"_i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":725,"is_pure":false},"right_expression":{"id":862,"node_type":17,"kind":49,"value":"10","hex_value":"3130","src":{"id":863,"line":154,"column":18,"start":3999,"end":4000,"length":2,"parent_index":858},"type_description":{"type_identifier":"t_rational_10_by_1","type_string":"int_const 10"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}]}},{"id":864,"node_type":47,"src":{"id":865,"line":157,"column":8,"start":4046,"end":4065,"length":20,"parent_index":721},"function_return_parameters":721,"expression":{"id":866,"node_type":24,"kind":24,"src":{"id":867,"line":157,"column":15,"start":4053,"end":4064,"length":12,"parent_index":735},"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":872,"node_type":16,"src":{"id":873,"line":157,"column":22,"start":4060,"end":4063,"length":4,"parent_index":866},"name":"bstr","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":786,"is_pure":false}],"expression":{"id":868,"node_type":16,"src":{"id":869,"line":157,"column":15,"start":4053,"end":4058,"length":6,"parent_index":866},"name":"string","type_name":{"id":870,"node_type":30,"src":{"id":871,"line":157,"column":15,"start":4053,"end":4058,"length":6,"parent_index":868},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_string$","type_string":"function(string)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_string","type_string":"string"}]},"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":723,"node_type":43,"src":{"id":724,"line":136,"column":29,"start":3553,"end":3559,"length":7,"parent_index":721},"parameters":[{"id":725,"node_type":44,"src":{"id":726,"line":136,"column":29,"start":3553,"end":3559,"length":7,"parent_index":723},"scope":721,"name":"_i","type_name":{"id":727,"node_type":30,"src":{"id":728,"line":136,"column":29,"start":3553,"end":3556,"length":4,"parent_index":725},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":729,"node_type":43,"src":{"id":730,"line":137,"column":17,"start":3594,"end":3606,"length":13,"parent_index":721},"parameters":[{"id":731,"node_type":44,"src":{"id":732,"line":137,"column":17,"start":3594,"end":3606,"length":13,"parent_index":729},"scope":721,"name":"","type_name":{"id":733,"node_type":30,"src":{"id":734,"line":137,"column":17,"start":3594,"end":3599,"length":6,"parent_index":731},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"scope":35,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},{"id":875,"name":"dummyFunctionAssembly","node_type":42,"kind":41,"src":{"id":876,"line":160,"column":4,"start":4078,"end":4232,"length":155,"parent_index":35},"body":{"id":889,"node_type":46,"kind":0,"src":{"id":890,"line":160,"column":74,"start":4148,"end":4232,"length":85,"parent_index":875},"implemented":true,"statements":[{"id":891,"node_type":89,"src":{"id":892,"line":161,"column":8,"start":4158,"end":4226,"length":69,"parent_index":889},"body":{"id":894,"node_type":90,"kind":0,"src":{"id":892,"line":161,"column":8,"start":4158,"end":4226,"length":69,"parent_index":891},"implemented":false,"statements":[{"id":893,"node_type":91,"src":{"id":895,"line":162,"column":12,"start":4181,"end":4199,"length":19,"parent_index":891},"body":[]}]}}]},"implemented":true,"visibility":3,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":877,"node_type":43,"src":{"id":878,"line":160,"column":58,"start":4132,"end":4145,"length":14,"parent_index":875},"parameters":[{"id":879,"node_type":44,"src":{"id":880,"line":160,"column":58,"start":4132,"end":4145,"length":14,"parent_index":877},"scope":875,"name":"result","type_name":{"id":881,"node_type":30,"src":{"id":882,"line":160,"column":58,"start":4132,"end":4138,"length":7,"parent_index":879},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":883,"node_type":43,"src":{"id":884,"line":160,"column":58,"start":4132,"end":4145,"length":14,"parent_index":875},"parameters":[{"id":885,"node_type":44,"src":{"id":886,"line":160,"column":58,"start":4132,"end":4145,"length":14,"parent_index":883},"scope":875,"name":"result","type_name":{"id":887,"node_type":30,"src":{"id":888,"line":160,"column":58,"start":4132,"end":4138,"length":7,"parent_index":885},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":35,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}}],"linearized_base_contracts":[35],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":32,"line":8,"column":0,"start":141,"end":4473,"length":4333,"parent_index":9}}],"comments":[{"id":1,"src":{"id":0,"line":1,"column":0,"start":0,"end":30,"length":31,"parent_index":2},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":2,"src":{"id":0,"line":26,"column":4,"start":621,"end":643,"length":23,"parent_index":3},"node_type":31,"text":"// Define custom errors"},{"id":3,"src":{"id":0,"line":85,"column":12,"start":2132,"end":2162,"length":31,"parent_index":4},"node_type":31,"text":"// Odd numbers to continue loop"},{"id":4,"src":{"id":0,"line":109,"column":4,"start":2664,"end":2693,"length":30,"parent_index":5},"node_type":31,"text":"// New function using for loop"},{"id":5,"src":{"id":0,"line":119,"column":4,"start":2984,"end":3011,"length":28,"parent_index":6},"node_type":31,"text":"// New function using revert"},{"id":6,"src":{"id":0,"line":131,"column":30,"start":3422,"end":3437,"length":16,"parent_index":7},"node_type":32,"text":"/*lowLevelData*/"},{"id":7,"src":{"id":0,"line":152,"column":31,"start":3910,"end":3926,"length":17,"parent_index":8},"node_type":31,"text":"// do while loop"},{"id":8,"src":{"id":0,"line":166,"column":4,"start":4239,"end":4471,"length":233,"parent_index":9},"node_type":32,"text":"/** \n function dummyFunctionYul() public pure returns (uint256 result) {\n assembly {\n // Yul code\n let x := calldataload(0)\n let y := add(x, 1)\n result := y\n }\n }\n */"}]} \ No newline at end of file diff --git a/data/tests/ast/Lottery.solgo.ast.proto.json b/data/tests/ast/Lottery.solgo.ast.proto.json index 581d6b10..c69f13b9 100644 --- a/data/tests/ast/Lottery.solgo.ast.proto.json +++ b/data/tests/ast/Lottery.solgo.ast.proto.json @@ -1,9033 +1,9064 @@ { - "id": 9, - "entry_source_unit": 31, - "node_type": 80, - "source_units": [ - { - "id": 10, - "license": "MIT", - "name": "IDummyContract", - "exported_symbols": [ - { - "id": 10, - "name": "IDummyContract" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "12", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "4", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "54", - "id": "13", - "length": "23", - "line": "2", - "parentIndex": "10", - "start": "32" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "fullyImplemented": true, - "id": "14", - "kind": "KIND_LIBRARY", - "linearizedBaseContracts": [ - "14" - ], - "name": "IDummyContract", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "30", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "136", - "id": "17", - "length": "49", - "line": "5", - "parentIndex": "16", - "start": "88" - } - }, - "id": "16", - "kind": "KIND_FUNCTION", - "name": "dummyFunction", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "18", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "20", - "nodeType": "VARIABLE_DECLARATION", - "scope": "20", - "src": { - "column": "47", - "end": "134", - "id": "21", - "length": "4", - "line": "5", - "parentIndex": "18", - "start": "131" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "22", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "47", - "end": "134", - "id": "23", - "length": "4", - "line": "5", - "parentIndex": "20", - "start": "131" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "47", - "end": "134", - "id": "19", - "length": "4", - "line": "5", - "parentIndex": "16", - "start": "131" - } - }, - "returnParameters": { - "id": "24", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "26", - "nodeType": "VARIABLE_DECLARATION", - "scope": "26", - "src": { - "column": "47", - "end": "134", - "id": "27", - "length": "4", - "line": "5", - "parentIndex": "24", - "start": "131" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "28", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "47", - "end": "134", - "id": "29", - "length": "4", - "line": "5", - "parentIndex": "26", - "start": "131" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "47", - "end": "134", - "id": "25", - "length": "4", - "line": "5", - "parentIndex": "16", - "start": "131" - } - }, - "scope": "14", - "src": { - "column": "4", - "end": "136", - "id": "17", - "length": "49", - "line": "5", - "parentIndex": "14", - "start": "88" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool", - "typeString": "function(bool)" - }, - "visibility": "EXTERNAL" - } - } - ], - "src": { - "end": "138", - "length": "82", - "line": "4", - "parentIndex": "10", - "start": "57" - } - } - } - ] - }, - "src": { - "id": 11, - "line": 4, - "start": 57, - "end": 138, - "length": 82, - "parent_index": 9 - } - }, - { - "id": 31, - "license": "MIT", - "name": "Lottery", - "absolute_path": "Lottery.sol", - "exported_symbols": [ - { - "id": 31, - "name": "Lottery", - "absolute_path": "Lottery.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "33", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "4", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "54", - "id": "34", - "length": "23", - "line": "2", - "parentIndex": "31", - "start": "32" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "fullyImplemented": true, - "id": "35", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "35" - ], - "name": "Lottery", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "37", - "isConstant": true, - "isStateVariable": true, - "name": "DUMMY_CONSTANT", - "nodeType": "VARIABLE_DECLARATION", - "scope": "35", - "src": { - "column": "4", - "end": "210", - "id": "38", - "length": "47", - "line": "9", - "parentIndex": "35", - "start": "164" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "39", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "4", - "end": "170", - "id": "40", - "length": "7", - "line": "9", - "parentIndex": "37", - "start": "164" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Enum", - "value": { - "canonicalName": "Lottery.LotteryState", - "id": "42", - "members": [ - { - "id": "44", - "name": "Accepting", - "nodeType": "ENUM_VALUE", - "scope": "44", - "src": { - "column": "24", - "end": "245", - "length": "8", - "line": "11", - "parentIndex": "42", - "start": "237" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState$_Accepting_$44", - "typeString": "enum Lottery.LotteryState.Accepting" - } - }, - { - "id": "45", - "name": "Finished", - "nodeType": "ENUM_VALUE", - "scope": "45", - "src": { - "column": "35", - "end": "255", - "length": "7", - "line": "11", - "parentIndex": "42", - "start": "248" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState$_Finished_$45", - "typeString": "enum Lottery.LotteryState.Finished" - } - } - ], - "name": "LotteryState", - "nodeType": "ENUM_DEFINITION", - "src": { - "column": "4", - "end": "257", - "id": "43", - "length": "40", - "line": "11", - "parentIndex": "35", - "start": "217" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", - "value": { - "canonicalName": "Lottery.Player", - "id": "47", - "members": [ - { - "id": "49", - "name": "addr", - "nodeType": "VARIABLE_DECLARATION", - "scope": "49", - "src": { - "column": "8", - "end": "299", - "id": "50", - "length": "13", - "line": "13", - "parentIndex": "47", - "start": "287" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "51", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "293", - "id": "52", - "length": "7", - "line": "13", - "parentIndex": "49", - "start": "287" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "53", - "name": "ticketCount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "53", - "src": { - "column": "8", - "end": "328", - "id": "54", - "length": "20", - "line": "14", - "parentIndex": "47", - "start": "309" - }, - "stateMutability": "MUTABLE", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "55", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "315", - "id": "56", - "length": "7", - "line": "14", - "parentIndex": "53", - "start": "309" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "name": "Player", - "nodeType": "STRUCT_DEFINITION", - "src": { - "column": "4", - "end": "334", - "id": "48", - "length": "72", - "line": "12", - "parentIndex": "31", - "start": "263" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_struct$_Lottery_Player_$47", - "typeString": "struct Lottery.Player" - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "58", - "isStateVariable": true, - "name": "players", - "nodeType": "VARIABLE_DECLARATION", - "scope": "35", - "src": { - "column": "4", - "end": "381", - "id": "59", - "length": "42", - "line": "16", - "parentIndex": "35", - "start": "340" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - }, - "typeName": { - "id": "60", - "keyType": { - "id": "62", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "12", - "end": "354", - "id": "63", - "length": "7", - "line": "16", - "parentIndex": "60", - "start": "348" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "name": "Player", - "nodeType": "USER_DEFINED_PATH_NAME", - "pathNode": { - "id": "67", - "name": "Player", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "47", - "src": { - "column": "23", - "end": "364", - "id": "68", - "length": "6", - "line": "16", - "parentIndex": "60", - "start": "359" - } - }, - "referencedDeclaration": "47", - "src": { - "column": "23", - "end": "364", - "id": "66", - "length": "6", - "line": "16", - "parentIndex": "60", - "start": "359" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - }, - "valueType": { - "id": "64", - "name": "Player", - "nodeType": "ELEMENTARY_TYPE_NAME", - "referencedDeclaration": "47", - "src": { - "column": "23", - "end": "364", - "id": "65", - "length": "6", - "line": "16", - "parentIndex": "60", - "start": "359" - }, - "typeDescription": { - "typeIdentifier": "t_struct$_Lottery_Player_$47", - "typeString": "struct Lottery.Player" - } - } - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "70", - "isStateVariable": true, - "name": "playerAddresses", - "nodeType": "VARIABLE_DECLARATION", - "scope": "35", - "src": { - "column": "4", - "end": "419", - "id": "71", - "length": "33", - "line": "17", - "parentIndex": "35", - "start": "387" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "72", - "name": "address", - "src": { - "column": "4", - "end": "393", - "id": "74", - "length": "7", - "line": "17", - "parentIndex": "70", - "start": "387" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "76", - "isStateVariable": true, - "name": "state", - "nodeType": "VARIABLE_DECLARATION", - "scope": "35", - "src": { - "column": "4", - "end": "451", - "id": "77", - "length": "26", - "line": "19", - "parentIndex": "35", - "start": "426" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - }, - "typeName": { - "id": "78", - "nodeType": "USER_DEFINED_PATH_NAME", - "pathNode": { - "id": "80", - "name": "LotteryState", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "42", - "src": { - "column": "4", - "end": "437", - "id": "81", - "length": "12", - "line": "19", - "parentIndex": "78", - "start": "426" - } - }, - "referencedDeclaration": "42", - "src": { - "column": "4", - "end": "437", - "id": "79", - "length": "12", - "line": "19", - "parentIndex": "76", - "start": "426" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", - "value": { - "id": "83", - "name": "PlayerJoined", - "nodeType": "EVENT_DEFINITION", - "parameters": { - "id": "85", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "86", - "name": "addr", - "nodeType": "VARIABLE_DECLARATION", - "scope": "86", - "src": { - "column": "23", - "end": "488", - "id": "87", - "length": "12", - "line": "21", - "parentIndex": "85", - "start": "477" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "88", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "483", - "id": "89", - "length": "7", - "line": "21", - "parentIndex": "86", - "start": "477" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "4", - "end": "490", - "id": "84", - "length": "33", - "line": "21", - "parentIndex": "83", - "start": "458" - } - }, - "src": { - "column": "4", - "end": "490", - "id": "84", - "length": "33", - "line": "21", - "parentIndex": "35", - "start": "458" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_Lottery_PlayerJoined_\u002683", - "typeString": "event Lottery.PlayerJoined" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", - "value": { - "id": "91", - "name": "LotteryFinished", - "nodeType": "EVENT_DEFINITION", - "parameters": { - "id": "93", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "94", - "name": "winner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "94", - "src": { - "column": "26", - "end": "531", - "id": "95", - "length": "14", - "line": "22", - "parentIndex": "93", - "start": "518" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "96", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "26", - "end": "524", - "id": "97", - "length": "7", - "line": "22", - "parentIndex": "94", - "start": "518" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "4", - "end": "533", - "id": "92", - "length": "38", - "line": "22", - "parentIndex": "91", - "start": "496" - } - }, - "src": { - "column": "4", - "end": "533", - "id": "92", - "length": "38", - "line": "22", - "parentIndex": "35", - "start": "496" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_Lottery_LotteryFinished_\u002691", - "typeString": "event Lottery.LotteryFinished" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", - "value": { - "id": "99", - "name": "ExternalCallSuccessful", - "nodeType": "EVENT_DEFINITION", - "parameters": { - "id": "101", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "569", - "id": "100", - "length": "31", - "line": "23", - "parentIndex": "99", - "start": "539" - } - }, - "src": { - "column": "4", - "end": "569", - "id": "100", - "length": "31", - "line": "23", - "parentIndex": "35", - "start": "539" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_Lottery_ExternalCallSuccessful_\u002699", - "typeString": "event Lottery.ExternalCallSuccessful" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", - "value": { - "id": "103", - "name": "ExternalCallFailed", - "nodeType": "EVENT_DEFINITION", - "parameters": { - "id": "105", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "106", - "name": "reason", - "nodeType": "VARIABLE_DECLARATION", - "scope": "106", - "src": { - "column": "29", - "end": "612", - "id": "107", - "length": "13", - "line": "24", - "parentIndex": "105", - "start": "600" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "108", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "29", - "end": "605", - "id": "109", - "length": "6", - "line": "24", - "parentIndex": "106", - "start": "600" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "4", - "end": "614", - "id": "104", - "length": "40", - "line": "24", - "parentIndex": "103", - "start": "575" - } - }, - "src": { - "column": "4", - "end": "614", - "id": "104", - "length": "40", - "line": "24", - "parentIndex": "35", - "start": "575" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_Lottery_ExternalCallFailed_\u0026103", - "typeString": "event Lottery.ExternalCallFailed" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Error", - "value": { - "id": "111", - "name": "InvalidState", - "nodeType": "ERROR_DEFINITION", - "parameters": { - "id": "113", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "669", - "id": "112", - "length": "21", - "line": "27", - "parentIndex": "111", - "start": "649" - } - }, - "src": { - "column": "4", - "end": "669", - "id": "112", - "length": "21", - "line": "27", - "parentIndex": "35", - "start": "649" - }, - "typeDescription": { - "typeIdentifier": "t_error$_Lottery_InvalidState_$111", - "typeString": "error Lottery.InvalidState" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Error", - "value": { - "id": "115", - "name": "OwnerCannotParticipate", - "nodeType": "ERROR_DEFINITION", - "parameters": { - "id": "117", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "705", - "id": "116", - "length": "31", - "line": "28", - "parentIndex": "115", - "start": "675" - } - }, - "src": { - "column": "4", - "end": "705", - "id": "116", - "length": "31", - "line": "28", - "parentIndex": "35", - "start": "675" - }, - "typeDescription": { - "typeIdentifier": "t_error$_Lottery_OwnerCannotParticipate_$115", - "typeString": "error Lottery.OwnerCannotParticipate" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Error", - "value": { - "id": "119", - "name": "NoValueProvided", - "nodeType": "ERROR_DEFINITION", - "parameters": { - "id": "121", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "734", - "id": "120", - "length": "24", - "line": "29", - "parentIndex": "119", - "start": "711" - } - }, - "src": { - "column": "4", - "end": "734", - "id": "120", - "length": "24", - "line": "29", - "parentIndex": "35", - "start": "711" - }, - "typeDescription": { - "typeIdentifier": "t_error$_Lottery_NoValueProvided_$119", - "typeString": "error Lottery.NoValueProvided" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Error", - "value": { - "id": "123", - "name": "InvalidWinner", - "nodeType": "ERROR_DEFINITION", - "parameters": { - "id": "125", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "761", - "id": "124", - "length": "22", - "line": "30", - "parentIndex": "123", - "start": "740" - } - }, - "src": { - "column": "4", - "end": "761", - "id": "124", - "length": "22", - "line": "30", - "parentIndex": "35", - "start": "740" - }, - "typeDescription": { - "typeIdentifier": "t_error$_Lottery_InvalidWinner_$123", - "typeString": "error Lottery.InvalidWinner" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Error", - "value": { - "id": "127", - "name": "InvalidPlayerAddress", - "nodeType": "ERROR_DEFINITION", - "parameters": { - "id": "129", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "795", - "id": "128", - "length": "29", - "line": "31", - "parentIndex": "127", - "start": "767" - } - }, - "src": { - "column": "4", - "end": "795", - "id": "128", - "length": "29", - "line": "31", - "parentIndex": "35", - "start": "767" - }, - "typeDescription": { - "typeIdentifier": "t_error$_Lottery_InvalidPlayerAddress_$127", - "typeString": "error Lottery.InvalidPlayerAddress" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Error", - "value": { - "id": "131", - "name": "OnlyOwnerCanCall", - "nodeType": "ERROR_DEFINITION", - "parameters": { - "id": "133", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "825", - "id": "132", - "length": "25", - "line": "32", - "parentIndex": "131", - "start": "801" - } - }, - "src": { - "column": "4", - "end": "825", - "id": "132", - "length": "25", - "line": "32", - "parentIndex": "35", - "start": "801" - }, - "typeDescription": { - "typeIdentifier": "t_error$_Lottery_OnlyOwnerCanCall_$131", - "typeString": "error Lottery.OnlyOwnerCanCall" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Modifier", - "value": { - "body": { - "id": "145", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "42", - "end": "963", - "id": "146", - "length": "94", - "line": "34", - "parentIndex": "135", - "start": "870" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "155", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "29", - "end": "946", - "id": "156", - "length": "46", - "line": "35", - "parentIndex": "135", - "start": "901" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Revert", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "159", - "name": "InvalidState", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "111", - "src": { - "column": "19", - "end": "933", - "id": "160", - "length": "12", - "line": "36", - "parentIndex": "155", - "start": "922" - }, - "typeDescription": { - "typeIdentifier": "t_error$_Lottery_InvalidState_$111", - "typeString": "error Lottery.InvalidState" - } - } - }, - "id": "157", - "nodeType": "REVERT_STATEMENT", - "src": { - "column": "12", - "end": "936", - "id": "158", - "length": "22", - "line": "36", - "parentIndex": "135", - "start": "915" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "149", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "151", - "name": "state", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "76", - "src": { - "column": "12", - "end": "888", - "id": "152", - "length": "5", - "line": "35", - "parentIndex": "149", - "start": "884" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "153", - "name": "_state", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "139", - "src": { - "column": "21", - "end": "898", - "id": "154", - "length": "6", - "line": "35", - "parentIndex": "149", - "start": "893" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - } - }, - "src": { - "column": "12", - "end": "898", - "id": "150", - "length": "15", - "line": "35", - "parentIndex": "147", - "start": "884" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "147", - "nodeType": "IF_STATEMENT", - "src": { - "end": "946", - "id": "148", - "length": "67", - "line": "35", - "parentIndex": "145", - "start": "880" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "161", - "name": "_", - "nodeType": "PLACEHOLDER_STATEMENT", - "src": { - "column": "8", - "end": "956", - "id": "162", - "length": "1", - "line": "38", - "parentIndex": "145", - "start": "956" - }, - "typeDescription": { - "typeIdentifier": "t_placeholder_literal", - "typeString": "t_placeholder" - } - } - } - ] - }, - "id": "135", - "name": "inState", - "nodeType": "MODIFIER_DEFINITION", - "parameters": { - "id": "137", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "139", - "name": "_state", - "nodeType": "VARIABLE_DECLARATION", - "scope": "139", - "src": { - "column": "21", - "end": "867", - "id": "140", - "length": "19", - "line": "34", - "parentIndex": "137", - "start": "849" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - }, - "typeName": { - "id": "141", - "nodeType": "USER_DEFINED_PATH_NAME", - "pathNode": { - "id": "143", - "name": "LotteryState", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "42", - "src": { - "column": "21", - "end": "860", - "id": "144", - "length": "12", - "line": "34", - "parentIndex": "141", - "start": "849" - } - }, - "referencedDeclaration": "42", - "src": { - "column": "21", - "end": "860", - "id": "142", - "length": "12", - "line": "34", - "parentIndex": "139", - "start": "849" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "21", - "end": "867", - "id": "138", - "length": "19", - "line": "34", - "parentIndex": "35", - "start": "849" - } - }, - "src": { - "column": "4", - "end": "963", - "id": "136", - "length": "132", - "line": "34", - "parentIndex": "35", - "start": "832" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Modifier", - "value": { - "body": { - "id": "167", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "24", - "end": "1099", - "id": "168", - "length": "110", - "line": "41", - "parentIndex": "164", - "start": "990" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "181", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "35", - "end": "1082", - "id": "182", - "length": "56", - "line": "42", - "parentIndex": "164", - "start": "1027" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Revert", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "185", - "name": "OwnerCannotParticipate", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "115", - "src": { - "column": "19", - "end": "1069", - "id": "186", - "length": "22", - "line": "43", - "parentIndex": "181", - "start": "1048" - }, - "typeDescription": { - "typeIdentifier": "t_error$_Lottery_OwnerCannotParticipate_$115", - "typeString": "error Lottery.OwnerCannotParticipate" - } - } - }, - "id": "183", - "nodeType": "REVERT_STATEMENT", - "src": { - "column": "12", - "end": "1072", - "id": "184", - "length": "32", - "line": "43", - "parentIndex": "164", - "start": "1041" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "171", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "175", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "12", - "end": "1006", - "id": "176", - "length": "3", - "line": "42", - "parentIndex": "173", - "start": "1004" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "173", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "1013", - "id": "174", - "length": "10", - "line": "42", - "parentIndex": "171", - "start": "1004" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "179", - "name": "owner", - "nodeType": "IDENTIFIER", - "src": { - "column": "26", - "end": "1022", - "id": "180", - "length": "5", - "line": "42", - "parentIndex": "177", - "start": "1018" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "177", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "26", - "end": "1024", - "id": "178", - "length": "7", - "line": "42", - "parentIndex": "171", - "start": "1018" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "src": { - "column": "12", - "end": "1024", - "id": "172", - "length": "21", - "line": "42", - "parentIndex": "169", - "start": "1004" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "169", - "nodeType": "IF_STATEMENT", - "src": { - "end": "1082", - "id": "170", - "length": "83", - "line": "42", - "parentIndex": "167", - "start": "1000" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "187", - "name": "_", - "nodeType": "PLACEHOLDER_STATEMENT", - "src": { - "column": "8", - "end": "1092", - "id": "188", - "length": "1", - "line": "45", - "parentIndex": "167", - "start": "1092" - }, - "typeDescription": { - "typeIdentifier": "t_placeholder_literal", - "typeString": "t_placeholder" - } - } - } - ] - }, - "id": "164", - "name": "notOwner", - "nodeType": "MODIFIER_DEFINITION", - "parameters": { - "id": "166", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "1099", - "id": "165", - "length": "130", - "line": "41", - "parentIndex": "35", - "start": "970" - } - }, - "src": { - "column": "4", - "end": "1099", - "id": "165", - "length": "130", - "line": "41", - "parentIndex": "35", - "start": "970" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Fallback", - "value": { - "body": { - "id": "194", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "32", - "end": "1136", - "id": "195", - "length": "3", - "line": "48", - "parentIndex": "190", - "start": "1134" - } - }, - "id": "190", - "implemented": true, - "kind": "FALLBACK", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "192", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "1136", - "id": "191", - "length": "31", - "line": "48", - "parentIndex": "190", - "start": "1106" - } - }, - "returnParameters": { - "id": "193", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "1136", - "id": "191", - "length": "31", - "line": "48", - "parentIndex": "190", - "start": "1106" - } - }, - "src": { - "column": "4", - "end": "1136", - "id": "191", - "length": "31", - "line": "48", - "parentIndex": "35", - "start": "1106" - }, - "stateMutability": "PAYABLE", - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Receive", - "value": { - "body": { - "id": "201", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "31", - "end": "1171", - "id": "202", - "length": "3", - "line": "49", - "parentIndex": "197", - "start": "1169" - } - }, - "id": "197", - "implemented": true, - "kind": "RECEIVE", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "199", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "1171", - "id": "198", - "length": "30", - "line": "49", - "parentIndex": "197", - "start": "1142" - } - }, - "returnParameters": { - "id": "200", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "1171", - "id": "198", - "length": "30", - "line": "49", - "parentIndex": "197", - "start": "1142" - } - }, - "src": { - "column": "4", - "end": "1171", - "id": "198", - "length": "30", - "line": "49", - "parentIndex": "35", - "start": "1142" - }, - "stateMutability": "NONPAYABLE", - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "208", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "18", - "end": "1238", - "id": "209", - "length": "47", - "line": "51", - "parentIndex": "204", - "start": "1192" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "212", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "214", - "name": "state", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "76", - "src": { - "column": "8", - "end": "1206", - "id": "215", - "length": "5", - "line": "52", - "parentIndex": "212", - "start": "1202" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "218", - "name": "LotteryState", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "42", - "src": { - "column": "16", - "end": "1221", - "id": "219", - "length": "12", - "line": "52", - "parentIndex": "216", - "start": "1210" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - } - }, - "id": "216", - "memberName": "Accepting", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "16", - "end": "1231", - "id": "217", - "length": "22", - "line": "52", - "parentIndex": "212", - "start": "1210" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - } - }, - "src": { - "column": "8", - "end": "1231", - "id": "213", - "length": "30", - "line": "52", - "parentIndex": "208", - "start": "1202" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - } - }, - "id": "210", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "1232", - "id": "211", - "length": "31", - "line": "52", - "parentIndex": "208", - "start": "1202" - } - } - } - ] - }, - "id": "204", - "implemented": true, - "kind": "CONSTRUCTOR", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "206", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "1238", - "id": "205", - "length": "61", - "line": "51", - "parentIndex": "204", - "start": "1178" - } - }, - "returnParameters": { - "id": "207", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "1238", - "id": "205", - "length": "61", - "line": "51", - "parentIndex": "204", - "start": "1178" - } - }, - "scope": "35", - "src": { - "column": "4", - "end": "1238", - "id": "205", - "length": "61", - "line": "51", - "parentIndex": "35", - "start": "1178" - }, - "stateMutability": "NONPAYABLE", - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "237", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "76", - "end": "1658", - "id": "238", - "length": "342", - "line": "55", - "parentIndex": "221", - "start": "1317" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "249", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "28", - "end": "1395", - "id": "250", - "length": "49", - "line": "56", - "parentIndex": "221", - "start": "1347" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Revert", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "253", - "name": "NoValueProvided", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "119", - "src": { - "column": "19", - "end": "1382", - "id": "254", - "length": "15", - "line": "57", - "parentIndex": "249", - "start": "1368" - }, - "typeDescription": { - "typeIdentifier": "t_error$_Lottery_NoValueProvided_$119", - "typeString": "error Lottery.NoValueProvided" - } - } - }, - "id": "251", - "nodeType": "REVERT_STATEMENT", - "src": { - "column": "12", - "end": "1385", - "id": "252", - "length": "25", - "line": "57", - "parentIndex": "221", - "start": "1361" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "241", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "245", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "12", - "end": "1333", - "id": "246", - "length": "3", - "line": "56", - "parentIndex": "243", - "start": "1331" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "243", - "memberName": "value", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "1339", - "id": "244", - "length": "9", - "line": "56", - "parentIndex": "241", - "start": "1331" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "247", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "25", - "end": "1344", - "id": "248", - "length": "1", - "line": "56", - "parentIndex": "241", - "start": "1344" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "12", - "end": "1344", - "id": "242", - "length": "14", - "line": "56", - "parentIndex": "239", - "start": "1331" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "239", - "nodeType": "IF_STATEMENT", - "src": { - "end": "1395", - "id": "240", - "length": "69", - "line": "56", - "parentIndex": "237", - "start": "1327" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "277", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "52", - "end": "1557", - "id": "278", - "length": "108", - "line": "60", - "parentIndex": "221", - "start": "1450" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "281", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "291", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "20", - "end": "1474", - "id": "292", - "length": "3", - "line": "61", - "parentIndex": "289", - "start": "1472" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "289", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "20", - "end": "1481", - "id": "290", - "length": "10", - "line": "61", - "parentIndex": "285", - "start": "1472" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "285", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "287", - "name": "players", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "58", - "src": { - "column": "12", - "end": "1470", - "id": "288", - "length": "7", - "line": "61", - "parentIndex": "285", - "start": "1464" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "12", - "end": "1482", - "id": "286", - "length": "19", - "line": "61", - "parentIndex": "283", - "start": "1464" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "id": "283", - "memberName": "addr", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "1487", - "id": "284", - "length": "24", - "line": "61", - "parentIndex": "281", - "start": "1464" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "295", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "39", - "end": "1493", - "id": "296", - "length": "3", - "line": "61", - "parentIndex": "293", - "start": "1491" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "293", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "39", - "end": "1500", - "id": "294", - "length": "10", - "line": "61", - "parentIndex": "281", - "start": "1491" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "src": { - "column": "12", - "end": "1500", - "id": "282", - "length": "37", - "line": "61", - "parentIndex": "277", - "start": "1464" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - } - } - }, - "id": "279", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "12", - "end": "1501", - "id": "280", - "length": "38", - "line": "61", - "parentIndex": "277", - "start": "1464" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "301", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "33", - "end": "1538", - "id": "302", - "length": "3", - "line": "62", - "parentIndex": "299", - "start": "1536" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "299", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "33", - "end": "1545", - "id": "300", - "length": "10", - "line": "62", - "parentIndex": "297", - "start": "1536" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "305", - "name": "playerAddresses", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "70", - "src": { - "column": "12", - "end": "1529", - "id": "306", - "length": "15", - "line": "62", - "parentIndex": "303", - "start": "1515" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "303", - "memberName": "push", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "1534", - "id": "304", - "length": "20", - "line": "62", - "parentIndex": "297", - "start": "1515" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "297", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "1546", - "id": "298", - "length": "32", - "line": "62", - "parentIndex": "277", - "start": "1515" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "257", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "267", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "20", - "end": "1420", - "id": "268", - "length": "3", - "line": "60", - "parentIndex": "265", - "start": "1418" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "265", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "20", - "end": "1427", - "id": "266", - "length": "10", - "line": "60", - "parentIndex": "261", - "start": "1418" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "261", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "263", - "name": "players", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "58", - "src": { - "column": "12", - "end": "1416", - "id": "264", - "length": "7", - "line": "60", - "parentIndex": "261", - "start": "1410" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "12", - "end": "1428", - "id": "262", - "length": "19", - "line": "60", - "parentIndex": "259", - "start": "1410" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "id": "259", - "memberName": "addr", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "1433", - "id": "260", - "length": "24", - "line": "60", - "parentIndex": "257", - "start": "1410" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "271", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "48", - "end": "1446", - "id": "272", - "length": "1", - "line": "60", - "parentIndex": "269", - "start": "1446" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "273", - "nodeType": "IDENTIFIER", - "src": { - "column": "40", - "end": "1444", - "id": "274", - "length": "7", - "line": "60", - "parentIndex": "269", - "start": "1438" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "275", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "40", - "end": "1444", - "id": "276", - "length": "7", - "line": "60", - "parentIndex": "273", - "start": "1438" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "269", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "40", - "end": "1447", - "id": "270", - "length": "10", - "line": "60", - "parentIndex": "257", - "start": "1438" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "12", - "end": "1447", - "id": "258", - "length": "38", - "line": "60", - "parentIndex": "255", - "start": "1410" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "255", - "nodeType": "IF_STATEMENT", - "src": { - "end": "1557", - "id": "256", - "length": "152", - "line": "60", - "parentIndex": "237", - "start": "1406" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "309", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "319", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "16", - "end": "1578", - "id": "320", - "length": "3", - "line": "65", - "parentIndex": "317", - "start": "1576" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "317", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "16", - "end": "1585", - "id": "318", - "length": "10", - "line": "65", - "parentIndex": "313", - "start": "1576" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "313", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "315", - "name": "players", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "58", - "src": { - "column": "8", - "end": "1574", - "id": "316", - "length": "7", - "line": "65", - "parentIndex": "313", - "start": "1568" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "8", - "end": "1586", - "id": "314", - "length": "19", - "line": "65", - "parentIndex": "311", - "start": "1568" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "id": "311", - "memberName": "ticketCount", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "8", - "end": "1598", - "id": "312", - "length": "31", - "line": "65", - "parentIndex": "309", - "start": "1568" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "PLUS_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "323", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "43", - "end": "1605", - "id": "324", - "length": "3", - "line": "65", - "parentIndex": "321", - "start": "1603" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "321", - "memberName": "value", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "43", - "end": "1611", - "id": "322", - "length": "9", - "line": "65", - "parentIndex": "309", - "start": "1603" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "8", - "end": "1611", - "id": "310", - "length": "44", - "line": "65", - "parentIndex": "237", - "start": "1568" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - } - } - }, - "id": "307", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "1612", - "id": "308", - "length": "45", - "line": "65", - "parentIndex": "237", - "start": "1568" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "329", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "26", - "end": "1643", - "id": "330", - "length": "3", - "line": "67", - "parentIndex": "327", - "start": "1641" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "327", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "26", - "end": "1650", - "id": "328", - "length": "10", - "line": "67", - "parentIndex": "237", - "start": "1641" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "331", - "name": "PlayerJoined", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "83", - "src": { - "column": "13", - "end": "1639", - "id": "332", - "length": "12", - "line": "67", - "parentIndex": "237", - "start": "1628" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_Lottery_PlayerJoined_\u002683", - "typeString": "event Lottery.PlayerJoined" - } - } - }, - "id": "325", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "1652", - "id": "326", - "length": "30", - "line": "67", - "parentIndex": "221", - "start": "1623" - } - } - } - ] - }, - "id": "221", - "implemented": true, - "kind": "KIND_FUNCTION", - "modifiers": [ - { - "argumentTypes": [ - { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "229", - "name": "LotteryState", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "42", - "src": { - "column": "43", - "end": "1295", - "id": "230", - "length": "12", - "line": "55", - "parentIndex": "227", - "start": "1284" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - } - }, - "id": "227", - "memberName": "Accepting", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "43", - "end": "1305", - "id": "228", - "length": "22", - "line": "55", - "parentIndex": "223", - "start": "1284" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - } - } - ], - "id": "223", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "225", - "name": "inState", - "src": { - "column": "35", - "end": "1282", - "id": "226", - "length": "7", - "line": "55", - "parentIndex": "223", - "start": "1276" - } - }, - "name": "inState", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "35", - "end": "1306", - "id": "224", - "length": "31", - "line": "55", - "parentIndex": "221", - "start": "1276" - } - }, - { - "id": "231", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "233", - "name": "notOwner", - "src": { - "column": "67", - "end": "1315", - "id": "234", - "length": "8", - "line": "55", - "parentIndex": "231", - "start": "1308" - } - }, - "name": "notOwner", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "67", - "end": "1315", - "id": "232", - "length": "8", - "line": "55", - "parentIndex": "221", - "start": "1308" - } - } - ], - "name": "join", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "235", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "1658", - "id": "222", - "length": "414", - "line": "55", - "parentIndex": "221", - "start": "1245" - } - }, - "returnParameters": { - "id": "236", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "1658", - "id": "222", - "length": "414", - "line": "55", - "parentIndex": "221", - "start": "1245" - } - }, - "scope": "35", - "src": { - "column": "4", - "end": "1658", - "id": "222", - "length": "414", - "line": "55", - "parentIndex": "35", - "start": "1245" - }, - "stateMutability": "PAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "346", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "68", - "end": "2467", - "id": "347", - "length": "739", - "line": "70", - "parentIndex": "334", - "start": "1729" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "350", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "352", - "name": "state", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "76", - "src": { - "column": "8", - "end": "1743", - "id": "353", - "length": "5", - "line": "71", - "parentIndex": "350", - "start": "1739" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "356", - "name": "LotteryState", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "42", - "src": { - "column": "16", - "end": "1758", - "id": "357", - "length": "12", - "line": "71", - "parentIndex": "354", - "start": "1747" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - } - }, - "id": "354", - "memberName": "Finished", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "16", - "end": "1767", - "id": "355", - "length": "21", - "line": "71", - "parentIndex": "350", - "start": "1747" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - } - }, - "src": { - "column": "8", - "end": "1767", - "id": "351", - "length": "29", - "line": "71", - "parentIndex": "346", - "start": "1739" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - } - }, - "id": "348", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "1768", - "id": "349", - "length": "30", - "line": "71", - "parentIndex": "346", - "start": "1739" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "360" - ], - "declarations": [ - { - "id": "360", - "mutability": "MUTABLE", - "name": "index", - "nodeType": "VARIABLE_DECLARATION", - "scope": "346", - "src": { - "column": "8", - "end": "1791", - "id": "361", - "length": "13", - "line": "73", - "parentIndex": "358", - "start": "1779" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "362", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "1785", - "id": "363", - "length": "7", - "line": "73", - "parentIndex": "360", - "start": "1779" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "358", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "364", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "370", - "name": "block", - "nodeType": "IDENTIFIER", - "src": { - "column": "32", - "end": "1807", - "id": "371", - "length": "5", - "line": "73", - "parentIndex": "368", - "start": "1803" - }, - "typeDescription": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - } - }, - "id": "368", - "memberName": "timestamp", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "32", - "end": "1817", - "id": "369", - "length": "15", - "line": "73", - "parentIndex": "366", - "start": "1803" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "372", - "nodeType": "IDENTIFIER", - "src": { - "column": "24", - "end": "1801", - "id": "373", - "length": "7", - "line": "73", - "parentIndex": "366", - "start": "1795" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256", - "typeString": "function(uint256)" - }, - "typeName": { - "id": "374", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "24", - "end": "1801", - "id": "375", - "length": "7", - "line": "73", - "parentIndex": "372", - "start": "1795" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - }, - "id": "366", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "24", - "end": "1818", - "id": "367", - "length": "24", - "line": "73", - "parentIndex": "358", - "start": "1795" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$", - "typeString": "function(uint256)" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "MODULO", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "378", - "name": "playerAddresses", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "70", - "src": { - "column": "51", - "end": "1836", - "id": "379", - "length": "15", - "line": "73", - "parentIndex": "376", - "start": "1822" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "376", - "memberName": "length", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "51", - "end": "1843", - "id": "377", - "length": "22", - "line": "73", - "parentIndex": "358", - "start": "1822" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "src": { - "column": "24", - "end": "1843", - "id": "365", - "length": "49", - "line": "73", - "parentIndex": "358", - "start": "1795" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$", - "typeString": "function(uint256)" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "1844", - "id": "359", - "length": "66", - "line": "73", - "parentIndex": "346", - "start": "1779" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "382" - ], - "declarations": [ - { - "id": "382", - "mutability": "MUTABLE", - "name": "winner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "346", - "src": { - "column": "8", - "end": "1867", - "id": "383", - "length": "14", - "line": "74", - "parentIndex": "380", - "start": "1854" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "384", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "1860", - "id": "385", - "length": "7", - "line": "74", - "parentIndex": "382", - "start": "1854" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "380", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "388", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "33", - "end": "1879", - "id": "389", - "length": "1", - "line": "74", - "parentIndex": "386", - "start": "1879" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "390", - "nodeType": "IDENTIFIER", - "src": { - "column": "25", - "end": "1877", - "id": "391", - "length": "7", - "line": "74", - "parentIndex": "386", - "start": "1871" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "392", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "25", - "end": "1877", - "id": "393", - "length": "7", - "line": "74", - "parentIndex": "390", - "start": "1871" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "386", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "25", - "end": "1880", - "id": "387", - "length": "10", - "line": "74", - "parentIndex": "380", - "start": "1871" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "1881", - "id": "381", - "length": "28", - "line": "74", - "parentIndex": "346", - "start": "1854" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "396" - ], - "declarations": [ - { - "id": "396", - "mutability": "MUTABLE", - "name": "count", - "nodeType": "VARIABLE_DECLARATION", - "scope": "346", - "src": { - "column": "8", - "end": "1903", - "id": "397", - "length": "13", - "line": "75", - "parentIndex": "394", - "start": "1891" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "398", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "1897", - "id": "399", - "length": "7", - "line": "75", - "parentIndex": "396", - "start": "1891" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "394", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "400", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "24", - "end": "1907", - "id": "401", - "length": "1", - "line": "75", - "parentIndex": "394", - "start": "1907" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "1908", - "id": "395", - "length": "18", - "line": "75", - "parentIndex": "346", - "start": "1891" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.While", - "value": { - "body": { - "id": "411", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "46", - "end": "2246", - "id": "412", - "length": "282", - "line": "77", - "start": "1965" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "421", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "30", - "end": "2083", - "id": "422", - "length": "87", - "line": "78", - "start": "1997" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "425", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "427", - "name": "winner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "380", - "src": { - "column": "16", - "end": "2020", - "id": "428", - "length": "6", - "line": "79", - "parentIndex": "425", - "start": "2015" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "433", - "name": "count", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "394", - "src": { - "column": "41", - "end": "2044", - "id": "434", - "length": "5", - "line": "79", - "parentIndex": "429", - "start": "2040" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "429", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "431", - "name": "playerAddresses", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "70", - "src": { - "column": "25", - "end": "2038", - "id": "432", - "length": "15", - "line": "79", - "parentIndex": "429", - "start": "2024" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "25", - "end": "2045", - "id": "430", - "length": "22", - "line": "79", - "parentIndex": "425", - "start": "2024" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ] - } - }, - "src": { - "column": "16", - "end": "2045", - "id": "426", - "length": "31", - "line": "79", - "parentIndex": "421", - "start": "2015" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "423", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "16", - "end": "2046", - "id": "424", - "length": "32", - "line": "79", - "parentIndex": "421", - "start": "2015" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Break", - "value": { - "id": "435", - "nodeType": "BREAK", - "src": { - "end": "2069", - "id": "436", - "length": "6", - "line": "80", - "parentIndex": "421", - "start": "2064" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "415", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "417", - "name": "index", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "358", - "src": { - "column": "15", - "end": "1986", - "id": "418", - "length": "5", - "line": "78", - "parentIndex": "415", - "start": "1982" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "419", - "name": "count", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "394", - "src": { - "column": "24", - "end": "1995", - "id": "420", - "length": "5", - "line": "78", - "parentIndex": "415", - "start": "1991" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "15", - "end": "1995", - "id": "416", - "length": "14", - "line": "78", - "parentIndex": "413", - "start": "1982" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "413", - "nodeType": "IF_STATEMENT", - "src": { - "end": "2083", - "id": "414", - "length": "105", - "line": "78", - "parentIndex": "411", - "start": "1979" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.UnarySuffix", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "439", - "name": "count", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "394", - "src": { - "column": "12", - "end": "2102", - "id": "440", - "length": "5", - "line": "83", - "parentIndex": "437", - "start": "2098" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "437", - "nodeType": "UNARY_OPERATION", - "operator": "INCREMENT", - "src": { - "column": "12", - "end": "2104", - "id": "438", - "length": "7", - "line": "83", - "start": "2098" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "453", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "32", - "end": "2236", - "id": "454", - "length": "41", - "line": "86", - "start": "2196" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Continue", - "value": { - "id": "455", - "nodeType": "CONTINUE", - "src": { - "end": "2222", - "id": "456", - "length": "9", - "line": "87", - "parentIndex": "453", - "start": "2214" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "443", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "445", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "447", - "name": "count", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "394", - "src": { - "column": "16", - "end": "2184", - "id": "448", - "length": "5", - "line": "86", - "parentIndex": "445", - "start": "2180" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "MODULO", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "32", - "id": "449", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "24", - "end": "2188", - "id": "450", - "length": "1", - "line": "86", - "parentIndex": "445", - "start": "2188" - }, - "typeDescription": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - } - }, - "src": { - "column": "16", - "end": "2188", - "id": "446", - "length": "9", - "line": "86", - "parentIndex": "443", - "start": "2180" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "31", - "id": "451", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "29", - "end": "2193", - "id": "452", - "length": "1", - "line": "86", - "parentIndex": "443", - "start": "2193" - }, - "typeDescription": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - }, - "src": { - "column": "16", - "end": "2193", - "id": "444", - "length": "14", - "line": "86", - "parentIndex": "441", - "start": "2180" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "441", - "nodeType": "IF_STATEMENT", - "src": { - "end": "2236", - "id": "442", - "length": "61", - "line": "86", - "parentIndex": "411", - "start": "2176" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "403", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "405", - "name": "count", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "394", - "src": { - "column": "14", - "end": "1937", - "id": "406", - "length": "5", - "line": "77", - "parentIndex": "403", - "start": "1933" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "LESS_THAN", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "409", - "name": "playerAddresses", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "70", - "src": { - "column": "22", - "end": "1955", - "id": "410", - "length": "15", - "line": "77", - "parentIndex": "407", - "start": "1941" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "407", - "memberName": "length", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "22", - "end": "1962", - "id": "408", - "length": "22", - "line": "77", - "parentIndex": "403", - "start": "1941" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "src": { - "column": "14", - "end": "1962", - "id": "404", - "length": "30", - "line": "77", - "start": "1933" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "kind": "WHILE", - "nodeType": "WHILE_STATEMENT", - "src": { - "end": "2246", - "id": "402", - "length": "320", - "line": "77", - "parentIndex": "346", - "start": "1927" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "471", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "34", - "end": "2329", - "id": "472", - "length": "47", - "line": "91", - "parentIndex": "334", - "start": "2283" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Revert", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "475", - "name": "InvalidWinner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "123", - "src": { - "column": "19", - "end": "2316", - "id": "476", - "length": "13", - "line": "92", - "parentIndex": "471", - "start": "2304" - }, - "typeDescription": { - "typeIdentifier": "t_error$_Lottery_InvalidWinner_$123", - "typeString": "error Lottery.InvalidWinner" - } - } - }, - "id": "473", - "nodeType": "REVERT_STATEMENT", - "src": { - "column": "12", - "end": "2319", - "id": "474", - "length": "23", - "line": "92", - "parentIndex": "334", - "start": "2297" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "459", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "461", - "name": "winner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "380", - "src": { - "column": "12", - "end": "2266", - "id": "462", - "length": "6", - "line": "91", - "parentIndex": "459", - "start": "2261" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "465", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "30", - "end": "2279", - "id": "466", - "length": "1", - "line": "91", - "parentIndex": "463", - "start": "2279" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "467", - "nodeType": "IDENTIFIER", - "src": { - "column": "22", - "end": "2277", - "id": "468", - "length": "7", - "line": "91", - "parentIndex": "463", - "start": "2271" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "469", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "22", - "end": "2277", - "id": "470", - "length": "7", - "line": "91", - "parentIndex": "467", - "start": "2271" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "463", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "22", - "end": "2280", - "id": "464", - "length": "10", - "line": "91", - "parentIndex": "459", - "start": "2271" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "12", - "end": "2280", - "id": "460", - "length": "20", - "line": "91", - "parentIndex": "457", - "start": "2261" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "457", - "nodeType": "IF_STATEMENT", - "src": { - "end": "2329", - "id": "458", - "length": "73", - "line": "91", - "parentIndex": "346", - "start": "2257" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "479", - "name": "winner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "380", - "src": { - "column": "29", - "end": "2366", - "id": "480", - "length": "6", - "line": "95", - "parentIndex": "346", - "start": "2361" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "481", - "name": "LotteryFinished", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "91", - "src": { - "column": "13", - "end": "2359", - "id": "482", - "length": "15", - "line": "95", - "parentIndex": "346", - "start": "2345" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_Lottery_LotteryFinished_\u002691", - "typeString": "event Lottery.LotteryFinished" - } - } - }, - "id": "477", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "2368", - "id": "478", - "length": "29", - "line": "95", - "parentIndex": "334", - "start": "2340" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "485" - ], - "declarations": [ - { - "id": "485", - "mutability": "MUTABLE", - "name": "balance", - "nodeType": "VARIABLE_DECLARATION", - "scope": "346", - "src": { - "column": "8", - "end": "2393", - "id": "486", - "length": "15", - "line": "97", - "parentIndex": "483", - "start": "2379" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "487", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "2385", - "id": "488", - "length": "7", - "line": "97", - "parentIndex": "485", - "start": "2379" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "483", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "493", - "name": "this", - "nodeType": "IDENTIFIER", - "src": { - "column": "34", - "end": "2408", - "id": "494", - "length": "4", - "line": "97", - "parentIndex": "491", - "start": "2405" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "id": "495", - "nodeType": "IDENTIFIER", - "src": { - "column": "26", - "end": "2403", - "id": "496", - "length": "7", - "line": "97", - "parentIndex": "491", - "start": "2397" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - }, - "typeName": { - "id": "497", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "26", - "end": "2403", - "id": "498", - "length": "7", - "line": "97", - "parentIndex": "495", - "start": "2397" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "491", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "26", - "end": "2409", - "id": "492", - "length": "13", - "line": "97", - "parentIndex": "483", - "start": "2397" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "id": "489", - "memberName": "balance", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "26", - "end": "2417", - "id": "490", - "length": "21", - "line": "97", - "parentIndex": "483", - "start": "2397" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "2418", - "id": "484", - "length": "40", - "line": "97", - "parentIndex": "346", - "start": "2379" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "501", - "name": "balance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "483", - "src": { - "column": "33", - "end": "2459", - "id": "502", - "length": "7", - "line": "98", - "parentIndex": "499", - "start": "2453" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PayableConversion", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "507", - "name": "winner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "380", - "src": { - "column": "16", - "end": "2441", - "id": "508", - "length": "6", - "line": "98", - "parentIndex": "505", - "start": "2436" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "id": "505", - "nodeType": "PAYABLE_CONVERSION", - "payable": true, - "src": { - "column": "8", - "end": "2442", - "id": "506", - "length": "15", - "line": "98", - "parentIndex": "503", - "start": "2428" - } - } - }, - "id": "503", - "memberName": "transfer", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "8", - "end": "2451", - "id": "504", - "length": "24", - "line": "98", - "parentIndex": "499", - "start": "2428" - }, - "typeDescription": { - "typeIdentifier": "t_function_payable$_t_address$", - "typeString": "function(address) payable" - } - } - }, - "id": "499", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "2460", - "id": "500", - "length": "33", - "line": "98", - "parentIndex": "346", - "start": "2428" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$", - "typeString": "function(uint256)" - } - } - } - ] - }, - "id": "334", - "implemented": true, - "kind": "KIND_FUNCTION", - "modifiers": [ - { - "argumentTypes": [ - { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "342", - "name": "LotteryState", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "42", - "src": { - "column": "44", - "end": "1716", - "id": "343", - "length": "12", - "line": "70", - "parentIndex": "340", - "start": "1705" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - } - }, - "id": "340", - "memberName": "Accepting", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "44", - "end": "1726", - "id": "341", - "length": "22", - "line": "70", - "parentIndex": "336", - "start": "1705" - }, - "typeDescription": { - "typeIdentifier": "t_enum_$_LotteryState_$42", - "typeString": "enum Lottery.LotteryState" - } - } - } - ], - "id": "336", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "338", - "name": "inState", - "src": { - "column": "36", - "end": "1703", - "id": "339", - "length": "7", - "line": "70", - "parentIndex": "336", - "start": "1697" - } - }, - "name": "inState", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "36", - "end": "1727", - "id": "337", - "length": "31", - "line": "70", - "parentIndex": "334", - "start": "1697" - } - } - ], - "name": "finishLottery", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "344", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "2467", - "id": "335", - "length": "803", - "line": "70", - "parentIndex": "334", - "start": "1665" - } - }, - "returnParameters": { - "id": "345", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "2467", - "id": "335", - "length": "803", - "line": "70", - "parentIndex": "334", - "start": "1665" - } - }, - "scope": "35", - "src": { - "column": "4", - "end": "2467", - "id": "335", - "length": "803", - "line": "70", - "parentIndex": "35", - "start": "1665" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "524", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "51", - "end": "2557", - "id": "525", - "length": "37", - "line": "101", - "parentIndex": "510", - "start": "2521" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "530", - "name": "this", - "nodeType": "IDENTIFIER", - "src": { - "column": "23", - "end": "2549", - "id": "531", - "length": "4", - "line": "102", - "parentIndex": "528", - "start": "2546" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "id": "532", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "2544", - "id": "533", - "length": "7", - "line": "102", - "parentIndex": "528", - "start": "2538" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - }, - "typeName": { - "id": "534", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "15", - "end": "2544", - "id": "535", - "length": "7", - "line": "102", - "parentIndex": "532", - "start": "2538" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "528", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "2550", - "id": "529", - "length": "13", - "line": "102", - "parentIndex": "524", - "start": "2538" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "functionReturnParameters": "510", - "id": "526", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "2551", - "id": "527", - "length": "21", - "line": "102", - "parentIndex": "510", - "start": "2531" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - } - ] - }, - "id": "510", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "owner", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "512", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "514", - "nodeType": "VARIABLE_DECLARATION", - "scope": "514", - "src": { - "column": "42", - "end": "2518", - "id": "515", - "length": "7", - "line": "101", - "parentIndex": "512", - "start": "2512" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "516", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "42", - "end": "2518", - "id": "517", - "length": "7", - "line": "101", - "parentIndex": "514", - "start": "2512" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "42", - "end": "2518", - "id": "513", - "length": "7", - "line": "101", - "parentIndex": "510", - "start": "2512" - } - }, - "returnParameters": { - "id": "518", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "520", - "nodeType": "VARIABLE_DECLARATION", - "scope": "520", - "src": { - "column": "42", - "end": "2518", - "id": "521", - "length": "7", - "line": "101", - "parentIndex": "518", - "start": "2512" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "522", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "42", - "end": "2518", - "id": "523", - "length": "7", - "line": "101", - "parentIndex": "520", - "start": "2512" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "42", - "end": "2518", - "id": "519", - "length": "7", - "line": "101", - "parentIndex": "510", - "start": "2512" - } - }, - "scope": "35", - "src": { - "column": "4", - "end": "2557", - "id": "511", - "length": "84", - "line": "101", - "parentIndex": "35", - "start": "2474" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "551", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "53", - "end": "2657", - "id": "552", - "length": "45", - "line": "105", - "parentIndex": "537", - "start": "2613" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "559", - "name": "this", - "nodeType": "IDENTIFIER", - "src": { - "column": "23", - "end": "2641", - "id": "560", - "length": "4", - "line": "106", - "parentIndex": "557", - "start": "2638" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "id": "561", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "2636", - "id": "562", - "length": "7", - "line": "106", - "parentIndex": "557", - "start": "2630" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - }, - "typeName": { - "id": "563", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "15", - "end": "2636", - "id": "564", - "length": "7", - "line": "106", - "parentIndex": "561", - "start": "2630" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "557", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "2642", - "id": "558", - "length": "13", - "line": "106", - "parentIndex": "555", - "start": "2630" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "id": "555", - "memberName": "balance", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "2650", - "id": "556", - "length": "21", - "line": "106", - "parentIndex": "551", - "start": "2630" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "functionReturnParameters": "537", - "id": "553", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "2651", - "id": "554", - "length": "29", - "line": "106", - "parentIndex": "537", - "start": "2623" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - } - ] - }, - "id": "537", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "balance", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "539", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "541", - "nodeType": "VARIABLE_DECLARATION", - "scope": "541", - "src": { - "column": "44", - "end": "2610", - "id": "542", - "length": "7", - "line": "105", - "parentIndex": "539", - "start": "2604" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "543", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "44", - "end": "2610", - "id": "544", - "length": "7", - "line": "105", - "parentIndex": "541", - "start": "2604" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "44", - "end": "2610", - "id": "540", - "length": "7", - "line": "105", - "parentIndex": "537", - "start": "2604" - } - }, - "returnParameters": { - "id": "545", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "547", - "nodeType": "VARIABLE_DECLARATION", - "scope": "547", - "src": { - "column": "44", - "end": "2610", - "id": "548", - "length": "7", - "line": "105", - "parentIndex": "545", - "start": "2604" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "549", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "44", - "end": "2610", - "id": "550", - "length": "7", - "line": "105", - "parentIndex": "547", - "start": "2604" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "44", - "end": "2610", - "id": "546", - "length": "7", - "line": "105", - "parentIndex": "537", - "start": "2604" - } - }, - "scope": "35", - "src": { - "column": "4", - "end": "2657", - "id": "538", - "length": "94", - "line": "105", - "parentIndex": "35", - "start": "2564" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256", - "typeString": "function(uint256)" - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "580", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "58", - "end": "2977", - "id": "581", - "length": "225", - "line": "110", - "parentIndex": "566", - "start": "2753" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.For", - "value": { - "body": { - "id": "604", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "58", - "end": "2950", - "id": "605", - "length": "138", - "line": "111", - "parentIndex": "582", - "start": "2813" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "630", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "64", - "end": "2940", - "id": "631", - "length": "62", - "line": "112", - "parentIndex": "582", - "start": "2879" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Revert", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "634", - "name": "InvalidPlayerAddress", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "127", - "src": { - "column": "23", - "end": "2923", - "id": "635", - "length": "20", - "line": "113", - "parentIndex": "630", - "start": "2904" - }, - "typeDescription": { - "typeIdentifier": "t_error$_Lottery_InvalidPlayerAddress_$127", - "typeString": "error Lottery.InvalidPlayerAddress" - } - } - }, - "id": "632", - "nodeType": "REVERT_STATEMENT", - "src": { - "column": "16", - "end": "2926", - "id": "633", - "length": "30", - "line": "113", - "parentIndex": "582", - "start": "2897" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "608", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "620", - "name": "i", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "584", - "src": { - "column": "40", - "end": "2855", - "id": "621", - "length": "1", - "line": "112", - "parentIndex": "616", - "start": "2855" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "616", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "618", - "name": "playerAddresses", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "70", - "src": { - "column": "24", - "end": "2853", - "id": "619", - "length": "15", - "line": "112", - "parentIndex": "616", - "start": "2839" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "24", - "end": "2856", - "id": "617", - "length": "18", - "line": "112", - "parentIndex": "612", - "start": "2839" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ] - } - }, - "id": "612", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "614", - "name": "players", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "58", - "src": { - "column": "16", - "end": "2837", - "id": "615", - "length": "7", - "line": "112", - "parentIndex": "612", - "start": "2831" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "16", - "end": "2857", - "id": "613", - "length": "27", - "line": "112", - "parentIndex": "610", - "start": "2831" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "id": "610", - "memberName": "addr", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "16", - "end": "2862", - "id": "611", - "length": "32", - "line": "112", - "parentIndex": "608", - "start": "2831" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", - "typeString": "mapping(address=\u003ePlayer)" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "624", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "60", - "end": "2875", - "id": "625", - "length": "1", - "line": "112", - "parentIndex": "622", - "start": "2875" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "626", - "nodeType": "IDENTIFIER", - "src": { - "column": "52", - "end": "2873", - "id": "627", - "length": "7", - "line": "112", - "parentIndex": "622", - "start": "2867" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "628", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "52", - "end": "2873", - "id": "629", - "length": "7", - "line": "112", - "parentIndex": "626", - "start": "2867" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "622", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "52", - "end": "2876", - "id": "623", - "length": "10", - "line": "112", - "parentIndex": "608", - "start": "2867" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "16", - "end": "2876", - "id": "609", - "length": "46", - "line": "112", - "parentIndex": "606", - "start": "2831" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "606", - "nodeType": "IF_STATEMENT", - "src": { - "end": "2940", - "id": "607", - "length": "114", - "line": "112", - "parentIndex": "604", - "start": "2827" - } - } - } - ] - }, - "closure": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.UnarySuffix", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "602", - "name": "i", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "584", - "src": { - "column": "53", - "end": "2808", - "id": "603", - "length": "1", - "line": "111", - "parentIndex": "600", - "start": "2808" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "600", - "nodeType": "UNARY_OPERATION", - "operator": "INCREMENT", - "src": { - "column": "53", - "end": "2810", - "id": "601", - "length": "3", - "line": "111", - "parentIndex": "566", - "start": "2808" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "592", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "594", - "name": "i", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "584", - "src": { - "column": "25", - "end": "2780", - "id": "595", - "length": "1", - "line": "111", - "parentIndex": "592", - "start": "2780" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "LESS_THAN", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "598", - "name": "playerAddresses", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "70", - "src": { - "column": "29", - "end": "2798", - "id": "599", - "length": "15", - "line": "111", - "parentIndex": "596", - "start": "2784" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "596", - "memberName": "length", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "29", - "end": "2805", - "id": "597", - "length": "22", - "line": "111", - "parentIndex": "592", - "start": "2784" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "src": { - "column": "25", - "end": "2805", - "id": "593", - "length": "26", - "line": "111", - "parentIndex": "582", - "start": "2780" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "582", - "initialiser": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "586" - ], - "declarations": [ - { - "id": "586", - "mutability": "MUTABLE", - "name": "i", - "nodeType": "VARIABLE_DECLARATION", - "scope": "580", - "src": { - "column": "13", - "end": "2773", - "id": "587", - "length": "6", - "line": "111", - "parentIndex": "584", - "start": "2768" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "588", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "13", - "end": "2771", - "id": "589", - "length": "4", - "line": "111", - "parentIndex": "586", - "start": "2768" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "584", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "590", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "22", - "end": "2777", - "id": "591", - "length": "1", - "line": "111", - "parentIndex": "584", - "start": "2777" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "13", - "end": "2778", - "id": "585", - "length": "11", - "line": "111", - "parentIndex": "580", - "start": "2768" - } - } - }, - "nodeType": "FOR_STATEMENT", - "src": { - "end": "2950", - "id": "583", - "length": "188", - "line": "111", - "parentIndex": "580", - "start": "2763" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "638", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "15", - "end": "2970", - "id": "639", - "length": "4", - "line": "116", - "parentIndex": "580", - "start": "2967" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - "functionReturnParameters": "566", - "id": "636", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "2971", - "id": "637", - "length": "12", - "line": "116", - "parentIndex": "566", - "start": "2960" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - ] - }, - "id": "566", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "checkAllPlayers", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "568", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "570", - "nodeType": "VARIABLE_DECLARATION", - "scope": "570", - "src": { - "column": "52", - "end": "2750", - "id": "571", - "length": "4", - "line": "110", - "parentIndex": "568", - "start": "2747" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "572", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "52", - "end": "2750", - "id": "573", - "length": "4", - "line": "110", - "parentIndex": "570", - "start": "2747" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "52", - "end": "2750", - "id": "569", - "length": "4", - "line": "110", - "parentIndex": "566", - "start": "2747" - } - }, - "returnParameters": { - "id": "574", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "576", - "nodeType": "VARIABLE_DECLARATION", - "scope": "576", - "src": { - "column": "52", - "end": "2750", - "id": "577", - "length": "4", - "line": "110", - "parentIndex": "574", - "start": "2747" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "578", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "52", - "end": "2750", - "id": "579", - "length": "4", - "line": "110", - "parentIndex": "576", - "start": "2747" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "52", - "end": "2750", - "id": "575", - "length": "4", - "line": "110", - "parentIndex": "566", - "start": "2747" - } - }, - "scope": "35", - "src": { - "column": "4", - "end": "2977", - "id": "567", - "length": "279", - "line": "110", - "parentIndex": "35", - "start": "2699" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool", - "typeString": "function(bool)" - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "645", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "40", - "end": "3145", - "id": "646", - "length": "93", - "line": "120", - "parentIndex": "641", - "start": "3053" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "659", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "35", - "end": "3139", - "id": "660", - "length": "50", - "line": "121", - "parentIndex": "641", - "start": "3090" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Revert", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "663", - "name": "OnlyOwnerCanCall", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "131", - "src": { - "column": "19", - "end": "3126", - "id": "664", - "length": "16", - "line": "122", - "parentIndex": "659", - "start": "3111" - }, - "typeDescription": { - "typeIdentifier": "t_error$_Lottery_OnlyOwnerCanCall_$131", - "typeString": "error Lottery.OnlyOwnerCanCall" - } - } - }, - "id": "661", - "nodeType": "REVERT_STATEMENT", - "src": { - "column": "12", - "end": "3129", - "id": "662", - "length": "26", - "line": "122", - "parentIndex": "641", - "start": "3104" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "649", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "653", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "12", - "end": "3069", - "id": "654", - "length": "3", - "line": "121", - "parentIndex": "651", - "start": "3067" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "651", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "3076", - "id": "652", - "length": "10", - "line": "121", - "parentIndex": "649", - "start": "3067" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "657", - "name": "owner", - "nodeType": "IDENTIFIER", - "src": { - "column": "26", - "end": "3085", - "id": "658", - "length": "5", - "line": "121", - "parentIndex": "655", - "start": "3081" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "655", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "26", - "end": "3087", - "id": "656", - "length": "7", - "line": "121", - "parentIndex": "649", - "start": "3081" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "src": { - "column": "12", - "end": "3087", - "id": "650", - "length": "21", - "line": "121", - "parentIndex": "647", - "start": "3067" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "647", - "nodeType": "IF_STATEMENT", - "src": { - "end": "3139", - "id": "648", - "length": "77", - "line": "121", - "parentIndex": "645", - "start": "3063" - } - } - } - ] - }, - "id": "641", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "requireOwner", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "643", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "3145", - "id": "642", - "length": "129", - "line": "120", - "parentIndex": "641", - "start": "3017" - } - }, - "returnParameters": { - "id": "644", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "3145", - "id": "642", - "length": "129", - "line": "120", - "parentIndex": "641", - "start": "3017" - } - }, - "scope": "35", - "src": { - "column": "4", - "end": "3145", - "id": "642", - "length": "129", - "line": "120", - "parentIndex": "35", - "start": "3017" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "675", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "74", - "end": "3521", - "id": "676", - "length": "300", - "line": "126", - "parentIndex": "666", - "start": "3222" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "679" - ], - "declarations": [ - { - "id": "679", - "mutability": "MUTABLE", - "name": "dummyContract", - "nodeType": "VARIABLE_DECLARATION", - "scope": "675", - "src": { - "column": "8", - "end": "3259", - "id": "680", - "length": "28", - "line": "127", - "parentIndex": "677", - "start": "3232" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_contract$_IDummyContract_$10", - "typeString": "contract IDummyContract" - }, - "typeName": { - "id": "681", - "nodeType": "USER_DEFINED_PATH_NAME", - "pathNode": { - "id": "683", - "name": "IDummyContract", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "10", - "src": { - "column": "8", - "end": "3245", - "id": "684", - "length": "14", - "line": "127", - "parentIndex": "681", - "start": "3232" - } - }, - "referencedDeclaration": "10", - "src": { - "column": "8", - "end": "3245", - "id": "682", - "length": "14", - "line": "127", - "parentIndex": "679", - "start": "3232" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_IDummyContract_$10", - "typeString": "contract IDummyContract" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "677", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "687", - "name": "externalContractAddress", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "687", - "src": { - "column": "54", - "end": "3300", - "id": "688", - "length": "23", - "line": "127", - "parentIndex": "685", - "start": "3278" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "689", - "name": "IDummyContract", - "nodeType": "IDENTIFIER", - "src": { - "column": "39", - "end": "3276", - "id": "690", - "length": "14", - "line": "127", - "parentIndex": "685", - "start": "3263" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "685", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "39", - "end": "3301", - "id": "686", - "length": "39", - "line": "127", - "parentIndex": "677", - "start": "3263" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "3302", - "id": "678", - "length": "71", - "line": "127", - "parentIndex": "675", - "start": "3232" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Try", - "value": { - "body": { - "id": "699", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "42", - "end": "3400", - "id": "700", - "length": "54", - "line": "129", - "parentIndex": "691", - "start": "3347" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "703", - "name": "ExternalCallSuccessful", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "99", - "src": { - "column": "17", - "end": "3387", - "id": "704", - "length": "22", - "line": "130", - "parentIndex": "699", - "start": "3366" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_Lottery_ExternalCallSuccessful_\u002699", - "typeString": "event Lottery.ExternalCallSuccessful" - } - } - }, - "id": "701", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "12", - "end": "3390", - "id": "702", - "length": "30", - "line": "130", - "parentIndex": "691", - "start": "3361" - } - } - } - ] - }, - "clauses": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Catch", - "value": { - "body": { - "id": "712", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "48", - "end": "3515", - "id": "713", - "length": "76", - "line": "131", - "start": "3440" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "45787465726e616c20636f6e7472616374206661696c6564", - "id": "716", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "36", - "end": "3503", - "id": "717", - "length": "26", - "line": "132", - "parentIndex": "712", - "start": "3478" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"External contract failed\"" - }, - "value": "External contract failed" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "718", - "name": "ExternalCallFailed", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "103", - "src": { - "column": "17", - "end": "3476", - "id": "719", - "length": "18", - "line": "132", - "parentIndex": "712", - "start": "3459" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_Lottery_ExternalCallFailed_\u0026103", - "typeString": "event Lottery.ExternalCallFailed" - } - } - }, - "id": "714", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "12", - "end": "3505", - "id": "715", - "length": "52", - "line": "132", - "start": "3454" - } - } - } - ] - }, - "kind": "CATCH", - "nodeType": "TRY_CATCH_CLAUSE", - "parameters": { - "id": "706", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "708", - "nodeType": "VARIABLE_DECLARATION", - "scope": "708", - "src": { - "column": "17", - "end": "3420", - "id": "709", - "length": "12", - "line": "131", - "parentIndex": "706", - "start": "3409" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "710", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "3413", - "id": "711", - "length": "5", - "line": "131", - "parentIndex": "708", - "start": "3409" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "17", - "end": "3420", - "id": "707", - "length": "12", - "line": "131", - "start": "3409" - } - }, - "src": { - "end": "3515", - "id": "705", - "length": "114", - "line": "131", - "parentIndex": "691", - "start": "3402" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "697", - "name": "dummyContract", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "677", - "src": { - "column": "12", - "end": "3329", - "id": "698", - "length": "13", - "line": "129", - "parentIndex": "695", - "start": "3317" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_IDummyContract_$10", - "typeString": "contract IDummyContract" - } - } - }, - "id": "695", - "memberName": "dummyFunction", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "3343", - "id": "696", - "length": "27", - "line": "129", - "parentIndex": "693", - "start": "3317" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_IDummyContract_$10", - "typeString": "contract IDummyContract" - } - } - }, - "id": "693", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "3345", - "id": "694", - "length": "29", - "line": "129", - "parentIndex": "691", - "start": "3317" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "id": "691", - "kind": "TRY", - "nodeType": "TRY_STATEMENT", - "src": { - "end": "3515", - "id": "692", - "length": "203", - "line": "129", - "parentIndex": "675", - "start": "3313" - } - } - } - ] - }, - "id": "666", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "callExternalFunction", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "668", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "670", - "name": "externalContractAddress", - "nodeType": "VARIABLE_DECLARATION", - "scope": "670", - "src": { - "column": "34", - "end": "3212", - "id": "671", - "length": "31", - "line": "126", - "parentIndex": "668", - "start": "3182" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "672", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "34", - "end": "3188", - "id": "673", - "length": "7", - "line": "126", - "parentIndex": "670", - "start": "3182" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "34", - "end": "3212", - "id": "669", - "length": "31", - "line": "126", - "parentIndex": "666", - "start": "3182" - } - }, - "returnParameters": { - "id": "674", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "3521", - "id": "667", - "length": "370", - "line": "126", - "parentIndex": "666", - "start": "3152" - } - }, - "scope": "35", - "src": { - "column": "4", - "end": "3521", - "id": "667", - "length": "370", - "line": "126", - "parentIndex": "35", - "start": "3152" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "735", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "32", - "end": "4071", - "id": "736", - "length": "463", - "line": "137", - "parentIndex": "721", - "start": "3609" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "745", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "21", - "end": "3675", - "id": "746", - "length": "35", - "line": "139", - "parentIndex": "721", - "start": "3641" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "749", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "19", - "end": "3664", - "id": "750", - "length": "3", - "line": "140", - "parentIndex": "745", - "start": "3662" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"0\"" - }, - "value": "0" - } - }, - "functionReturnParameters": "721", - "id": "747", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "3665", - "id": "748", - "length": "11", - "line": "140", - "parentIndex": "721", - "start": "3655" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"0\"" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "739", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "741", - "name": "_i", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "741", - "src": { - "column": "12", - "end": "3633", - "id": "742", - "length": "2", - "line": "139", - "parentIndex": "739", - "start": "3632" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "743", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "18", - "end": "3638", - "id": "744", - "length": "1", - "line": "139", - "parentIndex": "739", - "start": "3638" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "12", - "end": "3638", - "id": "740", - "length": "7", - "line": "139", - "parentIndex": "737", - "start": "3632" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "737", - "nodeType": "IF_STATEMENT", - "src": { - "end": "3675", - "id": "738", - "length": "48", - "line": "139", - "parentIndex": "735", - "start": "3628" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "753" - ], - "declarations": [ - { - "id": "753", - "mutability": "MUTABLE", - "name": "j", - "nodeType": "VARIABLE_DECLARATION", - "scope": "735", - "src": { - "column": "8", - "end": "3690", - "id": "754", - "length": "6", - "line": "142", - "parentIndex": "751", - "start": "3685" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "755", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "3688", - "id": "756", - "length": "4", - "line": "142", - "parentIndex": "753", - "start": "3685" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "751", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "757", - "name": "_i", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "757", - "src": { - "column": "17", - "end": "3695", - "id": "758", - "length": "2", - "line": "142", - "parentIndex": "751", - "start": "3694" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "3696", - "id": "752", - "length": "12", - "line": "142", - "parentIndex": "735", - "start": "3685" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "761" - ], - "declarations": [ - { - "id": "761", - "mutability": "MUTABLE", - "name": "len", - "nodeType": "VARIABLE_DECLARATION", - "scope": "735", - "src": { - "column": "8", - "end": "3713", - "id": "762", - "length": "8", - "line": "143", - "parentIndex": "759", - "start": "3706" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "763", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "3709", - "id": "764", - "length": "4", - "line": "143", - "parentIndex": "761", - "start": "3706" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "759", - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "3714", - "id": "760", - "length": "9", - "line": "143", - "parentIndex": "735", - "start": "3706" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.While", - "value": { - "body": { - "id": "772", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "23", - "end": "3798", - "id": "773", - "length": "51", - "line": "145", - "start": "3748" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.UnarySuffix", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "776", - "name": "len", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "759", - "src": { - "column": "12", - "end": "3764", - "id": "777", - "length": "3", - "line": "146", - "parentIndex": "774", - "start": "3762" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "774", - "nodeType": "UNARY_OPERATION", - "operator": "INCREMENT", - "src": { - "column": "12", - "end": "3766", - "id": "775", - "length": "5", - "line": "146", - "start": "3762" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "780", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "782", - "name": "j", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "751", - "src": { - "column": "12", - "end": "3781", - "id": "783", - "length": "1", - "line": "147", - "parentIndex": "780", - "start": "3781" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "DIVISION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "3130", - "id": "784", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "17", - "end": "3787", - "id": "785", - "length": "2", - "line": "147", - "parentIndex": "780", - "start": "3786" - }, - "typeDescription": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - } - }, - "src": { - "column": "12", - "end": "3787", - "id": "781", - "length": "7", - "line": "147", - "parentIndex": "772", - "start": "3781" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "778", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "12", - "end": "3788", - "id": "779", - "length": "8", - "line": "147", - "parentIndex": "772", - "start": "3781" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "766", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "768", - "name": "j", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "751", - "src": { - "column": "15", - "end": "3740", - "id": "769", - "length": "1", - "line": "145", - "parentIndex": "766", - "start": "3740" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "770", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "20", - "end": "3745", - "id": "771", - "length": "1", - "line": "145", - "parentIndex": "766", - "start": "3745" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "15", - "end": "3745", - "id": "767", - "length": "6", - "line": "145", - "start": "3740" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "kind": "WHILE", - "nodeType": "WHILE_STATEMENT", - "src": { - "end": "3798", - "id": "765", - "length": "66", - "line": "145", - "parentIndex": "735", - "start": "3733" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "788" - ], - "declarations": [ - { - "id": "788", - "mutability": "MUTABLE", - "name": "bstr", - "nodeType": "VARIABLE_DECLARATION", - "scope": "735", - "src": { - "column": "8", - "end": "3824", - "id": "789", - "length": "17", - "line": "149", - "parentIndex": "786", - "start": "3808" - }, - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "790", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "3812", - "id": "791", - "length": "5", - "line": "149", - "parentIndex": "788", - "start": "3808" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "786", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "794", - "name": "len", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "759", - "src": { - "column": "38", - "end": "3840", - "id": "795", - "length": "3", - "line": "149", - "parentIndex": "792", - "start": "3838" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.NewExpression", - "value": { - "id": "796", - "nodeType": "NEW_EXPRESSION", - "src": { - "column": "28", - "end": "3836", - "id": "797", - "length": "9", - "line": "149", - "parentIndex": "792", - "start": "3828" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "798", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "32", - "end": "3836", - "id": "799", - "length": "5", - "line": "149", - "parentIndex": "796", - "start": "3832" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - } - }, - "id": "792", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "28", - "end": "3841", - "id": "793", - "length": "14", - "line": "149", - "parentIndex": "786", - "start": "3828" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$", - "typeString": "function(uint256)" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "3842", - "id": "787", - "length": "35", - "line": "149", - "parentIndex": "735", - "start": "3808" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "802" - ], - "declarations": [ - { - "id": "802", - "mutability": "MUTABLE", - "name": "k", - "nodeType": "VARIABLE_DECLARATION", - "scope": "735", - "src": { - "column": "8", - "end": "3857", - "id": "803", - "length": "6", - "line": "150", - "parentIndex": "800", - "start": "3852" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "804", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "3855", - "id": "805", - "length": "4", - "line": "150", - "parentIndex": "802", - "start": "3852" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "800", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "806", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "808", - "name": "len", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "759", - "src": { - "column": "17", - "end": "3863", - "id": "809", - "length": "3", - "line": "150", - "parentIndex": "806", - "start": "3861" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "31", - "id": "810", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "23", - "end": "3867", - "id": "811", - "length": "1", - "line": "150", - "parentIndex": "806", - "start": "3867" - }, - "typeDescription": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - }, - "src": { - "column": "17", - "end": "3867", - "id": "807", - "length": "7", - "line": "150", - "parentIndex": "800", - "start": "3861" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "3868", - "id": "801", - "length": "17", - "line": "150", - "parentIndex": "735", - "start": "3852" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Do", - "value": { - "body": { - "id": "820", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "11", - "end": "4011", - "id": "821", - "length": "122", - "line": "152", - "parentIndex": "812", - "start": "3890" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "824", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.UnarySuffix", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "832", - "name": "k", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "800", - "src": { - "column": "17", - "end": "3945", - "id": "833", - "length": "1", - "line": "153", - "parentIndex": "830", - "start": "3945" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "830", - "nodeType": "UNARY_OPERATION", - "operator": "DECREMENT", - "src": { - "column": "17", - "end": "3947", - "id": "831", - "length": "3", - "line": "153", - "parentIndex": "812", - "start": "3945" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "826", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "828", - "name": "bstr", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "786", - "src": { - "column": "12", - "end": "3943", - "id": "829", - "length": "4", - "line": "153", - "parentIndex": "826", - "start": "3940" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "12", - "end": "3948", - "id": "827", - "length": "9", - "line": "153", - "parentIndex": "824", - "start": "3940" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ] - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_48_by_1$", - "typeString": "function(int_const 48)" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_48_by_1", - "typeString": "int_const 48" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "838", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "3438", - "id": "840", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "37", - "end": "3966", - "id": "841", - "length": "2", - "line": "153", - "parentIndex": "838", - "start": "3965" - }, - "typeDescription": { - "typeIdentifier": "t_rational_48_by_1", - "typeString": "int_const 48" - }, - "value": "48" - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "ADDITION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "842", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "844", - "name": "_i", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "741", - "src": { - "column": "42", - "end": "3971", - "id": "845", - "length": "2", - "line": "153", - "parentIndex": "842", - "start": "3970" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "MODULO", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "3130", - "id": "846", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "47", - "end": "3976", - "id": "847", - "length": "2", - "line": "153", - "parentIndex": "842", - "start": "3975" - }, - "typeDescription": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - } - }, - "src": { - "column": "42", - "end": "3976", - "id": "843", - "length": "7", - "line": "153", - "parentIndex": "838", - "start": "3970" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "37", - "end": "3976", - "id": "839", - "length": "12", - "line": "153", - "parentIndex": "836", - "start": "3965" - }, - "typeDescription": { - "typeIdentifier": "t_rational_48_by_1", - "typeString": "int_const 48" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_48_by_1", - "typeString": "int_const 48" - } - ], - "id": "848", - "nodeType": "IDENTIFIER", - "src": { - "column": "31", - "end": "3963", - "id": "849", - "length": "5", - "line": "153", - "parentIndex": "836", - "start": "3959" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_48_by_1", - "typeString": "function(int_const 48)" - }, - "typeName": { - "id": "850", - "name": "uint8", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "3963", - "id": "851", - "length": "5", - "line": "153", - "parentIndex": "848", - "start": "3959" - }, - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - } - }, - "id": "836", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "31", - "end": "3977", - "id": "837", - "length": "19", - "line": "153", - "parentIndex": "834", - "start": "3959" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_48_by_1$", - "typeString": "function(int_const 48)" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_48_by_1$", - "typeString": "function(int_const 48)" - } - ], - "id": "852", - "nodeType": "IDENTIFIER", - "src": { - "column": "24", - "end": "3957", - "id": "853", - "length": "6", - "line": "153", - "parentIndex": "834", - "start": "3952" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_rational_48_by_1$", - "typeString": "function(function(int_const 48))" - }, - "typeName": { - "id": "854", - "name": "bytes1", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "24", - "end": "3957", - "id": "855", - "length": "6", - "line": "153", - "parentIndex": "852", - "start": "3952" - }, - "typeDescription": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - } - } - }, - "id": "834", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "24", - "end": "3978", - "id": "835", - "length": "27", - "line": "153", - "parentIndex": "824", - "start": "3952" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_rational_48_by_1$$", - "typeString": "function(function(int_const 48))" - } - } - }, - "src": { - "column": "12", - "end": "3978", - "id": "825", - "length": "39", - "line": "153", - "parentIndex": "820", - "start": "3940" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - "id": "822", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "12", - "end": "3979", - "id": "823", - "length": "40", - "line": "153", - "parentIndex": "820", - "start": "3940" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "858", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "860", - "name": "_i", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "741", - "src": { - "column": "12", - "end": "3994", - "id": "861", - "length": "2", - "line": "154", - "parentIndex": "858", - "start": "3993" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "DIVISION", - "referencedDeclaration": "741", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "3130", - "id": "862", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "18", - "end": "4000", - "id": "863", - "length": "2", - "line": "154", - "parentIndex": "858", - "start": "3999" - }, - "typeDescription": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - } - }, - "src": { - "column": "12", - "end": "4000", - "id": "859", - "length": "8", - "line": "154", - "parentIndex": "820", - "start": "3993" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "856", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "12", - "end": "4001", - "id": "857", - "length": "9", - "line": "154", - "parentIndex": "820", - "start": "3993" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "814", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "816", - "name": "_i", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "816", - "src": { - "column": "15", - "end": "4029", - "id": "817", - "length": "2", - "line": "156", - "parentIndex": "814", - "start": "4028" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "818", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "21", - "end": "4034", - "id": "819", - "length": "1", - "line": "156", - "parentIndex": "814", - "start": "4034" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "15", - "end": "4034", - "id": "815", - "length": "7", - "line": "156", - "parentIndex": "735", - "start": "4028" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "812", - "nodeType": "DO_WHILE_STATEMENT", - "src": { - "end": "4036", - "id": "813", - "length": "150", - "line": "152", - "parentIndex": "735", - "start": "3887" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "868", - "name": "bstr", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "786", - "src": { - "column": "22", - "end": "4063", - "id": "869", - "length": "4", - "line": "157", - "parentIndex": "866", - "start": "4060" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "id": "870", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "4058", - "id": "871", - "length": "6", - "line": "157", - "parentIndex": "866", - "start": "4053" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bytes", - "typeString": "function(bytes)" - }, - "typeName": { - "id": "872", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "15", - "end": "4058", - "id": "873", - "length": "6", - "line": "157", - "parentIndex": "870", - "start": "4053" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - } - }, - "id": "866", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "4064", - "id": "867", - "length": "12", - "line": "157", - "parentIndex": "735", - "start": "4053" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bytes$", - "typeString": "function(bytes)" - } - } - }, - "functionReturnParameters": "721", - "id": "864", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "4065", - "id": "865", - "length": "20", - "line": "157", - "parentIndex": "721", - "start": "4046" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bytes$", - "typeString": "function(bytes)" - } - } - } - ] - }, - "id": "721", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "integerToString", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "723", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "725", - "name": "_i", - "nodeType": "VARIABLE_DECLARATION", - "scope": "725", - "src": { - "column": "29", - "end": "3559", - "id": "726", - "length": "7", - "line": "136", - "parentIndex": "723", - "start": "3553" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "727", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "29", - "end": "3556", - "id": "728", - "length": "4", - "line": "136", - "parentIndex": "725", - "start": "3553" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "29", - "end": "3559", - "id": "724", - "length": "7", - "line": "136", - "parentIndex": "721", - "start": "3553" - } - }, - "returnParameters": { - "id": "729", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "731", - "nodeType": "VARIABLE_DECLARATION", - "scope": "731", - "src": { - "column": "17", - "end": "3606", - "id": "732", - "length": "13", - "line": "137", - "parentIndex": "729", - "start": "3594" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "733", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "3599", - "id": "734", - "length": "6", - "line": "137", - "parentIndex": "731", - "start": "3594" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "17", - "end": "3606", - "id": "730", - "length": "13", - "line": "137", - "parentIndex": "721", - "start": "3594" - } - }, - "scope": "35", - "src": { - "column": "4", - "end": "4071", - "id": "722", - "length": "544", - "line": "136", - "parentIndex": "35", - "start": "3528" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256", - "typeString": "function(uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "889", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "74", - "end": "4232", - "id": "890", - "length": "85", - "line": "160", - "parentIndex": "875", - "start": "4148" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assembly", - "value": { - "id": "891", - "nodeType": "ASSEMBLY_STATEMENT", - "src": { - "column": "8", - "end": "4226", - "id": "892", - "length": "69", - "line": "161", - "parentIndex": "889", - "start": "4158" - } - } - } - ] - }, - "id": "875", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "dummyFunctionAssembly", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "877", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "879", - "name": "result", - "nodeType": "VARIABLE_DECLARATION", - "scope": "879", - "src": { - "column": "58", - "end": "4145", - "id": "880", - "length": "14", - "line": "160", - "parentIndex": "877", - "start": "4132" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "881", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "58", - "end": "4138", - "id": "882", - "length": "7", - "line": "160", - "parentIndex": "879", - "start": "4132" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "58", - "end": "4145", - "id": "878", - "length": "14", - "line": "160", - "parentIndex": "875", - "start": "4132" - } - }, - "returnParameters": { - "id": "883", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "885", - "name": "result", - "nodeType": "VARIABLE_DECLARATION", - "scope": "885", - "src": { - "column": "58", - "end": "4145", - "id": "886", - "length": "14", - "line": "160", - "parentIndex": "883", - "start": "4132" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "887", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "58", - "end": "4138", - "id": "888", - "length": "7", - "line": "160", - "parentIndex": "885", - "start": "4132" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "58", - "end": "4145", - "id": "884", - "length": "14", - "line": "160", - "parentIndex": "875", - "start": "4132" - } - }, - "scope": "35", - "src": { - "column": "4", - "end": "4232", - "id": "876", - "length": "155", - "line": "160", - "parentIndex": "35", - "start": "4078" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256", - "typeString": "function(uint256)" - }, - "visibility": "PUBLIC" - } - } - ], - "src": { - "end": "4473", - "length": "4333", - "line": "8", - "parentIndex": "31", - "start": "141" - } - } - } - ] - }, - "src": { - "id": 32, - "line": 8, - "start": 141, - "end": 4473, - "length": 4333, - "parent_index": 9 - } - } - ], - "comments": [ - { - "id": 1, - "node_type": 33, - "src": { - "line": 1, - "end": 30, - "length": 31, - "parent_index": 2 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 2, - "node_type": 31, - "src": { - "line": 26, - "column": 4, - "start": 621, - "end": 643, - "length": 23, - "parent_index": 3 - }, - "text": "// Define custom errors" - }, - { - "id": 3, - "node_type": 31, - "src": { - "line": 85, - "column": 12, - "start": 2132, - "end": 2162, - "length": 31, - "parent_index": 4 - }, - "text": "// Odd numbers to continue loop" - }, - { - "id": 4, - "node_type": 31, - "src": { - "line": 109, - "column": 4, - "start": 2664, - "end": 2693, - "length": 30, - "parent_index": 5 - }, - "text": "// New function using for loop" - }, - { - "id": 5, - "node_type": 31, - "src": { - "line": 119, - "column": 4, - "start": 2984, - "end": 3011, - "length": 28, - "parent_index": 6 - }, - "text": "// New function using revert" - }, - { - "id": 6, - "node_type": 32, - "src": { - "line": 131, - "column": 30, - "start": 3422, - "end": 3437, - "length": 16, - "parent_index": 7 - }, - "text": "/*lowLevelData*/" - }, - { - "id": 7, - "node_type": 31, - "src": { - "line": 152, - "column": 31, - "start": 3910, - "end": 3926, - "length": 17, - "parent_index": 8 - }, - "text": "// do while loop" - }, - { - "id": 8, - "node_type": 32, - "src": { - "line": 166, - "column": 4, - "start": 4239, - "end": 4471, - "length": 233, - "parent_index": 9 - }, - "text": "/** \n function dummyFunctionYul() public pure returns (uint256 result) {\n assembly {\n // Yul code\n let x := calldataload(0)\n let y := add(x, 1)\n result := y\n }\n }\n */" - } - ] + "id": 9, + "entry_source_unit": 31, + "node_type": 80, + "source_units": [ + { + "id": 10, + "license": "MIT", + "name": "IDummyContract", + "exported_symbols": [ + { + "id": 10, + "name": "IDummyContract" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "12", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "4", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "54", + "id": "13", + "length": "23", + "line": "2", + "parentIndex": "10", + "start": "32" + }, + "text": "pragma solidity ^0.8.4;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "14", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "14" + ], + "name": "IDummyContract", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "30", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "136", + "id": "17", + "length": "49", + "line": "5", + "parentIndex": "16", + "start": "88" + } + }, + "id": "16", + "kind": "KIND_FUNCTION", + "name": "dummyFunction", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "18", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "20", + "nodeType": "VARIABLE_DECLARATION", + "scope": "20", + "src": { + "column": "47", + "end": "134", + "id": "21", + "length": "4", + "line": "5", + "parentIndex": "18", + "start": "131" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "22", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "134", + "id": "23", + "length": "4", + "line": "5", + "parentIndex": "20", + "start": "131" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "47", + "end": "134", + "id": "19", + "length": "4", + "line": "5", + "parentIndex": "16", + "start": "131" + } + }, + "returnParameters": { + "id": "24", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "26", + "nodeType": "VARIABLE_DECLARATION", + "scope": "26", + "src": { + "column": "47", + "end": "134", + "id": "27", + "length": "4", + "line": "5", + "parentIndex": "24", + "start": "131" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "28", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "134", + "id": "29", + "length": "4", + "line": "5", + "parentIndex": "26", + "start": "131" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "47", + "end": "134", + "id": "25", + "length": "4", + "line": "5", + "parentIndex": "16", + "start": "131" + } + }, + "scope": "14", + "src": { + "column": "4", + "end": "136", + "id": "17", + "length": "49", + "line": "5", + "parentIndex": "14", + "start": "88" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$", + "typeString": "function(bool)" + }, + "visibility": "EXTERNAL" + } + } + ], + "src": { + "end": "138", + "length": "82", + "line": "4", + "parentIndex": "10", + "start": "57" + } + } + } + ] + }, + "src": { + "id": 11, + "line": 4, + "start": 57, + "end": 138, + "length": 82, + "parent_index": 9 + } + }, + { + "id": 31, + "license": "MIT", + "name": "Lottery", + "absolute_path": "Lottery.sol", + "exported_symbols": [ + { + "id": 31, + "name": "Lottery", + "absolute_path": "Lottery.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "33", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "4", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "54", + "id": "34", + "length": "23", + "line": "2", + "parentIndex": "31", + "start": "32" + }, + "text": "pragma solidity ^0.8.4;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "35", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "35" + ], + "name": "Lottery", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "37", + "isConstant": true, + "isStateVariable": true, + "name": "DUMMY_CONSTANT", + "nodeType": "VARIABLE_DECLARATION", + "scope": "35", + "src": { + "column": "4", + "end": "210", + "id": "38", + "length": "47", + "line": "9", + "parentIndex": "35", + "start": "164" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "39", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "170", + "id": "40", + "length": "7", + "line": "9", + "parentIndex": "37", + "start": "164" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Enum", + "value": { + "canonicalName": "Lottery.LotteryState", + "id": "42", + "members": [ + { + "id": "44", + "name": "Accepting", + "nodeType": "ENUM_VALUE", + "scope": "44", + "src": { + "column": "24", + "end": "245", + "length": "8", + "line": "11", + "parentIndex": "42", + "start": "237" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState$_Accepting_$44", + "typeString": "enum Lottery.LotteryState.Accepting" + } + }, + { + "id": "45", + "name": "Finished", + "nodeType": "ENUM_VALUE", + "scope": "45", + "src": { + "column": "35", + "end": "255", + "length": "7", + "line": "11", + "parentIndex": "42", + "start": "248" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState$_Finished_$45", + "typeString": "enum Lottery.LotteryState.Finished" + } + } + ], + "name": "LotteryState", + "nodeType": "ENUM_DEFINITION", + "src": { + "column": "4", + "end": "257", + "id": "43", + "length": "40", + "line": "11", + "parentIndex": "35", + "start": "217" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", + "value": { + "canonicalName": "Lottery.Player", + "id": "47", + "members": [ + { + "id": "49", + "name": "addr", + "nodeType": "VARIABLE_DECLARATION", + "scope": "49", + "src": { + "column": "8", + "end": "299", + "id": "50", + "length": "13", + "line": "13", + "parentIndex": "47", + "start": "287" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "51", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "293", + "id": "52", + "length": "7", + "line": "13", + "parentIndex": "49", + "start": "287" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "53", + "name": "ticketCount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "53", + "src": { + "column": "8", + "end": "328", + "id": "54", + "length": "20", + "line": "14", + "parentIndex": "47", + "start": "309" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "55", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "315", + "id": "56", + "length": "7", + "line": "14", + "parentIndex": "53", + "start": "309" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "name": "Player", + "nodeType": "STRUCT_DEFINITION", + "src": { + "column": "4", + "end": "334", + "id": "48", + "length": "72", + "line": "12", + "parentIndex": "31", + "start": "263" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_struct$_Lottery_Player_$47", + "typeString": "struct Lottery.Player" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "58", + "isStateVariable": true, + "name": "players", + "nodeType": "VARIABLE_DECLARATION", + "scope": "35", + "src": { + "column": "4", + "end": "381", + "id": "59", + "length": "42", + "line": "16", + "parentIndex": "35", + "start": "340" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", + "typeString": "mapping(address=\u003ePlayer)" + }, + "typeName": { + "id": "60", + "keyType": { + "id": "62", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "354", + "id": "63", + "length": "7", + "line": "16", + "parentIndex": "60", + "start": "348" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "name": "Player", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "67", + "name": "Player", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "47", + "src": { + "column": "23", + "end": "364", + "id": "68", + "length": "6", + "line": "16", + "parentIndex": "60", + "start": "359" + } + }, + "referencedDeclaration": "47", + "src": { + "column": "23", + "end": "364", + "id": "66", + "length": "6", + "line": "16", + "parentIndex": "60", + "start": "359" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", + "typeString": "mapping(address=\u003ePlayer)" + }, + "valueType": { + "id": "64", + "name": "Player", + "nodeType": "ELEMENTARY_TYPE_NAME", + "referencedDeclaration": "47", + "src": { + "column": "23", + "end": "364", + "id": "65", + "length": "6", + "line": "16", + "parentIndex": "60", + "start": "359" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_Lottery_Player_$47", + "typeString": "struct Lottery.Player" + } + } + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "70", + "isStateVariable": true, + "name": "playerAddresses", + "nodeType": "VARIABLE_DECLARATION", + "scope": "35", + "src": { + "column": "4", + "end": "419", + "id": "71", + "length": "33", + "line": "17", + "parentIndex": "35", + "start": "387" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "72", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "4", + "end": "393", + "id": "74", + "length": "7", + "line": "17", + "parentIndex": "70", + "start": "387" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "76", + "isStateVariable": true, + "name": "state", + "nodeType": "VARIABLE_DECLARATION", + "scope": "35", + "src": { + "column": "4", + "end": "451", + "id": "77", + "length": "26", + "line": "19", + "parentIndex": "35", + "start": "426" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + }, + "typeName": { + "id": "78", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "80", + "name": "LotteryState", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "42", + "src": { + "column": "4", + "end": "437", + "id": "81", + "length": "12", + "line": "19", + "parentIndex": "78", + "start": "426" + } + }, + "referencedDeclaration": "42", + "src": { + "column": "4", + "end": "437", + "id": "79", + "length": "12", + "line": "19", + "parentIndex": "76", + "start": "426" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "83", + "name": "PlayerJoined", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "85", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "86", + "name": "addr", + "nodeType": "VARIABLE_DECLARATION", + "scope": "86", + "src": { + "column": "23", + "end": "488", + "id": "87", + "length": "12", + "line": "21", + "parentIndex": "85", + "start": "477" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "88", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "483", + "id": "89", + "length": "7", + "line": "21", + "parentIndex": "86", + "start": "477" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "490", + "id": "84", + "length": "33", + "line": "21", + "parentIndex": "83", + "start": "458" + } + }, + "src": { + "column": "4", + "end": "490", + "id": "84", + "length": "33", + "line": "21", + "parentIndex": "35", + "start": "458" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_Lottery_PlayerJoined_\u002683", + "typeString": "event Lottery.PlayerJoined" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "91", + "name": "LotteryFinished", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "93", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "94", + "name": "winner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "94", + "src": { + "column": "26", + "end": "531", + "id": "95", + "length": "14", + "line": "22", + "parentIndex": "93", + "start": "518" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "96", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "26", + "end": "524", + "id": "97", + "length": "7", + "line": "22", + "parentIndex": "94", + "start": "518" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "533", + "id": "92", + "length": "38", + "line": "22", + "parentIndex": "91", + "start": "496" + } + }, + "src": { + "column": "4", + "end": "533", + "id": "92", + "length": "38", + "line": "22", + "parentIndex": "35", + "start": "496" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_Lottery_LotteryFinished_\u002691", + "typeString": "event Lottery.LotteryFinished" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "99", + "name": "ExternalCallSuccessful", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "101", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "569", + "id": "100", + "length": "31", + "line": "23", + "parentIndex": "99", + "start": "539" + } + }, + "src": { + "column": "4", + "end": "569", + "id": "100", + "length": "31", + "line": "23", + "parentIndex": "35", + "start": "539" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_Lottery_ExternalCallSuccessful_\u002699", + "typeString": "event Lottery.ExternalCallSuccessful" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "103", + "name": "ExternalCallFailed", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "105", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "106", + "name": "reason", + "nodeType": "VARIABLE_DECLARATION", + "scope": "106", + "src": { + "column": "29", + "end": "612", + "id": "107", + "length": "13", + "line": "24", + "parentIndex": "105", + "start": "600" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "108", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "605", + "id": "109", + "length": "6", + "line": "24", + "parentIndex": "106", + "start": "600" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "614", + "id": "104", + "length": "40", + "line": "24", + "parentIndex": "103", + "start": "575" + } + }, + "src": { + "column": "4", + "end": "614", + "id": "104", + "length": "40", + "line": "24", + "parentIndex": "35", + "start": "575" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_Lottery_ExternalCallFailed_\u0026103", + "typeString": "event Lottery.ExternalCallFailed" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Error", + "value": { + "id": "111", + "name": "InvalidState", + "nodeType": "ERROR_DEFINITION", + "parameters": { + "id": "113", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "669", + "id": "112", + "length": "21", + "line": "27", + "parentIndex": "111", + "start": "649" + } + }, + "src": { + "column": "4", + "end": "669", + "id": "112", + "length": "21", + "line": "27", + "parentIndex": "35", + "start": "649" + }, + "typeDescription": { + "typeIdentifier": "t_error$_Lottery_InvalidState_$111", + "typeString": "error Lottery.InvalidState" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Error", + "value": { + "id": "115", + "name": "OwnerCannotParticipate", + "nodeType": "ERROR_DEFINITION", + "parameters": { + "id": "117", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "705", + "id": "116", + "length": "31", + "line": "28", + "parentIndex": "115", + "start": "675" + } + }, + "src": { + "column": "4", + "end": "705", + "id": "116", + "length": "31", + "line": "28", + "parentIndex": "35", + "start": "675" + }, + "typeDescription": { + "typeIdentifier": "t_error$_Lottery_OwnerCannotParticipate_$115", + "typeString": "error Lottery.OwnerCannotParticipate" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Error", + "value": { + "id": "119", + "name": "NoValueProvided", + "nodeType": "ERROR_DEFINITION", + "parameters": { + "id": "121", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "734", + "id": "120", + "length": "24", + "line": "29", + "parentIndex": "119", + "start": "711" + } + }, + "src": { + "column": "4", + "end": "734", + "id": "120", + "length": "24", + "line": "29", + "parentIndex": "35", + "start": "711" + }, + "typeDescription": { + "typeIdentifier": "t_error$_Lottery_NoValueProvided_$119", + "typeString": "error Lottery.NoValueProvided" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Error", + "value": { + "id": "123", + "name": "InvalidWinner", + "nodeType": "ERROR_DEFINITION", + "parameters": { + "id": "125", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "761", + "id": "124", + "length": "22", + "line": "30", + "parentIndex": "123", + "start": "740" + } + }, + "src": { + "column": "4", + "end": "761", + "id": "124", + "length": "22", + "line": "30", + "parentIndex": "35", + "start": "740" + }, + "typeDescription": { + "typeIdentifier": "t_error$_Lottery_InvalidWinner_$123", + "typeString": "error Lottery.InvalidWinner" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Error", + "value": { + "id": "127", + "name": "InvalidPlayerAddress", + "nodeType": "ERROR_DEFINITION", + "parameters": { + "id": "129", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "795", + "id": "128", + "length": "29", + "line": "31", + "parentIndex": "127", + "start": "767" + } + }, + "src": { + "column": "4", + "end": "795", + "id": "128", + "length": "29", + "line": "31", + "parentIndex": "35", + "start": "767" + }, + "typeDescription": { + "typeIdentifier": "t_error$_Lottery_InvalidPlayerAddress_$127", + "typeString": "error Lottery.InvalidPlayerAddress" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Error", + "value": { + "id": "131", + "name": "OnlyOwnerCanCall", + "nodeType": "ERROR_DEFINITION", + "parameters": { + "id": "133", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "825", + "id": "132", + "length": "25", + "line": "32", + "parentIndex": "131", + "start": "801" + } + }, + "src": { + "column": "4", + "end": "825", + "id": "132", + "length": "25", + "line": "32", + "parentIndex": "35", + "start": "801" + }, + "typeDescription": { + "typeIdentifier": "t_error$_Lottery_OnlyOwnerCanCall_$131", + "typeString": "error Lottery.OnlyOwnerCanCall" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Modifier", + "value": { + "body": { + "id": "145", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "42", + "end": "963", + "id": "146", + "length": "94", + "line": "34", + "parentIndex": "135", + "start": "870" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "155", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "29", + "end": "946", + "id": "156", + "length": "46", + "line": "35", + "parentIndex": "135", + "start": "901" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Revert", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "159", + "name": "InvalidState", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "111", + "src": { + "column": "19", + "end": "933", + "id": "160", + "length": "12", + "line": "36", + "parentIndex": "155", + "start": "922" + }, + "typeDescription": { + "typeIdentifier": "t_error$_Lottery_InvalidState_$111", + "typeString": "error Lottery.InvalidState" + } + } + }, + "id": "157", + "nodeType": "REVERT_STATEMENT", + "src": { + "column": "12", + "end": "936", + "id": "158", + "length": "22", + "line": "36", + "parentIndex": "135", + "start": "915" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "149", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "151", + "name": "state", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "76", + "src": { + "column": "12", + "end": "888", + "id": "152", + "length": "5", + "line": "35", + "parentIndex": "149", + "start": "884" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "153", + "name": "_state", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "139", + "src": { + "column": "21", + "end": "898", + "id": "154", + "length": "6", + "line": "35", + "parentIndex": "149", + "start": "893" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + }, + "src": { + "column": "12", + "end": "898", + "id": "150", + "length": "15", + "line": "35", + "parentIndex": "147", + "start": "884" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "147", + "nodeType": "IF_STATEMENT", + "src": { + "end": "946", + "id": "148", + "length": "67", + "line": "35", + "parentIndex": "145", + "start": "880" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "161", + "name": "_", + "nodeType": "PLACEHOLDER_STATEMENT", + "src": { + "column": "8", + "end": "956", + "id": "162", + "length": "1", + "line": "38", + "parentIndex": "145", + "start": "956" + }, + "typeDescription": { + "typeIdentifier": "t_placeholder_literal", + "typeString": "t_placeholder" + } + } + } + ] + }, + "id": "135", + "name": "inState", + "nodeType": "MODIFIER_DEFINITION", + "parameters": { + "id": "137", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "139", + "name": "_state", + "nodeType": "VARIABLE_DECLARATION", + "scope": "139", + "src": { + "column": "21", + "end": "867", + "id": "140", + "length": "19", + "line": "34", + "parentIndex": "137", + "start": "849" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + }, + "typeName": { + "id": "141", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "143", + "name": "LotteryState", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "42", + "src": { + "column": "21", + "end": "860", + "id": "144", + "length": "12", + "line": "34", + "parentIndex": "141", + "start": "849" + } + }, + "referencedDeclaration": "42", + "src": { + "column": "21", + "end": "860", + "id": "142", + "length": "12", + "line": "34", + "parentIndex": "139", + "start": "849" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "21", + "end": "867", + "id": "138", + "length": "19", + "line": "34", + "parentIndex": "35", + "start": "849" + } + }, + "src": { + "column": "4", + "end": "963", + "id": "136", + "length": "132", + "line": "34", + "parentIndex": "35", + "start": "832" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Modifier", + "value": { + "body": { + "id": "167", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "24", + "end": "1099", + "id": "168", + "length": "110", + "line": "41", + "parentIndex": "164", + "start": "990" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "181", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "35", + "end": "1082", + "id": "182", + "length": "56", + "line": "42", + "parentIndex": "164", + "start": "1027" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Revert", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "185", + "name": "OwnerCannotParticipate", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "115", + "src": { + "column": "19", + "end": "1069", + "id": "186", + "length": "22", + "line": "43", + "parentIndex": "181", + "start": "1048" + }, + "typeDescription": { + "typeIdentifier": "t_error$_Lottery_OwnerCannotParticipate_$115", + "typeString": "error Lottery.OwnerCannotParticipate" + } + } + }, + "id": "183", + "nodeType": "REVERT_STATEMENT", + "src": { + "column": "12", + "end": "1072", + "id": "184", + "length": "32", + "line": "43", + "parentIndex": "164", + "start": "1041" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "171", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "175", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "1006", + "id": "176", + "length": "3", + "line": "42", + "parentIndex": "173", + "start": "1004" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "173", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "1013", + "id": "174", + "length": "10", + "line": "42", + "parentIndex": "171", + "start": "1004" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "179", + "name": "owner", + "nodeType": "IDENTIFIER", + "src": { + "column": "26", + "end": "1022", + "id": "180", + "length": "5", + "line": "42", + "parentIndex": "177", + "start": "1018" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "177", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "26", + "end": "1024", + "id": "178", + "length": "7", + "line": "42", + "parentIndex": "171", + "start": "1018" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "src": { + "column": "12", + "end": "1024", + "id": "172", + "length": "21", + "line": "42", + "parentIndex": "169", + "start": "1004" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "169", + "nodeType": "IF_STATEMENT", + "src": { + "end": "1082", + "id": "170", + "length": "83", + "line": "42", + "parentIndex": "167", + "start": "1000" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "187", + "name": "_", + "nodeType": "PLACEHOLDER_STATEMENT", + "src": { + "column": "8", + "end": "1092", + "id": "188", + "length": "1", + "line": "45", + "parentIndex": "167", + "start": "1092" + }, + "typeDescription": { + "typeIdentifier": "t_placeholder_literal", + "typeString": "t_placeholder" + } + } + } + ] + }, + "id": "164", + "name": "notOwner", + "nodeType": "MODIFIER_DEFINITION", + "parameters": { + "id": "166", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "1099", + "id": "165", + "length": "130", + "line": "41", + "parentIndex": "35", + "start": "970" + } + }, + "src": { + "column": "4", + "end": "1099", + "id": "165", + "length": "130", + "line": "41", + "parentIndex": "35", + "start": "970" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Fallback", + "value": { + "body": { + "id": "194", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "32", + "end": "1136", + "id": "195", + "length": "3", + "line": "48", + "parentIndex": "190", + "start": "1134" + } + }, + "id": "190", + "implemented": true, + "kind": "FALLBACK", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "192", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "1136", + "id": "191", + "length": "31", + "line": "48", + "parentIndex": "190", + "start": "1106" + } + }, + "returnParameters": { + "id": "193", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "1136", + "id": "191", + "length": "31", + "line": "48", + "parentIndex": "190", + "start": "1106" + } + }, + "src": { + "column": "4", + "end": "1136", + "id": "191", + "length": "31", + "line": "48", + "parentIndex": "35", + "start": "1106" + }, + "stateMutability": "PAYABLE", + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Receive", + "value": { + "body": { + "id": "201", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "31", + "end": "1171", + "id": "202", + "length": "3", + "line": "49", + "parentIndex": "197", + "start": "1169" + } + }, + "id": "197", + "implemented": true, + "kind": "RECEIVE", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "199", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "1171", + "id": "198", + "length": "30", + "line": "49", + "parentIndex": "197", + "start": "1142" + } + }, + "returnParameters": { + "id": "200", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "1171", + "id": "198", + "length": "30", + "line": "49", + "parentIndex": "197", + "start": "1142" + } + }, + "src": { + "column": "4", + "end": "1171", + "id": "198", + "length": "30", + "line": "49", + "parentIndex": "35", + "start": "1142" + }, + "stateMutability": "NONPAYABLE", + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "208", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "18", + "end": "1238", + "id": "209", + "length": "47", + "line": "51", + "parentIndex": "204", + "start": "1192" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "212", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "214", + "name": "state", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "76", + "src": { + "column": "8", + "end": "1206", + "id": "215", + "length": "5", + "line": "52", + "parentIndex": "212", + "start": "1202" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "218", + "name": "LotteryState", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "42", + "src": { + "column": "16", + "end": "1221", + "id": "219", + "length": "12", + "line": "52", + "parentIndex": "216", + "start": "1210" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + }, + "id": "216", + "memberName": "Accepting", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "1231", + "id": "217", + "length": "22", + "line": "52", + "parentIndex": "212", + "start": "1210" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + }, + "src": { + "column": "8", + "end": "1231", + "id": "213", + "length": "30", + "line": "52", + "parentIndex": "208", + "start": "1202" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + }, + "id": "210", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "1232", + "id": "211", + "length": "31", + "line": "52", + "parentIndex": "208", + "start": "1202" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + } + ] + }, + "id": "204", + "implemented": true, + "kind": "CONSTRUCTOR", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "206", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "1238", + "id": "205", + "length": "61", + "line": "51", + "parentIndex": "204", + "start": "1178" + } + }, + "returnParameters": { + "id": "207", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "1238", + "id": "205", + "length": "61", + "line": "51", + "parentIndex": "204", + "start": "1178" + } + }, + "scope": "35", + "src": { + "column": "4", + "end": "1238", + "id": "205", + "length": "61", + "line": "51", + "parentIndex": "35", + "start": "1178" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "$_t_constructor", + "typeString": "constructor" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "237", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "76", + "end": "1658", + "id": "238", + "length": "342", + "line": "55", + "parentIndex": "221", + "start": "1317" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "249", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "28", + "end": "1395", + "id": "250", + "length": "49", + "line": "56", + "parentIndex": "221", + "start": "1347" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Revert", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "253", + "name": "NoValueProvided", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "119", + "src": { + "column": "19", + "end": "1382", + "id": "254", + "length": "15", + "line": "57", + "parentIndex": "249", + "start": "1368" + }, + "typeDescription": { + "typeIdentifier": "t_error$_Lottery_NoValueProvided_$119", + "typeString": "error Lottery.NoValueProvided" + } + } + }, + "id": "251", + "nodeType": "REVERT_STATEMENT", + "src": { + "column": "12", + "end": "1385", + "id": "252", + "length": "25", + "line": "57", + "parentIndex": "221", + "start": "1361" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "241", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "245", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "1333", + "id": "246", + "length": "3", + "line": "56", + "parentIndex": "243", + "start": "1331" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "243", + "memberName": "value", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "1339", + "id": "244", + "length": "9", + "line": "56", + "parentIndex": "241", + "start": "1331" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "247", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "25", + "end": "1344", + "id": "248", + "length": "1", + "line": "56", + "parentIndex": "241", + "start": "1344" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "12", + "end": "1344", + "id": "242", + "length": "14", + "line": "56", + "parentIndex": "239", + "start": "1331" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "239", + "nodeType": "IF_STATEMENT", + "src": { + "end": "1395", + "id": "240", + "length": "69", + "line": "56", + "parentIndex": "237", + "start": "1327" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "277", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "52", + "end": "1557", + "id": "278", + "length": "108", + "line": "60", + "parentIndex": "221", + "start": "1450" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "281", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "291", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "1474", + "id": "292", + "length": "3", + "line": "61", + "parentIndex": "289", + "start": "1472" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "289", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "20", + "end": "1481", + "id": "290", + "length": "10", + "line": "61", + "parentIndex": "285", + "start": "1472" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "285", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "287", + "name": "players", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "58", + "src": { + "column": "12", + "end": "1470", + "id": "288", + "length": "7", + "line": "61", + "parentIndex": "285", + "start": "1464" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", + "typeString": "mapping(address=\u003ePlayer)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "12", + "end": "1482", + "id": "286", + "length": "19", + "line": "61", + "parentIndex": "283", + "start": "1464" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$", + "typeString": "index[mapping(address=\u003ePlayer):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", + "typeString": "mapping(address=\u003ePlayer)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "id": "283", + "memberName": "addr", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "1487", + "id": "284", + "length": "24", + "line": "61", + "parentIndex": "281", + "start": "1464" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$", + "typeString": "index[mapping(address=\u003ePlayer):address]" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "295", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "39", + "end": "1493", + "id": "296", + "length": "3", + "line": "61", + "parentIndex": "293", + "start": "1491" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "293", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "39", + "end": "1500", + "id": "294", + "length": "10", + "line": "61", + "parentIndex": "281", + "start": "1491" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "src": { + "column": "12", + "end": "1500", + "id": "282", + "length": "37", + "line": "61", + "parentIndex": "277", + "start": "1464" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$", + "typeString": "index[mapping(address=\u003ePlayer):address]" + } + } + }, + "id": "279", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "1501", + "id": "280", + "length": "38", + "line": "61", + "parentIndex": "277", + "start": "1464" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$", + "typeString": "index[mapping(address=\u003ePlayer):address]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "305", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "33", + "end": "1538", + "id": "306", + "length": "3", + "line": "62", + "parentIndex": "303", + "start": "1536" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "303", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "33", + "end": "1545", + "id": "304", + "length": "10", + "line": "62", + "parentIndex": "297", + "start": "1536" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "301", + "name": "playerAddresses", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "70", + "src": { + "column": "12", + "end": "1529", + "id": "302", + "length": "15", + "line": "62", + "parentIndex": "299", + "start": "1515" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "299", + "memberName": "push", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "1534", + "id": "300", + "length": "20", + "line": "62", + "parentIndex": "297", + "start": "1515" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "297", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "1546", + "id": "298", + "length": "32", + "line": "62", + "parentIndex": "277", + "start": "1515" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "257", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "267", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "1420", + "id": "268", + "length": "3", + "line": "60", + "parentIndex": "265", + "start": "1418" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "265", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "20", + "end": "1427", + "id": "266", + "length": "10", + "line": "60", + "parentIndex": "261", + "start": "1418" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "261", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "263", + "name": "players", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "58", + "src": { + "column": "12", + "end": "1416", + "id": "264", + "length": "7", + "line": "60", + "parentIndex": "261", + "start": "1410" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", + "typeString": "mapping(address=\u003ePlayer)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "12", + "end": "1428", + "id": "262", + "length": "19", + "line": "60", + "parentIndex": "259", + "start": "1410" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$", + "typeString": "index[mapping(address=\u003ePlayer):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", + "typeString": "mapping(address=\u003ePlayer)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "id": "259", + "memberName": "addr", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "1433", + "id": "260", + "length": "24", + "line": "60", + "parentIndex": "257", + "start": "1410" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$", + "typeString": "index[mapping(address=\u003ePlayer):address]" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "275", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "48", + "end": "1446", + "id": "276", + "length": "1", + "line": "60", + "parentIndex": "269", + "start": "1446" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "271", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "40", + "end": "1444", + "id": "272", + "length": "7", + "line": "60", + "parentIndex": "269", + "start": "1438" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "273", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "40", + "end": "1444", + "id": "274", + "length": "7", + "line": "60", + "parentIndex": "271", + "start": "1438" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "269", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "40", + "end": "1447", + "id": "270", + "length": "10", + "line": "60", + "parentIndex": "257", + "start": "1438" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "12", + "end": "1447", + "id": "258", + "length": "38", + "line": "60", + "parentIndex": "255", + "start": "1410" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "255", + "nodeType": "IF_STATEMENT", + "src": { + "end": "1557", + "id": "256", + "length": "152", + "line": "60", + "parentIndex": "237", + "start": "1406" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "309", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "319", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "1578", + "id": "320", + "length": "3", + "line": "65", + "parentIndex": "317", + "start": "1576" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "317", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "1585", + "id": "318", + "length": "10", + "line": "65", + "parentIndex": "313", + "start": "1576" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "313", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "315", + "name": "players", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "58", + "src": { + "column": "8", + "end": "1574", + "id": "316", + "length": "7", + "line": "65", + "parentIndex": "313", + "start": "1568" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", + "typeString": "mapping(address=\u003ePlayer)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "8", + "end": "1586", + "id": "314", + "length": "19", + "line": "65", + "parentIndex": "311", + "start": "1568" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$", + "typeString": "index[mapping(address=\u003ePlayer):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", + "typeString": "mapping(address=\u003ePlayer)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "id": "311", + "memberName": "ticketCount", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "1598", + "id": "312", + "length": "31", + "line": "65", + "parentIndex": "309", + "start": "1568" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$", + "typeString": "index[mapping(address=\u003ePlayer):address]" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "PLUS_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "323", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "43", + "end": "1605", + "id": "324", + "length": "3", + "line": "65", + "parentIndex": "321", + "start": "1603" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "321", + "memberName": "value", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "43", + "end": "1611", + "id": "322", + "length": "9", + "line": "65", + "parentIndex": "309", + "start": "1603" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "8", + "end": "1611", + "id": "310", + "length": "44", + "line": "65", + "parentIndex": "237", + "start": "1568" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$", + "typeString": "index[mapping(address=\u003ePlayer):address]" + } + } + }, + "id": "307", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "1612", + "id": "308", + "length": "45", + "line": "65", + "parentIndex": "237", + "start": "1568" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_address]$", + "typeString": "index[mapping(address=\u003ePlayer):address]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "329", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "26", + "end": "1643", + "id": "330", + "length": "3", + "line": "67", + "parentIndex": "327", + "start": "1641" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "327", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "26", + "end": "1650", + "id": "328", + "length": "10", + "line": "67", + "parentIndex": "237", + "start": "1641" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "331", + "name": "PlayerJoined", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "83", + "src": { + "column": "13", + "end": "1639", + "id": "332", + "length": "12", + "line": "67", + "parentIndex": "237", + "start": "1628" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_Lottery_PlayerJoined_\u002683", + "typeString": "event Lottery.PlayerJoined" + } + } + }, + "id": "325", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "1652", + "id": "326", + "length": "30", + "line": "67", + "parentIndex": "221", + "start": "1623" + } + } + } + ] + }, + "id": "221", + "implemented": true, + "kind": "KIND_FUNCTION", + "modifiers": [ + { + "argumentTypes": [ + { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "229", + "name": "LotteryState", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "42", + "src": { + "column": "43", + "end": "1295", + "id": "230", + "length": "12", + "line": "55", + "parentIndex": "227", + "start": "1284" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + }, + "id": "227", + "memberName": "Accepting", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "43", + "end": "1305", + "id": "228", + "length": "22", + "line": "55", + "parentIndex": "223", + "start": "1284" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + } + ], + "id": "223", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "225", + "name": "inState", + "src": { + "column": "35", + "end": "1282", + "id": "226", + "length": "7", + "line": "55", + "parentIndex": "223", + "start": "1276" + } + }, + "name": "inState", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "35", + "end": "1306", + "id": "224", + "length": "31", + "line": "55", + "parentIndex": "221", + "start": "1276" + } + }, + { + "id": "231", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "233", + "name": "notOwner", + "src": { + "column": "67", + "end": "1315", + "id": "234", + "length": "8", + "line": "55", + "parentIndex": "231", + "start": "1308" + } + }, + "name": "notOwner", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "67", + "end": "1315", + "id": "232", + "length": "8", + "line": "55", + "parentIndex": "221", + "start": "1308" + } + } + ], + "name": "join", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "235", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "1658", + "id": "222", + "length": "414", + "line": "55", + "parentIndex": "221", + "start": "1245" + } + }, + "returnParameters": { + "id": "236", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "1658", + "id": "222", + "length": "414", + "line": "55", + "parentIndex": "221", + "start": "1245" + } + }, + "scope": "35", + "src": { + "column": "4", + "end": "1658", + "id": "222", + "length": "414", + "line": "55", + "parentIndex": "35", + "start": "1245" + }, + "stateMutability": "PAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "346", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "68", + "end": "2467", + "id": "347", + "length": "739", + "line": "70", + "parentIndex": "334", + "start": "1729" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "350", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "352", + "name": "state", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "76", + "src": { + "column": "8", + "end": "1743", + "id": "353", + "length": "5", + "line": "71", + "parentIndex": "350", + "start": "1739" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "356", + "name": "LotteryState", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "42", + "src": { + "column": "16", + "end": "1758", + "id": "357", + "length": "12", + "line": "71", + "parentIndex": "354", + "start": "1747" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + }, + "id": "354", + "memberName": "Finished", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "1767", + "id": "355", + "length": "21", + "line": "71", + "parentIndex": "350", + "start": "1747" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + }, + "src": { + "column": "8", + "end": "1767", + "id": "351", + "length": "29", + "line": "71", + "parentIndex": "346", + "start": "1739" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + }, + "id": "348", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "1768", + "id": "349", + "length": "30", + "line": "71", + "parentIndex": "346", + "start": "1739" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "360" + ], + "declarations": [ + { + "id": "360", + "mutability": "MUTABLE", + "name": "index", + "nodeType": "VARIABLE_DECLARATION", + "scope": "346", + "src": { + "column": "8", + "end": "1791", + "id": "361", + "length": "13", + "line": "73", + "parentIndex": "358", + "start": "1779" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "362", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "1785", + "id": "363", + "length": "7", + "line": "73", + "parentIndex": "360", + "start": "1779" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "358", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "364", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "374", + "name": "block", + "nodeType": "IDENTIFIER", + "src": { + "column": "32", + "end": "1807", + "id": "375", + "length": "5", + "line": "73", + "parentIndex": "372", + "start": "1803" + }, + "typeDescription": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + } + }, + "id": "372", + "memberName": "timestamp", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "32", + "end": "1817", + "id": "373", + "length": "15", + "line": "73", + "parentIndex": "366", + "start": "1803" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": "368", + "name": "uint256", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "1801", + "id": "369", + "length": "7", + "line": "73", + "parentIndex": "366", + "start": "1795" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "typeName": { + "id": "370", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "1801", + "id": "371", + "length": "7", + "line": "73", + "parentIndex": "368", + "start": "1795" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "id": "366", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "1818", + "id": "367", + "length": "24", + "line": "73", + "parentIndex": "358", + "start": "1795" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MODULO", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "378", + "name": "playerAddresses", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "70", + "src": { + "column": "51", + "end": "1836", + "id": "379", + "length": "15", + "line": "73", + "parentIndex": "376", + "start": "1822" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "376", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "51", + "end": "1843", + "id": "377", + "length": "22", + "line": "73", + "parentIndex": "358", + "start": "1822" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "src": { + "column": "24", + "end": "1843", + "id": "365", + "length": "49", + "line": "73", + "parentIndex": "358", + "start": "1795" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "1844", + "id": "359", + "length": "66", + "line": "73", + "parentIndex": "346", + "start": "1779" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "382" + ], + "declarations": [ + { + "id": "382", + "mutability": "MUTABLE", + "name": "winner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "346", + "src": { + "column": "8", + "end": "1867", + "id": "383", + "length": "14", + "line": "74", + "parentIndex": "380", + "start": "1854" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "384", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "1860", + "id": "385", + "length": "7", + "line": "74", + "parentIndex": "382", + "start": "1854" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "380", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "392", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "33", + "end": "1879", + "id": "393", + "length": "1", + "line": "74", + "parentIndex": "386", + "start": "1879" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "388", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "25", + "end": "1877", + "id": "389", + "length": "7", + "line": "74", + "parentIndex": "386", + "start": "1871" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "390", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "25", + "end": "1877", + "id": "391", + "length": "7", + "line": "74", + "parentIndex": "388", + "start": "1871" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "386", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "25", + "end": "1880", + "id": "387", + "length": "10", + "line": "74", + "parentIndex": "380", + "start": "1871" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "1881", + "id": "381", + "length": "28", + "line": "74", + "parentIndex": "346", + "start": "1854" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "396" + ], + "declarations": [ + { + "id": "396", + "mutability": "MUTABLE", + "name": "count", + "nodeType": "VARIABLE_DECLARATION", + "scope": "346", + "src": { + "column": "8", + "end": "1903", + "id": "397", + "length": "13", + "line": "75", + "parentIndex": "394", + "start": "1891" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "398", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "1897", + "id": "399", + "length": "7", + "line": "75", + "parentIndex": "396", + "start": "1891" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "394", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "400", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "24", + "end": "1907", + "id": "401", + "length": "1", + "line": "75", + "parentIndex": "394", + "start": "1907" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "1908", + "id": "395", + "length": "18", + "line": "75", + "parentIndex": "346", + "start": "1891" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.While", + "value": { + "body": { + "id": "411", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "46", + "end": "2246", + "id": "412", + "length": "282", + "line": "77", + "start": "1965" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "421", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "30", + "end": "2083", + "id": "422", + "length": "87", + "line": "78", + "start": "1997" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "425", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "427", + "name": "winner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "94", + "src": { + "column": "16", + "end": "2020", + "id": "428", + "length": "6", + "line": "79", + "parentIndex": "425", + "start": "2015" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "433", + "name": "count", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "394", + "src": { + "column": "41", + "end": "2044", + "id": "434", + "length": "5", + "line": "79", + "parentIndex": "429", + "start": "2040" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "429", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "431", + "name": "playerAddresses", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "70", + "src": { + "column": "25", + "end": "2038", + "id": "432", + "length": "15", + "line": "79", + "parentIndex": "429", + "start": "2024" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "25", + "end": "2045", + "id": "430", + "length": "22", + "line": "79", + "parentIndex": "425", + "start": "2024" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "src": { + "column": "16", + "end": "2045", + "id": "426", + "length": "31", + "line": "79", + "parentIndex": "421", + "start": "2015" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "423", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "16", + "end": "2046", + "id": "424", + "length": "32", + "line": "79", + "parentIndex": "421", + "start": "2015" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Break", + "value": { + "id": "435", + "nodeType": "BREAK", + "src": { + "end": "2069", + "id": "436", + "length": "6", + "line": "80", + "parentIndex": "421", + "start": "2064" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "415", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "417", + "name": "index", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "358", + "src": { + "column": "15", + "end": "1986", + "id": "418", + "length": "5", + "line": "78", + "parentIndex": "415", + "start": "1982" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "419", + "name": "count", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "394", + "src": { + "column": "24", + "end": "1995", + "id": "420", + "length": "5", + "line": "78", + "parentIndex": "415", + "start": "1991" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "15", + "end": "1995", + "id": "416", + "length": "14", + "line": "78", + "parentIndex": "413", + "start": "1982" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "413", + "nodeType": "IF_STATEMENT", + "src": { + "end": "2083", + "id": "414", + "length": "105", + "line": "78", + "parentIndex": "411", + "start": "1979" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.UnarySuffix", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "439", + "name": "count", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "394", + "src": { + "column": "12", + "end": "2102", + "id": "440", + "length": "5", + "line": "83", + "parentIndex": "437", + "start": "2098" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "437", + "nodeType": "UNARY_OPERATION", + "operator": "INCREMENT", + "src": { + "column": "12", + "end": "2104", + "id": "438", + "length": "7", + "line": "83", + "start": "2098" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "453", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "32", + "end": "2236", + "id": "454", + "length": "41", + "line": "86", + "start": "2196" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Continue", + "value": { + "id": "455", + "nodeType": "CONTINUE", + "src": { + "end": "2222", + "id": "456", + "length": "9", + "line": "87", + "parentIndex": "453", + "start": "2214" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "443", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "445", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "447", + "name": "count", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "394", + "src": { + "column": "16", + "end": "2184", + "id": "448", + "length": "5", + "line": "86", + "parentIndex": "445", + "start": "2180" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MODULO", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "32", + "id": "449", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "24", + "end": "2188", + "id": "450", + "length": "1", + "line": "86", + "parentIndex": "445", + "start": "2188" + }, + "typeDescription": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + }, + "src": { + "column": "16", + "end": "2188", + "id": "446", + "length": "9", + "line": "86", + "parentIndex": "443", + "start": "2180" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "451", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "29", + "end": "2193", + "id": "452", + "length": "1", + "line": "86", + "parentIndex": "443", + "start": "2193" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "16", + "end": "2193", + "id": "444", + "length": "14", + "line": "86", + "parentIndex": "441", + "start": "2180" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "441", + "nodeType": "IF_STATEMENT", + "src": { + "end": "2236", + "id": "442", + "length": "61", + "line": "86", + "parentIndex": "411", + "start": "2176" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "403", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "405", + "name": "count", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "394", + "src": { + "column": "14", + "end": "1937", + "id": "406", + "length": "5", + "line": "77", + "parentIndex": "403", + "start": "1933" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "409", + "name": "playerAddresses", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "70", + "src": { + "column": "22", + "end": "1955", + "id": "410", + "length": "15", + "line": "77", + "parentIndex": "407", + "start": "1941" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "407", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "22", + "end": "1962", + "id": "408", + "length": "22", + "line": "77", + "parentIndex": "403", + "start": "1941" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "src": { + "column": "14", + "end": "1962", + "id": "404", + "length": "30", + "line": "77", + "start": "1933" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "kind": "WHILE", + "nodeType": "WHILE_STATEMENT", + "src": { + "end": "2246", + "id": "402", + "length": "320", + "line": "77", + "parentIndex": "346", + "start": "1927" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "471", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "34", + "end": "2329", + "id": "472", + "length": "47", + "line": "91", + "parentIndex": "334", + "start": "2283" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Revert", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "475", + "name": "InvalidWinner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "123", + "src": { + "column": "19", + "end": "2316", + "id": "476", + "length": "13", + "line": "92", + "parentIndex": "471", + "start": "2304" + }, + "typeDescription": { + "typeIdentifier": "t_error$_Lottery_InvalidWinner_$123", + "typeString": "error Lottery.InvalidWinner" + } + } + }, + "id": "473", + "nodeType": "REVERT_STATEMENT", + "src": { + "column": "12", + "end": "2319", + "id": "474", + "length": "23", + "line": "92", + "parentIndex": "334", + "start": "2297" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "459", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "461", + "name": "winner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "380", + "src": { + "column": "12", + "end": "2266", + "id": "462", + "length": "6", + "line": "91", + "parentIndex": "459", + "start": "2261" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "469", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "30", + "end": "2279", + "id": "470", + "length": "1", + "line": "91", + "parentIndex": "463", + "start": "2279" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "465", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "22", + "end": "2277", + "id": "466", + "length": "7", + "line": "91", + "parentIndex": "463", + "start": "2271" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "467", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "2277", + "id": "468", + "length": "7", + "line": "91", + "parentIndex": "465", + "start": "2271" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "463", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "22", + "end": "2280", + "id": "464", + "length": "10", + "line": "91", + "parentIndex": "459", + "start": "2271" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "12", + "end": "2280", + "id": "460", + "length": "20", + "line": "91", + "parentIndex": "457", + "start": "2261" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "457", + "nodeType": "IF_STATEMENT", + "src": { + "end": "2329", + "id": "458", + "length": "73", + "line": "91", + "parentIndex": "346", + "start": "2257" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "479", + "name": "winner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "380", + "src": { + "column": "29", + "end": "2366", + "id": "480", + "length": "6", + "line": "95", + "parentIndex": "346", + "start": "2361" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "481", + "name": "LotteryFinished", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "91", + "src": { + "column": "13", + "end": "2359", + "id": "482", + "length": "15", + "line": "95", + "parentIndex": "346", + "start": "2345" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_Lottery_LotteryFinished_\u002691", + "typeString": "event Lottery.LotteryFinished" + } + } + }, + "id": "477", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "2368", + "id": "478", + "length": "29", + "line": "95", + "parentIndex": "334", + "start": "2340" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "485" + ], + "declarations": [ + { + "id": "485", + "mutability": "MUTABLE", + "name": "balance", + "nodeType": "VARIABLE_DECLARATION", + "scope": "346", + "src": { + "column": "8", + "end": "2393", + "id": "486", + "length": "15", + "line": "97", + "parentIndex": "483", + "start": "2379" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "487", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "2385", + "id": "488", + "length": "7", + "line": "97", + "parentIndex": "485", + "start": "2379" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "483", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Lottery_$31", + "typeString": "contract Lottery" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "497", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "34", + "end": "2408", + "id": "498", + "length": "4", + "line": "97", + "parentIndex": "491", + "start": "2405" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Lottery_$31", + "typeString": "contract Lottery" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "493", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "26", + "end": "2403", + "id": "494", + "length": "7", + "line": "97", + "parentIndex": "491", + "start": "2397" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "495", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "26", + "end": "2403", + "id": "496", + "length": "7", + "line": "97", + "parentIndex": "493", + "start": "2397" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "491", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "26", + "end": "2409", + "id": "492", + "length": "13", + "line": "97", + "parentIndex": "483", + "start": "2397" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "489", + "memberName": "balance", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "26", + "end": "2417", + "id": "490", + "length": "21", + "line": "97", + "parentIndex": "483", + "start": "2397" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "2418", + "id": "484", + "length": "40", + "line": "97", + "parentIndex": "346", + "start": "2379" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "507", + "name": "balance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "483", + "src": { + "column": "33", + "end": "2459", + "id": "508", + "length": "7", + "line": "98", + "parentIndex": "499", + "start": "2453" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PayableConversion", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "505", + "name": "winner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "380", + "src": { + "column": "16", + "end": "2441", + "id": "506", + "length": "6", + "line": "98", + "parentIndex": "503", + "start": "2436" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "id": "503", + "nodeType": "PAYABLE_CONVERSION", + "payable": true, + "src": { + "column": "8", + "end": "2442", + "id": "504", + "length": "15", + "line": "98", + "parentIndex": "501", + "start": "2428" + } + } + }, + "id": "501", + "memberName": "transfer", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "2451", + "id": "502", + "length": "24", + "line": "98", + "parentIndex": "499", + "start": "2428" + }, + "typeDescription": { + "typeIdentifier": "t_function_payable$_t_address$", + "typeString": "function(address) payable" + } + } + }, + "id": "499", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "2460", + "id": "500", + "length": "33", + "line": "98", + "parentIndex": "346", + "start": "2428" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + } + } + } + ] + }, + "id": "334", + "implemented": true, + "kind": "KIND_FUNCTION", + "modifiers": [ + { + "argumentTypes": [ + { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "342", + "name": "LotteryState", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "42", + "src": { + "column": "44", + "end": "1716", + "id": "343", + "length": "12", + "line": "70", + "parentIndex": "340", + "start": "1705" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + }, + "id": "340", + "memberName": "Accepting", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "44", + "end": "1726", + "id": "341", + "length": "22", + "line": "70", + "parentIndex": "336", + "start": "1705" + }, + "typeDescription": { + "typeIdentifier": "t_enum_$_LotteryState_$42", + "typeString": "enum Lottery.LotteryState" + } + } + } + ], + "id": "336", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "338", + "name": "inState", + "src": { + "column": "36", + "end": "1703", + "id": "339", + "length": "7", + "line": "70", + "parentIndex": "336", + "start": "1697" + } + }, + "name": "inState", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "36", + "end": "1727", + "id": "337", + "length": "31", + "line": "70", + "parentIndex": "334", + "start": "1697" + } + } + ], + "name": "finishLottery", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "344", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "2467", + "id": "335", + "length": "803", + "line": "70", + "parentIndex": "334", + "start": "1665" + } + }, + "returnParameters": { + "id": "345", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "2467", + "id": "335", + "length": "803", + "line": "70", + "parentIndex": "334", + "start": "1665" + } + }, + "scope": "35", + "src": { + "column": "4", + "end": "2467", + "id": "335", + "length": "803", + "line": "70", + "parentIndex": "35", + "start": "1665" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "524", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "51", + "end": "2557", + "id": "525", + "length": "37", + "line": "101", + "parentIndex": "510", + "start": "2521" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Lottery_$31", + "typeString": "contract Lottery" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "534", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "23", + "end": "2549", + "id": "535", + "length": "4", + "line": "102", + "parentIndex": "528", + "start": "2546" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Lottery_$31", + "typeString": "contract Lottery" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "530", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "2544", + "id": "531", + "length": "7", + "line": "102", + "parentIndex": "528", + "start": "2538" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "532", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "15", + "end": "2544", + "id": "533", + "length": "7", + "line": "102", + "parentIndex": "530", + "start": "2538" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "528", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "2550", + "id": "529", + "length": "13", + "line": "102", + "parentIndex": "524", + "start": "2538" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "functionReturnParameters": "510", + "id": "526", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "2551", + "id": "527", + "length": "21", + "line": "102", + "parentIndex": "510", + "start": "2531" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ] + }, + "id": "510", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "owner", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "512", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "514", + "nodeType": "VARIABLE_DECLARATION", + "scope": "514", + "src": { + "column": "42", + "end": "2518", + "id": "515", + "length": "7", + "line": "101", + "parentIndex": "512", + "start": "2512" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "516", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "42", + "end": "2518", + "id": "517", + "length": "7", + "line": "101", + "parentIndex": "514", + "start": "2512" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "42", + "end": "2518", + "id": "513", + "length": "7", + "line": "101", + "parentIndex": "510", + "start": "2512" + } + }, + "returnParameters": { + "id": "518", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "520", + "nodeType": "VARIABLE_DECLARATION", + "scope": "520", + "src": { + "column": "42", + "end": "2518", + "id": "521", + "length": "7", + "line": "101", + "parentIndex": "518", + "start": "2512" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "522", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "42", + "end": "2518", + "id": "523", + "length": "7", + "line": "101", + "parentIndex": "520", + "start": "2512" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "42", + "end": "2518", + "id": "519", + "length": "7", + "line": "101", + "parentIndex": "510", + "start": "2512" + } + }, + "scope": "35", + "src": { + "column": "4", + "end": "2557", + "id": "511", + "length": "84", + "line": "101", + "parentIndex": "35", + "start": "2474" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "551", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "53", + "end": "2657", + "id": "552", + "length": "45", + "line": "105", + "parentIndex": "537", + "start": "2613" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Lottery_$31", + "typeString": "contract Lottery" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "563", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "23", + "end": "2641", + "id": "564", + "length": "4", + "line": "106", + "parentIndex": "557", + "start": "2638" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Lottery_$31", + "typeString": "contract Lottery" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "559", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "2636", + "id": "560", + "length": "7", + "line": "106", + "parentIndex": "557", + "start": "2630" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "561", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "15", + "end": "2636", + "id": "562", + "length": "7", + "line": "106", + "parentIndex": "559", + "start": "2630" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "557", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "2642", + "id": "558", + "length": "13", + "line": "106", + "parentIndex": "555", + "start": "2630" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "555", + "memberName": "balance", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "2650", + "id": "556", + "length": "21", + "line": "106", + "parentIndex": "551", + "start": "2630" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "functionReturnParameters": "537", + "id": "553", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "2651", + "id": "554", + "length": "29", + "line": "106", + "parentIndex": "537", + "start": "2623" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ] + }, + "id": "537", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "balance", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "539", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "541", + "nodeType": "VARIABLE_DECLARATION", + "scope": "541", + "src": { + "column": "44", + "end": "2610", + "id": "542", + "length": "7", + "line": "105", + "parentIndex": "539", + "start": "2604" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "543", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "44", + "end": "2610", + "id": "544", + "length": "7", + "line": "105", + "parentIndex": "541", + "start": "2604" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "44", + "end": "2610", + "id": "540", + "length": "7", + "line": "105", + "parentIndex": "537", + "start": "2604" + } + }, + "returnParameters": { + "id": "545", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "547", + "nodeType": "VARIABLE_DECLARATION", + "scope": "547", + "src": { + "column": "44", + "end": "2610", + "id": "548", + "length": "7", + "line": "105", + "parentIndex": "545", + "start": "2604" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "549", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "44", + "end": "2610", + "id": "550", + "length": "7", + "line": "105", + "parentIndex": "547", + "start": "2604" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "44", + "end": "2610", + "id": "546", + "length": "7", + "line": "105", + "parentIndex": "537", + "start": "2604" + } + }, + "scope": "35", + "src": { + "column": "4", + "end": "2657", + "id": "538", + "length": "94", + "line": "105", + "parentIndex": "35", + "start": "2564" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "580", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "58", + "end": "2977", + "id": "581", + "length": "225", + "line": "110", + "parentIndex": "566", + "start": "2753" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.For", + "value": { + "body": { + "id": "604", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "58", + "end": "2950", + "id": "605", + "length": "138", + "line": "111", + "parentIndex": "582", + "start": "2813" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "630", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "64", + "end": "2940", + "id": "631", + "length": "62", + "line": "112", + "parentIndex": "582", + "start": "2879" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Revert", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "634", + "name": "InvalidPlayerAddress", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "127", + "src": { + "column": "23", + "end": "2923", + "id": "635", + "length": "20", + "line": "113", + "parentIndex": "630", + "start": "2904" + }, + "typeDescription": { + "typeIdentifier": "t_error$_Lottery_InvalidPlayerAddress_$127", + "typeString": "error Lottery.InvalidPlayerAddress" + } + } + }, + "id": "632", + "nodeType": "REVERT_STATEMENT", + "src": { + "column": "16", + "end": "2926", + "id": "633", + "length": "30", + "line": "113", + "parentIndex": "582", + "start": "2897" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "608", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "620", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "584", + "src": { + "column": "40", + "end": "2855", + "id": "621", + "length": "1", + "line": "112", + "parentIndex": "616", + "start": "2855" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "616", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "618", + "name": "playerAddresses", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "70", + "src": { + "column": "24", + "end": "2853", + "id": "619", + "length": "15", + "line": "112", + "parentIndex": "616", + "start": "2839" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "24", + "end": "2856", + "id": "617", + "length": "18", + "line": "112", + "parentIndex": "612", + "start": "2839" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "612", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "614", + "name": "players", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "58", + "src": { + "column": "16", + "end": "2837", + "id": "615", + "length": "7", + "line": "112", + "parentIndex": "612", + "start": "2831" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", + "typeString": "mapping(address=\u003ePlayer)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "16", + "end": "2857", + "id": "613", + "length": "27", + "line": "112", + "parentIndex": "610", + "start": "2831" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[mapping(address=\u003ePlayer):index[address:uint256]]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_struct$_Lottery_Player_$47$", + "typeString": "mapping(address=\u003ePlayer)" + }, + { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + } + ] + } + }, + "id": "610", + "memberName": "addr", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "2862", + "id": "611", + "length": "32", + "line": "112", + "parentIndex": "608", + "start": "2831" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_struct$_Lottery_Player_$47$]$_t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[mapping(address=\u003ePlayer):index[address:uint256]]" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "628", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "60", + "end": "2875", + "id": "629", + "length": "1", + "line": "112", + "parentIndex": "622", + "start": "2875" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "624", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "52", + "end": "2873", + "id": "625", + "length": "7", + "line": "112", + "parentIndex": "622", + "start": "2867" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "626", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "52", + "end": "2873", + "id": "627", + "length": "7", + "line": "112", + "parentIndex": "624", + "start": "2867" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "622", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "52", + "end": "2876", + "id": "623", + "length": "10", + "line": "112", + "parentIndex": "608", + "start": "2867" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "16", + "end": "2876", + "id": "609", + "length": "46", + "line": "112", + "parentIndex": "606", + "start": "2831" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "606", + "nodeType": "IF_STATEMENT", + "src": { + "end": "2940", + "id": "607", + "length": "114", + "line": "112", + "parentIndex": "604", + "start": "2827" + } + } + } + ] + }, + "closure": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.UnarySuffix", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "602", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "584", + "src": { + "column": "53", + "end": "2808", + "id": "603", + "length": "1", + "line": "111", + "parentIndex": "600", + "start": "2808" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "600", + "nodeType": "UNARY_OPERATION", + "operator": "INCREMENT", + "src": { + "column": "53", + "end": "2810", + "id": "601", + "length": "3", + "line": "111", + "parentIndex": "566", + "start": "2808" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "592", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "594", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "584", + "src": { + "column": "25", + "end": "2780", + "id": "595", + "length": "1", + "line": "111", + "parentIndex": "592", + "start": "2780" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "598", + "name": "playerAddresses", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "70", + "src": { + "column": "29", + "end": "2798", + "id": "599", + "length": "15", + "line": "111", + "parentIndex": "596", + "start": "2784" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "596", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "29", + "end": "2805", + "id": "597", + "length": "22", + "line": "111", + "parentIndex": "592", + "start": "2784" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "src": { + "column": "25", + "end": "2805", + "id": "593", + "length": "26", + "line": "111", + "parentIndex": "582", + "start": "2780" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "582", + "initialiser": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "586" + ], + "declarations": [ + { + "id": "586", + "mutability": "MUTABLE", + "name": "i", + "nodeType": "VARIABLE_DECLARATION", + "scope": "580", + "src": { + "column": "13", + "end": "2773", + "id": "587", + "length": "6", + "line": "111", + "parentIndex": "584", + "start": "2768" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "588", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "13", + "end": "2771", + "id": "589", + "length": "4", + "line": "111", + "parentIndex": "586", + "start": "2768" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "584", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "590", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "22", + "end": "2777", + "id": "591", + "length": "1", + "line": "111", + "parentIndex": "584", + "start": "2777" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "13", + "end": "2778", + "id": "585", + "length": "11", + "line": "111", + "parentIndex": "580", + "start": "2768" + } + } + }, + "nodeType": "FOR_STATEMENT", + "src": { + "end": "2950", + "id": "583", + "length": "188", + "line": "111", + "parentIndex": "580", + "start": "2763" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "638", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "15", + "end": "2970", + "id": "639", + "length": "4", + "line": "116", + "parentIndex": "580", + "start": "2967" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + "functionReturnParameters": "566", + "id": "636", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "2971", + "id": "637", + "length": "12", + "line": "116", + "parentIndex": "566", + "start": "2960" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ] + }, + "id": "566", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "checkAllPlayers", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "568", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "570", + "nodeType": "VARIABLE_DECLARATION", + "scope": "570", + "src": { + "column": "52", + "end": "2750", + "id": "571", + "length": "4", + "line": "110", + "parentIndex": "568", + "start": "2747" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "572", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "52", + "end": "2750", + "id": "573", + "length": "4", + "line": "110", + "parentIndex": "570", + "start": "2747" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "52", + "end": "2750", + "id": "569", + "length": "4", + "line": "110", + "parentIndex": "566", + "start": "2747" + } + }, + "returnParameters": { + "id": "574", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "576", + "nodeType": "VARIABLE_DECLARATION", + "scope": "576", + "src": { + "column": "52", + "end": "2750", + "id": "577", + "length": "4", + "line": "110", + "parentIndex": "574", + "start": "2747" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "578", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "52", + "end": "2750", + "id": "579", + "length": "4", + "line": "110", + "parentIndex": "576", + "start": "2747" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "52", + "end": "2750", + "id": "575", + "length": "4", + "line": "110", + "parentIndex": "566", + "start": "2747" + } + }, + "scope": "35", + "src": { + "column": "4", + "end": "2977", + "id": "567", + "length": "279", + "line": "110", + "parentIndex": "35", + "start": "2699" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$", + "typeString": "function(bool)" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "645", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "40", + "end": "3145", + "id": "646", + "length": "93", + "line": "120", + "parentIndex": "641", + "start": "3053" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "659", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "35", + "end": "3139", + "id": "660", + "length": "50", + "line": "121", + "parentIndex": "641", + "start": "3090" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Revert", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "663", + "name": "OnlyOwnerCanCall", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "131", + "src": { + "column": "19", + "end": "3126", + "id": "664", + "length": "16", + "line": "122", + "parentIndex": "659", + "start": "3111" + }, + "typeDescription": { + "typeIdentifier": "t_error$_Lottery_OnlyOwnerCanCall_$131", + "typeString": "error Lottery.OnlyOwnerCanCall" + } + } + }, + "id": "661", + "nodeType": "REVERT_STATEMENT", + "src": { + "column": "12", + "end": "3129", + "id": "662", + "length": "26", + "line": "122", + "parentIndex": "641", + "start": "3104" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "649", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "653", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "3069", + "id": "654", + "length": "3", + "line": "121", + "parentIndex": "651", + "start": "3067" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "651", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "3076", + "id": "652", + "length": "10", + "line": "121", + "parentIndex": "649", + "start": "3067" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "657", + "name": "owner", + "nodeType": "IDENTIFIER", + "src": { + "column": "26", + "end": "3085", + "id": "658", + "length": "5", + "line": "121", + "parentIndex": "655", + "start": "3081" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "655", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "26", + "end": "3087", + "id": "656", + "length": "7", + "line": "121", + "parentIndex": "649", + "start": "3081" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "src": { + "column": "12", + "end": "3087", + "id": "650", + "length": "21", + "line": "121", + "parentIndex": "647", + "start": "3067" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "647", + "nodeType": "IF_STATEMENT", + "src": { + "end": "3139", + "id": "648", + "length": "77", + "line": "121", + "parentIndex": "645", + "start": "3063" + } + } + } + ] + }, + "id": "641", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "requireOwner", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "643", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "3145", + "id": "642", + "length": "129", + "line": "120", + "parentIndex": "641", + "start": "3017" + } + }, + "returnParameters": { + "id": "644", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "3145", + "id": "642", + "length": "129", + "line": "120", + "parentIndex": "641", + "start": "3017" + } + }, + "scope": "35", + "src": { + "column": "4", + "end": "3145", + "id": "642", + "length": "129", + "line": "120", + "parentIndex": "35", + "start": "3017" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "675", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "74", + "end": "3521", + "id": "676", + "length": "300", + "line": "126", + "parentIndex": "666", + "start": "3222" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "679" + ], + "declarations": [ + { + "id": "679", + "mutability": "MUTABLE", + "name": "dummyContract", + "nodeType": "VARIABLE_DECLARATION", + "scope": "675", + "src": { + "column": "8", + "end": "3259", + "id": "680", + "length": "28", + "line": "127", + "parentIndex": "677", + "start": "3232" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_contract$_IDummyContract_$10", + "typeString": "contract IDummyContract" + }, + "typeName": { + "id": "681", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "683", + "name": "IDummyContract", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "10", + "src": { + "column": "8", + "end": "3245", + "id": "684", + "length": "14", + "line": "127", + "parentIndex": "681", + "start": "3232" + } + }, + "referencedDeclaration": "10", + "src": { + "column": "8", + "end": "3245", + "id": "682", + "length": "14", + "line": "127", + "parentIndex": "679", + "start": "3232" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IDummyContract_$10", + "typeString": "contract IDummyContract" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "677", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "689", + "name": "externalContractAddress", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "689", + "src": { + "column": "54", + "end": "3300", + "id": "690", + "length": "23", + "line": "127", + "parentIndex": "685", + "start": "3278" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "687", + "name": "IDummyContract", + "nodeType": "IDENTIFIER", + "src": { + "column": "39", + "end": "3276", + "id": "688", + "length": "14", + "line": "127", + "parentIndex": "685", + "start": "3263" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "685", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "39", + "end": "3301", + "id": "686", + "length": "39", + "line": "127", + "parentIndex": "677", + "start": "3263" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "3302", + "id": "678", + "length": "71", + "line": "127", + "parentIndex": "675", + "start": "3232" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Try", + "value": { + "body": { + "id": "699", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "42", + "end": "3400", + "id": "700", + "length": "54", + "line": "129", + "parentIndex": "691", + "start": "3347" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "703", + "name": "ExternalCallSuccessful", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "99", + "src": { + "column": "17", + "end": "3387", + "id": "704", + "length": "22", + "line": "130", + "parentIndex": "699", + "start": "3366" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_Lottery_ExternalCallSuccessful_\u002699", + "typeString": "event Lottery.ExternalCallSuccessful" + } + } + }, + "id": "701", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "12", + "end": "3390", + "id": "702", + "length": "30", + "line": "130", + "parentIndex": "691", + "start": "3361" + } + } + } + ] + }, + "clauses": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Catch", + "value": { + "body": { + "id": "712", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "48", + "end": "3515", + "id": "713", + "length": "76", + "line": "131", + "start": "3440" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "45787465726e616c20636f6e7472616374206661696c6564", + "id": "716", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "3503", + "id": "717", + "length": "26", + "line": "132", + "parentIndex": "712", + "start": "3478" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"External contract failed\"" + }, + "value": "External contract failed" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "718", + "name": "ExternalCallFailed", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "103", + "src": { + "column": "17", + "end": "3476", + "id": "719", + "length": "18", + "line": "132", + "parentIndex": "712", + "start": "3459" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_Lottery_ExternalCallFailed_\u0026103", + "typeString": "event Lottery.ExternalCallFailed" + } + } + }, + "id": "714", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "12", + "end": "3505", + "id": "715", + "length": "52", + "line": "132", + "start": "3454" + } + } + } + ] + }, + "kind": "CATCH", + "nodeType": "TRY_CATCH_CLAUSE", + "parameters": { + "id": "706", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "708", + "nodeType": "VARIABLE_DECLARATION", + "scope": "708", + "src": { + "column": "17", + "end": "3420", + "id": "709", + "length": "12", + "line": "131", + "parentIndex": "706", + "start": "3409" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "710", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "3413", + "id": "711", + "length": "5", + "line": "131", + "parentIndex": "708", + "start": "3409" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "3420", + "id": "707", + "length": "12", + "line": "131", + "start": "3409" + } + }, + "src": { + "end": "3515", + "id": "705", + "length": "114", + "line": "131", + "parentIndex": "691", + "start": "3402" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "697", + "name": "dummyContract", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "677", + "src": { + "column": "12", + "end": "3329", + "id": "698", + "length": "13", + "line": "129", + "parentIndex": "695", + "start": "3317" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IDummyContract_$10", + "typeString": "contract IDummyContract" + } + } + }, + "id": "695", + "memberName": "dummyFunction", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "3343", + "id": "696", + "length": "27", + "line": "129", + "parentIndex": "693", + "start": "3317" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IDummyContract_$10", + "typeString": "contract IDummyContract" + } + } + }, + "id": "693", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "3345", + "id": "694", + "length": "29", + "line": "129", + "parentIndex": "691", + "start": "3317" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "691", + "kind": "TRY", + "nodeType": "TRY_STATEMENT", + "src": { + "end": "3515", + "id": "692", + "length": "203", + "line": "129", + "parentIndex": "675", + "start": "3313" + } + } + } + ] + }, + "id": "666", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "callExternalFunction", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "668", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "670", + "name": "externalContractAddress", + "nodeType": "VARIABLE_DECLARATION", + "scope": "670", + "src": { + "column": "34", + "end": "3212", + "id": "671", + "length": "31", + "line": "126", + "parentIndex": "668", + "start": "3182" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "672", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "34", + "end": "3188", + "id": "673", + "length": "7", + "line": "126", + "parentIndex": "670", + "start": "3182" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "34", + "end": "3212", + "id": "669", + "length": "31", + "line": "126", + "parentIndex": "666", + "start": "3182" + } + }, + "returnParameters": { + "id": "674", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "3521", + "id": "667", + "length": "370", + "line": "126", + "parentIndex": "666", + "start": "3152" + } + }, + "scope": "35", + "src": { + "column": "4", + "end": "3521", + "id": "667", + "length": "370", + "line": "126", + "parentIndex": "35", + "start": "3152" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "735", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "32", + "end": "4071", + "id": "736", + "length": "463", + "line": "137", + "parentIndex": "721", + "start": "3609" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "745", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "21", + "end": "3675", + "id": "746", + "length": "35", + "line": "139", + "parentIndex": "721", + "start": "3641" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "749", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "19", + "end": "3664", + "id": "750", + "length": "3", + "line": "140", + "parentIndex": "745", + "start": "3662" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"0\"" + }, + "value": "0" + } + }, + "functionReturnParameters": "721", + "id": "747", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "3665", + "id": "748", + "length": "11", + "line": "140", + "parentIndex": "721", + "start": "3655" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"0\"" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "739", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "741", + "name": "_i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "741", + "src": { + "column": "12", + "end": "3633", + "id": "742", + "length": "2", + "line": "139", + "parentIndex": "739", + "start": "3632" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "743", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "18", + "end": "3638", + "id": "744", + "length": "1", + "line": "139", + "parentIndex": "739", + "start": "3638" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "12", + "end": "3638", + "id": "740", + "length": "7", + "line": "139", + "parentIndex": "737", + "start": "3632" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "737", + "nodeType": "IF_STATEMENT", + "src": { + "end": "3675", + "id": "738", + "length": "48", + "line": "139", + "parentIndex": "735", + "start": "3628" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "753" + ], + "declarations": [ + { + "id": "753", + "mutability": "MUTABLE", + "name": "j", + "nodeType": "VARIABLE_DECLARATION", + "scope": "735", + "src": { + "column": "8", + "end": "3690", + "id": "754", + "length": "6", + "line": "142", + "parentIndex": "751", + "start": "3685" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "755", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "3688", + "id": "756", + "length": "4", + "line": "142", + "parentIndex": "753", + "start": "3685" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "751", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "757", + "name": "_i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "757", + "src": { + "column": "17", + "end": "3695", + "id": "758", + "length": "2", + "line": "142", + "parentIndex": "751", + "start": "3694" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "3696", + "id": "752", + "length": "12", + "line": "142", + "parentIndex": "735", + "start": "3685" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "761" + ], + "declarations": [ + { + "id": "761", + "mutability": "MUTABLE", + "name": "len", + "nodeType": "VARIABLE_DECLARATION", + "scope": "735", + "src": { + "column": "8", + "end": "3713", + "id": "762", + "length": "8", + "line": "143", + "parentIndex": "759", + "start": "3706" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "763", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "3709", + "id": "764", + "length": "4", + "line": "143", + "parentIndex": "761", + "start": "3706" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "759", + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "3714", + "id": "760", + "length": "9", + "line": "143", + "parentIndex": "735", + "start": "3706" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.While", + "value": { + "body": { + "id": "772", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "23", + "end": "3798", + "id": "773", + "length": "51", + "line": "145", + "start": "3748" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.UnarySuffix", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "776", + "name": "len", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "759", + "src": { + "column": "12", + "end": "3764", + "id": "777", + "length": "3", + "line": "146", + "parentIndex": "774", + "start": "3762" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "774", + "nodeType": "UNARY_OPERATION", + "operator": "INCREMENT", + "src": { + "column": "12", + "end": "3766", + "id": "775", + "length": "5", + "line": "146", + "start": "3762" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "780", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "782", + "name": "j", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "751", + "src": { + "column": "12", + "end": "3781", + "id": "783", + "length": "1", + "line": "147", + "parentIndex": "780", + "start": "3781" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "3130", + "id": "784", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "17", + "end": "3787", + "id": "785", + "length": "2", + "line": "147", + "parentIndex": "780", + "start": "3786" + }, + "typeDescription": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + } + }, + "src": { + "column": "12", + "end": "3787", + "id": "781", + "length": "7", + "line": "147", + "parentIndex": "772", + "start": "3781" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "778", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "3788", + "id": "779", + "length": "8", + "line": "147", + "parentIndex": "772", + "start": "3781" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "766", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "768", + "name": "j", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "751", + "src": { + "column": "15", + "end": "3740", + "id": "769", + "length": "1", + "line": "145", + "parentIndex": "766", + "start": "3740" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "770", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "20", + "end": "3745", + "id": "771", + "length": "1", + "line": "145", + "parentIndex": "766", + "start": "3745" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "15", + "end": "3745", + "id": "767", + "length": "6", + "line": "145", + "start": "3740" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "kind": "WHILE", + "nodeType": "WHILE_STATEMENT", + "src": { + "end": "3798", + "id": "765", + "length": "66", + "line": "145", + "parentIndex": "735", + "start": "3733" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "788" + ], + "declarations": [ + { + "id": "788", + "mutability": "MUTABLE", + "name": "bstr", + "nodeType": "VARIABLE_DECLARATION", + "scope": "735", + "src": { + "column": "8", + "end": "3824", + "id": "789", + "length": "17", + "line": "149", + "parentIndex": "786", + "start": "3808" + }, + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "790", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "3812", + "id": "791", + "length": "5", + "line": "149", + "parentIndex": "788", + "start": "3808" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "786", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "798", + "name": "len", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "759", + "src": { + "column": "38", + "end": "3840", + "id": "799", + "length": "3", + "line": "149", + "parentIndex": "792", + "start": "3838" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.NewExpression", + "value": { + "id": "794", + "nodeType": "NEW_EXPRESSION", + "src": { + "column": "28", + "end": "3836", + "id": "795", + "length": "9", + "line": "149", + "parentIndex": "792", + "start": "3828" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "796", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "32", + "end": "3836", + "id": "797", + "length": "5", + "line": "149", + "parentIndex": "794", + "start": "3832" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + }, + "id": "792", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "28", + "end": "3841", + "id": "793", + "length": "14", + "line": "149", + "parentIndex": "786", + "start": "3828" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "3842", + "id": "787", + "length": "35", + "line": "149", + "parentIndex": "735", + "start": "3808" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "802" + ], + "declarations": [ + { + "id": "802", + "mutability": "MUTABLE", + "name": "k", + "nodeType": "VARIABLE_DECLARATION", + "scope": "735", + "src": { + "column": "8", + "end": "3857", + "id": "803", + "length": "6", + "line": "150", + "parentIndex": "800", + "start": "3852" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "804", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "3855", + "id": "805", + "length": "4", + "line": "150", + "parentIndex": "802", + "start": "3852" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "800", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "806", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "808", + "name": "len", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "759", + "src": { + "column": "17", + "end": "3863", + "id": "809", + "length": "3", + "line": "150", + "parentIndex": "806", + "start": "3861" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "810", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "23", + "end": "3867", + "id": "811", + "length": "1", + "line": "150", + "parentIndex": "806", + "start": "3867" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "17", + "end": "3867", + "id": "807", + "length": "7", + "line": "150", + "parentIndex": "800", + "start": "3861" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "3868", + "id": "801", + "length": "17", + "line": "150", + "parentIndex": "735", + "start": "3852" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Do", + "value": { + "body": { + "id": "820", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "11", + "end": "4011", + "id": "821", + "length": "122", + "line": "152", + "parentIndex": "812", + "start": "3890" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "824", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.UnarySuffix", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "832", + "name": "k", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "800", + "src": { + "column": "17", + "end": "3945", + "id": "833", + "length": "1", + "line": "153", + "parentIndex": "830", + "start": "3945" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "830", + "nodeType": "UNARY_OPERATION", + "operator": "DECREMENT", + "src": { + "column": "17", + "end": "3947", + "id": "831", + "length": "3", + "line": "153", + "parentIndex": "812", + "start": "3945" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "826", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "828", + "name": "bstr", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "786", + "src": { + "column": "12", + "end": "3943", + "id": "829", + "length": "4", + "line": "153", + "parentIndex": "826", + "start": "3940" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "12", + "end": "3948", + "id": "827", + "length": "9", + "line": "153", + "parentIndex": "824", + "start": "3940" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_bytes]$_t_uint256]$", + "typeString": "index[bytes:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_rational_48_by_1$", + "typeString": "function(int_const 48)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "846", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "3438", + "id": "848", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "37", + "end": "3966", + "id": "849", + "length": "2", + "line": "153", + "parentIndex": "846", + "start": "3965" + }, + "typeDescription": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "ADDITION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "850", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "852", + "name": "_i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "725", + "src": { + "column": "42", + "end": "3971", + "id": "853", + "length": "2", + "line": "153", + "parentIndex": "850", + "start": "3970" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MODULO", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "3130", + "id": "854", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "47", + "end": "3976", + "id": "855", + "length": "2", + "line": "153", + "parentIndex": "850", + "start": "3975" + }, + "typeDescription": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + } + }, + "src": { + "column": "42", + "end": "3976", + "id": "851", + "length": "7", + "line": "153", + "parentIndex": "846", + "start": "3970" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "37", + "end": "3976", + "id": "847", + "length": "12", + "line": "153", + "parentIndex": "840", + "start": "3965" + }, + "typeDescription": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": "842", + "name": "uint8", + "nodeType": "IDENTIFIER", + "src": { + "column": "31", + "end": "3963", + "id": "843", + "length": "5", + "line": "153", + "parentIndex": "840", + "start": "3959" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint8$", + "typeString": "function(uint8)" + }, + "typeName": { + "id": "844", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "3963", + "id": "845", + "length": "5", + "line": "153", + "parentIndex": "842", + "start": "3959" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + } + }, + "id": "840", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "31", + "end": "3977", + "id": "841", + "length": "19", + "line": "153", + "parentIndex": "834", + "start": "3959" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_48_by_1$", + "typeString": "function(int_const 48)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": "836", + "name": "bytes1", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "3957", + "id": "837", + "length": "6", + "line": "153", + "parentIndex": "834", + "start": "3952" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes1$", + "typeString": "function(bytes1)" + }, + "typeName": { + "id": "838", + "name": "bytes1", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "3957", + "id": "839", + "length": "6", + "line": "153", + "parentIndex": "836", + "start": "3952" + }, + "typeDescription": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + } + }, + "id": "834", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "3978", + "id": "835", + "length": "27", + "line": "153", + "parentIndex": "824", + "start": "3952" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_rational_48_by_1$", + "typeString": "function(function(int_const 48))" + } + } + }, + "src": { + "column": "12", + "end": "3978", + "id": "825", + "length": "39", + "line": "153", + "parentIndex": "820", + "start": "3940" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_bytes]$_t_uint256]$", + "typeString": "index[bytes:uint256]" + } + } + }, + "id": "822", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "3979", + "id": "823", + "length": "40", + "line": "153", + "parentIndex": "820", + "start": "3940" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_bytes]$_t_uint256]$", + "typeString": "index[bytes:uint256]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "858", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "860", + "name": "_i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "725", + "src": { + "column": "12", + "end": "3994", + "id": "861", + "length": "2", + "line": "154", + "parentIndex": "858", + "start": "3993" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "3130", + "id": "862", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "18", + "end": "4000", + "id": "863", + "length": "2", + "line": "154", + "parentIndex": "858", + "start": "3999" + }, + "typeDescription": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + } + }, + "src": { + "column": "12", + "end": "4000", + "id": "859", + "length": "8", + "line": "154", + "parentIndex": "820", + "start": "3993" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "856", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "4001", + "id": "857", + "length": "9", + "line": "154", + "parentIndex": "820", + "start": "3993" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "814", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "816", + "name": "_i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "816", + "src": { + "column": "15", + "end": "4029", + "id": "817", + "length": "2", + "line": "156", + "parentIndex": "814", + "start": "4028" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "818", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "21", + "end": "4034", + "id": "819", + "length": "1", + "line": "156", + "parentIndex": "814", + "start": "4034" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "15", + "end": "4034", + "id": "815", + "length": "7", + "line": "156", + "parentIndex": "735", + "start": "4028" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "812", + "nodeType": "DO_WHILE_STATEMENT", + "src": { + "end": "4036", + "id": "813", + "length": "150", + "line": "152", + "parentIndex": "735", + "start": "3887" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "872", + "name": "bstr", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "786", + "src": { + "column": "22", + "end": "4063", + "id": "873", + "length": "4", + "line": "157", + "parentIndex": "866", + "start": "4060" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_string", + "typeString": "string" + } + ], + "id": "868", + "name": "string", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "4058", + "id": "869", + "length": "6", + "line": "157", + "parentIndex": "866", + "start": "4053" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_string$", + "typeString": "function(string)" + }, + "typeName": { + "id": "870", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "15", + "end": "4058", + "id": "871", + "length": "6", + "line": "157", + "parentIndex": "868", + "start": "4053" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + }, + "id": "866", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "4064", + "id": "867", + "length": "12", + "line": "157", + "parentIndex": "735", + "start": "4053" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + } + } + }, + "functionReturnParameters": "721", + "id": "864", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "4065", + "id": "865", + "length": "20", + "line": "157", + "parentIndex": "721", + "start": "4046" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + } + } + } + ] + }, + "id": "721", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "integerToString", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "723", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "725", + "name": "_i", + "nodeType": "VARIABLE_DECLARATION", + "scope": "725", + "src": { + "column": "29", + "end": "3559", + "id": "726", + "length": "7", + "line": "136", + "parentIndex": "723", + "start": "3553" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "727", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "3556", + "id": "728", + "length": "4", + "line": "136", + "parentIndex": "725", + "start": "3553" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "3559", + "id": "724", + "length": "7", + "line": "136", + "parentIndex": "721", + "start": "3553" + } + }, + "returnParameters": { + "id": "729", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "731", + "nodeType": "VARIABLE_DECLARATION", + "scope": "731", + "src": { + "column": "17", + "end": "3606", + "id": "732", + "length": "13", + "line": "137", + "parentIndex": "729", + "start": "3594" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "733", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "3599", + "id": "734", + "length": "6", + "line": "137", + "parentIndex": "731", + "start": "3594" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "3606", + "id": "730", + "length": "13", + "line": "137", + "parentIndex": "721", + "start": "3594" + } + }, + "scope": "35", + "src": { + "column": "4", + "end": "4071", + "id": "722", + "length": "544", + "line": "136", + "parentIndex": "35", + "start": "3528" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "889", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "74", + "end": "4232", + "id": "890", + "length": "85", + "line": "160", + "parentIndex": "875", + "start": "4148" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assembly", + "value": { + "id": "891", + "nodeType": "ASSEMBLY_STATEMENT", + "src": { + "column": "8", + "end": "4226", + "id": "892", + "length": "69", + "line": "161", + "parentIndex": "889", + "start": "4158" + } + } + } + ] + }, + "id": "875", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "dummyFunctionAssembly", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "877", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "879", + "name": "result", + "nodeType": "VARIABLE_DECLARATION", + "scope": "879", + "src": { + "column": "58", + "end": "4145", + "id": "880", + "length": "14", + "line": "160", + "parentIndex": "877", + "start": "4132" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "881", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "58", + "end": "4138", + "id": "882", + "length": "7", + "line": "160", + "parentIndex": "879", + "start": "4132" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "58", + "end": "4145", + "id": "878", + "length": "14", + "line": "160", + "parentIndex": "875", + "start": "4132" + } + }, + "returnParameters": { + "id": "883", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "885", + "name": "result", + "nodeType": "VARIABLE_DECLARATION", + "scope": "885", + "src": { + "column": "58", + "end": "4145", + "id": "886", + "length": "14", + "line": "160", + "parentIndex": "883", + "start": "4132" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "887", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "58", + "end": "4138", + "id": "888", + "length": "7", + "line": "160", + "parentIndex": "885", + "start": "4132" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "58", + "end": "4145", + "id": "884", + "length": "14", + "line": "160", + "parentIndex": "875", + "start": "4132" + } + }, + "scope": "35", + "src": { + "column": "4", + "end": "4232", + "id": "876", + "length": "155", + "line": "160", + "parentIndex": "35", + "start": "4078" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "PUBLIC" + } + } + ], + "src": { + "end": "4473", + "length": "4333", + "line": "8", + "parentIndex": "31", + "start": "141" + } + } + } + ] + }, + "src": { + "id": 32, + "line": 8, + "start": 141, + "end": 4473, + "length": 4333, + "parent_index": 9 + } + } + ], + "comments": [ + { + "id": 1, + "node_type": 33, + "src": { + "line": 1, + "end": 30, + "length": 31, + "parent_index": 2 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 2, + "node_type": 31, + "src": { + "line": 26, + "column": 4, + "start": 621, + "end": 643, + "length": 23, + "parent_index": 3 + }, + "text": "// Define custom errors" + }, + { + "id": 3, + "node_type": 31, + "src": { + "line": 85, + "column": 12, + "start": 2132, + "end": 2162, + "length": 31, + "parent_index": 4 + }, + "text": "// Odd numbers to continue loop" + }, + { + "id": 4, + "node_type": 31, + "src": { + "line": 109, + "column": 4, + "start": 2664, + "end": 2693, + "length": 30, + "parent_index": 5 + }, + "text": "// New function using for loop" + }, + { + "id": 5, + "node_type": 31, + "src": { + "line": 119, + "column": 4, + "start": 2984, + "end": 3011, + "length": 28, + "parent_index": 6 + }, + "text": "// New function using revert" + }, + { + "id": 6, + "node_type": 32, + "src": { + "line": 131, + "column": 30, + "start": 3422, + "end": 3437, + "length": 16, + "parent_index": 7 + }, + "text": "/*lowLevelData*/" + }, + { + "id": 7, + "node_type": 31, + "src": { + "line": 152, + "column": 31, + "start": 3910, + "end": 3926, + "length": 17, + "parent_index": 8 + }, + "text": "// do while loop" + }, + { + "id": 8, + "node_type": 32, + "src": { + "line": 166, + "column": 4, + "start": 4239, + "end": 4471, + "length": 233, + "parent_index": 9 + }, + "text": "/** \n function dummyFunctionYul() public pure returns (uint256 result) {\n assembly {\n // Yul code\n let x := calldataload(0)\n let y := add(x, 1)\n result := y\n }\n }\n */" + } + ] } \ No newline at end of file diff --git a/data/tests/ast/MathLib.solgo.ast.json b/data/tests/ast/MathLib.solgo.ast.json index 143d5ba3..56cc3184 100644 --- a/data/tests/ast/MathLib.solgo.ast.json +++ b/data/tests/ast/MathLib.solgo.ast.json @@ -1,2294 +1,2254 @@ { - "id": 13, - "base_contracts": [], - "license": "MIT", - "exported_symbols": [ - { - "id": 13, - "name": "MathLib", - "absolute_path": "MathLib.sol" - } - ], - "absolute_path": "MathLib.sol", - "name": "MathLib", - "node_type": 1, - "nodes": [ - { - "id": 15, - "node_type": 10, - "src": { - "id": 16, - "line": 2, - "column": 0, - "start": 32, - "end": 54, - "length": 23, - "parent_index": 13 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 17, - "node_type": 10, - "src": { - "id": 18, - "line": 3, - "column": 0, - "start": 56, - "end": 88, - "length": 33, - "parent_index": 13 - }, - "literals": [ - "pragma", - "experimental", - "ABIEncoderV2", - ";" - ], - "text": "pragma experimental ABIEncoderV2;" - }, - { - "id": 19, - "name": "MathLib", - "node_type": 35, - "src": { - "id": 0, - "line": 6, - "column": 0, - "start": 149, - "end": 1010, - "length": 862, - "parent_index": 13 - }, - "abstract": false, - "kind": 37, - "fully_implemented": true, - "nodes": [ - { - "id": 21, - "name": "add", - "node_type": 42, - "kind": 41, - "src": { - "id": 22, - "line": 8, - "column": 4, - "start": 202, - "end": 355, - "length": 154, - "parent_index": 19 - }, - "body": { - "id": 39, - "node_type": 46, - "kind": 0, - "src": { - "id": 40, - "line": 8, - "column": 62, - "start": 260, - "end": 355, - "length": 96, - "parent_index": 21 - }, - "implemented": true, - "statements": [ - { - "id": 41, - "node_type": 44, - "src": { - "id": 42, - "line": 9, - "column": 8, - "start": 270, - "end": 284, - "length": 15, - "parent_index": 39 - }, - "assignments": [ - 43 - ], - "declarations": [ - { - "is_constant": false, - "id": 43, - "state_mutability": 1, - "name": "c", - "node_type": 44, - "scope": 39, - "src": { - "id": 44, - "line": 9, - "column": 8, - "start": 270, - "end": 275, - "length": 6, - "parent_index": 41 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 45, - "node_type": 30, - "src": { - "id": 46, - "line": 9, - "column": 8, - "start": 270, - "end": 273, - "length": 4, - "parent_index": 43 - }, - "name": "uint", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 47, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 48, - "line": 9, - "column": 17, - "start": 279, - "end": 283, - "length": 5, - "parent_index": 41 - }, - "operator": 1, - "left_expression": { - "id": 49, - "node_type": 16, - "src": { - "id": 50, - "line": 9, - "column": 17, - "start": 279, - "end": 279, - "length": 1, - "parent_index": 47 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 49, - "is_pure": false - }, - "right_expression": { - "id": 51, - "node_type": 16, - "src": { - "id": 52, - "line": 9, - "column": 21, - "start": 283, - "end": 283, - "length": 1, - "parent_index": 47 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 51, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - }, - { - "id": 53, - "node_type": 24, - "kind": 24, - "src": { - "id": 54, - "line": 10, - "column": 8, - "start": 294, - "end": 329, - "length": 36, - "parent_index": 39 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Addition overflow\"" - } - ], - "arguments": [ - { - "id": 55, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 56, - "line": 10, - "column": 16, - "start": 302, - "end": 307, - "length": 6, - "parent_index": 53 - }, - "operator": 8, - "left_expression": { - "id": 57, - "node_type": 16, - "src": { - "id": 58, - "line": 10, - "column": 16, - "start": 302, - "end": 302, - "length": 1, - "parent_index": 55 - }, - "name": "c", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 41, - "is_pure": false - }, - "right_expression": { - "id": 59, - "node_type": 16, - "src": { - "id": 60, - "line": 10, - "column": 21, - "start": 307, - "end": 307, - "length": 1, - "parent_index": 55 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 59, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 61, - "node_type": 17, - "kind": 50, - "value": "Addition overflow", - "hex_value": "4164646974696f6e206f766572666c6f77", - "src": { - "id": 62, - "line": 10, - "column": 24, - "start": 310, - "end": 328, - "length": 19, - "parent_index": 53 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Addition overflow\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 63, - "node_type": 16, - "src": { - "id": 64, - "line": 10, - "column": 8, - "start": 294, - "end": 300, - "length": 7, - "parent_index": 53 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"Addition overflow\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Addition overflow\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 65, - "node_type": 47, - "src": { - "id": 66, - "line": 12, - "column": 8, - "start": 341, - "end": 349, - "length": 9, - "parent_index": 21 - }, - "function_return_parameters": 21, - "expression": { - "id": 67, - "node_type": 16, - "src": { - "id": 68, - "line": 12, - "column": 15, - "start": 348, - "end": 348, - "length": 1, - "parent_index": 39 - }, - "name": "c", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 41, - "is_pure": false - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 23, - "node_type": 43, - "src": { - "id": 24, - "line": 8, - "column": 17, - "start": 215, - "end": 228, - "length": 14, - "parent_index": 21 - }, - "parameters": [ - { - "id": 25, - "node_type": 44, - "src": { - "id": 26, - "line": 8, - "column": 17, - "start": 215, - "end": 220, - "length": 6, - "parent_index": 23 - }, - "scope": 21, - "name": "a", - "type_name": { - "id": 27, - "node_type": 30, - "src": { - "id": 28, - "line": 8, - "column": 17, - "start": 215, - "end": 218, - "length": 4, - "parent_index": 25 - }, - "name": "uint", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 29, - "node_type": 44, - "src": { - "id": 30, - "line": 8, - "column": 25, - "start": 223, - "end": 228, - "length": 6, - "parent_index": 23 - }, - "scope": 21, - "name": "b", - "type_name": { - "id": 31, - "node_type": 30, - "src": { - "id": 32, - "line": 8, - "column": 25, - "start": 223, - "end": 226, - "length": 4, - "parent_index": 29 - }, - "name": "uint", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 33, - "node_type": 43, - "src": { - "id": 34, - "line": 8, - "column": 56, - "start": 254, - "end": 257, - "length": 4, - "parent_index": 21 - }, - "parameters": [ - { - "id": 35, - "node_type": 44, - "src": { - "id": 36, - "line": 8, - "column": 56, - "start": 254, - "end": 257, - "length": 4, - "parent_index": 33 - }, - "scope": 21, - "name": "", - "type_name": { - "id": 37, - "node_type": 30, - "src": { - "id": 38, - "line": 8, - "column": 56, - "start": 254, - "end": 257, - "length": 4, - "parent_index": 35 - }, - "name": "uint", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 19, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256", - "type_string": "function(uint256,uint256)" - } - }, - { - "id": 70, - "name": "sub", - "node_type": 42, - "kind": 41, - "src": { - "id": 71, - "line": 16, - "column": 4, - "start": 398, - "end": 555, - "length": 158, - "parent_index": 19 - }, - "body": { - "id": 88, - "node_type": 46, - "kind": 0, - "src": { - "id": 89, - "line": 16, - "column": 62, - "start": 456, - "end": 555, - "length": 100, - "parent_index": 70 - }, - "implemented": true, - "statements": [ - { - "id": 90, - "node_type": 24, - "kind": 24, - "src": { - "id": 91, - "line": 17, - "column": 8, - "start": 466, - "end": 505, - "length": 40, - "parent_index": 88 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Subtraction underflow\"" - } - ], - "arguments": [ - { - "id": 92, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 93, - "line": 17, - "column": 16, - "start": 474, - "end": 479, - "length": 6, - "parent_index": 90 - }, - "operator": 10, - "left_expression": { - "id": 94, - "node_type": 16, - "src": { - "id": 95, - "line": 17, - "column": 16, - "start": 474, - "end": 474, - "length": 1, - "parent_index": 92 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 94, - "is_pure": false - }, - "right_expression": { - "id": 96, - "node_type": 16, - "src": { - "id": 97, - "line": 17, - "column": 21, - "start": 479, - "end": 479, - "length": 1, - "parent_index": 92 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 96, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 98, - "node_type": 17, - "kind": 50, - "value": "Subtraction underflow", - "hex_value": "5375627472616374696f6e20756e646572666c6f77", - "src": { - "id": 99, - "line": 17, - "column": 24, - "start": 482, - "end": 504, - "length": 23, - "parent_index": 90 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Subtraction underflow\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 100, - "node_type": 16, - "src": { - "id": 101, - "line": 17, - "column": 8, - "start": 466, - "end": 472, - "length": 7, - "parent_index": 90 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"Subtraction underflow\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Subtraction underflow\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 102, - "node_type": 44, - "src": { - "id": 103, - "line": 18, - "column": 8, - "start": 516, - "end": 530, - "length": 15, - "parent_index": 88 - }, - "assignments": [ - 104 - ], - "declarations": [ - { - "is_constant": false, - "id": 104, - "state_mutability": 1, - "name": "c", - "node_type": 44, - "scope": 88, - "src": { - "id": 105, - "line": 18, - "column": 8, - "start": 516, - "end": 521, - "length": 6, - "parent_index": 102 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 106, - "node_type": 30, - "src": { - "id": 107, - "line": 18, - "column": 8, - "start": 516, - "end": 519, - "length": 4, - "parent_index": 104 - }, - "name": "uint", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 108, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 109, - "line": 18, - "column": 17, - "start": 525, - "end": 529, - "length": 5, - "parent_index": 102 - }, - "operator": 2, - "left_expression": { - "id": 110, - "node_type": 16, - "src": { - "id": 111, - "line": 18, - "column": 17, - "start": 525, - "end": 525, - "length": 1, - "parent_index": 108 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 110, - "is_pure": false - }, - "right_expression": { - "id": 112, - "node_type": 16, - "src": { - "id": 113, - "line": 18, - "column": 21, - "start": 529, - "end": 529, - "length": 1, - "parent_index": 108 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 112, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - }, - { - "id": 114, - "node_type": 47, - "src": { - "id": 115, - "line": 20, - "column": 8, - "start": 541, - "end": 549, - "length": 9, - "parent_index": 70 - }, - "function_return_parameters": 70, - "expression": { - "id": 116, - "node_type": 16, - "src": { - "id": 117, - "line": 20, - "column": 15, - "start": 548, - "end": 548, - "length": 1, - "parent_index": 88 - }, - "name": "c", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 102, - "is_pure": false - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 72, - "node_type": 43, - "src": { - "id": 73, - "line": 16, - "column": 17, - "start": 411, - "end": 424, - "length": 14, - "parent_index": 70 - }, - "parameters": [ - { - "id": 74, - "node_type": 44, - "src": { - "id": 75, - "line": 16, - "column": 17, - "start": 411, - "end": 416, - "length": 6, - "parent_index": 72 - }, - "scope": 70, - "name": "a", - "type_name": { - "id": 76, - "node_type": 30, - "src": { - "id": 77, - "line": 16, - "column": 17, - "start": 411, - "end": 414, - "length": 4, - "parent_index": 74 - }, - "name": "uint", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 78, - "node_type": 44, - "src": { - "id": 79, - "line": 16, - "column": 25, - "start": 419, - "end": 424, - "length": 6, - "parent_index": 72 - }, - "scope": 70, - "name": "b", - "type_name": { - "id": 80, - "node_type": 30, - "src": { - "id": 81, - "line": 16, - "column": 25, - "start": 419, - "end": 422, - "length": 4, - "parent_index": 78 - }, - "name": "uint", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 82, - "node_type": 43, - "src": { - "id": 83, - "line": 16, - "column": 56, - "start": 450, - "end": 453, - "length": 4, - "parent_index": 70 - }, - "parameters": [ - { - "id": 84, - "node_type": 44, - "src": { - "id": 85, - "line": 16, - "column": 56, - "start": 450, - "end": 453, - "length": 4, - "parent_index": 82 - }, - "scope": 70, - "name": "", - "type_name": { - "id": 86, - "node_type": 30, - "src": { - "id": 87, - "line": 16, - "column": 56, - "start": 450, - "end": 453, - "length": 4, - "parent_index": 84 - }, - "name": "uint", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 19, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256", - "type_string": "function(uint256,uint256)" - } - }, - { - "id": 119, - "name": "mul", - "node_type": 42, - "kind": 41, - "src": { - "id": 120, - "line": 24, - "column": 4, - "start": 598, - "end": 816, - "length": 219, - "parent_index": 19 - }, - "body": { - "id": 137, - "node_type": 46, - "kind": 0, - "src": { - "id": 138, - "line": 24, - "column": 62, - "start": 656, - "end": 816, - "length": 161, - "parent_index": 119 - }, - "implemented": true, - "statements": [ - { - "id": 139, - "node_type": 48, - "src": { - "id": 140, - "line": 25, - "column": 0, - "start": 666, - "end": 710, - "length": 45, - "parent_index": 137 - }, - "condition": { - "id": 141, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 142, - "line": 25, - "column": 12, - "start": 670, - "end": 675, - "length": 6, - "parent_index": 139 - }, - "operator": 11, - "left_expression": { - "id": 143, - "node_type": 16, - "src": { - "id": 144, - "line": 25, - "column": 12, - "start": 670, - "end": 670, - "length": 1, - "parent_index": 141 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 143, - "is_pure": false - }, - "right_expression": { - "id": 145, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 146, - "line": 25, - "column": 17, - "start": 675, - "end": 675, - "length": 1, - "parent_index": 141 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - "body": { - "id": 147, - "node_type": 46, - "kind": 0, - "src": { - "id": 148, - "line": 25, - "column": 20, - "start": 678, - "end": 710, - "length": 33, - "parent_index": 119 - }, - "implemented": true, - "statements": [ - { - "id": 149, - "node_type": 47, - "src": { - "id": 150, - "line": 26, - "column": 12, - "start": 692, - "end": 700, - "length": 9, - "parent_index": 119 - }, - "function_return_parameters": 119, - "expression": { - "id": 151, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 152, - "line": 26, - "column": 19, - "start": 699, - "end": 699, - "length": 1, - "parent_index": 147 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - } - ] - } - }, - { - "id": 153, - "node_type": 44, - "src": { - "id": 154, - "line": 29, - "column": 8, - "start": 721, - "end": 735, - "length": 15, - "parent_index": 137 - }, - "assignments": [ - 155 - ], - "declarations": [ - { - "is_constant": false, - "id": 155, - "state_mutability": 1, - "name": "c", - "node_type": 44, - "scope": 137, - "src": { - "id": 156, - "line": 29, - "column": 8, - "start": 721, - "end": 726, - "length": 6, - "parent_index": 153 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 157, - "node_type": 30, - "src": { - "id": 158, - "line": 29, - "column": 8, - "start": 721, - "end": 724, - "length": 4, - "parent_index": 155 - }, - "name": "uint", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 159, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 160, - "line": 29, - "column": 17, - "start": 730, - "end": 734, - "length": 5, - "parent_index": 153 - }, - "operator": 3, - "left_expression": { - "id": 161, - "node_type": 16, - "src": { - "id": 162, - "line": 29, - "column": 17, - "start": 730, - "end": 730, - "length": 1, - "parent_index": 159 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 161, - "is_pure": false - }, - "right_expression": { - "id": 163, - "node_type": 16, - "src": { - "id": 164, - "line": 29, - "column": 21, - "start": 734, - "end": 734, - "length": 1, - "parent_index": 159 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 163, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - }, - { - "id": 165, - "node_type": 24, - "kind": 24, - "src": { - "id": 166, - "line": 30, - "column": 8, - "start": 745, - "end": 790, - "length": 46, - "parent_index": 137 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Multiplication overflow\"" - } - ], - "arguments": [ - { - "id": 167, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 168, - "line": 30, - "column": 16, - "start": 753, - "end": 762, - "length": 10, - "parent_index": 165 - }, - "operator": 11, - "left_expression": { - "id": 169, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 170, - "line": 30, - "column": 16, - "start": 753, - "end": 757, - "length": 5, - "parent_index": 167 - }, - "operator": 4, - "left_expression": { - "id": 171, - "node_type": 16, - "src": { - "id": 172, - "line": 30, - "column": 16, - "start": 753, - "end": 753, - "length": 1, - "parent_index": 169 - }, - "name": "c", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 153, - "is_pure": false - }, - "right_expression": { - "id": 173, - "node_type": 16, - "src": { - "id": 174, - "line": 30, - "column": 20, - "start": 757, - "end": 757, - "length": 1, - "parent_index": 169 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 173, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - }, - "right_expression": { - "id": 175, - "node_type": 16, - "src": { - "id": 176, - "line": 30, - "column": 25, - "start": 762, - "end": 762, - "length": 1, - "parent_index": 167 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 175, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 177, - "node_type": 17, - "kind": 50, - "value": "Multiplication overflow", - "hex_value": "4d756c7469706c69636174696f6e206f766572666c6f77", - "src": { - "id": 178, - "line": 30, - "column": 28, - "start": 765, - "end": 789, - "length": 25, - "parent_index": 165 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Multiplication overflow\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 179, - "node_type": 16, - "src": { - "id": 180, - "line": 30, - "column": 8, - "start": 745, - "end": 751, - "length": 7, - "parent_index": 165 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"Multiplication overflow\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Multiplication overflow\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 181, - "node_type": 47, - "src": { - "id": 182, - "line": 32, - "column": 8, - "start": 802, - "end": 810, - "length": 9, - "parent_index": 119 - }, - "function_return_parameters": 119, - "expression": { - "id": 183, - "node_type": 16, - "src": { - "id": 184, - "line": 32, - "column": 15, - "start": 809, - "end": 809, - "length": 1, - "parent_index": 137 - }, - "name": "c", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 153, - "is_pure": false - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 121, - "node_type": 43, - "src": { - "id": 122, - "line": 24, - "column": 17, - "start": 611, - "end": 624, - "length": 14, - "parent_index": 119 - }, - "parameters": [ - { - "id": 123, - "node_type": 44, - "src": { - "id": 124, - "line": 24, - "column": 17, - "start": 611, - "end": 616, - "length": 6, - "parent_index": 121 - }, - "scope": 119, - "name": "a", - "type_name": { - "id": 125, - "node_type": 30, - "src": { - "id": 126, - "line": 24, - "column": 17, - "start": 611, - "end": 614, - "length": 4, - "parent_index": 123 - }, - "name": "uint", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 127, - "node_type": 44, - "src": { - "id": 128, - "line": 24, - "column": 25, - "start": 619, - "end": 624, - "length": 6, - "parent_index": 121 - }, - "scope": 119, - "name": "b", - "type_name": { - "id": 129, - "node_type": 30, - "src": { - "id": 130, - "line": 24, - "column": 25, - "start": 619, - "end": 622, - "length": 4, - "parent_index": 127 - }, - "name": "uint", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 131, - "node_type": 43, - "src": { - "id": 132, - "line": 24, - "column": 56, - "start": 650, - "end": 653, - "length": 4, - "parent_index": 119 - }, - "parameters": [ - { - "id": 133, - "node_type": 44, - "src": { - "id": 134, - "line": 24, - "column": 56, - "start": 650, - "end": 653, - "length": 4, - "parent_index": 131 - }, - "scope": 119, - "name": "", - "type_name": { - "id": 135, - "node_type": 30, - "src": { - "id": 136, - "line": 24, - "column": 56, - "start": 650, - "end": 653, - "length": 4, - "parent_index": 133 - }, - "name": "uint", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 19, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256", - "type_string": "function(uint256,uint256)" - } - }, - { - "id": 186, - "name": "div", - "node_type": 42, - "kind": 41, - "src": { - "id": 187, - "line": 36, - "column": 4, - "start": 857, - "end": 1008, - "length": 152, - "parent_index": 19 - }, - "body": { - "id": 204, - "node_type": 46, - "kind": 0, - "src": { - "id": 205, - "line": 36, - "column": 62, - "start": 915, - "end": 1008, - "length": 94, - "parent_index": 186 - }, - "implemented": true, - "statements": [ - { - "id": 206, - "node_type": 24, - "kind": 24, - "src": { - "id": 207, - "line": 37, - "column": 8, - "start": 925, - "end": 958, - "length": 34, - "parent_index": 204 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Division by zero\"" - } - ], - "arguments": [ - { - "id": 208, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 209, - "line": 37, - "column": 16, - "start": 933, - "end": 937, - "length": 5, - "parent_index": 206 - }, - "operator": 7, - "left_expression": { - "id": 210, - "node_type": 16, - "src": { - "id": 211, - "line": 37, - "column": 16, - "start": 933, - "end": 933, - "length": 1, - "parent_index": 208 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 210, - "is_pure": false - }, - "right_expression": { - "id": 212, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 213, - "line": 37, - "column": 20, - "start": 937, - "end": 937, - "length": 1, - "parent_index": 208 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 214, - "node_type": 17, - "kind": 50, - "value": "Division by zero", - "hex_value": "4469766973696f6e206279207a65726f", - "src": { - "id": 215, - "line": 37, - "column": 23, - "start": 940, - "end": 957, - "length": 18, - "parent_index": 206 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Division by zero\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 216, - "node_type": 16, - "src": { - "id": 217, - "line": 37, - "column": 8, - "start": 925, - "end": 931, - "length": 7, - "parent_index": 206 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"Division by zero\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Division by zero\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 218, - "node_type": 44, - "src": { - "id": 219, - "line": 38, - "column": 8, - "start": 969, - "end": 983, - "length": 15, - "parent_index": 204 - }, - "assignments": [ - 220 - ], - "declarations": [ - { - "is_constant": false, - "id": 220, - "state_mutability": 1, - "name": "c", - "node_type": 44, - "scope": 204, - "src": { - "id": 221, - "line": 38, - "column": 8, - "start": 969, - "end": 974, - "length": 6, - "parent_index": 218 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 222, - "node_type": 30, - "src": { - "id": 223, - "line": 38, - "column": 8, - "start": 969, - "end": 972, - "length": 4, - "parent_index": 220 - }, - "name": "uint", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 224, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 225, - "line": 38, - "column": 17, - "start": 978, - "end": 982, - "length": 5, - "parent_index": 218 - }, - "operator": 4, - "left_expression": { - "id": 226, - "node_type": 16, - "src": { - "id": 227, - "line": 38, - "column": 17, - "start": 978, - "end": 978, - "length": 1, - "parent_index": 224 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 226, - "is_pure": false - }, - "right_expression": { - "id": 228, - "node_type": 16, - "src": { - "id": 229, - "line": 38, - "column": 21, - "start": 982, - "end": 982, - "length": 1, - "parent_index": 224 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 228, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - }, - { - "id": 230, - "node_type": 47, - "src": { - "id": 231, - "line": 40, - "column": 8, - "start": 994, - "end": 1002, - "length": 9, - "parent_index": 186 - }, - "function_return_parameters": 186, - "expression": { - "id": 232, - "node_type": 16, - "src": { - "id": 233, - "line": 40, - "column": 15, - "start": 1001, - "end": 1001, - "length": 1, - "parent_index": 204 - }, - "name": "c", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 218, - "is_pure": false - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 188, - "node_type": 43, - "src": { - "id": 189, - "line": 36, - "column": 17, - "start": 870, - "end": 883, - "length": 14, - "parent_index": 186 - }, - "parameters": [ - { - "id": 190, - "node_type": 44, - "src": { - "id": 191, - "line": 36, - "column": 17, - "start": 870, - "end": 875, - "length": 6, - "parent_index": 188 - }, - "scope": 186, - "name": "a", - "type_name": { - "id": 192, - "node_type": 30, - "src": { - "id": 193, - "line": 36, - "column": 17, - "start": 870, - "end": 873, - "length": 4, - "parent_index": 190 - }, - "name": "uint", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 194, - "node_type": 44, - "src": { - "id": 195, - "line": 36, - "column": 25, - "start": 878, - "end": 883, - "length": 6, - "parent_index": 188 - }, - "scope": 186, - "name": "b", - "type_name": { - "id": 196, - "node_type": 30, - "src": { - "id": 197, - "line": 36, - "column": 25, - "start": 878, - "end": 881, - "length": 4, - "parent_index": 194 - }, - "name": "uint", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 198, - "node_type": 43, - "src": { - "id": 199, - "line": 36, - "column": 56, - "start": 909, - "end": 912, - "length": 4, - "parent_index": 186 - }, - "parameters": [ - { - "id": 200, - "node_type": 44, - "src": { - "id": 201, - "line": 36, - "column": 56, - "start": 909, - "end": 912, - "length": 4, - "parent_index": 198 - }, - "scope": 186, - "name": "", - "type_name": { - "id": 202, - "node_type": 30, - "src": { - "id": 203, - "line": 36, - "column": 56, - "start": 909, - "end": 912, - "length": 4, - "parent_index": 200 - }, - "name": "uint", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 19, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256", - "type_string": "function(uint256,uint256)" - } - } - ], - "linearized_base_contracts": [ - 19 - ], - "base_contracts": [], - "contract_dependencies": [], - "scope": 13 - } - ], - "src": { - "id": 14, - "line": 6, - "column": 0, - "start": 149, - "end": 1010, - "length": 862, - "parent_index": 12 - } + "id": 13, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 13, + "name": "MathLib", + "absolute_path": "MathLib.sol" + } + ], + "absolute_path": "MathLib.sol", + "name": "MathLib", + "node_type": 1, + "nodes": [ + { + "id": 15, + "node_type": 10, + "src": { + "id": 16, + "line": 2, + "column": 0, + "start": 32, + "end": 54, + "length": 23, + "parent_index": 13 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 17, + "node_type": 10, + "src": { + "id": 18, + "line": 3, + "column": 0, + "start": 56, + "end": 88, + "length": 33, + "parent_index": 13 + }, + "literals": [ + "pragma", + "experimental", + "ABIEncoderV2", + ";" + ], + "text": "pragma experimental ABIEncoderV2;" + }, + { + "id": 19, + "name": "MathLib", + "node_type": 35, + "src": { + "id": 0, + "line": 6, + "column": 0, + "start": 149, + "end": 1010, + "length": 862, + "parent_index": 13 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 21, + "name": "add", + "node_type": 42, + "kind": 41, + "src": { + "id": 22, + "line": 8, + "column": 4, + "start": 202, + "end": 355, + "length": 154, + "parent_index": 19 + }, + "body": { + "id": 39, + "node_type": 46, + "kind": 0, + "src": { + "id": 40, + "line": 8, + "column": 62, + "start": 260, + "end": 355, + "length": 96, + "parent_index": 21 + }, + "implemented": true, + "statements": [ + { + "id": 41, + "node_type": 44, + "src": { + "id": 42, + "line": 9, + "column": 8, + "start": 270, + "end": 284, + "length": 15, + "parent_index": 39 + }, + "assignments": [ + 43 + ], + "declarations": [ + { + "is_constant": false, + "id": 43, + "state_mutability": 1, + "name": "c", + "node_type": 44, + "scope": 39, + "src": { + "id": 44, + "line": 9, + "column": 8, + "start": 270, + "end": 275, + "length": 6, + "parent_index": 41 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 45, + "node_type": 30, + "src": { + "id": 46, + "line": 9, + "column": 8, + "start": 270, + "end": 273, + "length": 4, + "parent_index": 43 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 47, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 48, + "line": 9, + "column": 17, + "start": 279, + "end": 283, + "length": 5, + "parent_index": 41 + }, + "operator": 1, + "left_expression": { + "id": 49, + "node_type": 16, + "src": { + "id": 50, + "line": 9, + "column": 17, + "start": 279, + "end": 279, + "length": 1, + "parent_index": 47 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 49, + "is_pure": false + }, + "right_expression": { + "id": 51, + "node_type": 16, + "src": { + "id": 52, + "line": 9, + "column": 21, + "start": 283, + "end": 283, + "length": 1, + "parent_index": 47 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 51, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + }, + { + "id": 53, + "node_type": 24, + "kind": 24, + "src": { + "id": 54, + "line": 10, + "column": 8, + "start": 294, + "end": 329, + "length": 36, + "parent_index": 39 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Addition overflow\"" + } + ], + "arguments": [ + { + "id": 57, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 58, + "line": 10, + "column": 16, + "start": 302, + "end": 307, + "length": 6, + "parent_index": 53 + }, + "operator": 8, + "left_expression": { + "id": 59, + "node_type": 16, + "src": { + "id": 60, + "line": 10, + "column": 16, + "start": 302, + "end": 302, + "length": 1, + "parent_index": 57 + }, + "name": "c", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 41, + "is_pure": false + }, + "right_expression": { + "id": 61, + "node_type": 16, + "src": { + "id": 62, + "line": 10, + "column": 21, + "start": 307, + "end": 307, + "length": 1, + "parent_index": 57 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 61, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 63, + "node_type": 17, + "kind": 50, + "value": "Addition overflow", + "hex_value": "4164646974696f6e206f766572666c6f77", + "src": { + "id": 64, + "line": 10, + "column": 24, + "start": 310, + "end": 328, + "length": 19, + "parent_index": 53 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Addition overflow\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 55, + "node_type": 16, + "src": { + "id": 56, + "line": 10, + "column": 8, + "start": 294, + "end": 300, + "length": 7, + "parent_index": 53 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 65, + "node_type": 47, + "src": { + "id": 66, + "line": 12, + "column": 8, + "start": 341, + "end": 349, + "length": 9, + "parent_index": 21 + }, + "function_return_parameters": 21, + "expression": { + "id": 67, + "node_type": 16, + "src": { + "id": 68, + "line": 12, + "column": 15, + "start": 348, + "end": 348, + "length": 1, + "parent_index": 39 + }, + "name": "c", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 41, + "is_pure": false + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 23, + "node_type": 43, + "src": { + "id": 24, + "line": 8, + "column": 17, + "start": 215, + "end": 228, + "length": 14, + "parent_index": 21 + }, + "parameters": [ + { + "id": 25, + "node_type": 44, + "src": { + "id": 26, + "line": 8, + "column": 17, + "start": 215, + "end": 220, + "length": 6, + "parent_index": 23 + }, + "scope": 21, + "name": "a", + "type_name": { + "id": 27, + "node_type": 30, + "src": { + "id": 28, + "line": 8, + "column": 17, + "start": 215, + "end": 218, + "length": 4, + "parent_index": 25 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 29, + "node_type": 44, + "src": { + "id": 30, + "line": 8, + "column": 25, + "start": 223, + "end": 228, + "length": 6, + "parent_index": 23 + }, + "scope": 21, + "name": "b", + "type_name": { + "id": 31, + "node_type": 30, + "src": { + "id": 32, + "line": 8, + "column": 25, + "start": 223, + "end": 226, + "length": 4, + "parent_index": 29 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 33, + "node_type": 43, + "src": { + "id": 34, + "line": 8, + "column": 56, + "start": 254, + "end": 257, + "length": 4, + "parent_index": 21 + }, + "parameters": [ + { + "id": 35, + "node_type": 44, + "src": { + "id": 36, + "line": 8, + "column": 56, + "start": 254, + "end": 257, + "length": 4, + "parent_index": 33 + }, + "scope": 21, + "name": "", + "type_name": { + "id": 37, + "node_type": 30, + "src": { + "id": 38, + "line": 8, + "column": 56, + "start": 254, + "end": 257, + "length": 4, + "parent_index": 35 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 19, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + }, + { + "id": 70, + "name": "sub", + "node_type": 42, + "kind": 41, + "src": { + "id": 71, + "line": 16, + "column": 4, + "start": 398, + "end": 555, + "length": 158, + "parent_index": 19 + }, + "body": { + "id": 88, + "node_type": 46, + "kind": 0, + "src": { + "id": 89, + "line": 16, + "column": 62, + "start": 456, + "end": 555, + "length": 100, + "parent_index": 70 + }, + "implemented": true, + "statements": [ + { + "id": 90, + "node_type": 24, + "kind": 24, + "src": { + "id": 91, + "line": 17, + "column": 8, + "start": 466, + "end": 505, + "length": 40, + "parent_index": 88 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Subtraction underflow\"" + } + ], + "arguments": [ + { + "id": 94, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 95, + "line": 17, + "column": 16, + "start": 474, + "end": 479, + "length": 6, + "parent_index": 90 + }, + "operator": 10, + "left_expression": { + "id": 96, + "node_type": 16, + "src": { + "id": 97, + "line": 17, + "column": 16, + "start": 474, + "end": 474, + "length": 1, + "parent_index": 94 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 96, + "is_pure": false + }, + "right_expression": { + "id": 98, + "node_type": 16, + "src": { + "id": 99, + "line": 17, + "column": 21, + "start": 479, + "end": 479, + "length": 1, + "parent_index": 94 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 98, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 100, + "node_type": 17, + "kind": 50, + "value": "Subtraction underflow", + "hex_value": "5375627472616374696f6e20756e646572666c6f77", + "src": { + "id": 101, + "line": 17, + "column": 24, + "start": 482, + "end": 504, + "length": 23, + "parent_index": 90 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Subtraction underflow\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 92, + "node_type": 16, + "src": { + "id": 93, + "line": 17, + "column": 8, + "start": 466, + "end": 472, + "length": 7, + "parent_index": 90 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 102, + "node_type": 44, + "src": { + "id": 103, + "line": 18, + "column": 8, + "start": 516, + "end": 530, + "length": 15, + "parent_index": 88 + }, + "assignments": [ + 104 + ], + "declarations": [ + { + "is_constant": false, + "id": 104, + "state_mutability": 1, + "name": "c", + "node_type": 44, + "scope": 88, + "src": { + "id": 105, + "line": 18, + "column": 8, + "start": 516, + "end": 521, + "length": 6, + "parent_index": 102 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 106, + "node_type": 30, + "src": { + "id": 107, + "line": 18, + "column": 8, + "start": 516, + "end": 519, + "length": 4, + "parent_index": 104 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 108, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 109, + "line": 18, + "column": 17, + "start": 525, + "end": 529, + "length": 5, + "parent_index": 102 + }, + "operator": 2, + "left_expression": { + "id": 110, + "node_type": 16, + "src": { + "id": 111, + "line": 18, + "column": 17, + "start": 525, + "end": 525, + "length": 1, + "parent_index": 108 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 110, + "is_pure": false + }, + "right_expression": { + "id": 112, + "node_type": 16, + "src": { + "id": 113, + "line": 18, + "column": 21, + "start": 529, + "end": 529, + "length": 1, + "parent_index": 108 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 112, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + }, + { + "id": 114, + "node_type": 47, + "src": { + "id": 115, + "line": 20, + "column": 8, + "start": 541, + "end": 549, + "length": 9, + "parent_index": 70 + }, + "function_return_parameters": 70, + "expression": { + "id": 116, + "node_type": 16, + "src": { + "id": 117, + "line": 20, + "column": 15, + "start": 548, + "end": 548, + "length": 1, + "parent_index": 88 + }, + "name": "c", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 102, + "is_pure": false + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 72, + "node_type": 43, + "src": { + "id": 73, + "line": 16, + "column": 17, + "start": 411, + "end": 424, + "length": 14, + "parent_index": 70 + }, + "parameters": [ + { + "id": 74, + "node_type": 44, + "src": { + "id": 75, + "line": 16, + "column": 17, + "start": 411, + "end": 416, + "length": 6, + "parent_index": 72 + }, + "scope": 70, + "name": "a", + "type_name": { + "id": 76, + "node_type": 30, + "src": { + "id": 77, + "line": 16, + "column": 17, + "start": 411, + "end": 414, + "length": 4, + "parent_index": 74 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 78, + "node_type": 44, + "src": { + "id": 79, + "line": 16, + "column": 25, + "start": 419, + "end": 424, + "length": 6, + "parent_index": 72 + }, + "scope": 70, + "name": "b", + "type_name": { + "id": 80, + "node_type": 30, + "src": { + "id": 81, + "line": 16, + "column": 25, + "start": 419, + "end": 422, + "length": 4, + "parent_index": 78 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 82, + "node_type": 43, + "src": { + "id": 83, + "line": 16, + "column": 56, + "start": 450, + "end": 453, + "length": 4, + "parent_index": 70 + }, + "parameters": [ + { + "id": 84, + "node_type": 44, + "src": { + "id": 85, + "line": 16, + "column": 56, + "start": 450, + "end": 453, + "length": 4, + "parent_index": 82 + }, + "scope": 70, + "name": "", + "type_name": { + "id": 86, + "node_type": 30, + "src": { + "id": 87, + "line": 16, + "column": 56, + "start": 450, + "end": 453, + "length": 4, + "parent_index": 84 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 19, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + }, + { + "id": 119, + "name": "mul", + "node_type": 42, + "kind": 41, + "src": { + "id": 120, + "line": 24, + "column": 4, + "start": 598, + "end": 816, + "length": 219, + "parent_index": 19 + }, + "body": { + "id": 137, + "node_type": 46, + "kind": 0, + "src": { + "id": 138, + "line": 24, + "column": 62, + "start": 656, + "end": 816, + "length": 161, + "parent_index": 119 + }, + "implemented": true, + "statements": [ + { + "id": 139, + "node_type": 48, + "src": { + "id": 140, + "line": 25, + "column": 0, + "start": 666, + "end": 710, + "length": 45, + "parent_index": 137 + }, + "condition": { + "id": 141, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 142, + "line": 25, + "column": 12, + "start": 670, + "end": 675, + "length": 6, + "parent_index": 139 + }, + "operator": 11, + "left_expression": { + "id": 143, + "node_type": 16, + "src": { + "id": 144, + "line": 25, + "column": 12, + "start": 670, + "end": 670, + "length": 1, + "parent_index": 141 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 143, + "is_pure": false + }, + "right_expression": { + "id": 145, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 146, + "line": 25, + "column": 17, + "start": 675, + "end": 675, + "length": 1, + "parent_index": 141 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 147, + "node_type": 46, + "kind": 0, + "src": { + "id": 148, + "line": 25, + "column": 20, + "start": 678, + "end": 710, + "length": 33, + "parent_index": 119 + }, + "implemented": true, + "statements": [ + { + "id": 149, + "node_type": 47, + "src": { + "id": 150, + "line": 26, + "column": 12, + "start": 692, + "end": 700, + "length": 9, + "parent_index": 119 + }, + "function_return_parameters": 119, + "expression": { + "id": 151, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 152, + "line": 26, + "column": 19, + "start": 699, + "end": 699, + "length": 1, + "parent_index": 147 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + } + ] + } + }, + { + "id": 153, + "node_type": 44, + "src": { + "id": 154, + "line": 29, + "column": 8, + "start": 721, + "end": 735, + "length": 15, + "parent_index": 137 + }, + "assignments": [ + 155 + ], + "declarations": [ + { + "is_constant": false, + "id": 155, + "state_mutability": 1, + "name": "c", + "node_type": 44, + "scope": 137, + "src": { + "id": 156, + "line": 29, + "column": 8, + "start": 721, + "end": 726, + "length": 6, + "parent_index": 153 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 157, + "node_type": 30, + "src": { + "id": 158, + "line": 29, + "column": 8, + "start": 721, + "end": 724, + "length": 4, + "parent_index": 155 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 159, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 160, + "line": 29, + "column": 17, + "start": 730, + "end": 734, + "length": 5, + "parent_index": 153 + }, + "operator": 3, + "left_expression": { + "id": 161, + "node_type": 16, + "src": { + "id": 162, + "line": 29, + "column": 17, + "start": 730, + "end": 730, + "length": 1, + "parent_index": 159 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 161, + "is_pure": false + }, + "right_expression": { + "id": 163, + "node_type": 16, + "src": { + "id": 164, + "line": 29, + "column": 21, + "start": 734, + "end": 734, + "length": 1, + "parent_index": 159 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 163, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + }, + { + "id": 165, + "node_type": 24, + "kind": 24, + "src": { + "id": 166, + "line": 30, + "column": 8, + "start": 745, + "end": 790, + "length": 46, + "parent_index": 137 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Multiplication overflow\"" + } + ], + "arguments": [ + { + "id": 169, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 170, + "line": 30, + "column": 16, + "start": 753, + "end": 762, + "length": 10, + "parent_index": 165 + }, + "operator": 11, + "left_expression": { + "id": 171, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 172, + "line": 30, + "column": 16, + "start": 753, + "end": 757, + "length": 5, + "parent_index": 169 + }, + "operator": 4, + "left_expression": { + "id": 173, + "node_type": 16, + "src": { + "id": 174, + "line": 30, + "column": 16, + "start": 753, + "end": 753, + "length": 1, + "parent_index": 171 + }, + "name": "c", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 153, + "is_pure": false + }, + "right_expression": { + "id": 175, + "node_type": 16, + "src": { + "id": 176, + "line": 30, + "column": 20, + "start": 757, + "end": 757, + "length": 1, + "parent_index": 171 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 175, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "right_expression": { + "id": 177, + "node_type": 16, + "src": { + "id": 178, + "line": 30, + "column": 25, + "start": 762, + "end": 762, + "length": 1, + "parent_index": 169 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 177, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 179, + "node_type": 17, + "kind": 50, + "value": "Multiplication overflow", + "hex_value": "4d756c7469706c69636174696f6e206f766572666c6f77", + "src": { + "id": 180, + "line": 30, + "column": 28, + "start": 765, + "end": 789, + "length": 25, + "parent_index": 165 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Multiplication overflow\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 167, + "node_type": 16, + "src": { + "id": 168, + "line": 30, + "column": 8, + "start": 745, + "end": 751, + "length": 7, + "parent_index": 165 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 181, + "node_type": 47, + "src": { + "id": 182, + "line": 32, + "column": 8, + "start": 802, + "end": 810, + "length": 9, + "parent_index": 119 + }, + "function_return_parameters": 119, + "expression": { + "id": 183, + "node_type": 16, + "src": { + "id": 184, + "line": 32, + "column": 15, + "start": 809, + "end": 809, + "length": 1, + "parent_index": 137 + }, + "name": "c", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 153, + "is_pure": false + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 121, + "node_type": 43, + "src": { + "id": 122, + "line": 24, + "column": 17, + "start": 611, + "end": 624, + "length": 14, + "parent_index": 119 + }, + "parameters": [ + { + "id": 123, + "node_type": 44, + "src": { + "id": 124, + "line": 24, + "column": 17, + "start": 611, + "end": 616, + "length": 6, + "parent_index": 121 + }, + "scope": 119, + "name": "a", + "type_name": { + "id": 125, + "node_type": 30, + "src": { + "id": 126, + "line": 24, + "column": 17, + "start": 611, + "end": 614, + "length": 4, + "parent_index": 123 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 127, + "node_type": 44, + "src": { + "id": 128, + "line": 24, + "column": 25, + "start": 619, + "end": 624, + "length": 6, + "parent_index": 121 + }, + "scope": 119, + "name": "b", + "type_name": { + "id": 129, + "node_type": 30, + "src": { + "id": 130, + "line": 24, + "column": 25, + "start": 619, + "end": 622, + "length": 4, + "parent_index": 127 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 131, + "node_type": 43, + "src": { + "id": 132, + "line": 24, + "column": 56, + "start": 650, + "end": 653, + "length": 4, + "parent_index": 119 + }, + "parameters": [ + { + "id": 133, + "node_type": 44, + "src": { + "id": 134, + "line": 24, + "column": 56, + "start": 650, + "end": 653, + "length": 4, + "parent_index": 131 + }, + "scope": 119, + "name": "", + "type_name": { + "id": 135, + "node_type": 30, + "src": { + "id": 136, + "line": 24, + "column": 56, + "start": 650, + "end": 653, + "length": 4, + "parent_index": 133 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 19, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + }, + { + "id": 186, + "name": "div", + "node_type": 42, + "kind": 41, + "src": { + "id": 187, + "line": 36, + "column": 4, + "start": 857, + "end": 1008, + "length": 152, + "parent_index": 19 + }, + "body": { + "id": 204, + "node_type": 46, + "kind": 0, + "src": { + "id": 205, + "line": 36, + "column": 62, + "start": 915, + "end": 1008, + "length": 94, + "parent_index": 186 + }, + "implemented": true, + "statements": [ + { + "id": 206, + "node_type": 24, + "kind": 24, + "src": { + "id": 207, + "line": 37, + "column": 8, + "start": 925, + "end": 958, + "length": 34, + "parent_index": 204 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Division by zero\"" + } + ], + "arguments": [ + { + "id": 210, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 211, + "line": 37, + "column": 16, + "start": 933, + "end": 937, + "length": 5, + "parent_index": 206 + }, + "operator": 7, + "left_expression": { + "id": 212, + "node_type": 16, + "src": { + "id": 213, + "line": 37, + "column": 16, + "start": 933, + "end": 933, + "length": 1, + "parent_index": 210 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 212, + "is_pure": false + }, + "right_expression": { + "id": 214, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 215, + "line": 37, + "column": 20, + "start": 937, + "end": 937, + "length": 1, + "parent_index": 210 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 216, + "node_type": 17, + "kind": 50, + "value": "Division by zero", + "hex_value": "4469766973696f6e206279207a65726f", + "src": { + "id": 217, + "line": 37, + "column": 23, + "start": 940, + "end": 957, + "length": 18, + "parent_index": 206 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Division by zero\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 208, + "node_type": 16, + "src": { + "id": 209, + "line": 37, + "column": 8, + "start": 925, + "end": 931, + "length": 7, + "parent_index": 206 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 218, + "node_type": 44, + "src": { + "id": 219, + "line": 38, + "column": 8, + "start": 969, + "end": 983, + "length": 15, + "parent_index": 204 + }, + "assignments": [ + 220 + ], + "declarations": [ + { + "is_constant": false, + "id": 220, + "state_mutability": 1, + "name": "c", + "node_type": 44, + "scope": 204, + "src": { + "id": 221, + "line": 38, + "column": 8, + "start": 969, + "end": 974, + "length": 6, + "parent_index": 218 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 222, + "node_type": 30, + "src": { + "id": 223, + "line": 38, + "column": 8, + "start": 969, + "end": 972, + "length": 4, + "parent_index": 220 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 224, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 225, + "line": 38, + "column": 17, + "start": 978, + "end": 982, + "length": 5, + "parent_index": 218 + }, + "operator": 4, + "left_expression": { + "id": 226, + "node_type": 16, + "src": { + "id": 227, + "line": 38, + "column": 17, + "start": 978, + "end": 978, + "length": 1, + "parent_index": 224 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 226, + "is_pure": false + }, + "right_expression": { + "id": 228, + "node_type": 16, + "src": { + "id": 229, + "line": 38, + "column": 21, + "start": 982, + "end": 982, + "length": 1, + "parent_index": 224 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 228, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + }, + { + "id": 230, + "node_type": 47, + "src": { + "id": 231, + "line": 40, + "column": 8, + "start": 994, + "end": 1002, + "length": 9, + "parent_index": 186 + }, + "function_return_parameters": 186, + "expression": { + "id": 232, + "node_type": 16, + "src": { + "id": 233, + "line": 40, + "column": 15, + "start": 1001, + "end": 1001, + "length": 1, + "parent_index": 204 + }, + "name": "c", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 218, + "is_pure": false + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 188, + "node_type": 43, + "src": { + "id": 189, + "line": 36, + "column": 17, + "start": 870, + "end": 883, + "length": 14, + "parent_index": 186 + }, + "parameters": [ + { + "id": 190, + "node_type": 44, + "src": { + "id": 191, + "line": 36, + "column": 17, + "start": 870, + "end": 875, + "length": 6, + "parent_index": 188 + }, + "scope": 186, + "name": "a", + "type_name": { + "id": 192, + "node_type": 30, + "src": { + "id": 193, + "line": 36, + "column": 17, + "start": 870, + "end": 873, + "length": 4, + "parent_index": 190 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 194, + "node_type": 44, + "src": { + "id": 195, + "line": 36, + "column": 25, + "start": 878, + "end": 883, + "length": 6, + "parent_index": 188 + }, + "scope": 186, + "name": "b", + "type_name": { + "id": 196, + "node_type": 30, + "src": { + "id": 197, + "line": 36, + "column": 25, + "start": 878, + "end": 881, + "length": 4, + "parent_index": 194 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 198, + "node_type": 43, + "src": { + "id": 199, + "line": 36, + "column": 56, + "start": 909, + "end": 912, + "length": 4, + "parent_index": 186 + }, + "parameters": [ + { + "id": 200, + "node_type": 44, + "src": { + "id": 201, + "line": 36, + "column": 56, + "start": 909, + "end": 912, + "length": 4, + "parent_index": 198 + }, + "scope": 186, + "name": "", + "type_name": { + "id": 202, + "node_type": 30, + "src": { + "id": 203, + "line": 36, + "column": 56, + "start": 909, + "end": 912, + "length": 4, + "parent_index": 200 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 19, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + } + ], + "linearized_base_contracts": [ + 19 + ], + "base_contracts": [], + "contract_dependencies": [], + "scope": 13 + } + ], + "src": { + "id": 14, + "line": 6, + "column": 0, + "start": 149, + "end": 1010, + "length": 862, + "parent_index": 12 + } } \ No newline at end of file diff --git a/data/tests/ast/SafeMath.solgo.ast.json b/data/tests/ast/SafeMath.solgo.ast.json index 7886c24b..8d1ad7be 100644 --- a/data/tests/ast/SafeMath.solgo.ast.json +++ b/data/tests/ast/SafeMath.solgo.ast.json @@ -1,5551 +1,5521 @@ { - "id": 186, - "base_contracts": [], - "license": "MIT", - "exported_symbols": [ - { - "id": 186, - "name": "SafeMath", - "absolute_path": "SafeMath.sol" - } - ], - "absolute_path": "SafeMath.sol", - "name": "SafeMath", - "node_type": 1, - "nodes": [ - { - "id": 190, - "node_type": 10, - "src": { - "id": 191, - "line": 85, - "column": 0, - "start": 2760, - "end": 2782, - "length": 23, - "parent_index": 186 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 192, - "name": "SafeMath", - "node_type": 35, - "src": { - "id": 0, - "line": 100, - "column": 0, - "start": 3349, - "end": 9824, - "length": 6476, - "parent_index": 186 - }, - "abstract": false, - "kind": 37, - "fully_implemented": true, - "nodes": [ - { - "id": 194, - "name": "tryAdd", - "node_type": 42, - "kind": 41, - "src": { - "id": 195, - "line": 106, - "column": 4, - "start": 3508, - "end": 3723, - "length": 216, - "parent_index": 192 - }, - "body": { - "id": 216, - "node_type": 46, - "kind": 0, - "src": { - "id": 217, - "line": 106, - "column": 80, - "start": 3584, - "end": 3723, - "length": 140, - "parent_index": 194 - }, - "implemented": true, - "statements": [ - { - "id": 218, - "node_type": 59, - "kind": 0, - "src": { - "id": 219, - "line": 107, - "column": 8, - "start": 3594, - "end": 3717, - "length": 124, - "parent_index": 192 - }, - "implemented": false, - "statements": [ - { - "id": 220, - "node_type": 44, - "src": { - "id": 221, - "line": 108, - "column": 12, - "start": 3618, - "end": 3635, - "length": 18, - "parent_index": 218 - }, - "assignments": [ - 222 - ], - "declarations": [ - { - "is_constant": false, - "id": 222, - "state_mutability": 1, - "name": "c", - "node_type": 44, - "scope": 218, - "src": { - "id": 223, - "line": 108, - "column": 12, - "start": 3618, - "end": 3626, - "length": 9, - "parent_index": 220 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 224, - "node_type": 30, - "src": { - "id": 225, - "line": 108, - "column": 12, - "start": 3618, - "end": 3624, - "length": 7, - "parent_index": 222 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 226, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 227, - "line": 108, - "column": 24, - "start": 3630, - "end": 3634, - "length": 5, - "parent_index": 220 - }, - "operator": 1, - "left_expression": { - "id": 228, - "node_type": 16, - "src": { - "id": 229, - "line": 108, - "column": 24, - "start": 3630, - "end": 3630, - "length": 1, - "parent_index": 226 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 228, - "is_pure": false - }, - "right_expression": { - "id": 230, - "node_type": 16, - "src": { - "id": 231, - "line": 108, - "column": 28, - "start": 3634, - "end": 3634, - "length": 1, - "parent_index": 226 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 230, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - }, - { - "id": 232, - "node_type": 48, - "src": { - "id": 233, - "line": 109, - "column": 0, - "start": 3649, - "end": 3677, - "length": 29, - "parent_index": 218 - }, - "condition": { - "id": 234, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 235, - "line": 109, - "column": 16, - "start": 3653, - "end": 3657, - "length": 5, - "parent_index": 232 - }, - "operator": 9, - "left_expression": { - "id": 236, - "node_type": 16, - "src": { - "id": 237, - "line": 109, - "column": 16, - "start": 3653, - "end": 3653, - "length": 1, - "parent_index": 234 - }, - "name": "c", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 220, - "is_pure": false - }, - "right_expression": { - "id": 238, - "node_type": 16, - "src": { - "id": 239, - "line": 109, - "column": 20, - "start": 3657, - "end": 3657, - "length": 1, - "parent_index": 234 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 238, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - "body": { - "id": 240, - "node_type": 46, - "kind": 0, - "src": { - "id": 0, - "line": 0, - "column": 0, - "start": 0, - "end": 0, - "length": 0, - "parent_index": 0 - }, - "implemented": false, - "statements": [] - } - }, - { - "id": 241, - "node_type": 47, - "src": { - "id": 242, - "line": 110, - "column": 12, - "start": 3691, - "end": 3707, - "length": 17, - "parent_index": 194 - }, - "function_return_parameters": 194, - "expression": { - "id": 243, - "node_type": 60, - "src": { - "id": 244, - "line": 110, - "column": 19, - "start": 3698, - "end": 3706, - "length": 9, - "parent_index": 194 - }, - "is_constant": false, - "is_pure": true, - "components": [ - { - "id": 245, - "node_type": 17, - "kind": 61, - "value": "true", - "hex_value": "74727565", - "src": { - "id": 246, - "line": 110, - "column": 20, - "start": 3699, - "end": 3702, - "length": 4, - "parent_index": 243 - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - { - "id": 247, - "node_type": 16, - "src": { - "id": 248, - "line": 110, - "column": 26, - "start": 3705, - "end": 3705, - "length": 1, - "parent_index": 243 - }, - "name": "c", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 220, - "is_pure": false - } - ], - "type_description": { - "type_identifier": "t_tuple_$_t_bool_$_t_uint256$", - "type_string": "tuple(bool,uint256)" - } - } - } - ] - } - ] - }, - "implemented": false, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 196, - "node_type": 43, - "src": { - "id": 197, - "line": 106, - "column": 20, - "start": 3524, - "end": 3543, - "length": 20, - "parent_index": 194 - }, - "parameters": [ - { - "id": 198, - "node_type": 44, - "src": { - "id": 199, - "line": 106, - "column": 20, - "start": 3524, - "end": 3532, - "length": 9, - "parent_index": 196 - }, - "scope": 194, - "name": "a", - "type_name": { - "id": 200, - "node_type": 30, - "src": { - "id": 201, - "line": 106, - "column": 20, - "start": 3524, - "end": 3530, - "length": 7, - "parent_index": 198 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 202, - "node_type": 44, - "src": { - "id": 203, - "line": 106, - "column": 31, - "start": 3535, - "end": 3543, - "length": 9, - "parent_index": 196 - }, - "scope": 194, - "name": "b", - "type_name": { - "id": 204, - "node_type": 30, - "src": { - "id": 205, - "line": 106, - "column": 31, - "start": 3535, - "end": 3541, - "length": 7, - "parent_index": 202 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 206, - "node_type": 43, - "src": { - "id": 207, - "line": 106, - "column": 65, - "start": 3569, - "end": 3581, - "length": 13, - "parent_index": 194 - }, - "parameters": [ - { - "id": 208, - "node_type": 44, - "src": { - "id": 209, - "line": 106, - "column": 65, - "start": 3569, - "end": 3572, - "length": 4, - "parent_index": 206 - }, - "scope": 194, - "name": "", - "type_name": { - "id": 210, - "node_type": 30, - "src": { - "id": 211, - "line": 106, - "column": 65, - "start": 3569, - "end": 3572, - "length": 4, - "parent_index": 208 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 212, - "node_type": 44, - "src": { - "id": 213, - "line": 106, - "column": 71, - "start": 3575, - "end": 3581, - "length": 7, - "parent_index": 206 - }, - "scope": 194, - "name": "", - "type_name": { - "id": 214, - "node_type": 30, - "src": { - "id": 215, - "line": 106, - "column": 71, - "start": 3575, - "end": 3581, - "length": 7, - "parent_index": 212 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 192, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256", - "type_string": "function(uint256,uint256)" - } - }, - { - "id": 250, - "name": "trySub", - "node_type": 42, - "kind": 41, - "src": { - "id": 251, - "line": 119, - "column": 4, - "start": 3870, - "end": 4058, - "length": 189, - "parent_index": 192 - }, - "body": { - "id": 272, - "node_type": 46, - "kind": 0, - "src": { - "id": 273, - "line": 119, - "column": 80, - "start": 3946, - "end": 4058, - "length": 113, - "parent_index": 250 - }, - "implemented": true, - "statements": [ - { - "id": 274, - "node_type": 59, - "kind": 0, - "src": { - "id": 275, - "line": 120, - "column": 8, - "start": 3956, - "end": 4052, - "length": 97, - "parent_index": 192 - }, - "implemented": false, - "statements": [ - { - "id": 276, - "node_type": 48, - "src": { - "id": 277, - "line": 121, - "column": 0, - "start": 3980, - "end": 4008, - "length": 29, - "parent_index": 274 - }, - "condition": { - "id": 278, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 279, - "line": 121, - "column": 16, - "start": 3984, - "end": 3988, - "length": 5, - "parent_index": 276 - }, - "operator": 7, - "left_expression": { - "id": 280, - "node_type": 16, - "src": { - "id": 281, - "line": 121, - "column": 16, - "start": 3984, - "end": 3984, - "length": 1, - "parent_index": 278 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 280, - "is_pure": false - }, - "right_expression": { - "id": 282, - "node_type": 16, - "src": { - "id": 283, - "line": 121, - "column": 20, - "start": 3988, - "end": 3988, - "length": 1, - "parent_index": 278 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 282, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - "body": { - "id": 284, - "node_type": 46, - "kind": 0, - "src": { - "id": 0, - "line": 0, - "column": 0, - "start": 0, - "end": 0, - "length": 0, - "parent_index": 0 - }, - "implemented": false, - "statements": [] - } - }, - { - "id": 285, - "node_type": 47, - "src": { - "id": 286, - "line": 122, - "column": 12, - "start": 4022, - "end": 4042, - "length": 21, - "parent_index": 250 - }, - "function_return_parameters": 250, - "expression": { - "id": 287, - "node_type": 60, - "src": { - "id": 288, - "line": 122, - "column": 19, - "start": 4029, - "end": 4041, - "length": 13, - "parent_index": 250 - }, - "is_constant": false, - "is_pure": true, - "components": [ - { - "id": 289, - "node_type": 17, - "kind": 61, - "value": "true", - "hex_value": "74727565", - "src": { - "id": 290, - "line": 122, - "column": 20, - "start": 4030, - "end": 4033, - "length": 4, - "parent_index": 287 - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - { - "id": 291, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 292, - "line": 122, - "column": 26, - "start": 4036, - "end": 4040, - "length": 5, - "parent_index": 287 - }, - "operator": 2, - "left_expression": { - "id": 293, - "node_type": 16, - "src": { - "id": 294, - "line": 122, - "column": 26, - "start": 4036, - "end": 4036, - "length": 1, - "parent_index": 291 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 293, - "is_pure": false - }, - "right_expression": { - "id": 295, - "node_type": 16, - "src": { - "id": 296, - "line": 122, - "column": 30, - "start": 4040, - "end": 4040, - "length": 1, - "parent_index": 291 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 295, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - ], - "type_description": { - "type_identifier": "t_tuple_$_t_bool_$_t_uint256$", - "type_string": "tuple(bool,uint256)" - } - } - } - ] - } - ] - }, - "implemented": false, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 252, - "node_type": 43, - "src": { - "id": 253, - "line": 119, - "column": 20, - "start": 3886, - "end": 3905, - "length": 20, - "parent_index": 250 - }, - "parameters": [ - { - "id": 254, - "node_type": 44, - "src": { - "id": 255, - "line": 119, - "column": 20, - "start": 3886, - "end": 3894, - "length": 9, - "parent_index": 252 - }, - "scope": 250, - "name": "a", - "type_name": { - "id": 256, - "node_type": 30, - "src": { - "id": 257, - "line": 119, - "column": 20, - "start": 3886, - "end": 3892, - "length": 7, - "parent_index": 254 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 258, - "node_type": 44, - "src": { - "id": 259, - "line": 119, - "column": 31, - "start": 3897, - "end": 3905, - "length": 9, - "parent_index": 252 - }, - "scope": 250, - "name": "b", - "type_name": { - "id": 260, - "node_type": 30, - "src": { - "id": 261, - "line": 119, - "column": 31, - "start": 3897, - "end": 3903, - "length": 7, - "parent_index": 258 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 262, - "node_type": 43, - "src": { - "id": 263, - "line": 119, - "column": 65, - "start": 3931, - "end": 3943, - "length": 13, - "parent_index": 250 - }, - "parameters": [ - { - "id": 264, - "node_type": 44, - "src": { - "id": 265, - "line": 119, - "column": 65, - "start": 3931, - "end": 3934, - "length": 4, - "parent_index": 262 - }, - "scope": 250, - "name": "", - "type_name": { - "id": 266, - "node_type": 30, - "src": { - "id": 267, - "line": 119, - "column": 65, - "start": 3931, - "end": 3934, - "length": 4, - "parent_index": 264 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 268, - "node_type": 44, - "src": { - "id": 269, - "line": 119, - "column": 71, - "start": 3937, - "end": 3943, - "length": 7, - "parent_index": 262 - }, - "scope": 250, - "name": "", - "type_name": { - "id": 270, - "node_type": 30, - "src": { - "id": 271, - "line": 119, - "column": 71, - "start": 3937, - "end": 3943, - "length": 7, - "parent_index": 268 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 192, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256", - "type_string": "function(uint256,uint256)" - } - }, - { - "id": 298, - "name": "tryMul", - "node_type": 42, - "kind": 41, - "src": { - "id": 299, - "line": 131, - "column": 4, - "start": 4207, - "end": 4699, - "length": 493, - "parent_index": 192 - }, - "body": { - "id": 320, - "node_type": 46, - "kind": 0, - "src": { - "id": 321, - "line": 131, - "column": 80, - "start": 4283, - "end": 4699, - "length": 417, - "parent_index": 298 - }, - "implemented": true, - "statements": [ - { - "id": 322, - "node_type": 59, - "kind": 0, - "src": { - "id": 323, - "line": 132, - "column": 8, - "start": 4293, - "end": 4693, - "length": 401, - "parent_index": 192 - }, - "implemented": false, - "statements": [ - { - "id": 324, - "node_type": 48, - "src": { - "id": 325, - "line": 136, - "column": 0, - "start": 4547, - "end": 4575, - "length": 29, - "parent_index": 322 - }, - "condition": { - "id": 326, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 327, - "line": 136, - "column": 16, - "start": 4551, - "end": 4556, - "length": 6, - "parent_index": 324 - }, - "operator": 11, - "left_expression": { - "id": 328, - "node_type": 16, - "src": { - "id": 329, - "line": 136, - "column": 16, - "start": 4551, - "end": 4551, - "length": 1, - "parent_index": 326 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 328, - "is_pure": false - }, - "right_expression": { - "id": 330, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 331, - "line": 136, - "column": 21, - "start": 4556, - "end": 4556, - "length": 1, - "parent_index": 326 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - "body": { - "id": 332, - "node_type": 46, - "kind": 0, - "src": { - "id": 0, - "line": 0, - "column": 0, - "start": 0, - "end": 0, - "length": 0, - "parent_index": 0 - }, - "implemented": false, - "statements": [] - } - }, - { - "id": 333, - "node_type": 44, - "src": { - "id": 334, - "line": 137, - "column": 12, - "start": 4589, - "end": 4606, - "length": 18, - "parent_index": 322 - }, - "assignments": [ - 335 - ], - "declarations": [ - { - "is_constant": false, - "id": 335, - "state_mutability": 1, - "name": "c", - "node_type": 44, - "scope": 322, - "src": { - "id": 336, - "line": 137, - "column": 12, - "start": 4589, - "end": 4597, - "length": 9, - "parent_index": 333 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 337, - "node_type": 30, - "src": { - "id": 338, - "line": 137, - "column": 12, - "start": 4589, - "end": 4595, - "length": 7, - "parent_index": 335 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 339, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 340, - "line": 137, - "column": 24, - "start": 4601, - "end": 4605, - "length": 5, - "parent_index": 333 - }, - "operator": 3, - "left_expression": { - "id": 341, - "node_type": 16, - "src": { - "id": 342, - "line": 137, - "column": 24, - "start": 4601, - "end": 4601, - "length": 1, - "parent_index": 339 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 341, - "is_pure": false - }, - "right_expression": { - "id": 343, - "node_type": 16, - "src": { - "id": 344, - "line": 137, - "column": 28, - "start": 4605, - "end": 4605, - "length": 1, - "parent_index": 339 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 343, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - }, - { - "id": 345, - "node_type": 48, - "src": { - "id": 346, - "line": 138, - "column": 0, - "start": 4620, - "end": 4653, - "length": 34, - "parent_index": 322 - }, - "condition": { - "id": 347, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 348, - "line": 138, - "column": 16, - "start": 4624, - "end": 4633, - "length": 10, - "parent_index": 345 - }, - "operator": 12, - "left_expression": { - "id": 349, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 350, - "line": 138, - "column": 16, - "start": 4624, - "end": 4628, - "length": 5, - "parent_index": 347 - }, - "operator": 4, - "left_expression": { - "id": 351, - "node_type": 16, - "src": { - "id": 352, - "line": 138, - "column": 16, - "start": 4624, - "end": 4624, - "length": 1, - "parent_index": 349 - }, - "name": "c", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 333, - "is_pure": false - }, - "right_expression": { - "id": 353, - "node_type": 16, - "src": { - "id": 354, - "line": 138, - "column": 20, - "start": 4628, - "end": 4628, - "length": 1, - "parent_index": 349 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 353, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - }, - "right_expression": { - "id": 355, - "node_type": 16, - "src": { - "id": 356, - "line": 138, - "column": 25, - "start": 4633, - "end": 4633, - "length": 1, - "parent_index": 347 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 355, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - "body": { - "id": 357, - "node_type": 46, - "kind": 0, - "src": { - "id": 0, - "line": 0, - "column": 0, - "start": 0, - "end": 0, - "length": 0, - "parent_index": 0 - }, - "implemented": false, - "statements": [] - } - }, - { - "id": 358, - "node_type": 47, - "src": { - "id": 359, - "line": 139, - "column": 12, - "start": 4667, - "end": 4683, - "length": 17, - "parent_index": 298 - }, - "function_return_parameters": 298, - "expression": { - "id": 360, - "node_type": 60, - "src": { - "id": 361, - "line": 139, - "column": 19, - "start": 4674, - "end": 4682, - "length": 9, - "parent_index": 298 - }, - "is_constant": false, - "is_pure": true, - "components": [ - { - "id": 362, - "node_type": 17, - "kind": 61, - "value": "true", - "hex_value": "74727565", - "src": { - "id": 363, - "line": 139, - "column": 20, - "start": 4675, - "end": 4678, - "length": 4, - "parent_index": 360 - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - { - "id": 364, - "node_type": 16, - "src": { - "id": 365, - "line": 139, - "column": 26, - "start": 4681, - "end": 4681, - "length": 1, - "parent_index": 360 - }, - "name": "c", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 333, - "is_pure": false - } - ], - "type_description": { - "type_identifier": "t_tuple_$_t_bool_$_t_uint256$", - "type_string": "tuple(bool,uint256)" - } - } - } - ] - } - ] - }, - "implemented": false, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 300, - "node_type": 43, - "src": { - "id": 301, - "line": 131, - "column": 20, - "start": 4223, - "end": 4242, - "length": 20, - "parent_index": 298 - }, - "parameters": [ - { - "id": 302, - "node_type": 44, - "src": { - "id": 303, - "line": 131, - "column": 20, - "start": 4223, - "end": 4231, - "length": 9, - "parent_index": 300 - }, - "scope": 298, - "name": "a", - "type_name": { - "id": 304, - "node_type": 30, - "src": { - "id": 305, - "line": 131, - "column": 20, - "start": 4223, - "end": 4229, - "length": 7, - "parent_index": 302 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 306, - "node_type": 44, - "src": { - "id": 307, - "line": 131, - "column": 31, - "start": 4234, - "end": 4242, - "length": 9, - "parent_index": 300 - }, - "scope": 298, - "name": "b", - "type_name": { - "id": 308, - "node_type": 30, - "src": { - "id": 309, - "line": 131, - "column": 31, - "start": 4234, - "end": 4240, - "length": 7, - "parent_index": 306 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 310, - "node_type": 43, - "src": { - "id": 311, - "line": 131, - "column": 65, - "start": 4268, - "end": 4280, - "length": 13, - "parent_index": 298 - }, - "parameters": [ - { - "id": 312, - "node_type": 44, - "src": { - "id": 313, - "line": 131, - "column": 65, - "start": 4268, - "end": 4271, - "length": 4, - "parent_index": 310 - }, - "scope": 298, - "name": "", - "type_name": { - "id": 314, - "node_type": 30, - "src": { - "id": 315, - "line": 131, - "column": 65, - "start": 4268, - "end": 4271, - "length": 4, - "parent_index": 312 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 316, - "node_type": 44, - "src": { - "id": 317, - "line": 131, - "column": 71, - "start": 4274, - "end": 4280, - "length": 7, - "parent_index": 310 - }, - "scope": 298, - "name": "", - "type_name": { - "id": 318, - "node_type": 30, - "src": { - "id": 319, - "line": 131, - "column": 71, - "start": 4274, - "end": 4280, - "length": 7, - "parent_index": 316 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 192, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256", - "type_string": "function(uint256,uint256)" - } - }, - { - "id": 367, - "name": "tryDiv", - "node_type": 42, - "kind": 41, - "src": { - "id": 368, - "line": 148, - "column": 4, - "start": 4849, - "end": 5038, - "length": 190, - "parent_index": 192 - }, - "body": { - "id": 389, - "node_type": 46, - "kind": 0, - "src": { - "id": 390, - "line": 148, - "column": 80, - "start": 4925, - "end": 5038, - "length": 114, - "parent_index": 367 - }, - "implemented": true, - "statements": [ - { - "id": 391, - "node_type": 59, - "kind": 0, - "src": { - "id": 392, - "line": 149, - "column": 8, - "start": 4935, - "end": 5032, - "length": 98, - "parent_index": 192 - }, - "implemented": false, - "statements": [ - { - "id": 393, - "node_type": 48, - "src": { - "id": 394, - "line": 150, - "column": 0, - "start": 4959, - "end": 4988, - "length": 30, - "parent_index": 391 - }, - "condition": { - "id": 395, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 396, - "line": 150, - "column": 16, - "start": 4963, - "end": 4968, - "length": 6, - "parent_index": 393 - }, - "operator": 11, - "left_expression": { - "id": 397, - "node_type": 16, - "src": { - "id": 398, - "line": 150, - "column": 16, - "start": 4963, - "end": 4963, - "length": 1, - "parent_index": 395 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 397, - "is_pure": false - }, - "right_expression": { - "id": 399, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 400, - "line": 150, - "column": 21, - "start": 4968, - "end": 4968, - "length": 1, - "parent_index": 395 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - "body": { - "id": 401, - "node_type": 46, - "kind": 0, - "src": { - "id": 0, - "line": 0, - "column": 0, - "start": 0, - "end": 0, - "length": 0, - "parent_index": 0 - }, - "implemented": false, - "statements": [] - } - }, - { - "id": 402, - "node_type": 47, - "src": { - "id": 403, - "line": 151, - "column": 12, - "start": 5002, - "end": 5022, - "length": 21, - "parent_index": 367 - }, - "function_return_parameters": 367, - "expression": { - "id": 404, - "node_type": 60, - "src": { - "id": 405, - "line": 151, - "column": 19, - "start": 5009, - "end": 5021, - "length": 13, - "parent_index": 367 - }, - "is_constant": false, - "is_pure": true, - "components": [ - { - "id": 406, - "node_type": 17, - "kind": 61, - "value": "true", - "hex_value": "74727565", - "src": { - "id": 407, - "line": 151, - "column": 20, - "start": 5010, - "end": 5013, - "length": 4, - "parent_index": 404 - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - { - "id": 408, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 409, - "line": 151, - "column": 26, - "start": 5016, - "end": 5020, - "length": 5, - "parent_index": 404 - }, - "operator": 4, - "left_expression": { - "id": 410, - "node_type": 16, - "src": { - "id": 411, - "line": 151, - "column": 26, - "start": 5016, - "end": 5016, - "length": 1, - "parent_index": 408 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 410, - "is_pure": false - }, - "right_expression": { - "id": 412, - "node_type": 16, - "src": { - "id": 413, - "line": 151, - "column": 30, - "start": 5020, - "end": 5020, - "length": 1, - "parent_index": 408 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 412, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - ], - "type_description": { - "type_identifier": "t_tuple_$_t_bool_$_t_uint256$", - "type_string": "tuple(bool,uint256)" - } - } - } - ] - } - ] - }, - "implemented": false, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 369, - "node_type": 43, - "src": { - "id": 370, - "line": 148, - "column": 20, - "start": 4865, - "end": 4884, - "length": 20, - "parent_index": 367 - }, - "parameters": [ - { - "id": 371, - "node_type": 44, - "src": { - "id": 372, - "line": 148, - "column": 20, - "start": 4865, - "end": 4873, - "length": 9, - "parent_index": 369 - }, - "scope": 367, - "name": "a", - "type_name": { - "id": 373, - "node_type": 30, - "src": { - "id": 374, - "line": 148, - "column": 20, - "start": 4865, - "end": 4871, - "length": 7, - "parent_index": 371 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 375, - "node_type": 44, - "src": { - "id": 376, - "line": 148, - "column": 31, - "start": 4876, - "end": 4884, - "length": 9, - "parent_index": 369 - }, - "scope": 367, - "name": "b", - "type_name": { - "id": 377, - "node_type": 30, - "src": { - "id": 378, - "line": 148, - "column": 31, - "start": 4876, - "end": 4882, - "length": 7, - "parent_index": 375 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 379, - "node_type": 43, - "src": { - "id": 380, - "line": 148, - "column": 65, - "start": 4910, - "end": 4922, - "length": 13, - "parent_index": 367 - }, - "parameters": [ - { - "id": 381, - "node_type": 44, - "src": { - "id": 382, - "line": 148, - "column": 65, - "start": 4910, - "end": 4913, - "length": 4, - "parent_index": 379 - }, - "scope": 367, - "name": "", - "type_name": { - "id": 383, - "node_type": 30, - "src": { - "id": 384, - "line": 148, - "column": 65, - "start": 4910, - "end": 4913, - "length": 4, - "parent_index": 381 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 385, - "node_type": 44, - "src": { - "id": 386, - "line": 148, - "column": 71, - "start": 4916, - "end": 4922, - "length": 7, - "parent_index": 379 - }, - "scope": 367, - "name": "", - "type_name": { - "id": 387, - "node_type": 30, - "src": { - "id": 388, - "line": 148, - "column": 71, - "start": 4916, - "end": 4922, - "length": 7, - "parent_index": 385 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 192, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256", - "type_string": "function(uint256,uint256)" - } - }, - { - "id": 415, - "name": "tryMod", - "node_type": 42, - "kind": 41, - "src": { - "id": 416, - "line": 160, - "column": 4, - "start": 5198, - "end": 5387, - "length": 190, - "parent_index": 192 - }, - "body": { - "id": 437, - "node_type": 46, - "kind": 0, - "src": { - "id": 438, - "line": 160, - "column": 80, - "start": 5274, - "end": 5387, - "length": 114, - "parent_index": 415 - }, - "implemented": true, - "statements": [ - { - "id": 439, - "node_type": 59, - "kind": 0, - "src": { - "id": 440, - "line": 161, - "column": 8, - "start": 5284, - "end": 5381, - "length": 98, - "parent_index": 192 - }, - "implemented": false, - "statements": [ - { - "id": 441, - "node_type": 48, - "src": { - "id": 442, - "line": 162, - "column": 0, - "start": 5308, - "end": 5337, - "length": 30, - "parent_index": 439 - }, - "condition": { - "id": 443, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 444, - "line": 162, - "column": 16, - "start": 5312, - "end": 5317, - "length": 6, - "parent_index": 441 - }, - "operator": 11, - "left_expression": { - "id": 445, - "node_type": 16, - "src": { - "id": 446, - "line": 162, - "column": 16, - "start": 5312, - "end": 5312, - "length": 1, - "parent_index": 443 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 445, - "is_pure": false - }, - "right_expression": { - "id": 447, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 448, - "line": 162, - "column": 21, - "start": 5317, - "end": 5317, - "length": 1, - "parent_index": 443 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - "body": { - "id": 449, - "node_type": 46, - "kind": 0, - "src": { - "id": 0, - "line": 0, - "column": 0, - "start": 0, - "end": 0, - "length": 0, - "parent_index": 0 - }, - "implemented": false, - "statements": [] - } - }, - { - "id": 450, - "node_type": 47, - "src": { - "id": 451, - "line": 163, - "column": 12, - "start": 5351, - "end": 5371, - "length": 21, - "parent_index": 415 - }, - "function_return_parameters": 415, - "expression": { - "id": 452, - "node_type": 60, - "src": { - "id": 453, - "line": 163, - "column": 19, - "start": 5358, - "end": 5370, - "length": 13, - "parent_index": 415 - }, - "is_constant": false, - "is_pure": true, - "components": [ - { - "id": 454, - "node_type": 17, - "kind": 61, - "value": "true", - "hex_value": "74727565", - "src": { - "id": 455, - "line": 163, - "column": 20, - "start": 5359, - "end": 5362, - "length": 4, - "parent_index": 452 - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - { - "id": 456, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 457, - "line": 163, - "column": 26, - "start": 5365, - "end": 5369, - "length": 5, - "parent_index": 452 - }, - "operator": 5, - "left_expression": { - "id": 458, - "node_type": 16, - "src": { - "id": 459, - "line": 163, - "column": 26, - "start": 5365, - "end": 5365, - "length": 1, - "parent_index": 456 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 458, - "is_pure": false - }, - "right_expression": { - "id": 460, - "node_type": 16, - "src": { - "id": 461, - "line": 163, - "column": 30, - "start": 5369, - "end": 5369, - "length": 1, - "parent_index": 456 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 460, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - ], - "type_description": { - "type_identifier": "t_tuple_$_t_bool_$_t_uint256$", - "type_string": "tuple(bool,uint256)" - } - } - } - ] - } - ] - }, - "implemented": false, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 417, - "node_type": 43, - "src": { - "id": 418, - "line": 160, - "column": 20, - "start": 5214, - "end": 5233, - "length": 20, - "parent_index": 415 - }, - "parameters": [ - { - "id": 419, - "node_type": 44, - "src": { - "id": 420, - "line": 160, - "column": 20, - "start": 5214, - "end": 5222, - "length": 9, - "parent_index": 417 - }, - "scope": 415, - "name": "a", - "type_name": { - "id": 421, - "node_type": 30, - "src": { - "id": 422, - "line": 160, - "column": 20, - "start": 5214, - "end": 5220, - "length": 7, - "parent_index": 419 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 423, - "node_type": 44, - "src": { - "id": 424, - "line": 160, - "column": 31, - "start": 5225, - "end": 5233, - "length": 9, - "parent_index": 417 - }, - "scope": 415, - "name": "b", - "type_name": { - "id": 425, - "node_type": 30, - "src": { - "id": 426, - "line": 160, - "column": 31, - "start": 5225, - "end": 5231, - "length": 7, - "parent_index": 423 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 427, - "node_type": 43, - "src": { - "id": 428, - "line": 160, - "column": 65, - "start": 5259, - "end": 5271, - "length": 13, - "parent_index": 415 - }, - "parameters": [ - { - "id": 429, - "node_type": 44, - "src": { - "id": 430, - "line": 160, - "column": 65, - "start": 5259, - "end": 5262, - "length": 4, - "parent_index": 427 - }, - "scope": 415, - "name": "", - "type_name": { - "id": 431, - "node_type": 30, - "src": { - "id": 432, - "line": 160, - "column": 65, - "start": 5259, - "end": 5262, - "length": 4, - "parent_index": 429 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 433, - "node_type": 44, - "src": { - "id": 434, - "line": 160, - "column": 71, - "start": 5265, - "end": 5271, - "length": 7, - "parent_index": 427 - }, - "scope": 415, - "name": "", - "type_name": { - "id": 435, - "node_type": 30, - "src": { - "id": 436, - "line": 160, - "column": 71, - "start": 5265, - "end": 5271, - "length": 7, - "parent_index": 433 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 192, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256", - "type_string": "function(uint256,uint256)" - } - }, - { - "id": 463, - "name": "add", - "node_type": 42, - "kind": 41, - "src": { - "id": 464, - "line": 177, - "column": 4, - "start": 5623, - "end": 5718, - "length": 96, - "parent_index": 192 - }, - "body": { - "id": 481, - "node_type": 46, - "kind": 0, - "src": { - "id": 482, - "line": 177, - "column": 71, - "start": 5690, - "end": 5718, - "length": 29, - "parent_index": 463 - }, - "implemented": true, - "statements": [ - { - "id": 483, - "node_type": 47, - "src": { - "id": 484, - "line": 178, - "column": 8, - "start": 5700, - "end": 5712, - "length": 13, - "parent_index": 463 - }, - "function_return_parameters": 463, - "expression": { - "id": 485, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 486, - "line": 178, - "column": 15, - "start": 5707, - "end": 5711, - "length": 5, - "parent_index": 481 - }, - "operator": 1, - "left_expression": { - "id": 487, - "node_type": 16, - "src": { - "id": 488, - "line": 178, - "column": 15, - "start": 5707, - "end": 5707, - "length": 1, - "parent_index": 485 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 487, - "is_pure": false - }, - "right_expression": { - "id": 489, - "node_type": 16, - "src": { - "id": 490, - "line": 178, - "column": 19, - "start": 5711, - "end": 5711, - "length": 1, - "parent_index": 485 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 489, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 465, - "node_type": 43, - "src": { - "id": 466, - "line": 177, - "column": 17, - "start": 5636, - "end": 5655, - "length": 20, - "parent_index": 463 - }, - "parameters": [ - { - "id": 467, - "node_type": 44, - "src": { - "id": 468, - "line": 177, - "column": 17, - "start": 5636, - "end": 5644, - "length": 9, - "parent_index": 465 - }, - "scope": 463, - "name": "a", - "type_name": { - "id": 469, - "node_type": 30, - "src": { - "id": 470, - "line": 177, - "column": 17, - "start": 5636, - "end": 5642, - "length": 7, - "parent_index": 467 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 471, - "node_type": 44, - "src": { - "id": 472, - "line": 177, - "column": 28, - "start": 5647, - "end": 5655, - "length": 9, - "parent_index": 465 - }, - "scope": 463, - "name": "b", - "type_name": { - "id": 473, - "node_type": 30, - "src": { - "id": 474, - "line": 177, - "column": 28, - "start": 5647, - "end": 5653, - "length": 7, - "parent_index": 471 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 475, - "node_type": 43, - "src": { - "id": 476, - "line": 177, - "column": 62, - "start": 5681, - "end": 5687, - "length": 7, - "parent_index": 463 - }, - "parameters": [ - { - "id": 477, - "node_type": 44, - "src": { - "id": 478, - "line": 177, - "column": 62, - "start": 5681, - "end": 5687, - "length": 7, - "parent_index": 475 - }, - "scope": 463, - "name": "", - "type_name": { - "id": 479, - "node_type": 30, - "src": { - "id": 480, - "line": 177, - "column": 62, - "start": 5681, - "end": 5687, - "length": 7, - "parent_index": 477 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 192, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256", - "type_string": "function(uint256,uint256)" - } - }, - { - "id": 492, - "name": "sub", - "node_type": 42, - "kind": 41, - "src": { - "id": 493, - "line": 191, - "column": 4, - "start": 5990, - "end": 6085, - "length": 96, - "parent_index": 192 - }, - "body": { - "id": 510, - "node_type": 46, - "kind": 0, - "src": { - "id": 511, - "line": 191, - "column": 71, - "start": 6057, - "end": 6085, - "length": 29, - "parent_index": 492 - }, - "implemented": true, - "statements": [ - { - "id": 512, - "node_type": 47, - "src": { - "id": 513, - "line": 192, - "column": 8, - "start": 6067, - "end": 6079, - "length": 13, - "parent_index": 492 - }, - "function_return_parameters": 492, - "expression": { - "id": 514, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 515, - "line": 192, - "column": 15, - "start": 6074, - "end": 6078, - "length": 5, - "parent_index": 510 - }, - "operator": 2, - "left_expression": { - "id": 516, - "node_type": 16, - "src": { - "id": 517, - "line": 192, - "column": 15, - "start": 6074, - "end": 6074, - "length": 1, - "parent_index": 514 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 516, - "is_pure": false - }, - "right_expression": { - "id": 518, - "node_type": 16, - "src": { - "id": 519, - "line": 192, - "column": 19, - "start": 6078, - "end": 6078, - "length": 1, - "parent_index": 514 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 518, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 494, - "node_type": 43, - "src": { - "id": 495, - "line": 191, - "column": 17, - "start": 6003, - "end": 6022, - "length": 20, - "parent_index": 492 - }, - "parameters": [ - { - "id": 496, - "node_type": 44, - "src": { - "id": 497, - "line": 191, - "column": 17, - "start": 6003, - "end": 6011, - "length": 9, - "parent_index": 494 - }, - "scope": 492, - "name": "a", - "type_name": { - "id": 498, - "node_type": 30, - "src": { - "id": 499, - "line": 191, - "column": 17, - "start": 6003, - "end": 6009, - "length": 7, - "parent_index": 496 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 500, - "node_type": 44, - "src": { - "id": 501, - "line": 191, - "column": 28, - "start": 6014, - "end": 6022, - "length": 9, - "parent_index": 494 - }, - "scope": 492, - "name": "b", - "type_name": { - "id": 502, - "node_type": 30, - "src": { - "id": 503, - "line": 191, - "column": 28, - "start": 6014, - "end": 6020, - "length": 7, - "parent_index": 500 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 504, - "node_type": 43, - "src": { - "id": 505, - "line": 191, - "column": 62, - "start": 6048, - "end": 6054, - "length": 7, - "parent_index": 492 - }, - "parameters": [ - { - "id": 506, - "node_type": 44, - "src": { - "id": 507, - "line": 191, - "column": 62, - "start": 6048, - "end": 6054, - "length": 7, - "parent_index": 504 - }, - "scope": 492, - "name": "", - "type_name": { - "id": 508, - "node_type": 30, - "src": { - "id": 509, - "line": 191, - "column": 62, - "start": 6048, - "end": 6054, - "length": 7, - "parent_index": 506 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 192, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256", - "type_string": "function(uint256,uint256)" - } - }, - { - "id": 521, - "name": "mul", - "node_type": 42, - "kind": 41, - "src": { - "id": 522, - "line": 205, - "column": 4, - "start": 6333, - "end": 6428, - "length": 96, - "parent_index": 192 - }, - "body": { - "id": 539, - "node_type": 46, - "kind": 0, - "src": { - "id": 540, - "line": 205, - "column": 71, - "start": 6400, - "end": 6428, - "length": 29, - "parent_index": 521 - }, - "implemented": true, - "statements": [ - { - "id": 541, - "node_type": 47, - "src": { - "id": 542, - "line": 206, - "column": 8, - "start": 6410, - "end": 6422, - "length": 13, - "parent_index": 521 - }, - "function_return_parameters": 521, - "expression": { - "id": 543, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 544, - "line": 206, - "column": 15, - "start": 6417, - "end": 6421, - "length": 5, - "parent_index": 539 - }, - "operator": 3, - "left_expression": { - "id": 545, - "node_type": 16, - "src": { - "id": 546, - "line": 206, - "column": 15, - "start": 6417, - "end": 6417, - "length": 1, - "parent_index": 543 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 545, - "is_pure": false - }, - "right_expression": { - "id": 547, - "node_type": 16, - "src": { - "id": 548, - "line": 206, - "column": 19, - "start": 6421, - "end": 6421, - "length": 1, - "parent_index": 543 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 547, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 523, - "node_type": 43, - "src": { - "id": 524, - "line": 205, - "column": 17, - "start": 6346, - "end": 6365, - "length": 20, - "parent_index": 521 - }, - "parameters": [ - { - "id": 525, - "node_type": 44, - "src": { - "id": 526, - "line": 205, - "column": 17, - "start": 6346, - "end": 6354, - "length": 9, - "parent_index": 523 - }, - "scope": 521, - "name": "a", - "type_name": { - "id": 527, - "node_type": 30, - "src": { - "id": 528, - "line": 205, - "column": 17, - "start": 6346, - "end": 6352, - "length": 7, - "parent_index": 525 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 529, - "node_type": 44, - "src": { - "id": 530, - "line": 205, - "column": 28, - "start": 6357, - "end": 6365, - "length": 9, - "parent_index": 523 - }, - "scope": 521, - "name": "b", - "type_name": { - "id": 531, - "node_type": 30, - "src": { - "id": 532, - "line": 205, - "column": 28, - "start": 6357, - "end": 6363, - "length": 7, - "parent_index": 529 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 533, - "node_type": 43, - "src": { - "id": 534, - "line": 205, - "column": 62, - "start": 6391, - "end": 6397, - "length": 7, - "parent_index": 521 - }, - "parameters": [ - { - "id": 535, - "node_type": 44, - "src": { - "id": 536, - "line": 205, - "column": 62, - "start": 6391, - "end": 6397, - "length": 7, - "parent_index": 533 - }, - "scope": 521, - "name": "", - "type_name": { - "id": 537, - "node_type": 30, - "src": { - "id": 538, - "line": 205, - "column": 62, - "start": 6391, - "end": 6397, - "length": 7, - "parent_index": 535 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 192, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256", - "type_string": "function(uint256,uint256)" - } - }, - { - "id": 550, - "name": "div", - "node_type": 42, - "kind": 41, - "src": { - "id": 551, - "line": 221, - "column": 4, - "start": 6893, - "end": 6988, - "length": 96, - "parent_index": 192 - }, - "body": { - "id": 568, - "node_type": 46, - "kind": 0, - "src": { - "id": 569, - "line": 221, - "column": 71, - "start": 6960, - "end": 6988, - "length": 29, - "parent_index": 550 - }, - "implemented": true, - "statements": [ - { - "id": 570, - "node_type": 47, - "src": { - "id": 571, - "line": 222, - "column": 8, - "start": 6970, - "end": 6982, - "length": 13, - "parent_index": 550 - }, - "function_return_parameters": 550, - "expression": { - "id": 572, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 573, - "line": 222, - "column": 15, - "start": 6977, - "end": 6981, - "length": 5, - "parent_index": 568 - }, - "operator": 4, - "left_expression": { - "id": 574, - "node_type": 16, - "src": { - "id": 575, - "line": 222, - "column": 15, - "start": 6977, - "end": 6977, - "length": 1, - "parent_index": 572 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 574, - "is_pure": false - }, - "right_expression": { - "id": 576, - "node_type": 16, - "src": { - "id": 577, - "line": 222, - "column": 19, - "start": 6981, - "end": 6981, - "length": 1, - "parent_index": 572 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 576, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 552, - "node_type": 43, - "src": { - "id": 553, - "line": 221, - "column": 17, - "start": 6906, - "end": 6925, - "length": 20, - "parent_index": 550 - }, - "parameters": [ - { - "id": 554, - "node_type": 44, - "src": { - "id": 555, - "line": 221, - "column": 17, - "start": 6906, - "end": 6914, - "length": 9, - "parent_index": 552 - }, - "scope": 550, - "name": "a", - "type_name": { - "id": 556, - "node_type": 30, - "src": { - "id": 557, - "line": 221, - "column": 17, - "start": 6906, - "end": 6912, - "length": 7, - "parent_index": 554 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 558, - "node_type": 44, - "src": { - "id": 559, - "line": 221, - "column": 28, - "start": 6917, - "end": 6925, - "length": 9, - "parent_index": 552 - }, - "scope": 550, - "name": "b", - "type_name": { - "id": 560, - "node_type": 30, - "src": { - "id": 561, - "line": 221, - "column": 28, - "start": 6917, - "end": 6923, - "length": 7, - "parent_index": 558 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 562, - "node_type": 43, - "src": { - "id": 563, - "line": 221, - "column": 62, - "start": 6951, - "end": 6957, - "length": 7, - "parent_index": 550 - }, - "parameters": [ - { - "id": 564, - "node_type": 44, - "src": { - "id": 565, - "line": 221, - "column": 62, - "start": 6951, - "end": 6957, - "length": 7, - "parent_index": 562 - }, - "scope": 550, - "name": "", - "type_name": { - "id": 566, - "node_type": 30, - "src": { - "id": 567, - "line": 221, - "column": 62, - "start": 6951, - "end": 6957, - "length": 7, - "parent_index": 564 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 192, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256", - "type_string": "function(uint256,uint256)" - } - }, - { - "id": 579, - "name": "mod", - "node_type": 42, - "kind": 41, - "src": { - "id": 580, - "line": 237, - "column": 4, - "start": 7442, - "end": 7537, - "length": 96, - "parent_index": 192 - }, - "body": { - "id": 597, - "node_type": 46, - "kind": 0, - "src": { - "id": 598, - "line": 237, - "column": 71, - "start": 7509, - "end": 7537, - "length": 29, - "parent_index": 579 - }, - "implemented": true, - "statements": [ - { - "id": 599, - "node_type": 47, - "src": { - "id": 600, - "line": 238, - "column": 8, - "start": 7519, - "end": 7531, - "length": 13, - "parent_index": 579 - }, - "function_return_parameters": 579, - "expression": { - "id": 601, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 602, - "line": 238, - "column": 15, - "start": 7526, - "end": 7530, - "length": 5, - "parent_index": 597 - }, - "operator": 5, - "left_expression": { - "id": 603, - "node_type": 16, - "src": { - "id": 604, - "line": 238, - "column": 15, - "start": 7526, - "end": 7526, - "length": 1, - "parent_index": 601 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 603, - "is_pure": false - }, - "right_expression": { - "id": 605, - "node_type": 16, - "src": { - "id": 606, - "line": 238, - "column": 19, - "start": 7530, - "end": 7530, - "length": 1, - "parent_index": 601 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 605, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 581, - "node_type": 43, - "src": { - "id": 582, - "line": 237, - "column": 17, - "start": 7455, - "end": 7474, - "length": 20, - "parent_index": 579 - }, - "parameters": [ - { - "id": 583, - "node_type": 44, - "src": { - "id": 584, - "line": 237, - "column": 17, - "start": 7455, - "end": 7463, - "length": 9, - "parent_index": 581 - }, - "scope": 579, - "name": "a", - "type_name": { - "id": 585, - "node_type": 30, - "src": { - "id": 586, - "line": 237, - "column": 17, - "start": 7455, - "end": 7461, - "length": 7, - "parent_index": 583 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 587, - "node_type": 44, - "src": { - "id": 588, - "line": 237, - "column": 28, - "start": 7466, - "end": 7474, - "length": 9, - "parent_index": 581 - }, - "scope": 579, - "name": "b", - "type_name": { - "id": 589, - "node_type": 30, - "src": { - "id": 590, - "line": 237, - "column": 28, - "start": 7466, - "end": 7472, - "length": 7, - "parent_index": 587 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 591, - "node_type": 43, - "src": { - "id": 592, - "line": 237, - "column": 62, - "start": 7500, - "end": 7506, - "length": 7, - "parent_index": 579 - }, - "parameters": [ - { - "id": 593, - "node_type": 44, - "src": { - "id": 594, - "line": 237, - "column": 62, - "start": 7500, - "end": 7506, - "length": 7, - "parent_index": 591 - }, - "scope": 579, - "name": "", - "type_name": { - "id": 595, - "node_type": 30, - "src": { - "id": 596, - "line": 237, - "column": 62, - "start": 7500, - "end": 7506, - "length": 7, - "parent_index": 593 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 192, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256", - "type_string": "function(uint256,uint256)" - } - }, - { - "id": 608, - "name": "sub", - "node_type": 42, - "kind": 41, - "src": { - "id": 609, - "line": 254, - "column": 4, - "start": 8002, - "end": 8232, - "length": 231, - "parent_index": 192 - }, - "body": { - "id": 630, - "node_type": 46, - "kind": 0, - "src": { - "id": 631, - "line": 258, - "column": 38, - "start": 8127, - "end": 8232, - "length": 106, - "parent_index": 608 - }, - "implemented": true, - "statements": [ - { - "id": 632, - "node_type": 59, - "kind": 0, - "src": { - "id": 633, - "line": 259, - "column": 8, - "start": 8137, - "end": 8226, - "length": 90, - "parent_index": 192 - }, - "implemented": false, - "statements": [ - { - "id": 634, - "node_type": 24, - "kind": 24, - "src": { - "id": 635, - "line": 260, - "column": 12, - "start": 8161, - "end": 8189, - "length": 29, - "parent_index": 632 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ], - "arguments": [ - { - "id": 636, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 637, - "line": 260, - "column": 20, - "start": 8169, - "end": 8174, - "length": 6, - "parent_index": 634 - }, - "operator": 10, - "left_expression": { - "id": 638, - "node_type": 16, - "src": { - "id": 639, - "line": 260, - "column": 20, - "start": 8169, - "end": 8169, - "length": 1, - "parent_index": 636 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 638, - "is_pure": false - }, - "right_expression": { - "id": 640, - "node_type": 16, - "src": { - "id": 641, - "line": 260, - "column": 25, - "start": 8174, - "end": 8174, - "length": 1, - "parent_index": 636 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 640, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 642, - "node_type": 16, - "src": { - "id": 643, - "line": 260, - "column": 28, - "start": 8177, - "end": 8188, - "length": 12, - "parent_index": 634 - }, - "name": "errorMessage", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "overloaded_declarations": [], - "referenced_declaration": 642, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 644, - "node_type": 16, - "src": { - "id": 645, - "line": 260, - "column": 12, - "start": 8161, - "end": 8167, - "length": 7, - "parent_index": 634 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string", - "type_string": "function(bool,string)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string$", - "type_string": "function(bool,string)" - } - }, - { - "id": 646, - "node_type": 47, - "src": { - "id": 647, - "line": 261, - "column": 12, - "start": 8204, - "end": 8216, - "length": 13, - "parent_index": 608 - }, - "function_return_parameters": 608, - "expression": { - "id": 648, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 649, - "line": 261, - "column": 19, - "start": 8211, - "end": 8215, - "length": 5, - "parent_index": 632 - }, - "operator": 2, - "left_expression": { - "id": 650, - "node_type": 16, - "src": { - "id": 651, - "line": 261, - "column": 19, - "start": 8211, - "end": 8211, - "length": 1, - "parent_index": 648 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 650, - "is_pure": false - }, - "right_expression": { - "id": 652, - "node_type": 16, - "src": { - "id": 653, - "line": 261, - "column": 23, - "start": 8215, - "end": 8215, - "length": 1, - "parent_index": 648 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 652, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - } - ] - } - ] - }, - "implemented": false, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 610, - "node_type": 43, - "src": { - "id": 611, - "line": 255, - "column": 8, - "start": 8024, - "end": 8087, - "length": 64, - "parent_index": 608 - }, - "parameters": [ - { - "id": 612, - "node_type": 44, - "src": { - "id": 613, - "line": 255, - "column": 8, - "start": 8024, - "end": 8032, - "length": 9, - "parent_index": 610 - }, - "scope": 608, - "name": "a", - "type_name": { - "id": 614, - "node_type": 30, - "src": { - "id": 615, - "line": 255, - "column": 8, - "start": 8024, - "end": 8030, - "length": 7, - "parent_index": 612 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 616, - "node_type": 44, - "src": { - "id": 617, - "line": 256, - "column": 8, - "start": 8043, - "end": 8051, - "length": 9, - "parent_index": 610 - }, - "scope": 608, - "name": "b", - "type_name": { - "id": 618, - "node_type": 30, - "src": { - "id": 619, - "line": 256, - "column": 8, - "start": 8043, - "end": 8049, - "length": 7, - "parent_index": 616 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 620, - "node_type": 44, - "src": { - "id": 621, - "line": 257, - "column": 8, - "start": 8062, - "end": 8087, - "length": 26, - "parent_index": 610 - }, - "scope": 608, - "name": "errorMessage", - "type_name": { - "id": 622, - "node_type": 30, - "src": { - "id": 623, - "line": 257, - "column": 8, - "start": 8062, - "end": 8067, - "length": 6, - "parent_index": 620 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "return_parameters": { - "id": 624, - "node_type": 43, - "src": { - "id": 625, - "line": 258, - "column": 29, - "start": 8118, - "end": 8124, - "length": 7, - "parent_index": 608 - }, - "parameters": [ - { - "id": 626, - "node_type": 44, - "src": { - "id": 627, - "line": 258, - "column": 29, - "start": 8118, - "end": 8124, - "length": 7, - "parent_index": 624 - }, - "scope": 608, - "name": "", - "type_name": { - "id": 628, - "node_type": 30, - "src": { - "id": 629, - "line": 258, - "column": 29, - "start": 8118, - "end": 8124, - "length": 7, - "parent_index": 626 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 192, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256$$_t_string", - "type_string": "function(uint256,uint256,string)" - } - }, - { - "id": 655, - "name": "div", - "node_type": 42, - "kind": 41, - "src": { - "id": 656, - "line": 277, - "column": 4, - "start": 8717, - "end": 8946, - "length": 230, - "parent_index": 192 - }, - "body": { - "id": 677, - "node_type": 46, - "kind": 0, - "src": { - "id": 678, - "line": 281, - "column": 38, - "start": 8842, - "end": 8946, - "length": 105, - "parent_index": 655 - }, - "implemented": true, - "statements": [ - { - "id": 679, - "node_type": 59, - "kind": 0, - "src": { - "id": 680, - "line": 282, - "column": 8, - "start": 8852, - "end": 8940, - "length": 89, - "parent_index": 192 - }, - "implemented": false, - "statements": [ - { - "id": 681, - "node_type": 24, - "kind": 24, - "src": { - "id": 682, - "line": 283, - "column": 12, - "start": 8876, - "end": 8903, - "length": 28, - "parent_index": 679 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ], - "arguments": [ - { - "id": 683, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 684, - "line": 283, - "column": 20, - "start": 8884, - "end": 8888, - "length": 5, - "parent_index": 681 - }, - "operator": 7, - "left_expression": { - "id": 685, - "node_type": 16, - "src": { - "id": 686, - "line": 283, - "column": 20, - "start": 8884, - "end": 8884, - "length": 1, - "parent_index": 683 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 685, - "is_pure": false - }, - "right_expression": { - "id": 687, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 688, - "line": 283, - "column": 24, - "start": 8888, - "end": 8888, - "length": 1, - "parent_index": 683 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 689, - "node_type": 16, - "src": { - "id": 690, - "line": 283, - "column": 27, - "start": 8891, - "end": 8902, - "length": 12, - "parent_index": 681 - }, - "name": "errorMessage", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "overloaded_declarations": [], - "referenced_declaration": 689, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 691, - "node_type": 16, - "src": { - "id": 692, - "line": 283, - "column": 12, - "start": 8876, - "end": 8882, - "length": 7, - "parent_index": 681 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string", - "type_string": "function(bool,string)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string$", - "type_string": "function(bool,string)" - } - }, - { - "id": 693, - "node_type": 47, - "src": { - "id": 694, - "line": 284, - "column": 12, - "start": 8918, - "end": 8930, - "length": 13, - "parent_index": 655 - }, - "function_return_parameters": 655, - "expression": { - "id": 695, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 696, - "line": 284, - "column": 19, - "start": 8925, - "end": 8929, - "length": 5, - "parent_index": 679 - }, - "operator": 4, - "left_expression": { - "id": 697, - "node_type": 16, - "src": { - "id": 698, - "line": 284, - "column": 19, - "start": 8925, - "end": 8925, - "length": 1, - "parent_index": 695 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 697, - "is_pure": false - }, - "right_expression": { - "id": 699, - "node_type": 16, - "src": { - "id": 700, - "line": 284, - "column": 23, - "start": 8929, - "end": 8929, - "length": 1, - "parent_index": 695 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 699, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - } - ] - } - ] - }, - "implemented": false, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 657, - "node_type": 43, - "src": { - "id": 658, - "line": 278, - "column": 8, - "start": 8739, - "end": 8802, - "length": 64, - "parent_index": 655 - }, - "parameters": [ - { - "id": 659, - "node_type": 44, - "src": { - "id": 660, - "line": 278, - "column": 8, - "start": 8739, - "end": 8747, - "length": 9, - "parent_index": 657 - }, - "scope": 655, - "name": "a", - "type_name": { - "id": 661, - "node_type": 30, - "src": { - "id": 662, - "line": 278, - "column": 8, - "start": 8739, - "end": 8745, - "length": 7, - "parent_index": 659 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 663, - "node_type": 44, - "src": { - "id": 664, - "line": 279, - "column": 8, - "start": 8758, - "end": 8766, - "length": 9, - "parent_index": 657 - }, - "scope": 655, - "name": "b", - "type_name": { - "id": 665, - "node_type": 30, - "src": { - "id": 666, - "line": 279, - "column": 8, - "start": 8758, - "end": 8764, - "length": 7, - "parent_index": 663 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 667, - "node_type": 44, - "src": { - "id": 668, - "line": 280, - "column": 8, - "start": 8777, - "end": 8802, - "length": 26, - "parent_index": 657 - }, - "scope": 655, - "name": "errorMessage", - "type_name": { - "id": 669, - "node_type": 30, - "src": { - "id": 670, - "line": 280, - "column": 8, - "start": 8777, - "end": 8782, - "length": 6, - "parent_index": 667 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "return_parameters": { - "id": 671, - "node_type": 43, - "src": { - "id": 672, - "line": 281, - "column": 29, - "start": 8833, - "end": 8839, - "length": 7, - "parent_index": 655 - }, - "parameters": [ - { - "id": 673, - "node_type": 44, - "src": { - "id": 674, - "line": 281, - "column": 29, - "start": 8833, - "end": 8839, - "length": 7, - "parent_index": 671 - }, - "scope": 655, - "name": "", - "type_name": { - "id": 675, - "node_type": 30, - "src": { - "id": 676, - "line": 281, - "column": 29, - "start": 8833, - "end": 8839, - "length": 7, - "parent_index": 673 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 192, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256$$_t_string", - "type_string": "function(uint256,uint256,string)" - } - }, - { - "id": 702, - "name": "mod", - "node_type": 42, - "kind": 41, - "src": { - "id": 703, - "line": 303, - "column": 4, - "start": 9593, - "end": 9822, - "length": 230, - "parent_index": 192 - }, - "body": { - "id": 724, - "node_type": 46, - "kind": 0, - "src": { - "id": 725, - "line": 307, - "column": 38, - "start": 9718, - "end": 9822, - "length": 105, - "parent_index": 702 - }, - "implemented": true, - "statements": [ - { - "id": 726, - "node_type": 59, - "kind": 0, - "src": { - "id": 727, - "line": 308, - "column": 8, - "start": 9728, - "end": 9816, - "length": 89, - "parent_index": 192 - }, - "implemented": false, - "statements": [ - { - "id": 728, - "node_type": 24, - "kind": 24, - "src": { - "id": 729, - "line": 309, - "column": 12, - "start": 9752, - "end": 9779, - "length": 28, - "parent_index": 726 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ], - "arguments": [ - { - "id": 730, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 731, - "line": 309, - "column": 20, - "start": 9760, - "end": 9764, - "length": 5, - "parent_index": 728 - }, - "operator": 7, - "left_expression": { - "id": 732, - "node_type": 16, - "src": { - "id": 733, - "line": 309, - "column": 20, - "start": 9760, - "end": 9760, - "length": 1, - "parent_index": 730 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 732, - "is_pure": false - }, - "right_expression": { - "id": 734, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 735, - "line": 309, - "column": 24, - "start": 9764, - "end": 9764, - "length": 1, - "parent_index": 730 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 736, - "node_type": 16, - "src": { - "id": 737, - "line": 309, - "column": 27, - "start": 9767, - "end": 9778, - "length": 12, - "parent_index": 728 - }, - "name": "errorMessage", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "overloaded_declarations": [], - "referenced_declaration": 736, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 738, - "node_type": 16, - "src": { - "id": 739, - "line": 309, - "column": 12, - "start": 9752, - "end": 9758, - "length": 7, - "parent_index": 728 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string", - "type_string": "function(bool,string)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string$", - "type_string": "function(bool,string)" - } - }, - { - "id": 740, - "node_type": 47, - "src": { - "id": 741, - "line": 310, - "column": 12, - "start": 9794, - "end": 9806, - "length": 13, - "parent_index": 702 - }, - "function_return_parameters": 702, - "expression": { - "id": 742, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 743, - "line": 310, - "column": 19, - "start": 9801, - "end": 9805, - "length": 5, - "parent_index": 726 - }, - "operator": 5, - "left_expression": { - "id": 744, - "node_type": 16, - "src": { - "id": 745, - "line": 310, - "column": 19, - "start": 9801, - "end": 9801, - "length": 1, - "parent_index": 742 - }, - "name": "a", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 744, - "is_pure": false - }, - "right_expression": { - "id": 746, - "node_type": 16, - "src": { - "id": 747, - "line": 310, - "column": 23, - "start": 9805, - "end": 9805, - "length": 1, - "parent_index": 742 - }, - "name": "b", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 746, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - } - } - ] - } - ] - }, - "implemented": false, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 704, - "node_type": 43, - "src": { - "id": 705, - "line": 304, - "column": 8, - "start": 9615, - "end": 9678, - "length": 64, - "parent_index": 702 - }, - "parameters": [ - { - "id": 706, - "node_type": 44, - "src": { - "id": 707, - "line": 304, - "column": 8, - "start": 9615, - "end": 9623, - "length": 9, - "parent_index": 704 - }, - "scope": 702, - "name": "a", - "type_name": { - "id": 708, - "node_type": 30, - "src": { - "id": 709, - "line": 304, - "column": 8, - "start": 9615, - "end": 9621, - "length": 7, - "parent_index": 706 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 710, - "node_type": 44, - "src": { - "id": 711, - "line": 305, - "column": 8, - "start": 9634, - "end": 9642, - "length": 9, - "parent_index": 704 - }, - "scope": 702, - "name": "b", - "type_name": { - "id": 712, - "node_type": 30, - "src": { - "id": 713, - "line": 305, - "column": 8, - "start": 9634, - "end": 9640, - "length": 7, - "parent_index": 710 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 714, - "node_type": 44, - "src": { - "id": 715, - "line": 306, - "column": 8, - "start": 9653, - "end": 9678, - "length": 26, - "parent_index": 704 - }, - "scope": 702, - "name": "errorMessage", - "type_name": { - "id": 716, - "node_type": 30, - "src": { - "id": 717, - "line": 306, - "column": 8, - "start": 9653, - "end": 9658, - "length": 6, - "parent_index": 714 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "return_parameters": { - "id": 718, - "node_type": 43, - "src": { - "id": 719, - "line": 307, - "column": 29, - "start": 9709, - "end": 9715, - "length": 7, - "parent_index": 702 - }, - "parameters": [ - { - "id": 720, - "node_type": 44, - "src": { - "id": 721, - "line": 307, - "column": 29, - "start": 9709, - "end": 9715, - "length": 7, - "parent_index": 718 - }, - "scope": 702, - "name": "", - "type_name": { - "id": 722, - "node_type": 30, - "src": { - "id": 723, - "line": 307, - "column": 29, - "start": 9709, - "end": 9715, - "length": 7, - "parent_index": 720 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "scope": 192, - "type_description": { - "type_identifier": "t_function_$_t_uint256$$_t_uint256$$_t_string", - "type_string": "function(uint256,uint256,string)" - } - } - ], - "linearized_base_contracts": [ - 192 - ], - "base_contracts": [], - "contract_dependencies": [], - "scope": 186 - } - ], - "src": { - "id": 187, - "line": 100, - "column": 0, - "start": 3349, - "end": 9824, - "length": 6476, - "parent_index": 30 - } + "id": 186, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 186, + "name": "SafeMath", + "absolute_path": "SafeMath.sol" + } + ], + "absolute_path": "SafeMath.sol", + "name": "SafeMath", + "node_type": 1, + "nodes": [ + { + "id": 190, + "node_type": 10, + "src": { + "id": 191, + "line": 85, + "column": 0, + "start": 2760, + "end": 2782, + "length": 23, + "parent_index": 186 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 192, + "name": "SafeMath", + "node_type": 35, + "src": { + "id": 0, + "line": 100, + "column": 0, + "start": 3349, + "end": 9824, + "length": 6476, + "parent_index": 186 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 194, + "name": "tryAdd", + "node_type": 42, + "kind": 41, + "src": { + "id": 195, + "line": 106, + "column": 4, + "start": 3508, + "end": 3723, + "length": 216, + "parent_index": 192 + }, + "body": { + "id": 216, + "node_type": 46, + "kind": 0, + "src": { + "id": 217, + "line": 106, + "column": 80, + "start": 3584, + "end": 3723, + "length": 140, + "parent_index": 194 + }, + "implemented": true, + "statements": [ + { + "id": 218, + "node_type": 59, + "kind": 0, + "src": { + "id": 219, + "line": 107, + "column": 8, + "start": 3594, + "end": 3717, + "length": 124, + "parent_index": 192 + }, + "implemented": false, + "statements": [ + { + "id": 220, + "node_type": 44, + "src": { + "id": 221, + "line": 108, + "column": 12, + "start": 3618, + "end": 3635, + "length": 18, + "parent_index": 218 + }, + "assignments": [ + 222 + ], + "declarations": [ + { + "is_constant": false, + "id": 222, + "state_mutability": 1, + "name": "c", + "node_type": 44, + "scope": 218, + "src": { + "id": 223, + "line": 108, + "column": 12, + "start": 3618, + "end": 3626, + "length": 9, + "parent_index": 220 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 224, + "node_type": 30, + "src": { + "id": 225, + "line": 108, + "column": 12, + "start": 3618, + "end": 3624, + "length": 7, + "parent_index": 222 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 226, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 227, + "line": 108, + "column": 24, + "start": 3630, + "end": 3634, + "length": 5, + "parent_index": 220 + }, + "operator": 1, + "left_expression": { + "id": 228, + "node_type": 16, + "src": { + "id": 229, + "line": 108, + "column": 24, + "start": 3630, + "end": 3630, + "length": 1, + "parent_index": 226 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 228, + "is_pure": false + }, + "right_expression": { + "id": 230, + "node_type": 16, + "src": { + "id": 231, + "line": 108, + "column": 28, + "start": 3634, + "end": 3634, + "length": 1, + "parent_index": 226 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 230, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + }, + { + "id": 232, + "node_type": 48, + "src": { + "id": 233, + "line": 109, + "column": 0, + "start": 3649, + "end": 3677, + "length": 29, + "parent_index": 218 + }, + "condition": { + "id": 234, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 235, + "line": 109, + "column": 16, + "start": 3653, + "end": 3657, + "length": 5, + "parent_index": 232 + }, + "operator": 9, + "left_expression": { + "id": 236, + "node_type": 16, + "src": { + "id": 237, + "line": 109, + "column": 16, + "start": 3653, + "end": 3653, + "length": 1, + "parent_index": 234 + }, + "name": "c", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 220, + "is_pure": false + }, + "right_expression": { + "id": 238, + "node_type": 16, + "src": { + "id": 239, + "line": 109, + "column": 20, + "start": 3657, + "end": 3657, + "length": 1, + "parent_index": 234 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 238, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 240, + "node_type": 46, + "kind": 0, + "src": { + "id": 0, + "line": 0, + "column": 0, + "start": 0, + "end": 0, + "length": 0, + "parent_index": 0 + }, + "implemented": false, + "statements": [] + } + }, + { + "id": 241, + "node_type": 47, + "src": { + "id": 242, + "line": 110, + "column": 12, + "start": 3691, + "end": 3707, + "length": 17, + "parent_index": 194 + }, + "function_return_parameters": 194, + "expression": { + "id": 243, + "node_type": 60, + "src": { + "id": 244, + "line": 110, + "column": 19, + "start": 3698, + "end": 3706, + "length": 9, + "parent_index": 194 + }, + "is_constant": false, + "is_pure": true, + "components": [ + { + "id": 245, + "node_type": 17, + "kind": 61, + "value": "true", + "hex_value": "74727565", + "src": { + "id": 246, + "line": 110, + "column": 20, + "start": 3699, + "end": 3702, + "length": 4, + "parent_index": 243 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + { + "id": 247, + "node_type": 16, + "src": { + "id": 248, + "line": 110, + "column": 26, + "start": 3705, + "end": 3705, + "length": 1, + "parent_index": 243 + }, + "name": "c", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 220, + "is_pure": false + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_bool_$_t_uint256$", + "type_string": "tuple(bool,uint256)" + } + } + } + ] + } + ] + }, + "implemented": false, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 196, + "node_type": 43, + "src": { + "id": 197, + "line": 106, + "column": 20, + "start": 3524, + "end": 3543, + "length": 20, + "parent_index": 194 + }, + "parameters": [ + { + "id": 198, + "node_type": 44, + "src": { + "id": 199, + "line": 106, + "column": 20, + "start": 3524, + "end": 3532, + "length": 9, + "parent_index": 196 + }, + "scope": 194, + "name": "a", + "type_name": { + "id": 200, + "node_type": 30, + "src": { + "id": 201, + "line": 106, + "column": 20, + "start": 3524, + "end": 3530, + "length": 7, + "parent_index": 198 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 202, + "node_type": 44, + "src": { + "id": 203, + "line": 106, + "column": 31, + "start": 3535, + "end": 3543, + "length": 9, + "parent_index": 196 + }, + "scope": 194, + "name": "b", + "type_name": { + "id": 204, + "node_type": 30, + "src": { + "id": 205, + "line": 106, + "column": 31, + "start": 3535, + "end": 3541, + "length": 7, + "parent_index": 202 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 206, + "node_type": 43, + "src": { + "id": 207, + "line": 106, + "column": 65, + "start": 3569, + "end": 3581, + "length": 13, + "parent_index": 194 + }, + "parameters": [ + { + "id": 208, + "node_type": 44, + "src": { + "id": 209, + "line": 106, + "column": 65, + "start": 3569, + "end": 3572, + "length": 4, + "parent_index": 206 + }, + "scope": 194, + "name": "", + "type_name": { + "id": 210, + "node_type": 30, + "src": { + "id": 211, + "line": 106, + "column": 65, + "start": 3569, + "end": 3572, + "length": 4, + "parent_index": 208 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 212, + "node_type": 44, + "src": { + "id": 213, + "line": 106, + "column": 71, + "start": 3575, + "end": 3581, + "length": 7, + "parent_index": 206 + }, + "scope": 194, + "name": "", + "type_name": { + "id": 214, + "node_type": 30, + "src": { + "id": 215, + "line": 106, + "column": 71, + "start": 3575, + "end": 3581, + "length": 7, + "parent_index": 212 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 192, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + }, + { + "id": 250, + "name": "trySub", + "node_type": 42, + "kind": 41, + "src": { + "id": 251, + "line": 119, + "column": 4, + "start": 3870, + "end": 4058, + "length": 189, + "parent_index": 192 + }, + "body": { + "id": 272, + "node_type": 46, + "kind": 0, + "src": { + "id": 273, + "line": 119, + "column": 80, + "start": 3946, + "end": 4058, + "length": 113, + "parent_index": 250 + }, + "implemented": true, + "statements": [ + { + "id": 274, + "node_type": 59, + "kind": 0, + "src": { + "id": 275, + "line": 120, + "column": 8, + "start": 3956, + "end": 4052, + "length": 97, + "parent_index": 192 + }, + "implemented": false, + "statements": [ + { + "id": 276, + "node_type": 48, + "src": { + "id": 277, + "line": 121, + "column": 0, + "start": 3980, + "end": 4008, + "length": 29, + "parent_index": 274 + }, + "condition": { + "id": 278, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 279, + "line": 121, + "column": 16, + "start": 3984, + "end": 3988, + "length": 5, + "parent_index": 276 + }, + "operator": 7, + "left_expression": { + "id": 280, + "node_type": 16, + "src": { + "id": 281, + "line": 121, + "column": 16, + "start": 3984, + "end": 3984, + "length": 1, + "parent_index": 278 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 280, + "is_pure": false + }, + "right_expression": { + "id": 282, + "node_type": 16, + "src": { + "id": 283, + "line": 121, + "column": 20, + "start": 3988, + "end": 3988, + "length": 1, + "parent_index": 278 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 282, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 284, + "node_type": 46, + "kind": 0, + "src": { + "id": 0, + "line": 0, + "column": 0, + "start": 0, + "end": 0, + "length": 0, + "parent_index": 0 + }, + "implemented": false, + "statements": [] + } + }, + { + "id": 285, + "node_type": 47, + "src": { + "id": 286, + "line": 122, + "column": 12, + "start": 4022, + "end": 4042, + "length": 21, + "parent_index": 250 + }, + "function_return_parameters": 250, + "expression": { + "id": 287, + "node_type": 60, + "src": { + "id": 288, + "line": 122, + "column": 19, + "start": 4029, + "end": 4041, + "length": 13, + "parent_index": 250 + }, + "is_constant": false, + "is_pure": true, + "components": [ + { + "id": 289, + "node_type": 17, + "kind": 61, + "value": "true", + "hex_value": "74727565", + "src": { + "id": 290, + "line": 122, + "column": 20, + "start": 4030, + "end": 4033, + "length": 4, + "parent_index": 287 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + { + "id": 291, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 292, + "line": 122, + "column": 26, + "start": 4036, + "end": 4040, + "length": 5, + "parent_index": 287 + }, + "operator": 2, + "left_expression": { + "id": 293, + "node_type": 16, + "src": { + "id": 294, + "line": 122, + "column": 26, + "start": 4036, + "end": 4036, + "length": 1, + "parent_index": 291 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 293, + "is_pure": false + }, + "right_expression": { + "id": 295, + "node_type": 16, + "src": { + "id": 296, + "line": 122, + "column": 30, + "start": 4040, + "end": 4040, + "length": 1, + "parent_index": 291 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 295, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_bool_$_t_uint256$", + "type_string": "tuple(bool,uint256)" + } + } + } + ] + } + ] + }, + "implemented": false, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 252, + "node_type": 43, + "src": { + "id": 253, + "line": 119, + "column": 20, + "start": 3886, + "end": 3905, + "length": 20, + "parent_index": 250 + }, + "parameters": [ + { + "id": 254, + "node_type": 44, + "src": { + "id": 255, + "line": 119, + "column": 20, + "start": 3886, + "end": 3894, + "length": 9, + "parent_index": 252 + }, + "scope": 250, + "name": "a", + "type_name": { + "id": 256, + "node_type": 30, + "src": { + "id": 257, + "line": 119, + "column": 20, + "start": 3886, + "end": 3892, + "length": 7, + "parent_index": 254 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 258, + "node_type": 44, + "src": { + "id": 259, + "line": 119, + "column": 31, + "start": 3897, + "end": 3905, + "length": 9, + "parent_index": 252 + }, + "scope": 250, + "name": "b", + "type_name": { + "id": 260, + "node_type": 30, + "src": { + "id": 261, + "line": 119, + "column": 31, + "start": 3897, + "end": 3903, + "length": 7, + "parent_index": 258 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 262, + "node_type": 43, + "src": { + "id": 263, + "line": 119, + "column": 65, + "start": 3931, + "end": 3943, + "length": 13, + "parent_index": 250 + }, + "parameters": [ + { + "id": 264, + "node_type": 44, + "src": { + "id": 265, + "line": 119, + "column": 65, + "start": 3931, + "end": 3934, + "length": 4, + "parent_index": 262 + }, + "scope": 250, + "name": "", + "type_name": { + "id": 266, + "node_type": 30, + "src": { + "id": 267, + "line": 119, + "column": 65, + "start": 3931, + "end": 3934, + "length": 4, + "parent_index": 264 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 268, + "node_type": 44, + "src": { + "id": 269, + "line": 119, + "column": 71, + "start": 3937, + "end": 3943, + "length": 7, + "parent_index": 262 + }, + "scope": 250, + "name": "", + "type_name": { + "id": 270, + "node_type": 30, + "src": { + "id": 271, + "line": 119, + "column": 71, + "start": 3937, + "end": 3943, + "length": 7, + "parent_index": 268 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 192, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + }, + { + "id": 298, + "name": "tryMul", + "node_type": 42, + "kind": 41, + "src": { + "id": 299, + "line": 131, + "column": 4, + "start": 4207, + "end": 4699, + "length": 493, + "parent_index": 192 + }, + "body": { + "id": 320, + "node_type": 46, + "kind": 0, + "src": { + "id": 321, + "line": 131, + "column": 80, + "start": 4283, + "end": 4699, + "length": 417, + "parent_index": 298 + }, + "implemented": true, + "statements": [ + { + "id": 322, + "node_type": 59, + "kind": 0, + "src": { + "id": 323, + "line": 132, + "column": 8, + "start": 4293, + "end": 4693, + "length": 401, + "parent_index": 192 + }, + "implemented": false, + "statements": [ + { + "id": 324, + "node_type": 48, + "src": { + "id": 325, + "line": 136, + "column": 0, + "start": 4547, + "end": 4575, + "length": 29, + "parent_index": 322 + }, + "condition": { + "id": 326, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 327, + "line": 136, + "column": 16, + "start": 4551, + "end": 4556, + "length": 6, + "parent_index": 324 + }, + "operator": 11, + "left_expression": { + "id": 328, + "node_type": 16, + "src": { + "id": 329, + "line": 136, + "column": 16, + "start": 4551, + "end": 4551, + "length": 1, + "parent_index": 326 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 328, + "is_pure": false + }, + "right_expression": { + "id": 330, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 331, + "line": 136, + "column": 21, + "start": 4556, + "end": 4556, + "length": 1, + "parent_index": 326 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 332, + "node_type": 46, + "kind": 0, + "src": { + "id": 0, + "line": 0, + "column": 0, + "start": 0, + "end": 0, + "length": 0, + "parent_index": 0 + }, + "implemented": false, + "statements": [] + } + }, + { + "id": 333, + "node_type": 44, + "src": { + "id": 334, + "line": 137, + "column": 12, + "start": 4589, + "end": 4606, + "length": 18, + "parent_index": 322 + }, + "assignments": [ + 335 + ], + "declarations": [ + { + "is_constant": false, + "id": 335, + "state_mutability": 1, + "name": "c", + "node_type": 44, + "scope": 322, + "src": { + "id": 336, + "line": 137, + "column": 12, + "start": 4589, + "end": 4597, + "length": 9, + "parent_index": 333 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 337, + "node_type": 30, + "src": { + "id": 338, + "line": 137, + "column": 12, + "start": 4589, + "end": 4595, + "length": 7, + "parent_index": 335 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 339, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 340, + "line": 137, + "column": 24, + "start": 4601, + "end": 4605, + "length": 5, + "parent_index": 333 + }, + "operator": 3, + "left_expression": { + "id": 341, + "node_type": 16, + "src": { + "id": 342, + "line": 137, + "column": 24, + "start": 4601, + "end": 4601, + "length": 1, + "parent_index": 339 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 341, + "is_pure": false + }, + "right_expression": { + "id": 343, + "node_type": 16, + "src": { + "id": 344, + "line": 137, + "column": 28, + "start": 4605, + "end": 4605, + "length": 1, + "parent_index": 339 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 343, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + }, + { + "id": 345, + "node_type": 48, + "src": { + "id": 346, + "line": 138, + "column": 0, + "start": 4620, + "end": 4653, + "length": 34, + "parent_index": 322 + }, + "condition": { + "id": 347, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 348, + "line": 138, + "column": 16, + "start": 4624, + "end": 4633, + "length": 10, + "parent_index": 345 + }, + "operator": 12, + "left_expression": { + "id": 349, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 350, + "line": 138, + "column": 16, + "start": 4624, + "end": 4628, + "length": 5, + "parent_index": 347 + }, + "operator": 4, + "left_expression": { + "id": 351, + "node_type": 16, + "src": { + "id": 352, + "line": 138, + "column": 16, + "start": 4624, + "end": 4624, + "length": 1, + "parent_index": 349 + }, + "name": "c", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 333, + "is_pure": false + }, + "right_expression": { + "id": 353, + "node_type": 16, + "src": { + "id": 354, + "line": 138, + "column": 20, + "start": 4628, + "end": 4628, + "length": 1, + "parent_index": 349 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 353, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "right_expression": { + "id": 355, + "node_type": 16, + "src": { + "id": 356, + "line": 138, + "column": 25, + "start": 4633, + "end": 4633, + "length": 1, + "parent_index": 347 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 355, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 357, + "node_type": 46, + "kind": 0, + "src": { + "id": 0, + "line": 0, + "column": 0, + "start": 0, + "end": 0, + "length": 0, + "parent_index": 0 + }, + "implemented": false, + "statements": [] + } + }, + { + "id": 358, + "node_type": 47, + "src": { + "id": 359, + "line": 139, + "column": 12, + "start": 4667, + "end": 4683, + "length": 17, + "parent_index": 298 + }, + "function_return_parameters": 298, + "expression": { + "id": 360, + "node_type": 60, + "src": { + "id": 361, + "line": 139, + "column": 19, + "start": 4674, + "end": 4682, + "length": 9, + "parent_index": 298 + }, + "is_constant": false, + "is_pure": true, + "components": [ + { + "id": 362, + "node_type": 17, + "kind": 61, + "value": "true", + "hex_value": "74727565", + "src": { + "id": 363, + "line": 139, + "column": 20, + "start": 4675, + "end": 4678, + "length": 4, + "parent_index": 360 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + { + "id": 364, + "node_type": 16, + "src": { + "id": 365, + "line": 139, + "column": 26, + "start": 4681, + "end": 4681, + "length": 1, + "parent_index": 360 + }, + "name": "c", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 333, + "is_pure": false + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_bool_$_t_uint256$", + "type_string": "tuple(bool,uint256)" + } + } + } + ] + } + ] + }, + "implemented": false, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 300, + "node_type": 43, + "src": { + "id": 301, + "line": 131, + "column": 20, + "start": 4223, + "end": 4242, + "length": 20, + "parent_index": 298 + }, + "parameters": [ + { + "id": 302, + "node_type": 44, + "src": { + "id": 303, + "line": 131, + "column": 20, + "start": 4223, + "end": 4231, + "length": 9, + "parent_index": 300 + }, + "scope": 298, + "name": "a", + "type_name": { + "id": 304, + "node_type": 30, + "src": { + "id": 305, + "line": 131, + "column": 20, + "start": 4223, + "end": 4229, + "length": 7, + "parent_index": 302 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 306, + "node_type": 44, + "src": { + "id": 307, + "line": 131, + "column": 31, + "start": 4234, + "end": 4242, + "length": 9, + "parent_index": 300 + }, + "scope": 298, + "name": "b", + "type_name": { + "id": 308, + "node_type": 30, + "src": { + "id": 309, + "line": 131, + "column": 31, + "start": 4234, + "end": 4240, + "length": 7, + "parent_index": 306 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 310, + "node_type": 43, + "src": { + "id": 311, + "line": 131, + "column": 65, + "start": 4268, + "end": 4280, + "length": 13, + "parent_index": 298 + }, + "parameters": [ + { + "id": 312, + "node_type": 44, + "src": { + "id": 313, + "line": 131, + "column": 65, + "start": 4268, + "end": 4271, + "length": 4, + "parent_index": 310 + }, + "scope": 298, + "name": "", + "type_name": { + "id": 314, + "node_type": 30, + "src": { + "id": 315, + "line": 131, + "column": 65, + "start": 4268, + "end": 4271, + "length": 4, + "parent_index": 312 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 316, + "node_type": 44, + "src": { + "id": 317, + "line": 131, + "column": 71, + "start": 4274, + "end": 4280, + "length": 7, + "parent_index": 310 + }, + "scope": 298, + "name": "", + "type_name": { + "id": 318, + "node_type": 30, + "src": { + "id": 319, + "line": 131, + "column": 71, + "start": 4274, + "end": 4280, + "length": 7, + "parent_index": 316 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 192, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + }, + { + "id": 367, + "name": "tryDiv", + "node_type": 42, + "kind": 41, + "src": { + "id": 368, + "line": 148, + "column": 4, + "start": 4849, + "end": 5038, + "length": 190, + "parent_index": 192 + }, + "body": { + "id": 389, + "node_type": 46, + "kind": 0, + "src": { + "id": 390, + "line": 148, + "column": 80, + "start": 4925, + "end": 5038, + "length": 114, + "parent_index": 367 + }, + "implemented": true, + "statements": [ + { + "id": 391, + "node_type": 59, + "kind": 0, + "src": { + "id": 392, + "line": 149, + "column": 8, + "start": 4935, + "end": 5032, + "length": 98, + "parent_index": 192 + }, + "implemented": false, + "statements": [ + { + "id": 393, + "node_type": 48, + "src": { + "id": 394, + "line": 150, + "column": 0, + "start": 4959, + "end": 4988, + "length": 30, + "parent_index": 391 + }, + "condition": { + "id": 395, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 396, + "line": 150, + "column": 16, + "start": 4963, + "end": 4968, + "length": 6, + "parent_index": 393 + }, + "operator": 11, + "left_expression": { + "id": 397, + "node_type": 16, + "src": { + "id": 398, + "line": 150, + "column": 16, + "start": 4963, + "end": 4963, + "length": 1, + "parent_index": 395 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 397, + "is_pure": false + }, + "right_expression": { + "id": 399, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 400, + "line": 150, + "column": 21, + "start": 4968, + "end": 4968, + "length": 1, + "parent_index": 395 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 401, + "node_type": 46, + "kind": 0, + "src": { + "id": 0, + "line": 0, + "column": 0, + "start": 0, + "end": 0, + "length": 0, + "parent_index": 0 + }, + "implemented": false, + "statements": [] + } + }, + { + "id": 402, + "node_type": 47, + "src": { + "id": 403, + "line": 151, + "column": 12, + "start": 5002, + "end": 5022, + "length": 21, + "parent_index": 367 + }, + "function_return_parameters": 367, + "expression": { + "id": 404, + "node_type": 60, + "src": { + "id": 405, + "line": 151, + "column": 19, + "start": 5009, + "end": 5021, + "length": 13, + "parent_index": 367 + }, + "is_constant": false, + "is_pure": true, + "components": [ + { + "id": 406, + "node_type": 17, + "kind": 61, + "value": "true", + "hex_value": "74727565", + "src": { + "id": 407, + "line": 151, + "column": 20, + "start": 5010, + "end": 5013, + "length": 4, + "parent_index": 404 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + { + "id": 408, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 409, + "line": 151, + "column": 26, + "start": 5016, + "end": 5020, + "length": 5, + "parent_index": 404 + }, + "operator": 4, + "left_expression": { + "id": 410, + "node_type": 16, + "src": { + "id": 411, + "line": 151, + "column": 26, + "start": 5016, + "end": 5016, + "length": 1, + "parent_index": 408 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 410, + "is_pure": false + }, + "right_expression": { + "id": 412, + "node_type": 16, + "src": { + "id": 413, + "line": 151, + "column": 30, + "start": 5020, + "end": 5020, + "length": 1, + "parent_index": 408 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 412, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_bool_$_t_uint256$", + "type_string": "tuple(bool,uint256)" + } + } + } + ] + } + ] + }, + "implemented": false, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 369, + "node_type": 43, + "src": { + "id": 370, + "line": 148, + "column": 20, + "start": 4865, + "end": 4884, + "length": 20, + "parent_index": 367 + }, + "parameters": [ + { + "id": 371, + "node_type": 44, + "src": { + "id": 372, + "line": 148, + "column": 20, + "start": 4865, + "end": 4873, + "length": 9, + "parent_index": 369 + }, + "scope": 367, + "name": "a", + "type_name": { + "id": 373, + "node_type": 30, + "src": { + "id": 374, + "line": 148, + "column": 20, + "start": 4865, + "end": 4871, + "length": 7, + "parent_index": 371 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 375, + "node_type": 44, + "src": { + "id": 376, + "line": 148, + "column": 31, + "start": 4876, + "end": 4884, + "length": 9, + "parent_index": 369 + }, + "scope": 367, + "name": "b", + "type_name": { + "id": 377, + "node_type": 30, + "src": { + "id": 378, + "line": 148, + "column": 31, + "start": 4876, + "end": 4882, + "length": 7, + "parent_index": 375 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 379, + "node_type": 43, + "src": { + "id": 380, + "line": 148, + "column": 65, + "start": 4910, + "end": 4922, + "length": 13, + "parent_index": 367 + }, + "parameters": [ + { + "id": 381, + "node_type": 44, + "src": { + "id": 382, + "line": 148, + "column": 65, + "start": 4910, + "end": 4913, + "length": 4, + "parent_index": 379 + }, + "scope": 367, + "name": "", + "type_name": { + "id": 383, + "node_type": 30, + "src": { + "id": 384, + "line": 148, + "column": 65, + "start": 4910, + "end": 4913, + "length": 4, + "parent_index": 381 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 385, + "node_type": 44, + "src": { + "id": 386, + "line": 148, + "column": 71, + "start": 4916, + "end": 4922, + "length": 7, + "parent_index": 379 + }, + "scope": 367, + "name": "", + "type_name": { + "id": 387, + "node_type": 30, + "src": { + "id": 388, + "line": 148, + "column": 71, + "start": 4916, + "end": 4922, + "length": 7, + "parent_index": 385 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 192, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + }, + { + "id": 415, + "name": "tryMod", + "node_type": 42, + "kind": 41, + "src": { + "id": 416, + "line": 160, + "column": 4, + "start": 5198, + "end": 5387, + "length": 190, + "parent_index": 192 + }, + "body": { + "id": 437, + "node_type": 46, + "kind": 0, + "src": { + "id": 438, + "line": 160, + "column": 80, + "start": 5274, + "end": 5387, + "length": 114, + "parent_index": 415 + }, + "implemented": true, + "statements": [ + { + "id": 439, + "node_type": 59, + "kind": 0, + "src": { + "id": 440, + "line": 161, + "column": 8, + "start": 5284, + "end": 5381, + "length": 98, + "parent_index": 192 + }, + "implemented": false, + "statements": [ + { + "id": 441, + "node_type": 48, + "src": { + "id": 442, + "line": 162, + "column": 0, + "start": 5308, + "end": 5337, + "length": 30, + "parent_index": 439 + }, + "condition": { + "id": 443, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 444, + "line": 162, + "column": 16, + "start": 5312, + "end": 5317, + "length": 6, + "parent_index": 441 + }, + "operator": 11, + "left_expression": { + "id": 445, + "node_type": 16, + "src": { + "id": 446, + "line": 162, + "column": 16, + "start": 5312, + "end": 5312, + "length": 1, + "parent_index": 443 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 445, + "is_pure": false + }, + "right_expression": { + "id": 447, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 448, + "line": 162, + "column": 21, + "start": 5317, + "end": 5317, + "length": 1, + "parent_index": 443 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 449, + "node_type": 46, + "kind": 0, + "src": { + "id": 0, + "line": 0, + "column": 0, + "start": 0, + "end": 0, + "length": 0, + "parent_index": 0 + }, + "implemented": false, + "statements": [] + } + }, + { + "id": 450, + "node_type": 47, + "src": { + "id": 451, + "line": 163, + "column": 12, + "start": 5351, + "end": 5371, + "length": 21, + "parent_index": 415 + }, + "function_return_parameters": 415, + "expression": { + "id": 452, + "node_type": 60, + "src": { + "id": 453, + "line": 163, + "column": 19, + "start": 5358, + "end": 5370, + "length": 13, + "parent_index": 415 + }, + "is_constant": false, + "is_pure": true, + "components": [ + { + "id": 454, + "node_type": 17, + "kind": 61, + "value": "true", + "hex_value": "74727565", + "src": { + "id": 455, + "line": 163, + "column": 20, + "start": 5359, + "end": 5362, + "length": 4, + "parent_index": 452 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + { + "id": 456, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 457, + "line": 163, + "column": 26, + "start": 5365, + "end": 5369, + "length": 5, + "parent_index": 452 + }, + "operator": 5, + "left_expression": { + "id": 458, + "node_type": 16, + "src": { + "id": 459, + "line": 163, + "column": 26, + "start": 5365, + "end": 5365, + "length": 1, + "parent_index": 456 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 458, + "is_pure": false + }, + "right_expression": { + "id": 460, + "node_type": 16, + "src": { + "id": 461, + "line": 163, + "column": 30, + "start": 5369, + "end": 5369, + "length": 1, + "parent_index": 456 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 460, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_bool_$_t_uint256$", + "type_string": "tuple(bool,uint256)" + } + } + } + ] + } + ] + }, + "implemented": false, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 417, + "node_type": 43, + "src": { + "id": 418, + "line": 160, + "column": 20, + "start": 5214, + "end": 5233, + "length": 20, + "parent_index": 415 + }, + "parameters": [ + { + "id": 419, + "node_type": 44, + "src": { + "id": 420, + "line": 160, + "column": 20, + "start": 5214, + "end": 5222, + "length": 9, + "parent_index": 417 + }, + "scope": 415, + "name": "a", + "type_name": { + "id": 421, + "node_type": 30, + "src": { + "id": 422, + "line": 160, + "column": 20, + "start": 5214, + "end": 5220, + "length": 7, + "parent_index": 419 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 423, + "node_type": 44, + "src": { + "id": 424, + "line": 160, + "column": 31, + "start": 5225, + "end": 5233, + "length": 9, + "parent_index": 417 + }, + "scope": 415, + "name": "b", + "type_name": { + "id": 425, + "node_type": 30, + "src": { + "id": 426, + "line": 160, + "column": 31, + "start": 5225, + "end": 5231, + "length": 7, + "parent_index": 423 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 427, + "node_type": 43, + "src": { + "id": 428, + "line": 160, + "column": 65, + "start": 5259, + "end": 5271, + "length": 13, + "parent_index": 415 + }, + "parameters": [ + { + "id": 429, + "node_type": 44, + "src": { + "id": 430, + "line": 160, + "column": 65, + "start": 5259, + "end": 5262, + "length": 4, + "parent_index": 427 + }, + "scope": 415, + "name": "", + "type_name": { + "id": 431, + "node_type": 30, + "src": { + "id": 432, + "line": 160, + "column": 65, + "start": 5259, + "end": 5262, + "length": 4, + "parent_index": 429 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 433, + "node_type": 44, + "src": { + "id": 434, + "line": 160, + "column": 71, + "start": 5265, + "end": 5271, + "length": 7, + "parent_index": 427 + }, + "scope": 415, + "name": "", + "type_name": { + "id": 435, + "node_type": 30, + "src": { + "id": 436, + "line": 160, + "column": 71, + "start": 5265, + "end": 5271, + "length": 7, + "parent_index": 433 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 192, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + }, + { + "id": 463, + "name": "add", + "node_type": 42, + "kind": 41, + "src": { + "id": 464, + "line": 177, + "column": 4, + "start": 5623, + "end": 5718, + "length": 96, + "parent_index": 192 + }, + "body": { + "id": 481, + "node_type": 46, + "kind": 0, + "src": { + "id": 482, + "line": 177, + "column": 71, + "start": 5690, + "end": 5718, + "length": 29, + "parent_index": 463 + }, + "implemented": true, + "statements": [ + { + "id": 483, + "node_type": 47, + "src": { + "id": 484, + "line": 178, + "column": 8, + "start": 5700, + "end": 5712, + "length": 13, + "parent_index": 463 + }, + "function_return_parameters": 463, + "expression": { + "id": 485, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 486, + "line": 178, + "column": 15, + "start": 5707, + "end": 5711, + "length": 5, + "parent_index": 481 + }, + "operator": 1, + "left_expression": { + "id": 487, + "node_type": 16, + "src": { + "id": 488, + "line": 178, + "column": 15, + "start": 5707, + "end": 5707, + "length": 1, + "parent_index": 485 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 487, + "is_pure": false + }, + "right_expression": { + "id": 489, + "node_type": 16, + "src": { + "id": 490, + "line": 178, + "column": 19, + "start": 5711, + "end": 5711, + "length": 1, + "parent_index": 485 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 489, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 465, + "node_type": 43, + "src": { + "id": 466, + "line": 177, + "column": 17, + "start": 5636, + "end": 5655, + "length": 20, + "parent_index": 463 + }, + "parameters": [ + { + "id": 467, + "node_type": 44, + "src": { + "id": 468, + "line": 177, + "column": 17, + "start": 5636, + "end": 5644, + "length": 9, + "parent_index": 465 + }, + "scope": 463, + "name": "a", + "type_name": { + "id": 469, + "node_type": 30, + "src": { + "id": 470, + "line": 177, + "column": 17, + "start": 5636, + "end": 5642, + "length": 7, + "parent_index": 467 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 471, + "node_type": 44, + "src": { + "id": 472, + "line": 177, + "column": 28, + "start": 5647, + "end": 5655, + "length": 9, + "parent_index": 465 + }, + "scope": 463, + "name": "b", + "type_name": { + "id": 473, + "node_type": 30, + "src": { + "id": 474, + "line": 177, + "column": 28, + "start": 5647, + "end": 5653, + "length": 7, + "parent_index": 471 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 475, + "node_type": 43, + "src": { + "id": 476, + "line": 177, + "column": 62, + "start": 5681, + "end": 5687, + "length": 7, + "parent_index": 463 + }, + "parameters": [ + { + "id": 477, + "node_type": 44, + "src": { + "id": 478, + "line": 177, + "column": 62, + "start": 5681, + "end": 5687, + "length": 7, + "parent_index": 475 + }, + "scope": 463, + "name": "", + "type_name": { + "id": 479, + "node_type": 30, + "src": { + "id": 480, + "line": 177, + "column": 62, + "start": 5681, + "end": 5687, + "length": 7, + "parent_index": 477 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 192, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + }, + { + "id": 492, + "name": "sub", + "node_type": 42, + "kind": 41, + "src": { + "id": 493, + "line": 191, + "column": 4, + "start": 5990, + "end": 6085, + "length": 96, + "parent_index": 192 + }, + "body": { + "id": 510, + "node_type": 46, + "kind": 0, + "src": { + "id": 511, + "line": 191, + "column": 71, + "start": 6057, + "end": 6085, + "length": 29, + "parent_index": 492 + }, + "implemented": true, + "statements": [ + { + "id": 512, + "node_type": 47, + "src": { + "id": 513, + "line": 192, + "column": 8, + "start": 6067, + "end": 6079, + "length": 13, + "parent_index": 492 + }, + "function_return_parameters": 492, + "expression": { + "id": 514, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 515, + "line": 192, + "column": 15, + "start": 6074, + "end": 6078, + "length": 5, + "parent_index": 510 + }, + "operator": 2, + "left_expression": { + "id": 516, + "node_type": 16, + "src": { + "id": 517, + "line": 192, + "column": 15, + "start": 6074, + "end": 6074, + "length": 1, + "parent_index": 514 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 516, + "is_pure": false + }, + "right_expression": { + "id": 518, + "node_type": 16, + "src": { + "id": 519, + "line": 192, + "column": 19, + "start": 6078, + "end": 6078, + "length": 1, + "parent_index": 514 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 518, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 494, + "node_type": 43, + "src": { + "id": 495, + "line": 191, + "column": 17, + "start": 6003, + "end": 6022, + "length": 20, + "parent_index": 492 + }, + "parameters": [ + { + "id": 496, + "node_type": 44, + "src": { + "id": 497, + "line": 191, + "column": 17, + "start": 6003, + "end": 6011, + "length": 9, + "parent_index": 494 + }, + "scope": 492, + "name": "a", + "type_name": { + "id": 498, + "node_type": 30, + "src": { + "id": 499, + "line": 191, + "column": 17, + "start": 6003, + "end": 6009, + "length": 7, + "parent_index": 496 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 500, + "node_type": 44, + "src": { + "id": 501, + "line": 191, + "column": 28, + "start": 6014, + "end": 6022, + "length": 9, + "parent_index": 494 + }, + "scope": 492, + "name": "b", + "type_name": { + "id": 502, + "node_type": 30, + "src": { + "id": 503, + "line": 191, + "column": 28, + "start": 6014, + "end": 6020, + "length": 7, + "parent_index": 500 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 504, + "node_type": 43, + "src": { + "id": 505, + "line": 191, + "column": 62, + "start": 6048, + "end": 6054, + "length": 7, + "parent_index": 492 + }, + "parameters": [ + { + "id": 506, + "node_type": 44, + "src": { + "id": 507, + "line": 191, + "column": 62, + "start": 6048, + "end": 6054, + "length": 7, + "parent_index": 504 + }, + "scope": 492, + "name": "", + "type_name": { + "id": 508, + "node_type": 30, + "src": { + "id": 509, + "line": 191, + "column": 62, + "start": 6048, + "end": 6054, + "length": 7, + "parent_index": 506 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 192, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + }, + { + "id": 521, + "name": "mul", + "node_type": 42, + "kind": 41, + "src": { + "id": 522, + "line": 205, + "column": 4, + "start": 6333, + "end": 6428, + "length": 96, + "parent_index": 192 + }, + "body": { + "id": 539, + "node_type": 46, + "kind": 0, + "src": { + "id": 540, + "line": 205, + "column": 71, + "start": 6400, + "end": 6428, + "length": 29, + "parent_index": 521 + }, + "implemented": true, + "statements": [ + { + "id": 541, + "node_type": 47, + "src": { + "id": 542, + "line": 206, + "column": 8, + "start": 6410, + "end": 6422, + "length": 13, + "parent_index": 521 + }, + "function_return_parameters": 521, + "expression": { + "id": 543, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 544, + "line": 206, + "column": 15, + "start": 6417, + "end": 6421, + "length": 5, + "parent_index": 539 + }, + "operator": 3, + "left_expression": { + "id": 545, + "node_type": 16, + "src": { + "id": 546, + "line": 206, + "column": 15, + "start": 6417, + "end": 6417, + "length": 1, + "parent_index": 543 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 545, + "is_pure": false + }, + "right_expression": { + "id": 547, + "node_type": 16, + "src": { + "id": 548, + "line": 206, + "column": 19, + "start": 6421, + "end": 6421, + "length": 1, + "parent_index": 543 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 547, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 523, + "node_type": 43, + "src": { + "id": 524, + "line": 205, + "column": 17, + "start": 6346, + "end": 6365, + "length": 20, + "parent_index": 521 + }, + "parameters": [ + { + "id": 525, + "node_type": 44, + "src": { + "id": 526, + "line": 205, + "column": 17, + "start": 6346, + "end": 6354, + "length": 9, + "parent_index": 523 + }, + "scope": 521, + "name": "a", + "type_name": { + "id": 527, + "node_type": 30, + "src": { + "id": 528, + "line": 205, + "column": 17, + "start": 6346, + "end": 6352, + "length": 7, + "parent_index": 525 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 529, + "node_type": 44, + "src": { + "id": 530, + "line": 205, + "column": 28, + "start": 6357, + "end": 6365, + "length": 9, + "parent_index": 523 + }, + "scope": 521, + "name": "b", + "type_name": { + "id": 531, + "node_type": 30, + "src": { + "id": 532, + "line": 205, + "column": 28, + "start": 6357, + "end": 6363, + "length": 7, + "parent_index": 529 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 533, + "node_type": 43, + "src": { + "id": 534, + "line": 205, + "column": 62, + "start": 6391, + "end": 6397, + "length": 7, + "parent_index": 521 + }, + "parameters": [ + { + "id": 535, + "node_type": 44, + "src": { + "id": 536, + "line": 205, + "column": 62, + "start": 6391, + "end": 6397, + "length": 7, + "parent_index": 533 + }, + "scope": 521, + "name": "", + "type_name": { + "id": 537, + "node_type": 30, + "src": { + "id": 538, + "line": 205, + "column": 62, + "start": 6391, + "end": 6397, + "length": 7, + "parent_index": 535 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 192, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + }, + { + "id": 550, + "name": "div", + "node_type": 42, + "kind": 41, + "src": { + "id": 551, + "line": 221, + "column": 4, + "start": 6893, + "end": 6988, + "length": 96, + "parent_index": 192 + }, + "body": { + "id": 568, + "node_type": 46, + "kind": 0, + "src": { + "id": 569, + "line": 221, + "column": 71, + "start": 6960, + "end": 6988, + "length": 29, + "parent_index": 550 + }, + "implemented": true, + "statements": [ + { + "id": 570, + "node_type": 47, + "src": { + "id": 571, + "line": 222, + "column": 8, + "start": 6970, + "end": 6982, + "length": 13, + "parent_index": 550 + }, + "function_return_parameters": 550, + "expression": { + "id": 572, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 573, + "line": 222, + "column": 15, + "start": 6977, + "end": 6981, + "length": 5, + "parent_index": 568 + }, + "operator": 4, + "left_expression": { + "id": 574, + "node_type": 16, + "src": { + "id": 575, + "line": 222, + "column": 15, + "start": 6977, + "end": 6977, + "length": 1, + "parent_index": 572 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 574, + "is_pure": false + }, + "right_expression": { + "id": 576, + "node_type": 16, + "src": { + "id": 577, + "line": 222, + "column": 19, + "start": 6981, + "end": 6981, + "length": 1, + "parent_index": 572 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 576, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 552, + "node_type": 43, + "src": { + "id": 553, + "line": 221, + "column": 17, + "start": 6906, + "end": 6925, + "length": 20, + "parent_index": 550 + }, + "parameters": [ + { + "id": 554, + "node_type": 44, + "src": { + "id": 555, + "line": 221, + "column": 17, + "start": 6906, + "end": 6914, + "length": 9, + "parent_index": 552 + }, + "scope": 550, + "name": "a", + "type_name": { + "id": 556, + "node_type": 30, + "src": { + "id": 557, + "line": 221, + "column": 17, + "start": 6906, + "end": 6912, + "length": 7, + "parent_index": 554 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 558, + "node_type": 44, + "src": { + "id": 559, + "line": 221, + "column": 28, + "start": 6917, + "end": 6925, + "length": 9, + "parent_index": 552 + }, + "scope": 550, + "name": "b", + "type_name": { + "id": 560, + "node_type": 30, + "src": { + "id": 561, + "line": 221, + "column": 28, + "start": 6917, + "end": 6923, + "length": 7, + "parent_index": 558 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 562, + "node_type": 43, + "src": { + "id": 563, + "line": 221, + "column": 62, + "start": 6951, + "end": 6957, + "length": 7, + "parent_index": 550 + }, + "parameters": [ + { + "id": 564, + "node_type": 44, + "src": { + "id": 565, + "line": 221, + "column": 62, + "start": 6951, + "end": 6957, + "length": 7, + "parent_index": 562 + }, + "scope": 550, + "name": "", + "type_name": { + "id": 566, + "node_type": 30, + "src": { + "id": 567, + "line": 221, + "column": 62, + "start": 6951, + "end": 6957, + "length": 7, + "parent_index": 564 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 192, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + }, + { + "id": 579, + "name": "mod", + "node_type": 42, + "kind": 41, + "src": { + "id": 580, + "line": 237, + "column": 4, + "start": 7442, + "end": 7537, + "length": 96, + "parent_index": 192 + }, + "body": { + "id": 597, + "node_type": 46, + "kind": 0, + "src": { + "id": 598, + "line": 237, + "column": 71, + "start": 7509, + "end": 7537, + "length": 29, + "parent_index": 579 + }, + "implemented": true, + "statements": [ + { + "id": 599, + "node_type": 47, + "src": { + "id": 600, + "line": 238, + "column": 8, + "start": 7519, + "end": 7531, + "length": 13, + "parent_index": 579 + }, + "function_return_parameters": 579, + "expression": { + "id": 601, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 602, + "line": 238, + "column": 15, + "start": 7526, + "end": 7530, + "length": 5, + "parent_index": 597 + }, + "operator": 5, + "left_expression": { + "id": 603, + "node_type": 16, + "src": { + "id": 604, + "line": 238, + "column": 15, + "start": 7526, + "end": 7526, + "length": 1, + "parent_index": 601 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 603, + "is_pure": false + }, + "right_expression": { + "id": 605, + "node_type": 16, + "src": { + "id": 606, + "line": 238, + "column": 19, + "start": 7530, + "end": 7530, + "length": 1, + "parent_index": 601 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 605, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 581, + "node_type": 43, + "src": { + "id": 582, + "line": 237, + "column": 17, + "start": 7455, + "end": 7474, + "length": 20, + "parent_index": 579 + }, + "parameters": [ + { + "id": 583, + "node_type": 44, + "src": { + "id": 584, + "line": 237, + "column": 17, + "start": 7455, + "end": 7463, + "length": 9, + "parent_index": 581 + }, + "scope": 579, + "name": "a", + "type_name": { + "id": 585, + "node_type": 30, + "src": { + "id": 586, + "line": 237, + "column": 17, + "start": 7455, + "end": 7461, + "length": 7, + "parent_index": 583 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 587, + "node_type": 44, + "src": { + "id": 588, + "line": 237, + "column": 28, + "start": 7466, + "end": 7474, + "length": 9, + "parent_index": 581 + }, + "scope": 579, + "name": "b", + "type_name": { + "id": 589, + "node_type": 30, + "src": { + "id": 590, + "line": 237, + "column": 28, + "start": 7466, + "end": 7472, + "length": 7, + "parent_index": 587 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 591, + "node_type": 43, + "src": { + "id": 592, + "line": 237, + "column": 62, + "start": 7500, + "end": 7506, + "length": 7, + "parent_index": 579 + }, + "parameters": [ + { + "id": 593, + "node_type": 44, + "src": { + "id": 594, + "line": 237, + "column": 62, + "start": 7500, + "end": 7506, + "length": 7, + "parent_index": 591 + }, + "scope": 579, + "name": "", + "type_name": { + "id": 595, + "node_type": 30, + "src": { + "id": 596, + "line": 237, + "column": 62, + "start": 7500, + "end": 7506, + "length": 7, + "parent_index": 593 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 192, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + }, + { + "id": 608, + "name": "sub", + "node_type": 42, + "kind": 41, + "src": { + "id": 609, + "line": 254, + "column": 4, + "start": 8002, + "end": 8232, + "length": 231, + "parent_index": 192 + }, + "body": { + "id": 630, + "node_type": 46, + "kind": 0, + "src": { + "id": 631, + "line": 258, + "column": 38, + "start": 8127, + "end": 8232, + "length": 106, + "parent_index": 608 + }, + "implemented": true, + "statements": [ + { + "id": 632, + "node_type": 59, + "kind": 0, + "src": { + "id": 633, + "line": 259, + "column": 8, + "start": 8137, + "end": 8226, + "length": 90, + "parent_index": 192 + }, + "implemented": false, + "statements": [ + { + "id": 634, + "node_type": 24, + "kind": 24, + "src": { + "id": 635, + "line": 260, + "column": 12, + "start": 8161, + "end": 8189, + "length": 29, + "parent_index": 632 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ], + "arguments": [ + { + "id": 638, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 639, + "line": 260, + "column": 20, + "start": 8169, + "end": 8174, + "length": 6, + "parent_index": 634 + }, + "operator": 10, + "left_expression": { + "id": 640, + "node_type": 16, + "src": { + "id": 641, + "line": 260, + "column": 20, + "start": 8169, + "end": 8169, + "length": 1, + "parent_index": 638 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 640, + "is_pure": false + }, + "right_expression": { + "id": 642, + "node_type": 16, + "src": { + "id": 643, + "line": 260, + "column": 25, + "start": 8174, + "end": 8174, + "length": 1, + "parent_index": 638 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 642, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 644, + "node_type": 16, + "src": { + "id": 645, + "line": 260, + "column": 28, + "start": 8177, + "end": 8188, + "length": 12, + "parent_index": 634 + }, + "name": "errorMessage", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 644, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 636, + "node_type": 16, + "src": { + "id": 637, + "line": 260, + "column": 12, + "start": 8161, + "end": 8167, + "length": 7, + "parent_index": 634 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string$", + "type_string": "function(bool,string)" + } + }, + { + "id": 646, + "node_type": 47, + "src": { + "id": 647, + "line": 261, + "column": 12, + "start": 8204, + "end": 8216, + "length": 13, + "parent_index": 608 + }, + "function_return_parameters": 608, + "expression": { + "id": 648, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 649, + "line": 261, + "column": 19, + "start": 8211, + "end": 8215, + "length": 5, + "parent_index": 632 + }, + "operator": 2, + "left_expression": { + "id": 650, + "node_type": 16, + "src": { + "id": 651, + "line": 261, + "column": 19, + "start": 8211, + "end": 8211, + "length": 1, + "parent_index": 648 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 650, + "is_pure": false + }, + "right_expression": { + "id": 652, + "node_type": 16, + "src": { + "id": 653, + "line": 261, + "column": 23, + "start": 8215, + "end": 8215, + "length": 1, + "parent_index": 648 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 652, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + } + ] + } + ] + }, + "implemented": false, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 610, + "node_type": 43, + "src": { + "id": 611, + "line": 255, + "column": 8, + "start": 8024, + "end": 8087, + "length": 64, + "parent_index": 608 + }, + "parameters": [ + { + "id": 612, + "node_type": 44, + "src": { + "id": 613, + "line": 255, + "column": 8, + "start": 8024, + "end": 8032, + "length": 9, + "parent_index": 610 + }, + "scope": 608, + "name": "a", + "type_name": { + "id": 614, + "node_type": 30, + "src": { + "id": 615, + "line": 255, + "column": 8, + "start": 8024, + "end": 8030, + "length": 7, + "parent_index": 612 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 616, + "node_type": 44, + "src": { + "id": 617, + "line": 256, + "column": 8, + "start": 8043, + "end": 8051, + "length": 9, + "parent_index": 610 + }, + "scope": 608, + "name": "b", + "type_name": { + "id": 618, + "node_type": 30, + "src": { + "id": 619, + "line": 256, + "column": 8, + "start": 8043, + "end": 8049, + "length": 7, + "parent_index": 616 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 620, + "node_type": 44, + "src": { + "id": 621, + "line": 257, + "column": 8, + "start": 8062, + "end": 8087, + "length": 26, + "parent_index": 610 + }, + "scope": 608, + "name": "errorMessage", + "type_name": { + "id": 622, + "node_type": 30, + "src": { + "id": 623, + "line": 257, + "column": 8, + "start": 8062, + "end": 8067, + "length": 6, + "parent_index": 620 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 624, + "node_type": 43, + "src": { + "id": 625, + "line": 258, + "column": 29, + "start": 8118, + "end": 8124, + "length": 7, + "parent_index": 608 + }, + "parameters": [ + { + "id": 626, + "node_type": 44, + "src": { + "id": 627, + "line": 258, + "column": 29, + "start": 8118, + "end": 8124, + "length": 7, + "parent_index": 624 + }, + "scope": 608, + "name": "", + "type_name": { + "id": 628, + "node_type": 30, + "src": { + "id": 629, + "line": 258, + "column": 29, + "start": 8118, + "end": 8124, + "length": 7, + "parent_index": 626 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 192, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$_t_string$", + "type_string": "function(uint256,uint256,string)" + } + }, + { + "id": 655, + "name": "div", + "node_type": 42, + "kind": 41, + "src": { + "id": 656, + "line": 277, + "column": 4, + "start": 8717, + "end": 8946, + "length": 230, + "parent_index": 192 + }, + "body": { + "id": 677, + "node_type": 46, + "kind": 0, + "src": { + "id": 678, + "line": 281, + "column": 38, + "start": 8842, + "end": 8946, + "length": 105, + "parent_index": 655 + }, + "implemented": true, + "statements": [ + { + "id": 679, + "node_type": 59, + "kind": 0, + "src": { + "id": 680, + "line": 282, + "column": 8, + "start": 8852, + "end": 8940, + "length": 89, + "parent_index": 192 + }, + "implemented": false, + "statements": [ + { + "id": 681, + "node_type": 24, + "kind": 24, + "src": { + "id": 682, + "line": 283, + "column": 12, + "start": 8876, + "end": 8903, + "length": 28, + "parent_index": 679 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ], + "arguments": [ + { + "id": 685, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 686, + "line": 283, + "column": 20, + "start": 8884, + "end": 8888, + "length": 5, + "parent_index": 681 + }, + "operator": 7, + "left_expression": { + "id": 687, + "node_type": 16, + "src": { + "id": 688, + "line": 283, + "column": 20, + "start": 8884, + "end": 8884, + "length": 1, + "parent_index": 685 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 687, + "is_pure": false + }, + "right_expression": { + "id": 689, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 690, + "line": 283, + "column": 24, + "start": 8888, + "end": 8888, + "length": 1, + "parent_index": 685 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 691, + "node_type": 16, + "src": { + "id": 692, + "line": 283, + "column": 27, + "start": 8891, + "end": 8902, + "length": 12, + "parent_index": 681 + }, + "name": "errorMessage", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 691, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 683, + "node_type": 16, + "src": { + "id": 684, + "line": 283, + "column": 12, + "start": 8876, + "end": 8882, + "length": 7, + "parent_index": 681 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string$", + "type_string": "function(bool,string)" + } + }, + { + "id": 693, + "node_type": 47, + "src": { + "id": 694, + "line": 284, + "column": 12, + "start": 8918, + "end": 8930, + "length": 13, + "parent_index": 655 + }, + "function_return_parameters": 655, + "expression": { + "id": 695, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 696, + "line": 284, + "column": 19, + "start": 8925, + "end": 8929, + "length": 5, + "parent_index": 679 + }, + "operator": 4, + "left_expression": { + "id": 697, + "node_type": 16, + "src": { + "id": 698, + "line": 284, + "column": 19, + "start": 8925, + "end": 8925, + "length": 1, + "parent_index": 695 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 697, + "is_pure": false + }, + "right_expression": { + "id": 699, + "node_type": 16, + "src": { + "id": 700, + "line": 284, + "column": 23, + "start": 8929, + "end": 8929, + "length": 1, + "parent_index": 695 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 699, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + } + ] + } + ] + }, + "implemented": false, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 657, + "node_type": 43, + "src": { + "id": 658, + "line": 278, + "column": 8, + "start": 8739, + "end": 8802, + "length": 64, + "parent_index": 655 + }, + "parameters": [ + { + "id": 659, + "node_type": 44, + "src": { + "id": 660, + "line": 278, + "column": 8, + "start": 8739, + "end": 8747, + "length": 9, + "parent_index": 657 + }, + "scope": 655, + "name": "a", + "type_name": { + "id": 661, + "node_type": 30, + "src": { + "id": 662, + "line": 278, + "column": 8, + "start": 8739, + "end": 8745, + "length": 7, + "parent_index": 659 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 663, + "node_type": 44, + "src": { + "id": 664, + "line": 279, + "column": 8, + "start": 8758, + "end": 8766, + "length": 9, + "parent_index": 657 + }, + "scope": 655, + "name": "b", + "type_name": { + "id": 665, + "node_type": 30, + "src": { + "id": 666, + "line": 279, + "column": 8, + "start": 8758, + "end": 8764, + "length": 7, + "parent_index": 663 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 667, + "node_type": 44, + "src": { + "id": 668, + "line": 280, + "column": 8, + "start": 8777, + "end": 8802, + "length": 26, + "parent_index": 657 + }, + "scope": 655, + "name": "errorMessage", + "type_name": { + "id": 669, + "node_type": 30, + "src": { + "id": 670, + "line": 280, + "column": 8, + "start": 8777, + "end": 8782, + "length": 6, + "parent_index": 667 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 671, + "node_type": 43, + "src": { + "id": 672, + "line": 281, + "column": 29, + "start": 8833, + "end": 8839, + "length": 7, + "parent_index": 655 + }, + "parameters": [ + { + "id": 673, + "node_type": 44, + "src": { + "id": 674, + "line": 281, + "column": 29, + "start": 8833, + "end": 8839, + "length": 7, + "parent_index": 671 + }, + "scope": 655, + "name": "", + "type_name": { + "id": 675, + "node_type": 30, + "src": { + "id": 676, + "line": 281, + "column": 29, + "start": 8833, + "end": 8839, + "length": 7, + "parent_index": 673 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 192, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$_t_string$", + "type_string": "function(uint256,uint256,string)" + } + }, + { + "id": 702, + "name": "mod", + "node_type": 42, + "kind": 41, + "src": { + "id": 703, + "line": 303, + "column": 4, + "start": 9593, + "end": 9822, + "length": 230, + "parent_index": 192 + }, + "body": { + "id": 724, + "node_type": 46, + "kind": 0, + "src": { + "id": 725, + "line": 307, + "column": 38, + "start": 9718, + "end": 9822, + "length": 105, + "parent_index": 702 + }, + "implemented": true, + "statements": [ + { + "id": 726, + "node_type": 59, + "kind": 0, + "src": { + "id": 727, + "line": 308, + "column": 8, + "start": 9728, + "end": 9816, + "length": 89, + "parent_index": 192 + }, + "implemented": false, + "statements": [ + { + "id": 728, + "node_type": 24, + "kind": 24, + "src": { + "id": 729, + "line": 309, + "column": 12, + "start": 9752, + "end": 9779, + "length": 28, + "parent_index": 726 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ], + "arguments": [ + { + "id": 732, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 733, + "line": 309, + "column": 20, + "start": 9760, + "end": 9764, + "length": 5, + "parent_index": 728 + }, + "operator": 7, + "left_expression": { + "id": 734, + "node_type": 16, + "src": { + "id": 735, + "line": 309, + "column": 20, + "start": 9760, + "end": 9760, + "length": 1, + "parent_index": 732 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 734, + "is_pure": false + }, + "right_expression": { + "id": 736, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 737, + "line": 309, + "column": 24, + "start": 9764, + "end": 9764, + "length": 1, + "parent_index": 732 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 738, + "node_type": 16, + "src": { + "id": 739, + "line": 309, + "column": 27, + "start": 9767, + "end": 9778, + "length": 12, + "parent_index": 728 + }, + "name": "errorMessage", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 738, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 730, + "node_type": 16, + "src": { + "id": 731, + "line": 309, + "column": 12, + "start": 9752, + "end": 9758, + "length": 7, + "parent_index": 728 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string$", + "type_string": "function(bool,string)" + } + }, + { + "id": 740, + "node_type": 47, + "src": { + "id": 741, + "line": 310, + "column": 12, + "start": 9794, + "end": 9806, + "length": 13, + "parent_index": 702 + }, + "function_return_parameters": 702, + "expression": { + "id": 742, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 743, + "line": 310, + "column": 19, + "start": 9801, + "end": 9805, + "length": 5, + "parent_index": 726 + }, + "operator": 5, + "left_expression": { + "id": 744, + "node_type": 16, + "src": { + "id": 745, + "line": 310, + "column": 19, + "start": 9801, + "end": 9801, + "length": 1, + "parent_index": 742 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 744, + "is_pure": false + }, + "right_expression": { + "id": 746, + "node_type": 16, + "src": { + "id": 747, + "line": 310, + "column": 23, + "start": 9805, + "end": 9805, + "length": 1, + "parent_index": 742 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 746, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + } + ] + } + ] + }, + "implemented": false, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 704, + "node_type": 43, + "src": { + "id": 705, + "line": 304, + "column": 8, + "start": 9615, + "end": 9678, + "length": 64, + "parent_index": 702 + }, + "parameters": [ + { + "id": 706, + "node_type": 44, + "src": { + "id": 707, + "line": 304, + "column": 8, + "start": 9615, + "end": 9623, + "length": 9, + "parent_index": 704 + }, + "scope": 702, + "name": "a", + "type_name": { + "id": 708, + "node_type": 30, + "src": { + "id": 709, + "line": 304, + "column": 8, + "start": 9615, + "end": 9621, + "length": 7, + "parent_index": 706 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 710, + "node_type": 44, + "src": { + "id": 711, + "line": 305, + "column": 8, + "start": 9634, + "end": 9642, + "length": 9, + "parent_index": 704 + }, + "scope": 702, + "name": "b", + "type_name": { + "id": 712, + "node_type": 30, + "src": { + "id": 713, + "line": 305, + "column": 8, + "start": 9634, + "end": 9640, + "length": 7, + "parent_index": 710 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 714, + "node_type": 44, + "src": { + "id": 715, + "line": 306, + "column": 8, + "start": 9653, + "end": 9678, + "length": 26, + "parent_index": 704 + }, + "scope": 702, + "name": "errorMessage", + "type_name": { + "id": 716, + "node_type": 30, + "src": { + "id": 717, + "line": 306, + "column": 8, + "start": 9653, + "end": 9658, + "length": 6, + "parent_index": 714 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 718, + "node_type": 43, + "src": { + "id": 719, + "line": 307, + "column": 29, + "start": 9709, + "end": 9715, + "length": 7, + "parent_index": 702 + }, + "parameters": [ + { + "id": 720, + "node_type": 44, + "src": { + "id": 721, + "line": 307, + "column": 29, + "start": 9709, + "end": 9715, + "length": 7, + "parent_index": 718 + }, + "scope": 702, + "name": "", + "type_name": { + "id": 722, + "node_type": 30, + "src": { + "id": 723, + "line": 307, + "column": 29, + "start": 9709, + "end": 9715, + "length": 7, + "parent_index": 720 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 192, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$_t_string$", + "type_string": "function(uint256,uint256,string)" + } + } + ], + "linearized_base_contracts": [ + 192 + ], + "base_contracts": [], + "contract_dependencies": [], + "scope": 186 + } + ], + "src": { + "id": 187, + "line": 100, + "column": 0, + "start": 3349, + "end": 9824, + "length": 6476, + "parent_index": 30 + } } \ No newline at end of file diff --git a/data/tests/ast/SimpleStorage.solgo.ast.json b/data/tests/ast/SimpleStorage.solgo.ast.json index 849b89ce..82503b6e 100644 --- a/data/tests/ast/SimpleStorage.solgo.ast.json +++ b/data/tests/ast/SimpleStorage.solgo.ast.json @@ -1 +1 @@ -{"id":12,"node_type":80,"entry_source_unit":234,"root":[{"id":13,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":13,"name":"MathLib","absolute_path":"MathLib.sol"}],"absolute_path":"MathLib.sol","name":"MathLib","node_type":1,"nodes":[{"id":15,"node_type":10,"src":{"id":16,"line":2,"column":0,"start":32,"end":54,"length":23,"parent_index":13},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":17,"node_type":10,"src":{"id":18,"line":3,"column":0,"start":56,"end":88,"length":33,"parent_index":13},"literals":["pragma","experimental","ABIEncoderV2",";"],"text":"pragma experimental ABIEncoderV2;"},{"id":19,"name":"MathLib","node_type":35,"src":{"id":0,"line":6,"column":0,"start":149,"end":1010,"length":862,"parent_index":13},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":21,"name":"add","node_type":42,"kind":41,"src":{"id":22,"line":8,"column":4,"start":202,"end":355,"length":154,"parent_index":19},"body":{"id":39,"node_type":46,"kind":0,"src":{"id":40,"line":8,"column":62,"start":260,"end":355,"length":96,"parent_index":21},"implemented":true,"statements":[{"id":41,"node_type":44,"src":{"id":42,"line":9,"column":8,"start":270,"end":284,"length":15,"parent_index":39},"assignments":[43],"declarations":[{"is_constant":false,"id":43,"state_mutability":1,"name":"c","node_type":44,"scope":39,"src":{"id":44,"line":9,"column":8,"start":270,"end":275,"length":6,"parent_index":41},"is_state_variable":false,"storage_location":1,"type_name":{"id":45,"node_type":30,"src":{"id":46,"line":9,"column":8,"start":270,"end":273,"length":4,"parent_index":43},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":47,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":48,"line":9,"column":17,"start":279,"end":283,"length":5,"parent_index":41},"operator":1,"left_expression":{"id":49,"node_type":16,"src":{"id":50,"line":9,"column":17,"start":279,"end":279,"length":1,"parent_index":47},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":49,"is_pure":false},"right_expression":{"id":51,"node_type":16,"src":{"id":52,"line":9,"column":21,"start":283,"end":283,"length":1,"parent_index":47},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":51,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":53,"node_type":24,"kind":24,"src":{"id":54,"line":10,"column":8,"start":294,"end":329,"length":36,"parent_index":39},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Addition overflow\""}],"arguments":[{"id":55,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":56,"line":10,"column":16,"start":302,"end":307,"length":6,"parent_index":53},"operator":8,"left_expression":{"id":57,"node_type":16,"src":{"id":58,"line":10,"column":16,"start":302,"end":302,"length":1,"parent_index":55},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":41,"is_pure":false},"right_expression":{"id":59,"node_type":16,"src":{"id":60,"line":10,"column":21,"start":307,"end":307,"length":1,"parent_index":55},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":59,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":61,"node_type":17,"kind":50,"value":"Addition overflow","hex_value":"4164646974696f6e206f766572666c6f77","src":{"id":62,"line":10,"column":24,"start":310,"end":328,"length":19,"parent_index":53},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Addition overflow\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":63,"node_type":16,"src":{"id":64,"line":10,"column":8,"start":294,"end":300,"length":7,"parent_index":53},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"Addition overflow\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Addition overflow\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":65,"node_type":47,"src":{"id":66,"line":12,"column":8,"start":341,"end":349,"length":9,"parent_index":21},"function_return_parameters":21,"expression":{"id":67,"node_type":16,"src":{"id":68,"line":12,"column":15,"start":348,"end":348,"length":1,"parent_index":39},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":41,"is_pure":false}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":23,"node_type":43,"src":{"id":24,"line":8,"column":17,"start":215,"end":228,"length":14,"parent_index":21},"parameters":[{"id":25,"node_type":44,"src":{"id":26,"line":8,"column":17,"start":215,"end":220,"length":6,"parent_index":23},"scope":21,"name":"a","type_name":{"id":27,"node_type":30,"src":{"id":28,"line":8,"column":17,"start":215,"end":218,"length":4,"parent_index":25},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":29,"node_type":44,"src":{"id":30,"line":8,"column":25,"start":223,"end":228,"length":6,"parent_index":23},"scope":21,"name":"b","type_name":{"id":31,"node_type":30,"src":{"id":32,"line":8,"column":25,"start":223,"end":226,"length":4,"parent_index":29},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":33,"node_type":43,"src":{"id":34,"line":8,"column":56,"start":254,"end":257,"length":4,"parent_index":21},"parameters":[{"id":35,"node_type":44,"src":{"id":36,"line":8,"column":56,"start":254,"end":257,"length":4,"parent_index":33},"scope":21,"name":"","type_name":{"id":37,"node_type":30,"src":{"id":38,"line":8,"column":56,"start":254,"end":257,"length":4,"parent_index":35},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":19,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256","type_string":"function(uint256,uint256)"}},{"id":70,"name":"sub","node_type":42,"kind":41,"src":{"id":71,"line":16,"column":4,"start":398,"end":555,"length":158,"parent_index":19},"body":{"id":88,"node_type":46,"kind":0,"src":{"id":89,"line":16,"column":62,"start":456,"end":555,"length":100,"parent_index":70},"implemented":true,"statements":[{"id":90,"node_type":24,"kind":24,"src":{"id":91,"line":17,"column":8,"start":466,"end":505,"length":40,"parent_index":88},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Subtraction underflow\""}],"arguments":[{"id":92,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":93,"line":17,"column":16,"start":474,"end":479,"length":6,"parent_index":90},"operator":10,"left_expression":{"id":94,"node_type":16,"src":{"id":95,"line":17,"column":16,"start":474,"end":474,"length":1,"parent_index":92},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":94,"is_pure":false},"right_expression":{"id":96,"node_type":16,"src":{"id":97,"line":17,"column":21,"start":479,"end":479,"length":1,"parent_index":92},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":96,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":98,"node_type":17,"kind":50,"value":"Subtraction underflow","hex_value":"5375627472616374696f6e20756e646572666c6f77","src":{"id":99,"line":17,"column":24,"start":482,"end":504,"length":23,"parent_index":90},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Subtraction underflow\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":100,"node_type":16,"src":{"id":101,"line":17,"column":8,"start":466,"end":472,"length":7,"parent_index":90},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"Subtraction underflow\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Subtraction underflow\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":102,"node_type":44,"src":{"id":103,"line":18,"column":8,"start":516,"end":530,"length":15,"parent_index":88},"assignments":[104],"declarations":[{"is_constant":false,"id":104,"state_mutability":1,"name":"c","node_type":44,"scope":88,"src":{"id":105,"line":18,"column":8,"start":516,"end":521,"length":6,"parent_index":102},"is_state_variable":false,"storage_location":1,"type_name":{"id":106,"node_type":30,"src":{"id":107,"line":18,"column":8,"start":516,"end":519,"length":4,"parent_index":104},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":108,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":109,"line":18,"column":17,"start":525,"end":529,"length":5,"parent_index":102},"operator":2,"left_expression":{"id":110,"node_type":16,"src":{"id":111,"line":18,"column":17,"start":525,"end":525,"length":1,"parent_index":108},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":110,"is_pure":false},"right_expression":{"id":112,"node_type":16,"src":{"id":113,"line":18,"column":21,"start":529,"end":529,"length":1,"parent_index":108},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":112,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":114,"node_type":47,"src":{"id":115,"line":20,"column":8,"start":541,"end":549,"length":9,"parent_index":70},"function_return_parameters":70,"expression":{"id":116,"node_type":16,"src":{"id":117,"line":20,"column":15,"start":548,"end":548,"length":1,"parent_index":88},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":102,"is_pure":false}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":72,"node_type":43,"src":{"id":73,"line":16,"column":17,"start":411,"end":424,"length":14,"parent_index":70},"parameters":[{"id":74,"node_type":44,"src":{"id":75,"line":16,"column":17,"start":411,"end":416,"length":6,"parent_index":72},"scope":70,"name":"a","type_name":{"id":76,"node_type":30,"src":{"id":77,"line":16,"column":17,"start":411,"end":414,"length":4,"parent_index":74},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":78,"node_type":44,"src":{"id":79,"line":16,"column":25,"start":419,"end":424,"length":6,"parent_index":72},"scope":70,"name":"b","type_name":{"id":80,"node_type":30,"src":{"id":81,"line":16,"column":25,"start":419,"end":422,"length":4,"parent_index":78},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":82,"node_type":43,"src":{"id":83,"line":16,"column":56,"start":450,"end":453,"length":4,"parent_index":70},"parameters":[{"id":84,"node_type":44,"src":{"id":85,"line":16,"column":56,"start":450,"end":453,"length":4,"parent_index":82},"scope":70,"name":"","type_name":{"id":86,"node_type":30,"src":{"id":87,"line":16,"column":56,"start":450,"end":453,"length":4,"parent_index":84},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":19,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256","type_string":"function(uint256,uint256)"}},{"id":119,"name":"mul","node_type":42,"kind":41,"src":{"id":120,"line":24,"column":4,"start":598,"end":816,"length":219,"parent_index":19},"body":{"id":137,"node_type":46,"kind":0,"src":{"id":138,"line":24,"column":62,"start":656,"end":816,"length":161,"parent_index":119},"implemented":true,"statements":[{"id":139,"node_type":48,"src":{"id":140,"line":25,"column":0,"start":666,"end":710,"length":45,"parent_index":137},"condition":{"id":141,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":142,"line":25,"column":12,"start":670,"end":675,"length":6,"parent_index":139},"operator":11,"left_expression":{"id":143,"node_type":16,"src":{"id":144,"line":25,"column":12,"start":670,"end":670,"length":1,"parent_index":141},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":143,"is_pure":false},"right_expression":{"id":145,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":146,"line":25,"column":17,"start":675,"end":675,"length":1,"parent_index":141},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":147,"node_type":46,"kind":0,"src":{"id":148,"line":25,"column":20,"start":678,"end":710,"length":33,"parent_index":119},"implemented":true,"statements":[{"id":149,"node_type":47,"src":{"id":150,"line":26,"column":12,"start":692,"end":700,"length":9,"parent_index":119},"function_return_parameters":119,"expression":{"id":151,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":152,"line":26,"column":19,"start":699,"end":699,"length":1,"parent_index":147},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]}},{"id":153,"node_type":44,"src":{"id":154,"line":29,"column":8,"start":721,"end":735,"length":15,"parent_index":137},"assignments":[155],"declarations":[{"is_constant":false,"id":155,"state_mutability":1,"name":"c","node_type":44,"scope":137,"src":{"id":156,"line":29,"column":8,"start":721,"end":726,"length":6,"parent_index":153},"is_state_variable":false,"storage_location":1,"type_name":{"id":157,"node_type":30,"src":{"id":158,"line":29,"column":8,"start":721,"end":724,"length":4,"parent_index":155},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":159,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":160,"line":29,"column":17,"start":730,"end":734,"length":5,"parent_index":153},"operator":3,"left_expression":{"id":161,"node_type":16,"src":{"id":162,"line":29,"column":17,"start":730,"end":730,"length":1,"parent_index":159},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":161,"is_pure":false},"right_expression":{"id":163,"node_type":16,"src":{"id":164,"line":29,"column":21,"start":734,"end":734,"length":1,"parent_index":159},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":163,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":165,"node_type":24,"kind":24,"src":{"id":166,"line":30,"column":8,"start":745,"end":790,"length":46,"parent_index":137},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Multiplication overflow\""}],"arguments":[{"id":167,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":168,"line":30,"column":16,"start":753,"end":762,"length":10,"parent_index":165},"operator":11,"left_expression":{"id":169,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":170,"line":30,"column":16,"start":753,"end":757,"length":5,"parent_index":167},"operator":4,"left_expression":{"id":171,"node_type":16,"src":{"id":172,"line":30,"column":16,"start":753,"end":753,"length":1,"parent_index":169},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":153,"is_pure":false},"right_expression":{"id":173,"node_type":16,"src":{"id":174,"line":30,"column":20,"start":757,"end":757,"length":1,"parent_index":169},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":173,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"right_expression":{"id":175,"node_type":16,"src":{"id":176,"line":30,"column":25,"start":762,"end":762,"length":1,"parent_index":167},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":175,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":177,"node_type":17,"kind":50,"value":"Multiplication overflow","hex_value":"4d756c7469706c69636174696f6e206f766572666c6f77","src":{"id":178,"line":30,"column":28,"start":765,"end":789,"length":25,"parent_index":165},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Multiplication overflow\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":179,"node_type":16,"src":{"id":180,"line":30,"column":8,"start":745,"end":751,"length":7,"parent_index":165},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"Multiplication overflow\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Multiplication overflow\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":181,"node_type":47,"src":{"id":182,"line":32,"column":8,"start":802,"end":810,"length":9,"parent_index":119},"function_return_parameters":119,"expression":{"id":183,"node_type":16,"src":{"id":184,"line":32,"column":15,"start":809,"end":809,"length":1,"parent_index":137},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":153,"is_pure":false}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":121,"node_type":43,"src":{"id":122,"line":24,"column":17,"start":611,"end":624,"length":14,"parent_index":119},"parameters":[{"id":123,"node_type":44,"src":{"id":124,"line":24,"column":17,"start":611,"end":616,"length":6,"parent_index":121},"scope":119,"name":"a","type_name":{"id":125,"node_type":30,"src":{"id":126,"line":24,"column":17,"start":611,"end":614,"length":4,"parent_index":123},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":127,"node_type":44,"src":{"id":128,"line":24,"column":25,"start":619,"end":624,"length":6,"parent_index":121},"scope":119,"name":"b","type_name":{"id":129,"node_type":30,"src":{"id":130,"line":24,"column":25,"start":619,"end":622,"length":4,"parent_index":127},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":131,"node_type":43,"src":{"id":132,"line":24,"column":56,"start":650,"end":653,"length":4,"parent_index":119},"parameters":[{"id":133,"node_type":44,"src":{"id":134,"line":24,"column":56,"start":650,"end":653,"length":4,"parent_index":131},"scope":119,"name":"","type_name":{"id":135,"node_type":30,"src":{"id":136,"line":24,"column":56,"start":650,"end":653,"length":4,"parent_index":133},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":19,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256","type_string":"function(uint256,uint256)"}},{"id":186,"name":"div","node_type":42,"kind":41,"src":{"id":187,"line":36,"column":4,"start":857,"end":1008,"length":152,"parent_index":19},"body":{"id":204,"node_type":46,"kind":0,"src":{"id":205,"line":36,"column":62,"start":915,"end":1008,"length":94,"parent_index":186},"implemented":true,"statements":[{"id":206,"node_type":24,"kind":24,"src":{"id":207,"line":37,"column":8,"start":925,"end":958,"length":34,"parent_index":204},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Division by zero\""}],"arguments":[{"id":208,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":209,"line":37,"column":16,"start":933,"end":937,"length":5,"parent_index":206},"operator":7,"left_expression":{"id":210,"node_type":16,"src":{"id":211,"line":37,"column":16,"start":933,"end":933,"length":1,"parent_index":208},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":210,"is_pure":false},"right_expression":{"id":212,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":213,"line":37,"column":20,"start":937,"end":937,"length":1,"parent_index":208},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":214,"node_type":17,"kind":50,"value":"Division by zero","hex_value":"4469766973696f6e206279207a65726f","src":{"id":215,"line":37,"column":23,"start":940,"end":957,"length":18,"parent_index":206},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Division by zero\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":216,"node_type":16,"src":{"id":217,"line":37,"column":8,"start":925,"end":931,"length":7,"parent_index":206},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"Division by zero\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Division by zero\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":218,"node_type":44,"src":{"id":219,"line":38,"column":8,"start":969,"end":983,"length":15,"parent_index":204},"assignments":[220],"declarations":[{"is_constant":false,"id":220,"state_mutability":1,"name":"c","node_type":44,"scope":204,"src":{"id":221,"line":38,"column":8,"start":969,"end":974,"length":6,"parent_index":218},"is_state_variable":false,"storage_location":1,"type_name":{"id":222,"node_type":30,"src":{"id":223,"line":38,"column":8,"start":969,"end":972,"length":4,"parent_index":220},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":224,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":225,"line":38,"column":17,"start":978,"end":982,"length":5,"parent_index":218},"operator":4,"left_expression":{"id":226,"node_type":16,"src":{"id":227,"line":38,"column":17,"start":978,"end":978,"length":1,"parent_index":224},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":226,"is_pure":false},"right_expression":{"id":228,"node_type":16,"src":{"id":229,"line":38,"column":21,"start":982,"end":982,"length":1,"parent_index":224},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":228,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":230,"node_type":47,"src":{"id":231,"line":40,"column":8,"start":994,"end":1002,"length":9,"parent_index":186},"function_return_parameters":186,"expression":{"id":232,"node_type":16,"src":{"id":233,"line":40,"column":15,"start":1001,"end":1001,"length":1,"parent_index":204},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":218,"is_pure":false}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":188,"node_type":43,"src":{"id":189,"line":36,"column":17,"start":870,"end":883,"length":14,"parent_index":186},"parameters":[{"id":190,"node_type":44,"src":{"id":191,"line":36,"column":17,"start":870,"end":875,"length":6,"parent_index":188},"scope":186,"name":"a","type_name":{"id":192,"node_type":30,"src":{"id":193,"line":36,"column":17,"start":870,"end":873,"length":4,"parent_index":190},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":194,"node_type":44,"src":{"id":195,"line":36,"column":25,"start":878,"end":883,"length":6,"parent_index":188},"scope":186,"name":"b","type_name":{"id":196,"node_type":30,"src":{"id":197,"line":36,"column":25,"start":878,"end":881,"length":4,"parent_index":194},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":198,"node_type":43,"src":{"id":199,"line":36,"column":56,"start":909,"end":912,"length":4,"parent_index":186},"parameters":[{"id":200,"node_type":44,"src":{"id":201,"line":36,"column":56,"start":909,"end":912,"length":4,"parent_index":198},"scope":186,"name":"","type_name":{"id":202,"node_type":30,"src":{"id":203,"line":36,"column":56,"start":909,"end":912,"length":4,"parent_index":200},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":19,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256","type_string":"function(uint256,uint256)"}}],"linearized_base_contracts":[19],"base_contracts":[],"contract_dependencies":[],"scope":13}],"src":{"id":14,"line":6,"column":0,"start":149,"end":1010,"length":862,"parent_index":12}},{"id":234,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":234,"name":"SimpleStorage","absolute_path":"SimpleStorage.sol"},{"id":13,"name":"MathLib","absolute_path":"MathLib.sol"}],"absolute_path":"SimpleStorage.sol","name":"SimpleStorage","node_type":1,"nodes":[{"id":240,"node_type":10,"src":{"id":241,"line":46,"column":0,"start":1046,"end":1068,"length":23,"parent_index":234},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":242,"node_type":29,"src":{"id":0,"line":48,"column":0,"start":1071,"end":1093,"length":23,"parent_index":234},"absolute_path":"MathLib.sol","file":"./MathLib.sol","scope":234,"unit_alias":"","source_unit":13},{"id":243,"name":"SimpleStorage","node_type":35,"src":{"id":0,"line":51,"column":0,"start":1164,"end":1684,"length":521,"parent_index":234},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":245,"node_type":51,"src":{"id":246,"line":52,"column":0,"start":1193,"end":1215,"length":23,"parent_index":243},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"type_name":{"id":247,"node_type":30,"src":{"id":248,"line":52,"column":22,"start":1211,"end":1214,"length":4,"parent_index":245},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"library_name":{"id":249,"node_type":52,"src":{"id":250,"line":52,"column":0,"start":1199,"end":1205,"length":7,"parent_index":245},"name":"MathLib","referenced_declaration":13}},{"id":252,"name":"storedData","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":253,"line":53,"column":4,"start":1221,"end":1236,"length":16,"parent_index":243},"scope":243,"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":254,"node_type":30,"src":{"id":255,"line":53,"column":4,"start":1221,"end":1224,"length":4,"parent_index":252},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0}},{"id":257,"name":"increment","node_type":42,"kind":41,"src":{"id":258,"line":56,"column":4,"start":1320,"end":1400,"length":81,"parent_index":243},"body":{"id":266,"node_type":46,"kind":0,"src":{"id":267,"line":56,"column":38,"start":1354,"end":1400,"length":47,"parent_index":257},"implemented":true,"statements":[{"id":268,"node_type":81,"src":{"id":269,"line":57,"column":8,"start":1364,"end":1394,"length":31,"parent_index":266},"expression":{"id":270,"node_type":27,"src":{"id":271,"line":57,"column":8,"start":1364,"end":1393,"length":30,"parent_index":266},"operator":11,"left_expression":{"id":272,"node_type":16,"src":{"id":273,"line":57,"column":8,"start":1364,"end":1373,"length":10,"parent_index":270},"name":"storedData","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":252,"is_pure":false},"right_expression":{"id":274,"node_type":24,"kind":24,"src":{"id":275,"line":57,"column":21,"start":1377,"end":1393,"length":17,"parent_index":270},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":276,"node_type":16,"src":{"id":277,"line":57,"column":36,"start":1392,"end":1392,"length":1,"parent_index":274},"name":"x","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":276,"is_pure":false}],"expression":{"id":278,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":279,"line":57,"column":21,"start":1377,"end":1390,"length":14,"parent_index":274},"expression":{"id":280,"node_type":16,"src":{"id":281,"line":57,"column":21,"start":1377,"end":1386,"length":10,"parent_index":278},"name":"storedData","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":252,"is_pure":false},"member_name":"add","argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":259,"node_type":43,"src":{"id":260,"line":56,"column":23,"start":1339,"end":1344,"length":6,"parent_index":257},"parameters":[{"id":261,"node_type":44,"src":{"id":262,"line":56,"column":23,"start":1339,"end":1344,"length":6,"parent_index":259},"scope":257,"name":"x","type_name":{"id":263,"node_type":30,"src":{"id":264,"line":56,"column":23,"start":1339,"end":1342,"length":4,"parent_index":261},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":265,"node_type":43,"src":{"id":258,"line":56,"column":4,"start":1320,"end":1400,"length":81,"parent_index":257},"parameters":[],"parameter_types":[]},"scope":243,"type_description":{"type_identifier":"t_function_$_t_uint256","type_string":"function(uint256)"}},{"id":283,"name":"decrement","node_type":42,"kind":41,"src":{"id":284,"line":61,"column":4,"start":1484,"end":1564,"length":81,"parent_index":243},"body":{"id":292,"node_type":46,"kind":0,"src":{"id":293,"line":61,"column":38,"start":1518,"end":1564,"length":47,"parent_index":283},"implemented":true,"statements":[{"id":294,"node_type":81,"src":{"id":295,"line":62,"column":8,"start":1528,"end":1558,"length":31,"parent_index":292},"expression":{"id":296,"node_type":27,"src":{"id":297,"line":62,"column":8,"start":1528,"end":1557,"length":30,"parent_index":292},"operator":11,"left_expression":{"id":298,"node_type":16,"src":{"id":299,"line":62,"column":8,"start":1528,"end":1537,"length":10,"parent_index":296},"name":"storedData","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":252,"is_pure":false},"right_expression":{"id":300,"node_type":24,"kind":24,"src":{"id":301,"line":62,"column":21,"start":1541,"end":1557,"length":17,"parent_index":296},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":302,"node_type":16,"src":{"id":303,"line":62,"column":36,"start":1556,"end":1556,"length":1,"parent_index":300},"name":"x","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":302,"is_pure":false}],"expression":{"id":304,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":305,"line":62,"column":21,"start":1541,"end":1554,"length":14,"parent_index":300},"expression":{"id":306,"node_type":16,"src":{"id":307,"line":62,"column":21,"start":1541,"end":1550,"length":10,"parent_index":304},"name":"storedData","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":252,"is_pure":false},"member_name":"sub","argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":285,"node_type":43,"src":{"id":286,"line":61,"column":23,"start":1503,"end":1508,"length":6,"parent_index":283},"parameters":[{"id":287,"node_type":44,"src":{"id":288,"line":61,"column":23,"start":1503,"end":1508,"length":6,"parent_index":285},"scope":283,"name":"x","type_name":{"id":289,"node_type":30,"src":{"id":290,"line":61,"column":23,"start":1503,"end":1506,"length":4,"parent_index":287},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":291,"node_type":43,"src":{"id":284,"line":61,"column":4,"start":1484,"end":1564,"length":81,"parent_index":283},"parameters":[],"parameter_types":[]},"scope":243,"type_description":{"type_identifier":"t_function_$_t_uint256","type_string":"function(uint256)"}},{"id":309,"name":"get","node_type":42,"kind":41,"src":{"id":310,"line":66,"column":4,"start":1607,"end":1682,"length":76,"parent_index":243},"body":{"id":323,"node_type":46,"kind":0,"src":{"id":324,"line":66,"column":46,"start":1649,"end":1682,"length":34,"parent_index":309},"implemented":true,"statements":[{"id":325,"node_type":47,"src":{"id":326,"line":67,"column":8,"start":1659,"end":1676,"length":18,"parent_index":309},"function_return_parameters":309,"expression":{"id":327,"node_type":16,"src":{"id":328,"line":67,"column":15,"start":1666,"end":1675,"length":10,"parent_index":323},"name":"storedData","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":252,"is_pure":false}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":311,"node_type":43,"src":{"id":312,"line":66,"column":40,"start":1643,"end":1646,"length":4,"parent_index":309},"parameters":[{"id":313,"node_type":44,"src":{"id":314,"line":66,"column":40,"start":1643,"end":1646,"length":4,"parent_index":311},"scope":309,"name":"","type_name":{"id":315,"node_type":30,"src":{"id":316,"line":66,"column":40,"start":1643,"end":1646,"length":4,"parent_index":313},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":317,"node_type":43,"src":{"id":318,"line":66,"column":40,"start":1643,"end":1646,"length":4,"parent_index":309},"parameters":[{"id":319,"node_type":44,"src":{"id":320,"line":66,"column":40,"start":1643,"end":1646,"length":4,"parent_index":317},"scope":309,"name":"","type_name":{"id":321,"node_type":30,"src":{"id":322,"line":66,"column":40,"start":1643,"end":1646,"length":4,"parent_index":319},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":243,"type_description":{"type_identifier":"t_function_$_t_uint256","type_string":"function(uint256)"}}],"linearized_base_contracts":[243,242],"base_contracts":[],"contract_dependencies":[242]}],"src":{"id":235,"line":51,"column":0,"start":1164,"end":1684,"length":521,"parent_index":12}}],"comments":[{"id":1,"src":{"id":0,"line":1,"column":0,"start":0,"end":30,"length":31,"parent_index":2},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":2,"src":{"id":0,"line":5,"column":0,"start":91,"end":147,"length":57,"parent_index":3},"node_type":31,"text":"// This is a library for performing safe math operations."},{"id":3,"src":{"id":0,"line":7,"column":4,"start":171,"end":196,"length":26,"parent_index":4},"node_type":31,"text":"// Safely add two numbers."},{"id":4,"src":{"id":0,"line":15,"column":4,"start":362,"end":392,"length":31,"parent_index":5},"node_type":31,"text":"// Safely subtract two numbers."},{"id":5,"src":{"id":0,"line":23,"column":4,"start":562,"end":592,"length":31,"parent_index":6},"node_type":31,"text":"// Safely multiply two numbers."},{"id":6,"src":{"id":0,"line":35,"column":4,"start":823,"end":851,"length":29,"parent_index":7},"node_type":31,"text":"// Safely divide two numbers."},{"id":7,"src":{"id":0,"line":45,"column":0,"start":1014,"end":1044,"length":31,"parent_index":8},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":8,"src":{"id":0,"line":50,"column":0,"start":1096,"end":1162,"length":67,"parent_index":9},"node_type":31,"text":"// This contract uses the MathLib library for safe math operations."},{"id":9,"src":{"id":0,"line":55,"column":4,"start":1243,"end":1314,"length":72,"parent_index":10},"node_type":31,"text":"// Use the add function from the MathLib to safely increment storedData."},{"id":10,"src":{"id":0,"line":60,"column":4,"start":1407,"end":1478,"length":72,"parent_index":11},"node_type":31,"text":"// Use the sub function from the MathLib to safely decrement storedData."},{"id":11,"src":{"id":0,"line":65,"column":4,"start":1571,"end":1601,"length":31,"parent_index":12},"node_type":31,"text":"// Get the value of storedData."}]} \ No newline at end of file +{"id":12,"node_type":80,"entry_source_unit":234,"root":[{"id":13,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":13,"name":"MathLib","absolute_path":"MathLib.sol"}],"absolute_path":"MathLib.sol","name":"MathLib","node_type":1,"nodes":[{"id":15,"node_type":10,"src":{"id":16,"line":2,"column":0,"start":32,"end":54,"length":23,"parent_index":13},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":17,"node_type":10,"src":{"id":18,"line":3,"column":0,"start":56,"end":88,"length":33,"parent_index":13},"literals":["pragma","experimental","ABIEncoderV2",";"],"text":"pragma experimental ABIEncoderV2;"},{"id":19,"name":"MathLib","node_type":35,"src":{"id":0,"line":6,"column":0,"start":149,"end":1010,"length":862,"parent_index":13},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":21,"name":"add","node_type":42,"kind":41,"src":{"id":22,"line":8,"column":4,"start":202,"end":355,"length":154,"parent_index":19},"body":{"id":39,"node_type":46,"kind":0,"src":{"id":40,"line":8,"column":62,"start":260,"end":355,"length":96,"parent_index":21},"implemented":true,"statements":[{"id":41,"node_type":44,"src":{"id":42,"line":9,"column":8,"start":270,"end":284,"length":15,"parent_index":39},"assignments":[43],"declarations":[{"is_constant":false,"id":43,"state_mutability":1,"name":"c","node_type":44,"scope":39,"src":{"id":44,"line":9,"column":8,"start":270,"end":275,"length":6,"parent_index":41},"is_state_variable":false,"storage_location":1,"type_name":{"id":45,"node_type":30,"src":{"id":46,"line":9,"column":8,"start":270,"end":273,"length":4,"parent_index":43},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":47,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":48,"line":9,"column":17,"start":279,"end":283,"length":5,"parent_index":41},"operator":1,"left_expression":{"id":49,"node_type":16,"src":{"id":50,"line":9,"column":17,"start":279,"end":279,"length":1,"parent_index":47},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":49,"is_pure":false},"right_expression":{"id":51,"node_type":16,"src":{"id":52,"line":9,"column":21,"start":283,"end":283,"length":1,"parent_index":47},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":51,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":53,"node_type":24,"kind":24,"src":{"id":54,"line":10,"column":8,"start":294,"end":329,"length":36,"parent_index":39},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Addition overflow\""}],"arguments":[{"id":57,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":58,"line":10,"column":16,"start":302,"end":307,"length":6,"parent_index":53},"operator":8,"left_expression":{"id":59,"node_type":16,"src":{"id":60,"line":10,"column":16,"start":302,"end":302,"length":1,"parent_index":57},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":41,"is_pure":false},"right_expression":{"id":61,"node_type":16,"src":{"id":62,"line":10,"column":21,"start":307,"end":307,"length":1,"parent_index":57},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":61,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":63,"node_type":17,"kind":50,"value":"Addition overflow","hex_value":"4164646974696f6e206f766572666c6f77","src":{"id":64,"line":10,"column":24,"start":310,"end":328,"length":19,"parent_index":53},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Addition overflow\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":55,"node_type":16,"src":{"id":56,"line":10,"column":8,"start":294,"end":300,"length":7,"parent_index":53},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":65,"node_type":47,"src":{"id":66,"line":12,"column":8,"start":341,"end":349,"length":9,"parent_index":21},"function_return_parameters":21,"expression":{"id":67,"node_type":16,"src":{"id":68,"line":12,"column":15,"start":348,"end":348,"length":1,"parent_index":39},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":41,"is_pure":false}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":23,"node_type":43,"src":{"id":24,"line":8,"column":17,"start":215,"end":228,"length":14,"parent_index":21},"parameters":[{"id":25,"node_type":44,"src":{"id":26,"line":8,"column":17,"start":215,"end":220,"length":6,"parent_index":23},"scope":21,"name":"a","type_name":{"id":27,"node_type":30,"src":{"id":28,"line":8,"column":17,"start":215,"end":218,"length":4,"parent_index":25},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":29,"node_type":44,"src":{"id":30,"line":8,"column":25,"start":223,"end":228,"length":6,"parent_index":23},"scope":21,"name":"b","type_name":{"id":31,"node_type":30,"src":{"id":32,"line":8,"column":25,"start":223,"end":226,"length":4,"parent_index":29},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":33,"node_type":43,"src":{"id":34,"line":8,"column":56,"start":254,"end":257,"length":4,"parent_index":21},"parameters":[{"id":35,"node_type":44,"src":{"id":36,"line":8,"column":56,"start":254,"end":257,"length":4,"parent_index":33},"scope":21,"name":"","type_name":{"id":37,"node_type":30,"src":{"id":38,"line":8,"column":56,"start":254,"end":257,"length":4,"parent_index":35},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":19,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}},{"id":70,"name":"sub","node_type":42,"kind":41,"src":{"id":71,"line":16,"column":4,"start":398,"end":555,"length":158,"parent_index":19},"body":{"id":88,"node_type":46,"kind":0,"src":{"id":89,"line":16,"column":62,"start":456,"end":555,"length":100,"parent_index":70},"implemented":true,"statements":[{"id":90,"node_type":24,"kind":24,"src":{"id":91,"line":17,"column":8,"start":466,"end":505,"length":40,"parent_index":88},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Subtraction underflow\""}],"arguments":[{"id":94,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":95,"line":17,"column":16,"start":474,"end":479,"length":6,"parent_index":90},"operator":10,"left_expression":{"id":96,"node_type":16,"src":{"id":97,"line":17,"column":16,"start":474,"end":474,"length":1,"parent_index":94},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":96,"is_pure":false},"right_expression":{"id":98,"node_type":16,"src":{"id":99,"line":17,"column":21,"start":479,"end":479,"length":1,"parent_index":94},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":98,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":100,"node_type":17,"kind":50,"value":"Subtraction underflow","hex_value":"5375627472616374696f6e20756e646572666c6f77","src":{"id":101,"line":17,"column":24,"start":482,"end":504,"length":23,"parent_index":90},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Subtraction underflow\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":92,"node_type":16,"src":{"id":93,"line":17,"column":8,"start":466,"end":472,"length":7,"parent_index":90},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":102,"node_type":44,"src":{"id":103,"line":18,"column":8,"start":516,"end":530,"length":15,"parent_index":88},"assignments":[104],"declarations":[{"is_constant":false,"id":104,"state_mutability":1,"name":"c","node_type":44,"scope":88,"src":{"id":105,"line":18,"column":8,"start":516,"end":521,"length":6,"parent_index":102},"is_state_variable":false,"storage_location":1,"type_name":{"id":106,"node_type":30,"src":{"id":107,"line":18,"column":8,"start":516,"end":519,"length":4,"parent_index":104},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":108,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":109,"line":18,"column":17,"start":525,"end":529,"length":5,"parent_index":102},"operator":2,"left_expression":{"id":110,"node_type":16,"src":{"id":111,"line":18,"column":17,"start":525,"end":525,"length":1,"parent_index":108},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":110,"is_pure":false},"right_expression":{"id":112,"node_type":16,"src":{"id":113,"line":18,"column":21,"start":529,"end":529,"length":1,"parent_index":108},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":112,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":114,"node_type":47,"src":{"id":115,"line":20,"column":8,"start":541,"end":549,"length":9,"parent_index":70},"function_return_parameters":70,"expression":{"id":116,"node_type":16,"src":{"id":117,"line":20,"column":15,"start":548,"end":548,"length":1,"parent_index":88},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":102,"is_pure":false}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":72,"node_type":43,"src":{"id":73,"line":16,"column":17,"start":411,"end":424,"length":14,"parent_index":70},"parameters":[{"id":74,"node_type":44,"src":{"id":75,"line":16,"column":17,"start":411,"end":416,"length":6,"parent_index":72},"scope":70,"name":"a","type_name":{"id":76,"node_type":30,"src":{"id":77,"line":16,"column":17,"start":411,"end":414,"length":4,"parent_index":74},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":78,"node_type":44,"src":{"id":79,"line":16,"column":25,"start":419,"end":424,"length":6,"parent_index":72},"scope":70,"name":"b","type_name":{"id":80,"node_type":30,"src":{"id":81,"line":16,"column":25,"start":419,"end":422,"length":4,"parent_index":78},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":82,"node_type":43,"src":{"id":83,"line":16,"column":56,"start":450,"end":453,"length":4,"parent_index":70},"parameters":[{"id":84,"node_type":44,"src":{"id":85,"line":16,"column":56,"start":450,"end":453,"length":4,"parent_index":82},"scope":70,"name":"","type_name":{"id":86,"node_type":30,"src":{"id":87,"line":16,"column":56,"start":450,"end":453,"length":4,"parent_index":84},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":19,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}},{"id":119,"name":"mul","node_type":42,"kind":41,"src":{"id":120,"line":24,"column":4,"start":598,"end":816,"length":219,"parent_index":19},"body":{"id":137,"node_type":46,"kind":0,"src":{"id":138,"line":24,"column":62,"start":656,"end":816,"length":161,"parent_index":119},"implemented":true,"statements":[{"id":139,"node_type":48,"src":{"id":140,"line":25,"column":0,"start":666,"end":710,"length":45,"parent_index":137},"condition":{"id":141,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":142,"line":25,"column":12,"start":670,"end":675,"length":6,"parent_index":139},"operator":11,"left_expression":{"id":143,"node_type":16,"src":{"id":144,"line":25,"column":12,"start":670,"end":670,"length":1,"parent_index":141},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":143,"is_pure":false},"right_expression":{"id":145,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":146,"line":25,"column":17,"start":675,"end":675,"length":1,"parent_index":141},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":147,"node_type":46,"kind":0,"src":{"id":148,"line":25,"column":20,"start":678,"end":710,"length":33,"parent_index":119},"implemented":true,"statements":[{"id":149,"node_type":47,"src":{"id":150,"line":26,"column":12,"start":692,"end":700,"length":9,"parent_index":119},"function_return_parameters":119,"expression":{"id":151,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":152,"line":26,"column":19,"start":699,"end":699,"length":1,"parent_index":147},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]}},{"id":153,"node_type":44,"src":{"id":154,"line":29,"column":8,"start":721,"end":735,"length":15,"parent_index":137},"assignments":[155],"declarations":[{"is_constant":false,"id":155,"state_mutability":1,"name":"c","node_type":44,"scope":137,"src":{"id":156,"line":29,"column":8,"start":721,"end":726,"length":6,"parent_index":153},"is_state_variable":false,"storage_location":1,"type_name":{"id":157,"node_type":30,"src":{"id":158,"line":29,"column":8,"start":721,"end":724,"length":4,"parent_index":155},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":159,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":160,"line":29,"column":17,"start":730,"end":734,"length":5,"parent_index":153},"operator":3,"left_expression":{"id":161,"node_type":16,"src":{"id":162,"line":29,"column":17,"start":730,"end":730,"length":1,"parent_index":159},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":161,"is_pure":false},"right_expression":{"id":163,"node_type":16,"src":{"id":164,"line":29,"column":21,"start":734,"end":734,"length":1,"parent_index":159},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":163,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":165,"node_type":24,"kind":24,"src":{"id":166,"line":30,"column":8,"start":745,"end":790,"length":46,"parent_index":137},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Multiplication overflow\""}],"arguments":[{"id":169,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":170,"line":30,"column":16,"start":753,"end":762,"length":10,"parent_index":165},"operator":11,"left_expression":{"id":171,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":172,"line":30,"column":16,"start":753,"end":757,"length":5,"parent_index":169},"operator":4,"left_expression":{"id":173,"node_type":16,"src":{"id":174,"line":30,"column":16,"start":753,"end":753,"length":1,"parent_index":171},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":153,"is_pure":false},"right_expression":{"id":175,"node_type":16,"src":{"id":176,"line":30,"column":20,"start":757,"end":757,"length":1,"parent_index":171},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":175,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"right_expression":{"id":177,"node_type":16,"src":{"id":178,"line":30,"column":25,"start":762,"end":762,"length":1,"parent_index":169},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":177,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":179,"node_type":17,"kind":50,"value":"Multiplication overflow","hex_value":"4d756c7469706c69636174696f6e206f766572666c6f77","src":{"id":180,"line":30,"column":28,"start":765,"end":789,"length":25,"parent_index":165},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Multiplication overflow\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":167,"node_type":16,"src":{"id":168,"line":30,"column":8,"start":745,"end":751,"length":7,"parent_index":165},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":181,"node_type":47,"src":{"id":182,"line":32,"column":8,"start":802,"end":810,"length":9,"parent_index":119},"function_return_parameters":119,"expression":{"id":183,"node_type":16,"src":{"id":184,"line":32,"column":15,"start":809,"end":809,"length":1,"parent_index":137},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":153,"is_pure":false}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":121,"node_type":43,"src":{"id":122,"line":24,"column":17,"start":611,"end":624,"length":14,"parent_index":119},"parameters":[{"id":123,"node_type":44,"src":{"id":124,"line":24,"column":17,"start":611,"end":616,"length":6,"parent_index":121},"scope":119,"name":"a","type_name":{"id":125,"node_type":30,"src":{"id":126,"line":24,"column":17,"start":611,"end":614,"length":4,"parent_index":123},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":127,"node_type":44,"src":{"id":128,"line":24,"column":25,"start":619,"end":624,"length":6,"parent_index":121},"scope":119,"name":"b","type_name":{"id":129,"node_type":30,"src":{"id":130,"line":24,"column":25,"start":619,"end":622,"length":4,"parent_index":127},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":131,"node_type":43,"src":{"id":132,"line":24,"column":56,"start":650,"end":653,"length":4,"parent_index":119},"parameters":[{"id":133,"node_type":44,"src":{"id":134,"line":24,"column":56,"start":650,"end":653,"length":4,"parent_index":131},"scope":119,"name":"","type_name":{"id":135,"node_type":30,"src":{"id":136,"line":24,"column":56,"start":650,"end":653,"length":4,"parent_index":133},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":19,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}},{"id":186,"name":"div","node_type":42,"kind":41,"src":{"id":187,"line":36,"column":4,"start":857,"end":1008,"length":152,"parent_index":19},"body":{"id":204,"node_type":46,"kind":0,"src":{"id":205,"line":36,"column":62,"start":915,"end":1008,"length":94,"parent_index":186},"implemented":true,"statements":[{"id":206,"node_type":24,"kind":24,"src":{"id":207,"line":37,"column":8,"start":925,"end":958,"length":34,"parent_index":204},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Division by zero\""}],"arguments":[{"id":210,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":211,"line":37,"column":16,"start":933,"end":937,"length":5,"parent_index":206},"operator":7,"left_expression":{"id":212,"node_type":16,"src":{"id":213,"line":37,"column":16,"start":933,"end":933,"length":1,"parent_index":210},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":212,"is_pure":false},"right_expression":{"id":214,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":215,"line":37,"column":20,"start":937,"end":937,"length":1,"parent_index":210},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":216,"node_type":17,"kind":50,"value":"Division by zero","hex_value":"4469766973696f6e206279207a65726f","src":{"id":217,"line":37,"column":23,"start":940,"end":957,"length":18,"parent_index":206},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Division by zero\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":208,"node_type":16,"src":{"id":209,"line":37,"column":8,"start":925,"end":931,"length":7,"parent_index":206},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":218,"node_type":44,"src":{"id":219,"line":38,"column":8,"start":969,"end":983,"length":15,"parent_index":204},"assignments":[220],"declarations":[{"is_constant":false,"id":220,"state_mutability":1,"name":"c","node_type":44,"scope":204,"src":{"id":221,"line":38,"column":8,"start":969,"end":974,"length":6,"parent_index":218},"is_state_variable":false,"storage_location":1,"type_name":{"id":222,"node_type":30,"src":{"id":223,"line":38,"column":8,"start":969,"end":972,"length":4,"parent_index":220},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":224,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":225,"line":38,"column":17,"start":978,"end":982,"length":5,"parent_index":218},"operator":4,"left_expression":{"id":226,"node_type":16,"src":{"id":227,"line":38,"column":17,"start":978,"end":978,"length":1,"parent_index":224},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":226,"is_pure":false},"right_expression":{"id":228,"node_type":16,"src":{"id":229,"line":38,"column":21,"start":982,"end":982,"length":1,"parent_index":224},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":228,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":230,"node_type":47,"src":{"id":231,"line":40,"column":8,"start":994,"end":1002,"length":9,"parent_index":186},"function_return_parameters":186,"expression":{"id":232,"node_type":16,"src":{"id":233,"line":40,"column":15,"start":1001,"end":1001,"length":1,"parent_index":204},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":218,"is_pure":false}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":188,"node_type":43,"src":{"id":189,"line":36,"column":17,"start":870,"end":883,"length":14,"parent_index":186},"parameters":[{"id":190,"node_type":44,"src":{"id":191,"line":36,"column":17,"start":870,"end":875,"length":6,"parent_index":188},"scope":186,"name":"a","type_name":{"id":192,"node_type":30,"src":{"id":193,"line":36,"column":17,"start":870,"end":873,"length":4,"parent_index":190},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":194,"node_type":44,"src":{"id":195,"line":36,"column":25,"start":878,"end":883,"length":6,"parent_index":188},"scope":186,"name":"b","type_name":{"id":196,"node_type":30,"src":{"id":197,"line":36,"column":25,"start":878,"end":881,"length":4,"parent_index":194},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":198,"node_type":43,"src":{"id":199,"line":36,"column":56,"start":909,"end":912,"length":4,"parent_index":186},"parameters":[{"id":200,"node_type":44,"src":{"id":201,"line":36,"column":56,"start":909,"end":912,"length":4,"parent_index":198},"scope":186,"name":"","type_name":{"id":202,"node_type":30,"src":{"id":203,"line":36,"column":56,"start":909,"end":912,"length":4,"parent_index":200},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":19,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}}],"linearized_base_contracts":[19],"base_contracts":[],"contract_dependencies":[],"scope":13}],"src":{"id":14,"line":6,"column":0,"start":149,"end":1010,"length":862,"parent_index":12}},{"id":234,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":234,"name":"SimpleStorage","absolute_path":"SimpleStorage.sol"},{"id":13,"name":"MathLib","absolute_path":"MathLib.sol"}],"absolute_path":"SimpleStorage.sol","name":"SimpleStorage","node_type":1,"nodes":[{"id":240,"node_type":10,"src":{"id":241,"line":46,"column":0,"start":1046,"end":1068,"length":23,"parent_index":234},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":242,"node_type":29,"src":{"id":0,"line":48,"column":0,"start":1071,"end":1093,"length":23,"parent_index":234},"absolute_path":"MathLib.sol","file":"./MathLib.sol","scope":234,"unit_alias":"","source_unit":13},{"id":243,"name":"SimpleStorage","node_type":35,"src":{"id":0,"line":51,"column":0,"start":1164,"end":1684,"length":521,"parent_index":234},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":245,"node_type":51,"src":{"id":246,"line":52,"column":0,"start":1193,"end":1215,"length":23,"parent_index":243},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"type_name":{"id":247,"node_type":30,"src":{"id":248,"line":52,"column":22,"start":1211,"end":1214,"length":4,"parent_index":245},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"library_name":{"id":249,"node_type":52,"src":{"id":250,"line":52,"column":0,"start":1199,"end":1205,"length":7,"parent_index":245},"name":"MathLib","referenced_declaration":13}},{"id":252,"name":"storedData","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":253,"line":53,"column":4,"start":1221,"end":1236,"length":16,"parent_index":243},"scope":243,"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":254,"node_type":30,"src":{"id":255,"line":53,"column":4,"start":1221,"end":1224,"length":4,"parent_index":252},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0}},{"id":257,"name":"increment","node_type":42,"kind":41,"src":{"id":258,"line":56,"column":4,"start":1320,"end":1400,"length":81,"parent_index":243},"body":{"id":266,"node_type":46,"kind":0,"src":{"id":267,"line":56,"column":38,"start":1354,"end":1400,"length":47,"parent_index":257},"implemented":true,"statements":[{"id":268,"node_type":81,"src":{"id":269,"line":57,"column":8,"start":1364,"end":1394,"length":31,"parent_index":266},"expression":{"id":270,"node_type":27,"src":{"id":271,"line":57,"column":8,"start":1364,"end":1393,"length":30,"parent_index":266},"operator":11,"left_expression":{"id":272,"node_type":16,"src":{"id":273,"line":57,"column":8,"start":1364,"end":1373,"length":10,"parent_index":270},"name":"storedData","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":252,"is_pure":false},"right_expression":{"id":274,"node_type":24,"kind":24,"src":{"id":275,"line":57,"column":21,"start":1377,"end":1393,"length":17,"parent_index":270},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":280,"node_type":16,"src":{"id":281,"line":57,"column":36,"start":1392,"end":1392,"length":1,"parent_index":274},"name":"x","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":280,"is_pure":false}],"expression":{"id":276,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":277,"line":57,"column":21,"start":1377,"end":1390,"length":14,"parent_index":274},"expression":{"id":278,"node_type":16,"src":{"id":279,"line":57,"column":21,"start":1377,"end":1386,"length":10,"parent_index":276},"name":"storedData","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":252,"is_pure":false},"member_name":"add","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":259,"node_type":43,"src":{"id":260,"line":56,"column":23,"start":1339,"end":1344,"length":6,"parent_index":257},"parameters":[{"id":261,"node_type":44,"src":{"id":262,"line":56,"column":23,"start":1339,"end":1344,"length":6,"parent_index":259},"scope":257,"name":"x","type_name":{"id":263,"node_type":30,"src":{"id":264,"line":56,"column":23,"start":1339,"end":1342,"length":4,"parent_index":261},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":265,"node_type":43,"src":{"id":258,"line":56,"column":4,"start":1320,"end":1400,"length":81,"parent_index":257},"parameters":[],"parameter_types":[]},"scope":243,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},{"id":283,"name":"decrement","node_type":42,"kind":41,"src":{"id":284,"line":61,"column":4,"start":1484,"end":1564,"length":81,"parent_index":243},"body":{"id":292,"node_type":46,"kind":0,"src":{"id":293,"line":61,"column":38,"start":1518,"end":1564,"length":47,"parent_index":283},"implemented":true,"statements":[{"id":294,"node_type":81,"src":{"id":295,"line":62,"column":8,"start":1528,"end":1558,"length":31,"parent_index":292},"expression":{"id":296,"node_type":27,"src":{"id":297,"line":62,"column":8,"start":1528,"end":1557,"length":30,"parent_index":292},"operator":11,"left_expression":{"id":298,"node_type":16,"src":{"id":299,"line":62,"column":8,"start":1528,"end":1537,"length":10,"parent_index":296},"name":"storedData","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":252,"is_pure":false},"right_expression":{"id":300,"node_type":24,"kind":24,"src":{"id":301,"line":62,"column":21,"start":1541,"end":1557,"length":17,"parent_index":296},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":306,"node_type":16,"src":{"id":307,"line":62,"column":36,"start":1556,"end":1556,"length":1,"parent_index":300},"name":"x","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":306,"is_pure":false}],"expression":{"id":302,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":303,"line":62,"column":21,"start":1541,"end":1554,"length":14,"parent_index":300},"expression":{"id":304,"node_type":16,"src":{"id":305,"line":62,"column":21,"start":1541,"end":1550,"length":10,"parent_index":302},"name":"storedData","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":252,"is_pure":false},"member_name":"sub","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":285,"node_type":43,"src":{"id":286,"line":61,"column":23,"start":1503,"end":1508,"length":6,"parent_index":283},"parameters":[{"id":287,"node_type":44,"src":{"id":288,"line":61,"column":23,"start":1503,"end":1508,"length":6,"parent_index":285},"scope":283,"name":"x","type_name":{"id":289,"node_type":30,"src":{"id":290,"line":61,"column":23,"start":1503,"end":1506,"length":4,"parent_index":287},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":291,"node_type":43,"src":{"id":284,"line":61,"column":4,"start":1484,"end":1564,"length":81,"parent_index":283},"parameters":[],"parameter_types":[]},"scope":243,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},{"id":309,"name":"get","node_type":42,"kind":41,"src":{"id":310,"line":66,"column":4,"start":1607,"end":1682,"length":76,"parent_index":243},"body":{"id":323,"node_type":46,"kind":0,"src":{"id":324,"line":66,"column":46,"start":1649,"end":1682,"length":34,"parent_index":309},"implemented":true,"statements":[{"id":325,"node_type":47,"src":{"id":326,"line":67,"column":8,"start":1659,"end":1676,"length":18,"parent_index":309},"function_return_parameters":309,"expression":{"id":327,"node_type":16,"src":{"id":328,"line":67,"column":15,"start":1666,"end":1675,"length":10,"parent_index":323},"name":"storedData","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":252,"is_pure":false}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":311,"node_type":43,"src":{"id":312,"line":66,"column":40,"start":1643,"end":1646,"length":4,"parent_index":309},"parameters":[{"id":313,"node_type":44,"src":{"id":314,"line":66,"column":40,"start":1643,"end":1646,"length":4,"parent_index":311},"scope":309,"name":"","type_name":{"id":315,"node_type":30,"src":{"id":316,"line":66,"column":40,"start":1643,"end":1646,"length":4,"parent_index":313},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":317,"node_type":43,"src":{"id":318,"line":66,"column":40,"start":1643,"end":1646,"length":4,"parent_index":309},"parameters":[{"id":319,"node_type":44,"src":{"id":320,"line":66,"column":40,"start":1643,"end":1646,"length":4,"parent_index":317},"scope":309,"name":"","type_name":{"id":321,"node_type":30,"src":{"id":322,"line":66,"column":40,"start":1643,"end":1646,"length":4,"parent_index":319},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":243,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}}],"linearized_base_contracts":[243,242],"base_contracts":[],"contract_dependencies":[242]}],"src":{"id":235,"line":51,"column":0,"start":1164,"end":1684,"length":521,"parent_index":12}}],"comments":[{"id":1,"src":{"id":0,"line":1,"column":0,"start":0,"end":30,"length":31,"parent_index":2},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":2,"src":{"id":0,"line":5,"column":0,"start":91,"end":147,"length":57,"parent_index":3},"node_type":31,"text":"// This is a library for performing safe math operations."},{"id":3,"src":{"id":0,"line":7,"column":4,"start":171,"end":196,"length":26,"parent_index":4},"node_type":31,"text":"// Safely add two numbers."},{"id":4,"src":{"id":0,"line":15,"column":4,"start":362,"end":392,"length":31,"parent_index":5},"node_type":31,"text":"// Safely subtract two numbers."},{"id":5,"src":{"id":0,"line":23,"column":4,"start":562,"end":592,"length":31,"parent_index":6},"node_type":31,"text":"// Safely multiply two numbers."},{"id":6,"src":{"id":0,"line":35,"column":4,"start":823,"end":851,"length":29,"parent_index":7},"node_type":31,"text":"// Safely divide two numbers."},{"id":7,"src":{"id":0,"line":45,"column":0,"start":1014,"end":1044,"length":31,"parent_index":8},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":8,"src":{"id":0,"line":50,"column":0,"start":1096,"end":1162,"length":67,"parent_index":9},"node_type":31,"text":"// This contract uses the MathLib library for safe math operations."},{"id":9,"src":{"id":0,"line":55,"column":4,"start":1243,"end":1314,"length":72,"parent_index":10},"node_type":31,"text":"// Use the add function from the MathLib to safely increment storedData."},{"id":10,"src":{"id":0,"line":60,"column":4,"start":1407,"end":1478,"length":72,"parent_index":11},"node_type":31,"text":"// Use the sub function from the MathLib to safely decrement storedData."},{"id":11,"src":{"id":0,"line":65,"column":4,"start":1571,"end":1601,"length":31,"parent_index":12},"node_type":31,"text":"// Get the value of storedData."}]} \ No newline at end of file diff --git a/data/tests/ast/SimpleStorage.solgo.ast.proto.json b/data/tests/ast/SimpleStorage.solgo.ast.proto.json index ccd8ced1..ce0cdcc9 100644 --- a/data/tests/ast/SimpleStorage.solgo.ast.proto.json +++ b/data/tests/ast/SimpleStorage.solgo.ast.proto.json @@ -1,3430 +1,3389 @@ { - "id": 12, - "entry_source_unit": 234, - "node_type": 80, - "source_units": [ - { - "id": 13, - "license": "MIT", - "name": "MathLib", - "absolute_path": "MathLib.sol", - "exported_symbols": [ - { - "id": 13, - "name": "MathLib", - "absolute_path": "MathLib.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "15", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "54", - "id": "16", - "length": "23", - "line": "2", - "parentIndex": "13", - "start": "32" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "17", - "literals": [ - "pragma", - "experimental", - "ABIEncoderV2", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "88", - "id": "18", - "length": "33", - "line": "3", - "parentIndex": "13", - "start": "56" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "fullyImplemented": true, - "id": "19", - "kind": "KIND_LIBRARY", - "linearizedBaseContracts": [ - "19" - ], - "name": "MathLib", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "39", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "62", - "end": "355", - "id": "40", - "length": "96", - "line": "8", - "parentIndex": "21", - "start": "260" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "43" - ], - "declarations": [ - { - "id": "43", - "mutability": "MUTABLE", - "name": "c", - "nodeType": "VARIABLE_DECLARATION", - "scope": "39", - "src": { - "column": "8", - "end": "275", - "id": "44", - "length": "6", - "line": "9", - "parentIndex": "41", - "start": "270" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "45", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "273", - "id": "46", - "length": "4", - "line": "9", - "parentIndex": "43", - "start": "270" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "41", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "47", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "49", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "49", - "src": { - "column": "17", - "end": "279", - "id": "50", - "length": "1", - "line": "9", - "parentIndex": "47", - "start": "279" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "ADDITION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "51", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "51", - "src": { - "column": "21", - "end": "283", - "id": "52", - "length": "1", - "line": "9", - "parentIndex": "47", - "start": "283" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "17", - "end": "283", - "id": "48", - "length": "5", - "line": "9", - "parentIndex": "41", - "start": "279" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "284", - "id": "42", - "length": "15", - "line": "9", - "parentIndex": "39", - "start": "270" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Addition overflow\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "55", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "57", - "name": "c", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "41", - "src": { - "column": "16", - "end": "302", - "id": "58", - "length": "1", - "line": "10", - "parentIndex": "55", - "start": "302" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN_OR_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "59", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "59", - "src": { - "column": "21", - "end": "307", - "id": "60", - "length": "1", - "line": "10", - "parentIndex": "55", - "start": "307" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "307", - "id": "56", - "length": "6", - "line": "10", - "parentIndex": "53", - "start": "302" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "4164646974696f6e206f766572666c6f77", - "id": "61", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "24", - "end": "328", - "id": "62", - "length": "19", - "line": "10", - "parentIndex": "53", - "start": "310" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Addition overflow\"" - }, - "value": "Addition overflow" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Addition overflow\"" - } - ], - "id": "63", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "300", - "id": "64", - "length": "7", - "line": "10", - "parentIndex": "53", - "start": "294" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"Addition overflow\")" - } - } - }, - "id": "53", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "329", - "id": "54", - "length": "36", - "line": "10", - "parentIndex": "39", - "start": "294" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "67", - "name": "c", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "41", - "src": { - "column": "15", - "end": "348", - "id": "68", - "length": "1", - "line": "12", - "parentIndex": "39", - "start": "348" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "21", - "id": "65", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "349", - "id": "66", - "length": "9", - "line": "12", - "parentIndex": "21", - "start": "341" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "21", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "add", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "23", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "25", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "25", - "src": { - "column": "17", - "end": "220", - "id": "26", - "length": "6", - "line": "8", - "parentIndex": "23", - "start": "215" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "27", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "218", - "id": "28", - "length": "4", - "line": "8", - "parentIndex": "25", - "start": "215" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "29", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "29", - "src": { - "column": "25", - "end": "228", - "id": "30", - "length": "6", - "line": "8", - "parentIndex": "23", - "start": "223" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "31", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "25", - "end": "226", - "id": "32", - "length": "4", - "line": "8", - "parentIndex": "29", - "start": "223" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "17", - "end": "228", - "id": "24", - "length": "14", - "line": "8", - "parentIndex": "21", - "start": "215" - } - }, - "returnParameters": { - "id": "33", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "35", - "nodeType": "VARIABLE_DECLARATION", - "scope": "35", - "src": { - "column": "56", - "end": "257", - "id": "36", - "length": "4", - "line": "8", - "parentIndex": "33", - "start": "254" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "37", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "56", - "end": "257", - "id": "38", - "length": "4", - "line": "8", - "parentIndex": "35", - "start": "254" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "56", - "end": "257", - "id": "34", - "length": "4", - "line": "8", - "parentIndex": "21", - "start": "254" - } - }, - "scope": "19", - "src": { - "column": "4", - "end": "355", - "id": "22", - "length": "154", - "line": "8", - "parentIndex": "19", - "start": "202" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "88", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "62", - "end": "555", - "id": "89", - "length": "100", - "line": "16", - "parentIndex": "70", - "start": "456" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Subtraction underflow\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "92", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "94", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "94", - "src": { - "column": "16", - "end": "474", - "id": "95", - "length": "1", - "line": "17", - "parentIndex": "92", - "start": "474" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "LESS_THAN_OR_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "96", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "96", - "src": { - "column": "21", - "end": "479", - "id": "97", - "length": "1", - "line": "17", - "parentIndex": "92", - "start": "479" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "479", - "id": "93", - "length": "6", - "line": "17", - "parentIndex": "90", - "start": "474" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "5375627472616374696f6e20756e646572666c6f77", - "id": "98", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "24", - "end": "504", - "id": "99", - "length": "23", - "line": "17", - "parentIndex": "90", - "start": "482" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Subtraction underflow\"" - }, - "value": "Subtraction underflow" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Subtraction underflow\"" - } - ], - "id": "100", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "472", - "id": "101", - "length": "7", - "line": "17", - "parentIndex": "90", - "start": "466" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"Subtraction underflow\")" - } - } - }, - "id": "90", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "505", - "id": "91", - "length": "40", - "line": "17", - "parentIndex": "88", - "start": "466" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "104" - ], - "declarations": [ - { - "id": "104", - "mutability": "MUTABLE", - "name": "c", - "nodeType": "VARIABLE_DECLARATION", - "scope": "88", - "src": { - "column": "8", - "end": "521", - "id": "105", - "length": "6", - "line": "18", - "parentIndex": "102", - "start": "516" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "106", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "519", - "id": "107", - "length": "4", - "line": "18", - "parentIndex": "104", - "start": "516" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "102", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "108", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "110", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "110", - "src": { - "column": "17", - "end": "525", - "id": "111", - "length": "1", - "line": "18", - "parentIndex": "108", - "start": "525" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "112", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "112", - "src": { - "column": "21", - "end": "529", - "id": "113", - "length": "1", - "line": "18", - "parentIndex": "108", - "start": "529" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "17", - "end": "529", - "id": "109", - "length": "5", - "line": "18", - "parentIndex": "102", - "start": "525" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "530", - "id": "103", - "length": "15", - "line": "18", - "parentIndex": "88", - "start": "516" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "116", - "name": "c", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "102", - "src": { - "column": "15", - "end": "548", - "id": "117", - "length": "1", - "line": "20", - "parentIndex": "88", - "start": "548" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "70", - "id": "114", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "549", - "id": "115", - "length": "9", - "line": "20", - "parentIndex": "70", - "start": "541" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "70", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "sub", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "72", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "74", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "74", - "src": { - "column": "17", - "end": "416", - "id": "75", - "length": "6", - "line": "16", - "parentIndex": "72", - "start": "411" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "76", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "414", - "id": "77", - "length": "4", - "line": "16", - "parentIndex": "74", - "start": "411" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "78", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "78", - "src": { - "column": "25", - "end": "424", - "id": "79", - "length": "6", - "line": "16", - "parentIndex": "72", - "start": "419" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "80", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "25", - "end": "422", - "id": "81", - "length": "4", - "line": "16", - "parentIndex": "78", - "start": "419" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "17", - "end": "424", - "id": "73", - "length": "14", - "line": "16", - "parentIndex": "70", - "start": "411" - } - }, - "returnParameters": { - "id": "82", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "84", - "nodeType": "VARIABLE_DECLARATION", - "scope": "84", - "src": { - "column": "56", - "end": "453", - "id": "85", - "length": "4", - "line": "16", - "parentIndex": "82", - "start": "450" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "86", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "56", - "end": "453", - "id": "87", - "length": "4", - "line": "16", - "parentIndex": "84", - "start": "450" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "56", - "end": "453", - "id": "83", - "length": "4", - "line": "16", - "parentIndex": "70", - "start": "450" - } - }, - "scope": "19", - "src": { - "column": "4", - "end": "555", - "id": "71", - "length": "158", - "line": "16", - "parentIndex": "19", - "start": "398" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "137", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "62", - "end": "816", - "id": "138", - "length": "161", - "line": "24", - "parentIndex": "119", - "start": "656" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "147", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "20", - "end": "710", - "id": "148", - "length": "33", - "line": "25", - "parentIndex": "119", - "start": "678" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "151", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "19", - "end": "699", - "id": "152", - "length": "1", - "line": "26", - "parentIndex": "147", - "start": "699" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "functionReturnParameters": "119", - "id": "149", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "700", - "id": "150", - "length": "9", - "line": "26", - "parentIndex": "119", - "start": "692" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "141", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "143", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "143", - "src": { - "column": "12", - "end": "670", - "id": "144", - "length": "1", - "line": "25", - "parentIndex": "141", - "start": "670" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "145", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "17", - "end": "675", - "id": "146", - "length": "1", - "line": "25", - "parentIndex": "141", - "start": "675" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "12", - "end": "675", - "id": "142", - "length": "6", - "line": "25", - "parentIndex": "139", - "start": "670" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "139", - "nodeType": "IF_STATEMENT", - "src": { - "end": "710", - "id": "140", - "length": "45", - "line": "25", - "parentIndex": "137", - "start": "666" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "155" - ], - "declarations": [ - { - "id": "155", - "mutability": "MUTABLE", - "name": "c", - "nodeType": "VARIABLE_DECLARATION", - "scope": "137", - "src": { - "column": "8", - "end": "726", - "id": "156", - "length": "6", - "line": "29", - "parentIndex": "153", - "start": "721" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "157", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "724", - "id": "158", - "length": "4", - "line": "29", - "parentIndex": "155", - "start": "721" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "153", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "159", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "161", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "161", - "src": { - "column": "17", - "end": "730", - "id": "162", - "length": "1", - "line": "29", - "parentIndex": "159", - "start": "730" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "MULTIPLICATION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "163", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "163", - "src": { - "column": "21", - "end": "734", - "id": "164", - "length": "1", - "line": "29", - "parentIndex": "159", - "start": "734" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "17", - "end": "734", - "id": "160", - "length": "5", - "line": "29", - "parentIndex": "153", - "start": "730" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "735", - "id": "154", - "length": "15", - "line": "29", - "parentIndex": "137", - "start": "721" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Multiplication overflow\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "167", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "169", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "171", - "name": "c", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "153", - "src": { - "column": "16", - "end": "753", - "id": "172", - "length": "1", - "line": "30", - "parentIndex": "169", - "start": "753" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "DIVISION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "173", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "173", - "src": { - "column": "20", - "end": "757", - "id": "174", - "length": "1", - "line": "30", - "parentIndex": "169", - "start": "757" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "757", - "id": "170", - "length": "5", - "line": "30", - "parentIndex": "167", - "start": "753" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "175", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "175", - "src": { - "column": "25", - "end": "762", - "id": "176", - "length": "1", - "line": "30", - "parentIndex": "167", - "start": "762" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "762", - "id": "168", - "length": "10", - "line": "30", - "parentIndex": "165", - "start": "753" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "4d756c7469706c69636174696f6e206f766572666c6f77", - "id": "177", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "28", - "end": "789", - "id": "178", - "length": "25", - "line": "30", - "parentIndex": "165", - "start": "765" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Multiplication overflow\"" - }, - "value": "Multiplication overflow" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Multiplication overflow\"" - } - ], - "id": "179", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "751", - "id": "180", - "length": "7", - "line": "30", - "parentIndex": "165", - "start": "745" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"Multiplication overflow\")" - } - } - }, - "id": "165", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "790", - "id": "166", - "length": "46", - "line": "30", - "parentIndex": "137", - "start": "745" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "183", - "name": "c", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "153", - "src": { - "column": "15", - "end": "809", - "id": "184", - "length": "1", - "line": "32", - "parentIndex": "137", - "start": "809" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "119", - "id": "181", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "810", - "id": "182", - "length": "9", - "line": "32", - "parentIndex": "119", - "start": "802" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "119", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "mul", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "121", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "123", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "123", - "src": { - "column": "17", - "end": "616", - "id": "124", - "length": "6", - "line": "24", - "parentIndex": "121", - "start": "611" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "125", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "614", - "id": "126", - "length": "4", - "line": "24", - "parentIndex": "123", - "start": "611" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "127", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "127", - "src": { - "column": "25", - "end": "624", - "id": "128", - "length": "6", - "line": "24", - "parentIndex": "121", - "start": "619" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "129", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "25", - "end": "622", - "id": "130", - "length": "4", - "line": "24", - "parentIndex": "127", - "start": "619" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "17", - "end": "624", - "id": "122", - "length": "14", - "line": "24", - "parentIndex": "119", - "start": "611" - } - }, - "returnParameters": { - "id": "131", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "133", - "nodeType": "VARIABLE_DECLARATION", - "scope": "133", - "src": { - "column": "56", - "end": "653", - "id": "134", - "length": "4", - "line": "24", - "parentIndex": "131", - "start": "650" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "135", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "56", - "end": "653", - "id": "136", - "length": "4", - "line": "24", - "parentIndex": "133", - "start": "650" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "56", - "end": "653", - "id": "132", - "length": "4", - "line": "24", - "parentIndex": "119", - "start": "650" - } - }, - "scope": "19", - "src": { - "column": "4", - "end": "816", - "id": "120", - "length": "219", - "line": "24", - "parentIndex": "19", - "start": "598" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "204", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "62", - "end": "1008", - "id": "205", - "length": "94", - "line": "36", - "parentIndex": "186", - "start": "915" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Division by zero\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "208", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "210", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "210", - "src": { - "column": "16", - "end": "933", - "id": "211", - "length": "1", - "line": "37", - "parentIndex": "208", - "start": "933" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "212", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "20", - "end": "937", - "id": "213", - "length": "1", - "line": "37", - "parentIndex": "208", - "start": "937" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "16", - "end": "937", - "id": "209", - "length": "5", - "line": "37", - "parentIndex": "206", - "start": "933" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "4469766973696f6e206279207a65726f", - "id": "214", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "23", - "end": "957", - "id": "215", - "length": "18", - "line": "37", - "parentIndex": "206", - "start": "940" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Division by zero\"" - }, - "value": "Division by zero" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Division by zero\"" - } - ], - "id": "216", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "931", - "id": "217", - "length": "7", - "line": "37", - "parentIndex": "206", - "start": "925" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"Division by zero\")" - } - } - }, - "id": "206", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "958", - "id": "207", - "length": "34", - "line": "37", - "parentIndex": "204", - "start": "925" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "220" - ], - "declarations": [ - { - "id": "220", - "mutability": "MUTABLE", - "name": "c", - "nodeType": "VARIABLE_DECLARATION", - "scope": "204", - "src": { - "column": "8", - "end": "974", - "id": "221", - "length": "6", - "line": "38", - "parentIndex": "218", - "start": "969" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "222", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "972", - "id": "223", - "length": "4", - "line": "38", - "parentIndex": "220", - "start": "969" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "218", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "224", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "226", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "226", - "src": { - "column": "17", - "end": "978", - "id": "227", - "length": "1", - "line": "38", - "parentIndex": "224", - "start": "978" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "DIVISION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "228", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "228", - "src": { - "column": "21", - "end": "982", - "id": "229", - "length": "1", - "line": "38", - "parentIndex": "224", - "start": "982" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "17", - "end": "982", - "id": "225", - "length": "5", - "line": "38", - "parentIndex": "218", - "start": "978" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "983", - "id": "219", - "length": "15", - "line": "38", - "parentIndex": "204", - "start": "969" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "232", - "name": "c", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "218", - "src": { - "column": "15", - "end": "1001", - "id": "233", - "length": "1", - "line": "40", - "parentIndex": "204", - "start": "1001" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "186", - "id": "230", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "1002", - "id": "231", - "length": "9", - "line": "40", - "parentIndex": "186", - "start": "994" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "186", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "div", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "188", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "190", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "190", - "src": { - "column": "17", - "end": "875", - "id": "191", - "length": "6", - "line": "36", - "parentIndex": "188", - "start": "870" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "192", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "873", - "id": "193", - "length": "4", - "line": "36", - "parentIndex": "190", - "start": "870" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "194", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "194", - "src": { - "column": "25", - "end": "883", - "id": "195", - "length": "6", - "line": "36", - "parentIndex": "188", - "start": "878" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "196", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "25", - "end": "881", - "id": "197", - "length": "4", - "line": "36", - "parentIndex": "194", - "start": "878" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "17", - "end": "883", - "id": "189", - "length": "14", - "line": "36", - "parentIndex": "186", - "start": "870" - } - }, - "returnParameters": { - "id": "198", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "200", - "nodeType": "VARIABLE_DECLARATION", - "scope": "200", - "src": { - "column": "56", - "end": "912", - "id": "201", - "length": "4", - "line": "36", - "parentIndex": "198", - "start": "909" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "202", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "56", - "end": "912", - "id": "203", - "length": "4", - "line": "36", - "parentIndex": "200", - "start": "909" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "56", - "end": "912", - "id": "199", - "length": "4", - "line": "36", - "parentIndex": "186", - "start": "909" - } - }, - "scope": "19", - "src": { - "column": "4", - "end": "1008", - "id": "187", - "length": "152", - "line": "36", - "parentIndex": "19", - "start": "857" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - } - ], - "src": { - "end": "1010", - "length": "862", - "line": "6", - "parentIndex": "13", - "start": "149" - } - } - } - ] - }, - "src": { - "id": 14, - "line": 6, - "start": 149, - "end": 1010, - "length": 862, - "parent_index": 12 - } - }, - { - "id": 234, - "license": "MIT", - "name": "SimpleStorage", - "absolute_path": "SimpleStorage.sol", - "exported_symbols": [ - { - "id": 234, - "name": "SimpleStorage", - "absolute_path": "SimpleStorage.sol" - }, - { - "id": 13, - "name": "MathLib", - "absolute_path": "MathLib.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "240", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "1068", - "id": "241", - "length": "23", - "line": "46", - "parentIndex": "234", - "start": "1046" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "MathLib.sol", - "file": "./MathLib.sol", - "id": "242", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "234", - "sourceUnit": "13", - "src": { - "end": "1093", - "length": "23", - "line": "48", - "parentIndex": "234", - "start": "1071" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "contractDependencies": [ - "242" - ], - "fullyImplemented": true, - "id": "243", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "243", - "242" - ], - "name": "SimpleStorage", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Using", - "value": { - "id": "245", - "libraryName": { - "id": "249", - "name": "MathLib", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "13", - "src": { - "end": "1205", - "id": "250", - "length": "7", - "line": "52", - "parentIndex": "245", - "start": "1199" - } - }, - "name": "MathLib", - "nodeType": "USING_FOR_DIRECTIVE", - "src": { - "end": "1215", - "id": "246", - "length": "23", - "line": "52", - "parentIndex": "243", - "start": "1193" - }, - "typeName": { - "id": "247", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "22", - "end": "1214", - "id": "248", - "length": "4", - "line": "52", - "parentIndex": "245", - "start": "1211" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "252", - "isStateVariable": true, - "name": "storedData", - "nodeType": "VARIABLE_DECLARATION", - "scope": "243", - "src": { - "column": "4", - "end": "1236", - "id": "253", - "length": "16", - "line": "53", - "parentIndex": "243", - "start": "1221" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "254", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "4", - "end": "1224", - "id": "255", - "length": "4", - "line": "53", - "parentIndex": "252", - "start": "1221" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "266", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "38", - "end": "1400", - "id": "267", - "length": "47", - "line": "56", - "parentIndex": "257", - "start": "1354" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "270", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "272", - "name": "storedData", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "252", - "src": { - "column": "8", - "end": "1373", - "id": "273", - "length": "10", - "line": "57", - "parentIndex": "270", - "start": "1364" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "276", - "name": "x", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "276", - "src": { - "column": "36", - "end": "1392", - "id": "277", - "length": "1", - "line": "57", - "parentIndex": "274", - "start": "1392" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "280", - "name": "storedData", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "252", - "src": { - "column": "21", - "end": "1386", - "id": "281", - "length": "10", - "line": "57", - "parentIndex": "278", - "start": "1377" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "278", - "memberName": "add", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "21", - "end": "1390", - "id": "279", - "length": "14", - "line": "57", - "parentIndex": "274", - "start": "1377" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "274", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "21", - "end": "1393", - "id": "275", - "length": "17", - "line": "57", - "parentIndex": "270", - "start": "1377" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$", - "typeString": "function(uint256)" - } - } - }, - "src": { - "column": "8", - "end": "1393", - "id": "271", - "length": "30", - "line": "57", - "parentIndex": "266", - "start": "1364" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "268", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "1394", - "id": "269", - "length": "31", - "line": "57", - "parentIndex": "266", - "start": "1364" - } - } - } - ] - }, - "id": "257", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "increment", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "259", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "261", - "name": "x", - "nodeType": "VARIABLE_DECLARATION", - "scope": "261", - "src": { - "column": "23", - "end": "1344", - "id": "262", - "length": "6", - "line": "56", - "parentIndex": "259", - "start": "1339" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "263", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "1342", - "id": "264", - "length": "4", - "line": "56", - "parentIndex": "261", - "start": "1339" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "1344", - "id": "260", - "length": "6", - "line": "56", - "parentIndex": "257", - "start": "1339" - } - }, - "returnParameters": { - "id": "265", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "1400", - "id": "258", - "length": "81", - "line": "56", - "parentIndex": "257", - "start": "1320" - } - }, - "scope": "243", - "src": { - "column": "4", - "end": "1400", - "id": "258", - "length": "81", - "line": "56", - "parentIndex": "243", - "start": "1320" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256", - "typeString": "function(uint256)" - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "292", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "38", - "end": "1564", - "id": "293", - "length": "47", - "line": "61", - "parentIndex": "283", - "start": "1518" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "296", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "298", - "name": "storedData", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "252", - "src": { - "column": "8", - "end": "1537", - "id": "299", - "length": "10", - "line": "62", - "parentIndex": "296", - "start": "1528" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "302", - "name": "x", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "302", - "src": { - "column": "36", - "end": "1556", - "id": "303", - "length": "1", - "line": "62", - "parentIndex": "300", - "start": "1556" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "306", - "name": "storedData", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "252", - "src": { - "column": "21", - "end": "1550", - "id": "307", - "length": "10", - "line": "62", - "parentIndex": "304", - "start": "1541" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "304", - "memberName": "sub", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "21", - "end": "1554", - "id": "305", - "length": "14", - "line": "62", - "parentIndex": "300", - "start": "1541" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "300", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "21", - "end": "1557", - "id": "301", - "length": "17", - "line": "62", - "parentIndex": "296", - "start": "1541" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$", - "typeString": "function(uint256)" - } - } - }, - "src": { - "column": "8", - "end": "1557", - "id": "297", - "length": "30", - "line": "62", - "parentIndex": "292", - "start": "1528" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "294", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "1558", - "id": "295", - "length": "31", - "line": "62", - "parentIndex": "292", - "start": "1528" - } - } - } - ] - }, - "id": "283", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "decrement", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "285", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "287", - "name": "x", - "nodeType": "VARIABLE_DECLARATION", - "scope": "287", - "src": { - "column": "23", - "end": "1508", - "id": "288", - "length": "6", - "line": "61", - "parentIndex": "285", - "start": "1503" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "289", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "1506", - "id": "290", - "length": "4", - "line": "61", - "parentIndex": "287", - "start": "1503" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "1508", - "id": "286", - "length": "6", - "line": "61", - "parentIndex": "283", - "start": "1503" - } - }, - "returnParameters": { - "id": "291", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "1564", - "id": "284", - "length": "81", - "line": "61", - "parentIndex": "283", - "start": "1484" - } - }, - "scope": "243", - "src": { - "column": "4", - "end": "1564", - "id": "284", - "length": "81", - "line": "61", - "parentIndex": "243", - "start": "1484" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256", - "typeString": "function(uint256)" - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "323", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "46", - "end": "1682", - "id": "324", - "length": "34", - "line": "66", - "parentIndex": "309", - "start": "1649" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "327", - "name": "storedData", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "252", - "src": { - "column": "15", - "end": "1675", - "id": "328", - "length": "10", - "line": "67", - "parentIndex": "323", - "start": "1666" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "309", - "id": "325", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "1676", - "id": "326", - "length": "18", - "line": "67", - "parentIndex": "309", - "start": "1659" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "309", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "get", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "311", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "313", - "nodeType": "VARIABLE_DECLARATION", - "scope": "313", - "src": { - "column": "40", - "end": "1646", - "id": "314", - "length": "4", - "line": "66", - "parentIndex": "311", - "start": "1643" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "315", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "40", - "end": "1646", - "id": "316", - "length": "4", - "line": "66", - "parentIndex": "313", - "start": "1643" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "40", - "end": "1646", - "id": "312", - "length": "4", - "line": "66", - "parentIndex": "309", - "start": "1643" - } - }, - "returnParameters": { - "id": "317", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "319", - "nodeType": "VARIABLE_DECLARATION", - "scope": "319", - "src": { - "column": "40", - "end": "1646", - "id": "320", - "length": "4", - "line": "66", - "parentIndex": "317", - "start": "1643" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "321", - "name": "uint", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "40", - "end": "1646", - "id": "322", - "length": "4", - "line": "66", - "parentIndex": "319", - "start": "1643" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "40", - "end": "1646", - "id": "318", - "length": "4", - "line": "66", - "parentIndex": "309", - "start": "1643" - } - }, - "scope": "243", - "src": { - "column": "4", - "end": "1682", - "id": "310", - "length": "76", - "line": "66", - "parentIndex": "243", - "start": "1607" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256", - "typeString": "function(uint256)" - }, - "visibility": "PUBLIC" - } - } - ], - "src": { - "end": "1684", - "length": "521", - "line": "51", - "parentIndex": "234", - "start": "1164" - } - } - } - ] - }, - "src": { - "id": 235, - "line": 51, - "start": 1164, - "end": 1684, - "length": 521, - "parent_index": 12 - } - } - ], - "comments": [ - { - "id": 1, - "node_type": 33, - "src": { - "line": 1, - "end": 30, - "length": 31, - "parent_index": 2 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 2, - "node_type": 31, - "src": { - "line": 5, - "start": 91, - "end": 147, - "length": 57, - "parent_index": 3 - }, - "text": "// This is a library for performing safe math operations." - }, - { - "id": 3, - "node_type": 31, - "src": { - "line": 7, - "column": 4, - "start": 171, - "end": 196, - "length": 26, - "parent_index": 4 - }, - "text": "// Safely add two numbers." - }, - { - "id": 4, - "node_type": 31, - "src": { - "line": 15, - "column": 4, - "start": 362, - "end": 392, - "length": 31, - "parent_index": 5 - }, - "text": "// Safely subtract two numbers." - }, - { - "id": 5, - "node_type": 31, - "src": { - "line": 23, - "column": 4, - "start": 562, - "end": 592, - "length": 31, - "parent_index": 6 - }, - "text": "// Safely multiply two numbers." - }, - { - "id": 6, - "node_type": 31, - "src": { - "line": 35, - "column": 4, - "start": 823, - "end": 851, - "length": 29, - "parent_index": 7 - }, - "text": "// Safely divide two numbers." - }, - { - "id": 7, - "node_type": 33, - "src": { - "line": 45, - "start": 1014, - "end": 1044, - "length": 31, - "parent_index": 8 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 8, - "node_type": 31, - "src": { - "line": 50, - "start": 1096, - "end": 1162, - "length": 67, - "parent_index": 9 - }, - "text": "// This contract uses the MathLib library for safe math operations." - }, - { - "id": 9, - "node_type": 31, - "src": { - "line": 55, - "column": 4, - "start": 1243, - "end": 1314, - "length": 72, - "parent_index": 10 - }, - "text": "// Use the add function from the MathLib to safely increment storedData." - }, - { - "id": 10, - "node_type": 31, - "src": { - "line": 60, - "column": 4, - "start": 1407, - "end": 1478, - "length": 72, - "parent_index": 11 - }, - "text": "// Use the sub function from the MathLib to safely decrement storedData." - }, - { - "id": 11, - "node_type": 31, - "src": { - "line": 65, - "column": 4, - "start": 1571, - "end": 1601, - "length": 31, - "parent_index": 12 - }, - "text": "// Get the value of storedData." - } - ] + "id": 12, + "entry_source_unit": 234, + "node_type": 80, + "source_units": [ + { + "id": 13, + "license": "MIT", + "name": "MathLib", + "absolute_path": "MathLib.sol", + "exported_symbols": [ + { + "id": 13, + "name": "MathLib", + "absolute_path": "MathLib.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "15", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "54", + "id": "16", + "length": "23", + "line": "2", + "parentIndex": "13", + "start": "32" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "17", + "literals": [ + "pragma", + "experimental", + "ABIEncoderV2", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "88", + "id": "18", + "length": "33", + "line": "3", + "parentIndex": "13", + "start": "56" + }, + "text": "pragma experimental ABIEncoderV2;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "19", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "19" + ], + "name": "MathLib", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "39", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "62", + "end": "355", + "id": "40", + "length": "96", + "line": "8", + "parentIndex": "21", + "start": "260" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "43" + ], + "declarations": [ + { + "id": "43", + "mutability": "MUTABLE", + "name": "c", + "nodeType": "VARIABLE_DECLARATION", + "scope": "39", + "src": { + "column": "8", + "end": "275", + "id": "44", + "length": "6", + "line": "9", + "parentIndex": "41", + "start": "270" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "45", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "273", + "id": "46", + "length": "4", + "line": "9", + "parentIndex": "43", + "start": "270" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "41", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "47", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "49", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "49", + "src": { + "column": "17", + "end": "279", + "id": "50", + "length": "1", + "line": "9", + "parentIndex": "47", + "start": "279" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "ADDITION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "51", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "51", + "src": { + "column": "21", + "end": "283", + "id": "52", + "length": "1", + "line": "9", + "parentIndex": "47", + "start": "283" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "17", + "end": "283", + "id": "48", + "length": "5", + "line": "9", + "parentIndex": "41", + "start": "279" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "284", + "id": "42", + "length": "15", + "line": "9", + "parentIndex": "39", + "start": "270" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Addition overflow\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "57", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "59", + "name": "c", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "41", + "src": { + "column": "16", + "end": "302", + "id": "60", + "length": "1", + "line": "10", + "parentIndex": "57", + "start": "302" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "61", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "61", + "src": { + "column": "21", + "end": "307", + "id": "62", + "length": "1", + "line": "10", + "parentIndex": "57", + "start": "307" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "307", + "id": "58", + "length": "6", + "line": "10", + "parentIndex": "53", + "start": "302" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "4164646974696f6e206f766572666c6f77", + "id": "63", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "24", + "end": "328", + "id": "64", + "length": "19", + "line": "10", + "parentIndex": "53", + "start": "310" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Addition overflow\"" + }, + "value": "Addition overflow" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "55", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "300", + "id": "56", + "length": "7", + "line": "10", + "parentIndex": "53", + "start": "294" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "53", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "329", + "id": "54", + "length": "36", + "line": "10", + "parentIndex": "39", + "start": "294" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "67", + "name": "c", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "41", + "src": { + "column": "15", + "end": "348", + "id": "68", + "length": "1", + "line": "12", + "parentIndex": "39", + "start": "348" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "21", + "id": "65", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "349", + "id": "66", + "length": "9", + "line": "12", + "parentIndex": "21", + "start": "341" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "21", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "add", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "23", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "25", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "25", + "src": { + "column": "17", + "end": "220", + "id": "26", + "length": "6", + "line": "8", + "parentIndex": "23", + "start": "215" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "27", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "218", + "id": "28", + "length": "4", + "line": "8", + "parentIndex": "25", + "start": "215" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "29", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "29", + "src": { + "column": "25", + "end": "228", + "id": "30", + "length": "6", + "line": "8", + "parentIndex": "23", + "start": "223" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "31", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "25", + "end": "226", + "id": "32", + "length": "4", + "line": "8", + "parentIndex": "29", + "start": "223" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "228", + "id": "24", + "length": "14", + "line": "8", + "parentIndex": "21", + "start": "215" + } + }, + "returnParameters": { + "id": "33", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "35", + "nodeType": "VARIABLE_DECLARATION", + "scope": "35", + "src": { + "column": "56", + "end": "257", + "id": "36", + "length": "4", + "line": "8", + "parentIndex": "33", + "start": "254" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "37", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "56", + "end": "257", + "id": "38", + "length": "4", + "line": "8", + "parentIndex": "35", + "start": "254" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "56", + "end": "257", + "id": "34", + "length": "4", + "line": "8", + "parentIndex": "21", + "start": "254" + } + }, + "scope": "19", + "src": { + "column": "4", + "end": "355", + "id": "22", + "length": "154", + "line": "8", + "parentIndex": "19", + "start": "202" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "88", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "62", + "end": "555", + "id": "89", + "length": "100", + "line": "16", + "parentIndex": "70", + "start": "456" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Subtraction underflow\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "94", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "96", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "96", + "src": { + "column": "16", + "end": "474", + "id": "97", + "length": "1", + "line": "17", + "parentIndex": "94", + "start": "474" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "98", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "98", + "src": { + "column": "21", + "end": "479", + "id": "99", + "length": "1", + "line": "17", + "parentIndex": "94", + "start": "479" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "479", + "id": "95", + "length": "6", + "line": "17", + "parentIndex": "90", + "start": "474" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "5375627472616374696f6e20756e646572666c6f77", + "id": "100", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "24", + "end": "504", + "id": "101", + "length": "23", + "line": "17", + "parentIndex": "90", + "start": "482" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Subtraction underflow\"" + }, + "value": "Subtraction underflow" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "92", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "472", + "id": "93", + "length": "7", + "line": "17", + "parentIndex": "90", + "start": "466" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "90", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "505", + "id": "91", + "length": "40", + "line": "17", + "parentIndex": "88", + "start": "466" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "104" + ], + "declarations": [ + { + "id": "104", + "mutability": "MUTABLE", + "name": "c", + "nodeType": "VARIABLE_DECLARATION", + "scope": "88", + "src": { + "column": "8", + "end": "521", + "id": "105", + "length": "6", + "line": "18", + "parentIndex": "102", + "start": "516" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "106", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "519", + "id": "107", + "length": "4", + "line": "18", + "parentIndex": "104", + "start": "516" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "102", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "108", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "110", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "110", + "src": { + "column": "17", + "end": "525", + "id": "111", + "length": "1", + "line": "18", + "parentIndex": "108", + "start": "525" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "112", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "112", + "src": { + "column": "21", + "end": "529", + "id": "113", + "length": "1", + "line": "18", + "parentIndex": "108", + "start": "529" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "17", + "end": "529", + "id": "109", + "length": "5", + "line": "18", + "parentIndex": "102", + "start": "525" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "530", + "id": "103", + "length": "15", + "line": "18", + "parentIndex": "88", + "start": "516" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "116", + "name": "c", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "102", + "src": { + "column": "15", + "end": "548", + "id": "117", + "length": "1", + "line": "20", + "parentIndex": "88", + "start": "548" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "70", + "id": "114", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "549", + "id": "115", + "length": "9", + "line": "20", + "parentIndex": "70", + "start": "541" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "70", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "sub", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "72", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "74", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "74", + "src": { + "column": "17", + "end": "416", + "id": "75", + "length": "6", + "line": "16", + "parentIndex": "72", + "start": "411" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "76", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "414", + "id": "77", + "length": "4", + "line": "16", + "parentIndex": "74", + "start": "411" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "78", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "78", + "src": { + "column": "25", + "end": "424", + "id": "79", + "length": "6", + "line": "16", + "parentIndex": "72", + "start": "419" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "80", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "25", + "end": "422", + "id": "81", + "length": "4", + "line": "16", + "parentIndex": "78", + "start": "419" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "424", + "id": "73", + "length": "14", + "line": "16", + "parentIndex": "70", + "start": "411" + } + }, + "returnParameters": { + "id": "82", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "84", + "nodeType": "VARIABLE_DECLARATION", + "scope": "84", + "src": { + "column": "56", + "end": "453", + "id": "85", + "length": "4", + "line": "16", + "parentIndex": "82", + "start": "450" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "86", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "56", + "end": "453", + "id": "87", + "length": "4", + "line": "16", + "parentIndex": "84", + "start": "450" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "56", + "end": "453", + "id": "83", + "length": "4", + "line": "16", + "parentIndex": "70", + "start": "450" + } + }, + "scope": "19", + "src": { + "column": "4", + "end": "555", + "id": "71", + "length": "158", + "line": "16", + "parentIndex": "19", + "start": "398" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "137", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "62", + "end": "816", + "id": "138", + "length": "161", + "line": "24", + "parentIndex": "119", + "start": "656" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "147", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "20", + "end": "710", + "id": "148", + "length": "33", + "line": "25", + "parentIndex": "119", + "start": "678" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "151", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "19", + "end": "699", + "id": "152", + "length": "1", + "line": "26", + "parentIndex": "147", + "start": "699" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "functionReturnParameters": "119", + "id": "149", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "700", + "id": "150", + "length": "9", + "line": "26", + "parentIndex": "119", + "start": "692" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "141", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "143", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "143", + "src": { + "column": "12", + "end": "670", + "id": "144", + "length": "1", + "line": "25", + "parentIndex": "141", + "start": "670" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "145", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "17", + "end": "675", + "id": "146", + "length": "1", + "line": "25", + "parentIndex": "141", + "start": "675" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "12", + "end": "675", + "id": "142", + "length": "6", + "line": "25", + "parentIndex": "139", + "start": "670" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "139", + "nodeType": "IF_STATEMENT", + "src": { + "end": "710", + "id": "140", + "length": "45", + "line": "25", + "parentIndex": "137", + "start": "666" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "155" + ], + "declarations": [ + { + "id": "155", + "mutability": "MUTABLE", + "name": "c", + "nodeType": "VARIABLE_DECLARATION", + "scope": "137", + "src": { + "column": "8", + "end": "726", + "id": "156", + "length": "6", + "line": "29", + "parentIndex": "153", + "start": "721" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "157", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "724", + "id": "158", + "length": "4", + "line": "29", + "parentIndex": "155", + "start": "721" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "153", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "159", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "161", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "161", + "src": { + "column": "17", + "end": "730", + "id": "162", + "length": "1", + "line": "29", + "parentIndex": "159", + "start": "730" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MULTIPLICATION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "163", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "163", + "src": { + "column": "21", + "end": "734", + "id": "164", + "length": "1", + "line": "29", + "parentIndex": "159", + "start": "734" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "17", + "end": "734", + "id": "160", + "length": "5", + "line": "29", + "parentIndex": "153", + "start": "730" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "735", + "id": "154", + "length": "15", + "line": "29", + "parentIndex": "137", + "start": "721" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Multiplication overflow\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "169", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "171", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "173", + "name": "c", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "153", + "src": { + "column": "16", + "end": "753", + "id": "174", + "length": "1", + "line": "30", + "parentIndex": "171", + "start": "753" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "175", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "175", + "src": { + "column": "20", + "end": "757", + "id": "176", + "length": "1", + "line": "30", + "parentIndex": "171", + "start": "757" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "757", + "id": "172", + "length": "5", + "line": "30", + "parentIndex": "169", + "start": "753" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "177", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "177", + "src": { + "column": "25", + "end": "762", + "id": "178", + "length": "1", + "line": "30", + "parentIndex": "169", + "start": "762" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "762", + "id": "170", + "length": "10", + "line": "30", + "parentIndex": "165", + "start": "753" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "4d756c7469706c69636174696f6e206f766572666c6f77", + "id": "179", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "28", + "end": "789", + "id": "180", + "length": "25", + "line": "30", + "parentIndex": "165", + "start": "765" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Multiplication overflow\"" + }, + "value": "Multiplication overflow" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "167", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "751", + "id": "168", + "length": "7", + "line": "30", + "parentIndex": "165", + "start": "745" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "165", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "790", + "id": "166", + "length": "46", + "line": "30", + "parentIndex": "137", + "start": "745" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "183", + "name": "c", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "153", + "src": { + "column": "15", + "end": "809", + "id": "184", + "length": "1", + "line": "32", + "parentIndex": "137", + "start": "809" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "119", + "id": "181", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "810", + "id": "182", + "length": "9", + "line": "32", + "parentIndex": "119", + "start": "802" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "119", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "mul", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "121", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "123", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "123", + "src": { + "column": "17", + "end": "616", + "id": "124", + "length": "6", + "line": "24", + "parentIndex": "121", + "start": "611" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "125", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "614", + "id": "126", + "length": "4", + "line": "24", + "parentIndex": "123", + "start": "611" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "127", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "127", + "src": { + "column": "25", + "end": "624", + "id": "128", + "length": "6", + "line": "24", + "parentIndex": "121", + "start": "619" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "129", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "25", + "end": "622", + "id": "130", + "length": "4", + "line": "24", + "parentIndex": "127", + "start": "619" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "624", + "id": "122", + "length": "14", + "line": "24", + "parentIndex": "119", + "start": "611" + } + }, + "returnParameters": { + "id": "131", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "133", + "nodeType": "VARIABLE_DECLARATION", + "scope": "133", + "src": { + "column": "56", + "end": "653", + "id": "134", + "length": "4", + "line": "24", + "parentIndex": "131", + "start": "650" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "135", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "56", + "end": "653", + "id": "136", + "length": "4", + "line": "24", + "parentIndex": "133", + "start": "650" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "56", + "end": "653", + "id": "132", + "length": "4", + "line": "24", + "parentIndex": "119", + "start": "650" + } + }, + "scope": "19", + "src": { + "column": "4", + "end": "816", + "id": "120", + "length": "219", + "line": "24", + "parentIndex": "19", + "start": "598" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "204", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "62", + "end": "1008", + "id": "205", + "length": "94", + "line": "36", + "parentIndex": "186", + "start": "915" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Division by zero\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "210", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "212", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "212", + "src": { + "column": "16", + "end": "933", + "id": "213", + "length": "1", + "line": "37", + "parentIndex": "210", + "start": "933" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "214", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "20", + "end": "937", + "id": "215", + "length": "1", + "line": "37", + "parentIndex": "210", + "start": "937" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "16", + "end": "937", + "id": "211", + "length": "5", + "line": "37", + "parentIndex": "206", + "start": "933" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "4469766973696f6e206279207a65726f", + "id": "216", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "23", + "end": "957", + "id": "217", + "length": "18", + "line": "37", + "parentIndex": "206", + "start": "940" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Division by zero\"" + }, + "value": "Division by zero" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "208", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "931", + "id": "209", + "length": "7", + "line": "37", + "parentIndex": "206", + "start": "925" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "206", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "958", + "id": "207", + "length": "34", + "line": "37", + "parentIndex": "204", + "start": "925" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "220" + ], + "declarations": [ + { + "id": "220", + "mutability": "MUTABLE", + "name": "c", + "nodeType": "VARIABLE_DECLARATION", + "scope": "204", + "src": { + "column": "8", + "end": "974", + "id": "221", + "length": "6", + "line": "38", + "parentIndex": "218", + "start": "969" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "222", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "972", + "id": "223", + "length": "4", + "line": "38", + "parentIndex": "220", + "start": "969" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "218", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "224", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "226", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "226", + "src": { + "column": "17", + "end": "978", + "id": "227", + "length": "1", + "line": "38", + "parentIndex": "224", + "start": "978" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "228", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "228", + "src": { + "column": "21", + "end": "982", + "id": "229", + "length": "1", + "line": "38", + "parentIndex": "224", + "start": "982" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "17", + "end": "982", + "id": "225", + "length": "5", + "line": "38", + "parentIndex": "218", + "start": "978" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "983", + "id": "219", + "length": "15", + "line": "38", + "parentIndex": "204", + "start": "969" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "232", + "name": "c", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "218", + "src": { + "column": "15", + "end": "1001", + "id": "233", + "length": "1", + "line": "40", + "parentIndex": "204", + "start": "1001" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "186", + "id": "230", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "1002", + "id": "231", + "length": "9", + "line": "40", + "parentIndex": "186", + "start": "994" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "186", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "div", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "188", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "190", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "190", + "src": { + "column": "17", + "end": "875", + "id": "191", + "length": "6", + "line": "36", + "parentIndex": "188", + "start": "870" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "192", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "873", + "id": "193", + "length": "4", + "line": "36", + "parentIndex": "190", + "start": "870" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "194", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "194", + "src": { + "column": "25", + "end": "883", + "id": "195", + "length": "6", + "line": "36", + "parentIndex": "188", + "start": "878" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "196", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "25", + "end": "881", + "id": "197", + "length": "4", + "line": "36", + "parentIndex": "194", + "start": "878" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "883", + "id": "189", + "length": "14", + "line": "36", + "parentIndex": "186", + "start": "870" + } + }, + "returnParameters": { + "id": "198", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "200", + "nodeType": "VARIABLE_DECLARATION", + "scope": "200", + "src": { + "column": "56", + "end": "912", + "id": "201", + "length": "4", + "line": "36", + "parentIndex": "198", + "start": "909" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "202", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "56", + "end": "912", + "id": "203", + "length": "4", + "line": "36", + "parentIndex": "200", + "start": "909" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "56", + "end": "912", + "id": "199", + "length": "4", + "line": "36", + "parentIndex": "186", + "start": "909" + } + }, + "scope": "19", + "src": { + "column": "4", + "end": "1008", + "id": "187", + "length": "152", + "line": "36", + "parentIndex": "19", + "start": "857" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "1010", + "length": "862", + "line": "6", + "parentIndex": "13", + "start": "149" + } + } + } + ] + }, + "src": { + "id": 14, + "line": 6, + "start": 149, + "end": 1010, + "length": 862, + "parent_index": 12 + } + }, + { + "id": 234, + "license": "MIT", + "name": "SimpleStorage", + "absolute_path": "SimpleStorage.sol", + "exported_symbols": [ + { + "id": 234, + "name": "SimpleStorage", + "absolute_path": "SimpleStorage.sol" + }, + { + "id": 13, + "name": "MathLib", + "absolute_path": "MathLib.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "240", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "1068", + "id": "241", + "length": "23", + "line": "46", + "parentIndex": "234", + "start": "1046" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "MathLib.sol", + "file": "./MathLib.sol", + "id": "242", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "234", + "sourceUnit": "13", + "src": { + "end": "1093", + "length": "23", + "line": "48", + "parentIndex": "234", + "start": "1071" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "contractDependencies": [ + "242" + ], + "fullyImplemented": true, + "id": "243", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "243", + "242" + ], + "name": "SimpleStorage", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Using", + "value": { + "id": "245", + "libraryName": { + "id": "249", + "name": "MathLib", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "13", + "src": { + "end": "1205", + "id": "250", + "length": "7", + "line": "52", + "parentIndex": "245", + "start": "1199" + } + }, + "name": "MathLib", + "nodeType": "USING_FOR_DIRECTIVE", + "src": { + "end": "1215", + "id": "246", + "length": "23", + "line": "52", + "parentIndex": "243", + "start": "1193" + }, + "typeName": { + "id": "247", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "1214", + "id": "248", + "length": "4", + "line": "52", + "parentIndex": "245", + "start": "1211" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "252", + "isStateVariable": true, + "name": "storedData", + "nodeType": "VARIABLE_DECLARATION", + "scope": "243", + "src": { + "column": "4", + "end": "1236", + "id": "253", + "length": "16", + "line": "53", + "parentIndex": "243", + "start": "1221" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "254", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "1224", + "id": "255", + "length": "4", + "line": "53", + "parentIndex": "252", + "start": "1221" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "266", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "38", + "end": "1400", + "id": "267", + "length": "47", + "line": "56", + "parentIndex": "257", + "start": "1354" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "270", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "272", + "name": "storedData", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "252", + "src": { + "column": "8", + "end": "1373", + "id": "273", + "length": "10", + "line": "57", + "parentIndex": "270", + "start": "1364" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "280", + "name": "x", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "280", + "src": { + "column": "36", + "end": "1392", + "id": "281", + "length": "1", + "line": "57", + "parentIndex": "274", + "start": "1392" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "278", + "name": "storedData", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "252", + "src": { + "column": "21", + "end": "1386", + "id": "279", + "length": "10", + "line": "57", + "parentIndex": "276", + "start": "1377" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "276", + "memberName": "add", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "21", + "end": "1390", + "id": "277", + "length": "14", + "line": "57", + "parentIndex": "274", + "start": "1377" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "274", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "21", + "end": "1393", + "id": "275", + "length": "17", + "line": "57", + "parentIndex": "270", + "start": "1377" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + } + } + }, + "src": { + "column": "8", + "end": "1393", + "id": "271", + "length": "30", + "line": "57", + "parentIndex": "266", + "start": "1364" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "268", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "1394", + "id": "269", + "length": "31", + "line": "57", + "parentIndex": "266", + "start": "1364" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "257", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "increment", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "259", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "261", + "name": "x", + "nodeType": "VARIABLE_DECLARATION", + "scope": "261", + "src": { + "column": "23", + "end": "1344", + "id": "262", + "length": "6", + "line": "56", + "parentIndex": "259", + "start": "1339" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "263", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "1342", + "id": "264", + "length": "4", + "line": "56", + "parentIndex": "261", + "start": "1339" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "1344", + "id": "260", + "length": "6", + "line": "56", + "parentIndex": "257", + "start": "1339" + } + }, + "returnParameters": { + "id": "265", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "1400", + "id": "258", + "length": "81", + "line": "56", + "parentIndex": "257", + "start": "1320" + } + }, + "scope": "243", + "src": { + "column": "4", + "end": "1400", + "id": "258", + "length": "81", + "line": "56", + "parentIndex": "243", + "start": "1320" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "292", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "38", + "end": "1564", + "id": "293", + "length": "47", + "line": "61", + "parentIndex": "283", + "start": "1518" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "296", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "298", + "name": "storedData", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "252", + "src": { + "column": "8", + "end": "1537", + "id": "299", + "length": "10", + "line": "62", + "parentIndex": "296", + "start": "1528" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "306", + "name": "x", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "306", + "src": { + "column": "36", + "end": "1556", + "id": "307", + "length": "1", + "line": "62", + "parentIndex": "300", + "start": "1556" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "304", + "name": "storedData", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "252", + "src": { + "column": "21", + "end": "1550", + "id": "305", + "length": "10", + "line": "62", + "parentIndex": "302", + "start": "1541" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "302", + "memberName": "sub", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "21", + "end": "1554", + "id": "303", + "length": "14", + "line": "62", + "parentIndex": "300", + "start": "1541" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "300", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "21", + "end": "1557", + "id": "301", + "length": "17", + "line": "62", + "parentIndex": "296", + "start": "1541" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + } + } + }, + "src": { + "column": "8", + "end": "1557", + "id": "297", + "length": "30", + "line": "62", + "parentIndex": "292", + "start": "1528" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "294", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "1558", + "id": "295", + "length": "31", + "line": "62", + "parentIndex": "292", + "start": "1528" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "283", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "decrement", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "285", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "287", + "name": "x", + "nodeType": "VARIABLE_DECLARATION", + "scope": "287", + "src": { + "column": "23", + "end": "1508", + "id": "288", + "length": "6", + "line": "61", + "parentIndex": "285", + "start": "1503" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "289", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "1506", + "id": "290", + "length": "4", + "line": "61", + "parentIndex": "287", + "start": "1503" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "1508", + "id": "286", + "length": "6", + "line": "61", + "parentIndex": "283", + "start": "1503" + } + }, + "returnParameters": { + "id": "291", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "1564", + "id": "284", + "length": "81", + "line": "61", + "parentIndex": "283", + "start": "1484" + } + }, + "scope": "243", + "src": { + "column": "4", + "end": "1564", + "id": "284", + "length": "81", + "line": "61", + "parentIndex": "243", + "start": "1484" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "323", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "46", + "end": "1682", + "id": "324", + "length": "34", + "line": "66", + "parentIndex": "309", + "start": "1649" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "327", + "name": "storedData", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "252", + "src": { + "column": "15", + "end": "1675", + "id": "328", + "length": "10", + "line": "67", + "parentIndex": "323", + "start": "1666" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "309", + "id": "325", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "1676", + "id": "326", + "length": "18", + "line": "67", + "parentIndex": "309", + "start": "1659" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "309", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "get", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "311", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "313", + "nodeType": "VARIABLE_DECLARATION", + "scope": "313", + "src": { + "column": "40", + "end": "1646", + "id": "314", + "length": "4", + "line": "66", + "parentIndex": "311", + "start": "1643" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "315", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "40", + "end": "1646", + "id": "316", + "length": "4", + "line": "66", + "parentIndex": "313", + "start": "1643" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "40", + "end": "1646", + "id": "312", + "length": "4", + "line": "66", + "parentIndex": "309", + "start": "1643" + } + }, + "returnParameters": { + "id": "317", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "319", + "nodeType": "VARIABLE_DECLARATION", + "scope": "319", + "src": { + "column": "40", + "end": "1646", + "id": "320", + "length": "4", + "line": "66", + "parentIndex": "317", + "start": "1643" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "321", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "40", + "end": "1646", + "id": "322", + "length": "4", + "line": "66", + "parentIndex": "319", + "start": "1643" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "40", + "end": "1646", + "id": "318", + "length": "4", + "line": "66", + "parentIndex": "309", + "start": "1643" + } + }, + "scope": "243", + "src": { + "column": "4", + "end": "1682", + "id": "310", + "length": "76", + "line": "66", + "parentIndex": "243", + "start": "1607" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "PUBLIC" + } + } + ], + "src": { + "end": "1684", + "length": "521", + "line": "51", + "parentIndex": "234", + "start": "1164" + } + } + } + ] + }, + "src": { + "id": 235, + "line": 51, + "start": 1164, + "end": 1684, + "length": 521, + "parent_index": 12 + } + } + ], + "comments": [ + { + "id": 1, + "node_type": 33, + "src": { + "line": 1, + "end": 30, + "length": 31, + "parent_index": 2 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 2, + "node_type": 31, + "src": { + "line": 5, + "start": 91, + "end": 147, + "length": 57, + "parent_index": 3 + }, + "text": "// This is a library for performing safe math operations." + }, + { + "id": 3, + "node_type": 31, + "src": { + "line": 7, + "column": 4, + "start": 171, + "end": 196, + "length": 26, + "parent_index": 4 + }, + "text": "// Safely add two numbers." + }, + { + "id": 4, + "node_type": 31, + "src": { + "line": 15, + "column": 4, + "start": 362, + "end": 392, + "length": 31, + "parent_index": 5 + }, + "text": "// Safely subtract two numbers." + }, + { + "id": 5, + "node_type": 31, + "src": { + "line": 23, + "column": 4, + "start": 562, + "end": 592, + "length": 31, + "parent_index": 6 + }, + "text": "// Safely multiply two numbers." + }, + { + "id": 6, + "node_type": 31, + "src": { + "line": 35, + "column": 4, + "start": 823, + "end": 851, + "length": 29, + "parent_index": 7 + }, + "text": "// Safely divide two numbers." + }, + { + "id": 7, + "node_type": 33, + "src": { + "line": 45, + "start": 1014, + "end": 1044, + "length": 31, + "parent_index": 8 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 8, + "node_type": 31, + "src": { + "line": 50, + "start": 1096, + "end": 1162, + "length": 67, + "parent_index": 9 + }, + "text": "// This contract uses the MathLib library for safe math operations." + }, + { + "id": 9, + "node_type": 31, + "src": { + "line": 55, + "column": 4, + "start": 1243, + "end": 1314, + "length": 72, + "parent_index": 10 + }, + "text": "// Use the add function from the MathLib to safely increment storedData." + }, + { + "id": 10, + "node_type": 31, + "src": { + "line": 60, + "column": 4, + "start": 1407, + "end": 1478, + "length": 72, + "parent_index": 11 + }, + "text": "// Use the sub function from the MathLib to safely decrement storedData." + }, + { + "id": 11, + "node_type": 31, + "src": { + "line": 65, + "column": 4, + "start": 1571, + "end": 1601, + "length": 31, + "parent_index": 12 + }, + "text": "// Get the value of storedData." + } + ] } \ No newline at end of file diff --git a/data/tests/ast/Token.solgo.ast.json b/data/tests/ast/Token.solgo.ast.json index ec5cfd77..f6f3d8b9 100644 --- a/data/tests/ast/Token.solgo.ast.json +++ b/data/tests/ast/Token.solgo.ast.json @@ -1 +1 @@ -{"id":48,"node_type":80,"entry_source_unit":1421,"root":[{"id":49,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":49,"name":"IERC20","absolute_path":"/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/IERC20.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/IERC20.sol","name":"IERC20","node_type":1,"nodes":[{"id":51,"node_type":10,"src":{"id":52,"line":4,"column":0,"start":106,"end":128,"length":23,"parent_index":49},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":58,"name":"IERC20","node_type":35,"src":{"id":0,"line":9,"column":0,"start":202,"end":2735,"length":2534,"parent_index":49},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":60,"node_type":57,"src":{"id":61,"line":16,"column":4,"start":388,"end":459,"length":72,"parent_index":58},"parameters":{"id":62,"node_type":43,"src":{"id":61,"line":16,"column":4,"start":388,"end":459,"length":72,"parent_index":60},"parameters":[{"id":63,"node_type":44,"src":{"id":64,"line":16,"column":19,"start":403,"end":422,"length":20,"parent_index":62},"scope":60,"name":"from","type_name":{"id":65,"node_type":30,"src":{"id":66,"line":16,"column":19,"start":403,"end":409,"length":7,"parent_index":63},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":67,"node_type":44,"src":{"id":68,"line":16,"column":41,"start":425,"end":442,"length":18,"parent_index":62},"scope":60,"name":"to","type_name":{"id":69,"node_type":30,"src":{"id":70,"line":16,"column":41,"start":425,"end":431,"length":7,"parent_index":67},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":71,"node_type":44,"src":{"id":72,"line":16,"column":61,"start":445,"end":457,"length":13,"parent_index":62},"scope":60,"name":"value","type_name":{"id":73,"node_type":30,"src":{"id":74,"line":16,"column":61,"start":445,"end":451,"length":7,"parent_index":71},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"name":"Transfer","anonymous":false},{"id":76,"node_type":57,"src":{"id":77,"line":22,"column":4,"start":619,"end":696,"length":78,"parent_index":58},"parameters":{"id":78,"node_type":43,"src":{"id":77,"line":22,"column":4,"start":619,"end":696,"length":78,"parent_index":76},"parameters":[{"id":79,"node_type":44,"src":{"id":80,"line":22,"column":19,"start":634,"end":654,"length":21,"parent_index":78},"scope":76,"name":"owner","type_name":{"id":81,"node_type":30,"src":{"id":82,"line":22,"column":19,"start":634,"end":640,"length":7,"parent_index":79},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":83,"node_type":44,"src":{"id":84,"line":22,"column":42,"start":657,"end":679,"length":23,"parent_index":78},"scope":76,"name":"spender","type_name":{"id":85,"node_type":30,"src":{"id":86,"line":22,"column":42,"start":657,"end":663,"length":7,"parent_index":83},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":87,"node_type":44,"src":{"id":88,"line":22,"column":67,"start":682,"end":694,"length":13,"parent_index":78},"scope":76,"name":"value","type_name":{"id":89,"node_type":30,"src":{"id":90,"line":22,"column":67,"start":682,"end":688,"length":7,"parent_index":87},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"name":"Approval","anonymous":false},{"id":92,"name":"totalSupply","node_type":42,"kind":41,"src":{"id":93,"line":27,"column":4,"start":774,"end":828,"length":55,"parent_index":58},"body":{"id":106,"node_type":46,"kind":0,"src":{"id":93,"line":27,"column":4,"start":774,"end":828,"length":55,"parent_index":92},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":94,"node_type":43,"src":{"id":95,"line":27,"column":50,"start":820,"end":826,"length":7,"parent_index":92},"parameters":[{"id":96,"node_type":44,"src":{"id":97,"line":27,"column":50,"start":820,"end":826,"length":7,"parent_index":94},"scope":92,"name":"","type_name":{"id":98,"node_type":30,"src":{"id":99,"line":27,"column":50,"start":820,"end":826,"length":7,"parent_index":96},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":100,"node_type":43,"src":{"id":101,"line":27,"column":50,"start":820,"end":826,"length":7,"parent_index":92},"parameters":[{"id":102,"node_type":44,"src":{"id":103,"line":27,"column":50,"start":820,"end":826,"length":7,"parent_index":100},"scope":92,"name":"","type_name":{"id":104,"node_type":30,"src":{"id":105,"line":27,"column":50,"start":820,"end":826,"length":7,"parent_index":102},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":58,"type_description":{"type_identifier":"t_function_$_t_uint256","type_string":"function(uint256)"}},{"id":108,"name":"balanceOf","node_type":42,"kind":41,"src":{"id":109,"line":32,"column":4,"start":912,"end":979,"length":68,"parent_index":58},"body":{"id":122,"node_type":46,"kind":0,"src":{"id":109,"line":32,"column":4,"start":912,"end":979,"length":68,"parent_index":108},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":110,"node_type":43,"src":{"id":111,"line":32,"column":23,"start":931,"end":945,"length":15,"parent_index":108},"parameters":[{"id":112,"node_type":44,"src":{"id":113,"line":32,"column":23,"start":931,"end":945,"length":15,"parent_index":110},"scope":108,"name":"account","type_name":{"id":114,"node_type":30,"src":{"id":115,"line":32,"column":23,"start":931,"end":937,"length":7,"parent_index":112},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":116,"node_type":43,"src":{"id":117,"line":32,"column":63,"start":971,"end":977,"length":7,"parent_index":108},"parameters":[{"id":118,"node_type":44,"src":{"id":119,"line":32,"column":63,"start":971,"end":977,"length":7,"parent_index":116},"scope":108,"name":"","type_name":{"id":120,"node_type":30,"src":{"id":121,"line":32,"column":63,"start":971,"end":977,"length":7,"parent_index":118},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":58,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":124,"name":"transfer","node_type":42,"kind":41,"src":{"id":125,"line":41,"column":4,"start":1193,"end":1262,"length":70,"parent_index":58},"body":{"id":142,"node_type":46,"kind":0,"src":{"id":125,"line":41,"column":4,"start":1193,"end":1262,"length":70,"parent_index":124},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":126,"node_type":43,"src":{"id":127,"line":41,"column":22,"start":1211,"end":1236,"length":26,"parent_index":124},"parameters":[{"id":128,"node_type":44,"src":{"id":129,"line":41,"column":22,"start":1211,"end":1220,"length":10,"parent_index":126},"scope":124,"name":"to","type_name":{"id":130,"node_type":30,"src":{"id":131,"line":41,"column":22,"start":1211,"end":1217,"length":7,"parent_index":128},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":132,"node_type":44,"src":{"id":133,"line":41,"column":34,"start":1223,"end":1236,"length":14,"parent_index":126},"scope":124,"name":"amount","type_name":{"id":134,"node_type":30,"src":{"id":135,"line":41,"column":34,"start":1223,"end":1229,"length":7,"parent_index":132},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":136,"node_type":43,"src":{"id":137,"line":41,"column":68,"start":1257,"end":1260,"length":4,"parent_index":124},"parameters":[{"id":138,"node_type":44,"src":{"id":139,"line":41,"column":68,"start":1257,"end":1260,"length":4,"parent_index":136},"scope":124,"name":"","type_name":{"id":140,"node_type":30,"src":{"id":141,"line":41,"column":68,"start":1257,"end":1260,"length":4,"parent_index":138},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":58,"type_description":{"type_identifier":"t_function_$_t_address$$_t_uint256","type_string":"function(address,uint256)"}},{"id":144,"name":"allowance","node_type":42,"kind":41,"src":{"id":145,"line":50,"column":4,"start":1538,"end":1620,"length":83,"parent_index":58},"body":{"id":162,"node_type":46,"kind":0,"src":{"id":145,"line":50,"column":4,"start":1538,"end":1620,"length":83,"parent_index":144},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":146,"node_type":43,"src":{"id":147,"line":50,"column":23,"start":1557,"end":1586,"length":30,"parent_index":144},"parameters":[{"id":148,"node_type":44,"src":{"id":149,"line":50,"column":23,"start":1557,"end":1569,"length":13,"parent_index":146},"scope":144,"name":"owner","type_name":{"id":150,"node_type":30,"src":{"id":151,"line":50,"column":23,"start":1557,"end":1563,"length":7,"parent_index":148},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":152,"node_type":44,"src":{"id":153,"line":50,"column":38,"start":1572,"end":1586,"length":15,"parent_index":146},"scope":144,"name":"spender","type_name":{"id":154,"node_type":30,"src":{"id":155,"line":50,"column":38,"start":1572,"end":1578,"length":7,"parent_index":152},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":156,"node_type":43,"src":{"id":157,"line":50,"column":78,"start":1612,"end":1618,"length":7,"parent_index":144},"parameters":[{"id":158,"node_type":44,"src":{"id":159,"line":50,"column":78,"start":1612,"end":1618,"length":7,"parent_index":156},"scope":144,"name":"","type_name":{"id":160,"node_type":30,"src":{"id":161,"line":50,"column":78,"start":1612,"end":1618,"length":7,"parent_index":158},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":58,"type_description":{"type_identifier":"t_function_$_t_address$$_t_address","type_string":"function(address,address)"}},{"id":164,"name":"approve","node_type":42,"kind":41,"src":{"id":165,"line":66,"column":4,"start":2274,"end":2347,"length":74,"parent_index":58},"body":{"id":182,"node_type":46,"kind":0,"src":{"id":165,"line":66,"column":4,"start":2274,"end":2347,"length":74,"parent_index":164},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":166,"node_type":43,"src":{"id":167,"line":66,"column":21,"start":2291,"end":2321,"length":31,"parent_index":164},"parameters":[{"id":168,"node_type":44,"src":{"id":169,"line":66,"column":21,"start":2291,"end":2305,"length":15,"parent_index":166},"scope":164,"name":"spender","type_name":{"id":170,"node_type":30,"src":{"id":171,"line":66,"column":21,"start":2291,"end":2297,"length":7,"parent_index":168},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":172,"node_type":44,"src":{"id":173,"line":66,"column":38,"start":2308,"end":2321,"length":14,"parent_index":166},"scope":164,"name":"amount","type_name":{"id":174,"node_type":30,"src":{"id":175,"line":66,"column":38,"start":2308,"end":2314,"length":7,"parent_index":172},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":176,"node_type":43,"src":{"id":177,"line":66,"column":72,"start":2342,"end":2345,"length":4,"parent_index":164},"parameters":[{"id":178,"node_type":44,"src":{"id":179,"line":66,"column":72,"start":2342,"end":2345,"length":4,"parent_index":176},"scope":164,"name":"","type_name":{"id":180,"node_type":30,"src":{"id":181,"line":66,"column":72,"start":2342,"end":2345,"length":4,"parent_index":178},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":58,"type_description":{"type_identifier":"t_function_$_t_address$$_t_uint256","type_string":"function(address,uint256)"}},{"id":184,"name":"transferFrom","node_type":42,"kind":41,"src":{"id":185,"line":77,"column":4,"start":2646,"end":2733,"length":88,"parent_index":58},"body":{"id":206,"node_type":46,"kind":0,"src":{"id":185,"line":77,"column":4,"start":2646,"end":2733,"length":88,"parent_index":184},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":186,"node_type":43,"src":{"id":187,"line":77,"column":26,"start":2668,"end":2707,"length":40,"parent_index":184},"parameters":[{"id":188,"node_type":44,"src":{"id":189,"line":77,"column":26,"start":2668,"end":2679,"length":12,"parent_index":186},"scope":184,"name":"from","type_name":{"id":190,"node_type":30,"src":{"id":191,"line":77,"column":26,"start":2668,"end":2674,"length":7,"parent_index":188},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":192,"node_type":44,"src":{"id":193,"line":77,"column":40,"start":2682,"end":2691,"length":10,"parent_index":186},"scope":184,"name":"to","type_name":{"id":194,"node_type":30,"src":{"id":195,"line":77,"column":40,"start":2682,"end":2688,"length":7,"parent_index":192},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":196,"node_type":44,"src":{"id":197,"line":77,"column":52,"start":2694,"end":2707,"length":14,"parent_index":186},"scope":184,"name":"amount","type_name":{"id":198,"node_type":30,"src":{"id":199,"line":77,"column":52,"start":2694,"end":2700,"length":7,"parent_index":196},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":200,"node_type":43,"src":{"id":201,"line":77,"column":86,"start":2728,"end":2731,"length":4,"parent_index":184},"parameters":[{"id":202,"node_type":44,"src":{"id":203,"line":77,"column":86,"start":2728,"end":2731,"length":4,"parent_index":200},"scope":184,"name":"","type_name":{"id":204,"node_type":30,"src":{"id":205,"line":77,"column":86,"start":2728,"end":2731,"length":4,"parent_index":202},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":58,"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256","type_string":"function(address,address,uint256)"}}],"linearized_base_contracts":[58],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":50,"line":9,"column":0,"start":202,"end":2735,"length":2534,"parent_index":48}},{"id":207,"base_contracts":[{"id":219,"node_type":62,"src":{"id":220,"line":93,"column":28,"start":3044,"end":3049,"length":6,"parent_index":218},"base_name":{"id":221,"node_type":52,"src":{"id":222,"line":93,"column":28,"start":3044,"end":3049,"length":6,"parent_index":218},"name":"IERC20","referenced_declaration":49}}],"license":"MIT","exported_symbols":[{"id":207,"name":"IERC20Metadata","absolute_path":"/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"},{"id":49,"name":"IERC20","absolute_path":"IERC20.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","name":"IERC20Metadata","node_type":1,"nodes":[{"id":211,"node_type":10,"src":{"id":212,"line":84,"column":0,"start":2849,"end":2871,"length":23,"parent_index":207},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":213,"node_type":29,"src":{"id":0,"line":86,"column":0,"start":2874,"end":2896,"length":23,"parent_index":207},"absolute_path":"IERC20.sol","file":"../IERC20.sol","scope":207,"unit_alias":"","source_unit":49},{"id":218,"name":"IERC20Metadata","node_type":35,"src":{"id":0,"line":93,"column":0,"start":3016,"end":3420,"length":405,"parent_index":207},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":224,"name":"name","node_type":42,"kind":41,"src":{"id":225,"line":97,"column":4,"start":3116,"end":3169,"length":54,"parent_index":218},"body":{"id":238,"node_type":46,"kind":0,"src":{"id":225,"line":97,"column":4,"start":3116,"end":3169,"length":54,"parent_index":224},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":226,"node_type":43,"src":{"id":227,"line":97,"column":43,"start":3155,"end":3167,"length":13,"parent_index":224},"parameters":[{"id":228,"node_type":44,"src":{"id":229,"line":97,"column":43,"start":3155,"end":3167,"length":13,"parent_index":226},"scope":224,"name":"","type_name":{"id":230,"node_type":30,"src":{"id":231,"line":97,"column":43,"start":3155,"end":3160,"length":6,"parent_index":228},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":232,"node_type":43,"src":{"id":233,"line":97,"column":43,"start":3155,"end":3167,"length":13,"parent_index":224},"parameters":[{"id":234,"node_type":44,"src":{"id":235,"line":97,"column":43,"start":3155,"end":3167,"length":13,"parent_index":232},"scope":224,"name":"","type_name":{"id":236,"node_type":30,"src":{"id":237,"line":97,"column":43,"start":3155,"end":3160,"length":6,"parent_index":234},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"scope":218,"type_description":{"type_identifier":"t_function_$_t_string","type_string":"function(string)"}},{"id":240,"name":"symbol","node_type":42,"kind":41,"src":{"id":241,"line":102,"column":4,"start":3237,"end":3292,"length":56,"parent_index":218},"body":{"id":254,"node_type":46,"kind":0,"src":{"id":241,"line":102,"column":4,"start":3237,"end":3292,"length":56,"parent_index":240},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":242,"node_type":43,"src":{"id":243,"line":102,"column":45,"start":3278,"end":3290,"length":13,"parent_index":240},"parameters":[{"id":244,"node_type":44,"src":{"id":245,"line":102,"column":45,"start":3278,"end":3290,"length":13,"parent_index":242},"scope":240,"name":"","type_name":{"id":246,"node_type":30,"src":{"id":247,"line":102,"column":45,"start":3278,"end":3283,"length":6,"parent_index":244},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":248,"node_type":43,"src":{"id":249,"line":102,"column":45,"start":3278,"end":3290,"length":13,"parent_index":240},"parameters":[{"id":250,"node_type":44,"src":{"id":251,"line":102,"column":45,"start":3278,"end":3290,"length":13,"parent_index":248},"scope":240,"name":"","type_name":{"id":252,"node_type":30,"src":{"id":253,"line":102,"column":45,"start":3278,"end":3283,"length":6,"parent_index":250},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"scope":218,"type_description":{"type_identifier":"t_function_$_t_string","type_string":"function(string)"}},{"id":256,"name":"decimals","node_type":42,"kind":41,"src":{"id":257,"line":107,"column":4,"start":3369,"end":3418,"length":50,"parent_index":218},"body":{"id":270,"node_type":46,"kind":0,"src":{"id":257,"line":107,"column":4,"start":3369,"end":3418,"length":50,"parent_index":256},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":258,"node_type":43,"src":{"id":259,"line":107,"column":47,"start":3412,"end":3416,"length":5,"parent_index":256},"parameters":[{"id":260,"node_type":44,"src":{"id":261,"line":107,"column":47,"start":3412,"end":3416,"length":5,"parent_index":258},"scope":256,"name":"","type_name":{"id":262,"node_type":30,"src":{"id":263,"line":107,"column":47,"start":3412,"end":3416,"length":5,"parent_index":260},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint8","type_string":"uint8"}]},"return_parameters":{"id":264,"node_type":43,"src":{"id":265,"line":107,"column":47,"start":3412,"end":3416,"length":5,"parent_index":256},"parameters":[{"id":266,"node_type":44,"src":{"id":267,"line":107,"column":47,"start":3412,"end":3416,"length":5,"parent_index":264},"scope":256,"name":"","type_name":{"id":268,"node_type":30,"src":{"id":269,"line":107,"column":47,"start":3412,"end":3416,"length":5,"parent_index":266},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint8","type_string":"uint8"}]},"scope":218,"type_description":{"type_identifier":"t_function_$_t_uint8","type_string":"function(uint8)"}}],"linearized_base_contracts":[49,218,213],"base_contracts":[{"id":219,"node_type":62,"src":{"id":220,"line":93,"column":28,"start":3044,"end":3049,"length":6,"parent_index":218},"base_name":{"id":221,"node_type":52,"src":{"id":222,"line":93,"column":28,"start":3044,"end":3049,"length":6,"parent_index":218},"name":"IERC20","referenced_declaration":49}}],"contract_dependencies":[49,213]}],"src":{"id":208,"line":93,"column":0,"start":3016,"end":3420,"length":405,"parent_index":48}},{"id":271,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":271,"name":"Context","absolute_path":"/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/utils/Context.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/utils/Context.sol","name":"Context","node_type":1,"nodes":[{"id":277,"node_type":10,"src":{"id":278,"line":114,"column":0,"start":3510,"end":3532,"length":23,"parent_index":271},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":280,"name":"Context","node_type":35,"src":{"id":0,"line":126,"column":0,"start":4032,"end":4266,"length":235,"parent_index":271},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":282,"name":"_msgSender","node_type":42,"kind":41,"src":{"id":283,"line":127,"column":4,"start":4064,"end":4159,"length":96,"parent_index":280},"body":{"id":296,"node_type":46,"kind":0,"src":{"id":297,"line":127,"column":66,"start":4126,"end":4159,"length":34,"parent_index":282},"implemented":true,"statements":[{"id":298,"node_type":47,"src":{"id":299,"line":128,"column":8,"start":4136,"end":4153,"length":18,"parent_index":282},"function_return_parameters":282,"expression":{"id":300,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":301,"line":128,"column":15,"start":4143,"end":4152,"length":10,"parent_index":296},"expression":{"id":302,"node_type":16,"src":{"id":303,"line":128,"column":15,"start":4143,"end":4145,"length":3,"parent_index":300},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":284,"node_type":43,"src":{"id":285,"line":127,"column":57,"start":4117,"end":4123,"length":7,"parent_index":282},"parameters":[{"id":286,"node_type":44,"src":{"id":287,"line":127,"column":57,"start":4117,"end":4123,"length":7,"parent_index":284},"scope":282,"name":"","type_name":{"id":288,"node_type":30,"src":{"id":289,"line":127,"column":57,"start":4117,"end":4123,"length":7,"parent_index":286},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":290,"node_type":43,"src":{"id":291,"line":127,"column":57,"start":4117,"end":4123,"length":7,"parent_index":282},"parameters":[{"id":292,"node_type":44,"src":{"id":293,"line":127,"column":57,"start":4117,"end":4123,"length":7,"parent_index":290},"scope":282,"name":"","type_name":{"id":294,"node_type":30,"src":{"id":295,"line":127,"column":57,"start":4117,"end":4123,"length":7,"parent_index":292},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":280,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":305,"name":"_msgData","node_type":42,"kind":41,"src":{"id":306,"line":131,"column":4,"start":4166,"end":4264,"length":99,"parent_index":280},"body":{"id":319,"node_type":46,"kind":0,"src":{"id":320,"line":131,"column":71,"start":4233,"end":4264,"length":32,"parent_index":305},"implemented":true,"statements":[{"id":321,"node_type":47,"src":{"id":322,"line":132,"column":8,"start":4243,"end":4258,"length":16,"parent_index":305},"function_return_parameters":305,"expression":{"id":323,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":324,"line":132,"column":15,"start":4250,"end":4257,"length":8,"parent_index":319},"expression":{"id":325,"node_type":16,"src":{"id":326,"line":132,"column":15,"start":4250,"end":4252,"length":3,"parent_index":323},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"data","argument_types":[],"type_description":{"type_identifier":"t_bytes_calldata_ptr","type_string":"bytes calldata"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":307,"node_type":43,"src":{"id":308,"line":131,"column":55,"start":4217,"end":4230,"length":14,"parent_index":305},"parameters":[{"id":309,"node_type":44,"src":{"id":310,"line":131,"column":55,"start":4217,"end":4230,"length":14,"parent_index":307},"scope":305,"name":"","type_name":{"id":311,"node_type":30,"src":{"id":312,"line":131,"column":55,"start":4217,"end":4221,"length":5,"parent_index":309},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":313,"node_type":43,"src":{"id":314,"line":131,"column":55,"start":4217,"end":4230,"length":14,"parent_index":305},"parameters":[{"id":315,"node_type":44,"src":{"id":316,"line":131,"column":55,"start":4217,"end":4230,"length":14,"parent_index":313},"scope":305,"name":"","type_name":{"id":317,"node_type":30,"src":{"id":318,"line":131,"column":55,"start":4217,"end":4221,"length":5,"parent_index":315},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":280,"type_description":{"type_identifier":"t_function_$_t_bytes","type_string":"function(bytes)"}}],"linearized_base_contracts":[280],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":272,"line":126,"column":0,"start":4032,"end":4266,"length":235,"parent_index":48}},{"id":327,"base_contracts":[{"id":342,"node_type":62,"src":{"id":343,"line":174,"column":18,"start":5820,"end":5826,"length":7,"parent_index":341},"base_name":{"id":344,"node_type":52,"src":{"id":345,"line":174,"column":18,"start":5820,"end":5826,"length":7,"parent_index":341},"name":"Context","referenced_declaration":271}},{"id":346,"node_type":62,"src":{"id":347,"line":174,"column":27,"start":5829,"end":5834,"length":6,"parent_index":341},"base_name":{"id":348,"node_type":52,"src":{"id":349,"line":174,"column":27,"start":5829,"end":5834,"length":6,"parent_index":341},"name":"IERC20","referenced_declaration":49}},{"id":350,"node_type":62,"src":{"id":351,"line":174,"column":35,"start":5837,"end":5850,"length":14,"parent_index":341},"base_name":{"id":352,"node_type":52,"src":{"id":353,"line":174,"column":35,"start":5837,"end":5850,"length":14,"parent_index":341},"name":"IERC20Metadata","referenced_declaration":207}}],"license":"MIT","exported_symbols":[{"id":327,"name":"ERC20","absolute_path":"/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/ERC20.sol"},{"id":342,"name":"Context","absolute_path":""},{"id":346,"name":"IERC20","absolute_path":""},{"id":350,"name":"IERC20Metadata","absolute_path":""}],"absolute_path":"/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/ERC20.sol","name":"ERC20","node_type":1,"nodes":[{"id":335,"node_type":10,"src":{"id":336,"line":140,"column":0,"start":4375,"end":4397,"length":23,"parent_index":327},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":341,"name":"ERC20","node_type":35,"src":{"id":0,"line":174,"column":0,"start":5802,"end":17113,"length":11312,"parent_index":327},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":355,"name":"_balances","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":356,"line":175,"column":4,"start":5858,"end":5903,"length":46,"parent_index":341},"scope":341,"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":357,"node_type":0,"src":{"id":358,"line":175,"column":4,"start":5858,"end":5884,"length":27,"parent_index":355},"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"key_type":{"id":359,"node_type":30,"src":{"id":360,"line":175,"column":12,"start":5866,"end":5872,"length":7,"parent_index":357},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0},"value_type":{"id":361,"node_type":30,"src":{"id":362,"line":175,"column":23,"start":5877,"end":5883,"length":7,"parent_index":357},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"referenced_declaration":0}},{"id":364,"name":"_allowances","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":365,"line":177,"column":4,"start":5910,"end":5977,"length":68,"parent_index":341},"scope":341,"type_description":{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":366,"node_type":0,"src":{"id":367,"line":177,"column":4,"start":5910,"end":5956,"length":47,"parent_index":364},"type_description":{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"},"key_type":{"id":368,"node_type":30,"src":{"id":369,"line":177,"column":12,"start":5918,"end":5924,"length":7,"parent_index":366},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0},"value_type":{"id":370,"node_type":53,"src":{"id":371,"line":177,"column":23,"start":5929,"end":5955,"length":27,"parent_index":366},"name":"mapping(address=\u003euint256)","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256","type_string":"mapping(address=\u003euint256)"},"key_type":{"id":373,"node_type":30,"src":{"id":374,"line":177,"column":31,"start":5937,"end":5943,"length":7,"parent_index":366},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0},"value_type":{"id":375,"node_type":30,"src":{"id":376,"line":177,"column":42,"start":5948,"end":5954,"length":7,"parent_index":366},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"referenced_declaration":0},"referenced_declaration":0}},{"id":378,"name":"_totalSupply","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":379,"line":179,"column":4,"start":5984,"end":6012,"length":29,"parent_index":341},"scope":341,"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":380,"node_type":30,"src":{"id":381,"line":179,"column":4,"start":5984,"end":5990,"length":7,"parent_index":378},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0}},{"id":383,"name":"_name","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":384,"line":181,"column":4,"start":6019,"end":6039,"length":21,"parent_index":341},"scope":341,"type_description":{"type_identifier":"t_string","type_string":"string"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":385,"node_type":30,"src":{"id":386,"line":181,"column":4,"start":6019,"end":6024,"length":6,"parent_index":383},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0}},{"id":388,"name":"_symbol","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":389,"line":182,"column":4,"start":6045,"end":6067,"length":23,"parent_index":341},"scope":341,"type_description":{"type_identifier":"t_string","type_string":"string"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":390,"node_type":30,"src":{"id":391,"line":182,"column":4,"start":6045,"end":6050,"length":6,"parent_index":388},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0}},{"id":393,"node_type":42,"src":{"id":394,"line":190,"column":4,"start":6250,"end":6362,"length":113,"parent_index":341},"kind":11,"state_mutability":4,"visibility":1,"implemented":true,"modifiers":[],"parameters":{"id":395,"node_type":43,"src":{"id":396,"line":190,"column":16,"start":6262,"end":6303,"length":42,"parent_index":393},"parameters":[{"id":397,"node_type":44,"src":{"id":398,"line":190,"column":16,"start":6262,"end":6280,"length":19,"parent_index":395},"scope":393,"name":"name_","type_name":{"id":399,"node_type":30,"src":{"id":400,"line":190,"column":16,"start":6262,"end":6267,"length":6,"parent_index":397},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":401,"node_type":44,"src":{"id":402,"line":190,"column":37,"start":6283,"end":6303,"length":21,"parent_index":395},"scope":393,"name":"symbol_","type_name":{"id":403,"node_type":30,"src":{"id":404,"line":190,"column":37,"start":6283,"end":6288,"length":6,"parent_index":401},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":405,"node_type":43,"src":{"id":394,"line":190,"column":4,"start":6250,"end":6362,"length":113,"parent_index":393},"parameters":[],"parameter_types":[]},"scope":341,"body":{"id":406,"node_type":46,"kind":0,"src":{"id":407,"line":190,"column":60,"start":6306,"end":6362,"length":57,"parent_index":393},"implemented":true,"statements":[{"id":408,"node_type":81,"src":{"id":409,"line":191,"column":8,"start":6316,"end":6329,"length":14,"parent_index":406},"expression":{"id":410,"node_type":27,"src":{"id":411,"line":191,"column":8,"start":6316,"end":6328,"length":13,"parent_index":406},"operator":11,"left_expression":{"id":412,"node_type":16,"src":{"id":413,"line":191,"column":8,"start":6316,"end":6320,"length":5,"parent_index":410},"name":"_name","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":383,"is_pure":false},"right_expression":{"id":414,"node_type":16,"src":{"id":415,"line":191,"column":16,"start":6324,"end":6328,"length":5,"parent_index":410},"name":"name_","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":414,"is_pure":false},"type_description":{"type_identifier":"t_string","type_string":"string"}}},{"id":416,"node_type":81,"src":{"id":417,"line":192,"column":8,"start":6339,"end":6356,"length":18,"parent_index":406},"expression":{"id":418,"node_type":27,"src":{"id":419,"line":192,"column":8,"start":6339,"end":6355,"length":17,"parent_index":406},"operator":11,"left_expression":{"id":420,"node_type":16,"src":{"id":421,"line":192,"column":8,"start":6339,"end":6345,"length":7,"parent_index":418},"name":"_symbol","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":388,"is_pure":false},"right_expression":{"id":422,"node_type":16,"src":{"id":423,"line":192,"column":18,"start":6349,"end":6355,"length":7,"parent_index":418},"name":"symbol_","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":422,"is_pure":false},"type_description":{"type_identifier":"t_string","type_string":"string"}}}]}},{"id":425,"name":"name","node_type":42,"kind":41,"src":{"id":426,"line":198,"column":4,"start":6428,"end":6525,"length":98,"parent_index":341},"body":{"id":441,"node_type":46,"kind":0,"src":{"id":442,"line":198,"column":73,"start":6497,"end":6525,"length":29,"parent_index":425},"implemented":true,"statements":[{"id":443,"node_type":47,"src":{"id":444,"line":199,"column":8,"start":6507,"end":6519,"length":13,"parent_index":425},"function_return_parameters":425,"expression":{"id":445,"node_type":16,"src":{"id":446,"line":199,"column":15,"start":6514,"end":6518,"length":5,"parent_index":441},"name":"_name","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":383,"is_pure":false}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":427,"node_type":63,"name":"name","src":{"id":428,"line":198,"column":40,"start":6464,"end":6471,"length":8,"parent_index":425},"referenced_declaration":224,"type_descriptions":{"type_identifier":"t_function_$_t_string","type_string":"function(string)"}}],"parameters":{"id":429,"node_type":43,"src":{"id":430,"line":198,"column":58,"start":6482,"end":6494,"length":13,"parent_index":425},"parameters":[{"id":431,"node_type":44,"src":{"id":432,"line":198,"column":58,"start":6482,"end":6494,"length":13,"parent_index":429},"scope":425,"name":"","type_name":{"id":433,"node_type":30,"src":{"id":434,"line":198,"column":58,"start":6482,"end":6487,"length":6,"parent_index":431},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":435,"node_type":43,"src":{"id":436,"line":198,"column":58,"start":6482,"end":6494,"length":13,"parent_index":425},"parameters":[{"id":437,"node_type":44,"src":{"id":438,"line":198,"column":58,"start":6482,"end":6494,"length":13,"parent_index":435},"scope":425,"name":"","type_name":{"id":439,"node_type":30,"src":{"id":440,"line":198,"column":58,"start":6482,"end":6487,"length":6,"parent_index":437},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_string","type_string":"function(string)"}},{"id":448,"name":"symbol","node_type":42,"kind":41,"src":{"id":449,"line":206,"column":4,"start":6639,"end":6740,"length":102,"parent_index":341},"body":{"id":464,"node_type":46,"kind":0,"src":{"id":465,"line":206,"column":75,"start":6710,"end":6740,"length":31,"parent_index":448},"implemented":true,"statements":[{"id":466,"node_type":47,"src":{"id":467,"line":207,"column":8,"start":6720,"end":6734,"length":15,"parent_index":448},"function_return_parameters":448,"expression":{"id":468,"node_type":16,"src":{"id":469,"line":207,"column":15,"start":6727,"end":6733,"length":7,"parent_index":464},"name":"_symbol","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":388,"is_pure":false}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":450,"node_type":63,"name":"symbol","src":{"id":451,"line":206,"column":42,"start":6677,"end":6684,"length":8,"parent_index":448},"referenced_declaration":240,"type_descriptions":{"type_identifier":"t_function_$_t_string","type_string":"function(string)"}}],"parameters":{"id":452,"node_type":43,"src":{"id":453,"line":206,"column":60,"start":6695,"end":6707,"length":13,"parent_index":448},"parameters":[{"id":454,"node_type":44,"src":{"id":455,"line":206,"column":60,"start":6695,"end":6707,"length":13,"parent_index":452},"scope":448,"name":"","type_name":{"id":456,"node_type":30,"src":{"id":457,"line":206,"column":60,"start":6695,"end":6700,"length":6,"parent_index":454},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":458,"node_type":43,"src":{"id":459,"line":206,"column":60,"start":6695,"end":6707,"length":13,"parent_index":448},"parameters":[{"id":460,"node_type":44,"src":{"id":461,"line":206,"column":60,"start":6695,"end":6707,"length":13,"parent_index":458},"scope":448,"name":"","type_name":{"id":462,"node_type":30,"src":{"id":463,"line":206,"column":60,"start":6695,"end":6700,"length":6,"parent_index":460},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_string","type_string":"function(string)"}},{"id":471,"name":"decimals","node_type":42,"kind":41,"src":{"id":472,"line":223,"column":4,"start":7374,"end":7464,"length":91,"parent_index":341},"body":{"id":487,"node_type":46,"kind":0,"src":{"id":488,"line":223,"column":69,"start":7439,"end":7464,"length":26,"parent_index":471},"implemented":true,"statements":[{"id":489,"node_type":47,"src":{"id":490,"line":224,"column":8,"start":7449,"end":7458,"length":10,"parent_index":471},"function_return_parameters":471,"expression":{"id":491,"node_type":17,"kind":49,"value":"18","hex_value":"3138","src":{"id":492,"line":224,"column":15,"start":7456,"end":7457,"length":2,"parent_index":487},"type_description":{"type_identifier":"t_rational_18_by_1","type_string":"int_const 18"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":473,"node_type":63,"name":"decimals","src":{"id":474,"line":223,"column":44,"start":7414,"end":7421,"length":8,"parent_index":471},"referenced_declaration":256,"type_descriptions":{"type_identifier":"t_function_$_t_uint8","type_string":"function(uint8)"}}],"parameters":{"id":475,"node_type":43,"src":{"id":476,"line":223,"column":62,"start":7432,"end":7436,"length":5,"parent_index":471},"parameters":[{"id":477,"node_type":44,"src":{"id":478,"line":223,"column":62,"start":7432,"end":7436,"length":5,"parent_index":475},"scope":471,"name":"","type_name":{"id":479,"node_type":30,"src":{"id":480,"line":223,"column":62,"start":7432,"end":7436,"length":5,"parent_index":477},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint8","type_string":"uint8"}]},"return_parameters":{"id":481,"node_type":43,"src":{"id":482,"line":223,"column":62,"start":7432,"end":7436,"length":5,"parent_index":471},"parameters":[{"id":483,"node_type":44,"src":{"id":484,"line":223,"column":62,"start":7432,"end":7436,"length":5,"parent_index":481},"scope":471,"name":"","type_name":{"id":485,"node_type":30,"src":{"id":486,"line":223,"column":62,"start":7432,"end":7436,"length":5,"parent_index":483},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint8","type_string":"uint8"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_uint8","type_string":"function(uint8)"}},{"id":494,"name":"totalSupply","node_type":42,"kind":41,"src":{"id":495,"line":230,"column":4,"start":7525,"end":7630,"length":106,"parent_index":341},"body":{"id":510,"node_type":46,"kind":0,"src":{"id":511,"line":230,"column":74,"start":7595,"end":7630,"length":36,"parent_index":494},"implemented":true,"statements":[{"id":512,"node_type":47,"src":{"id":513,"line":231,"column":8,"start":7605,"end":7624,"length":20,"parent_index":494},"function_return_parameters":494,"expression":{"id":514,"node_type":16,"src":{"id":515,"line":231,"column":15,"start":7612,"end":7623,"length":12,"parent_index":510},"name":"_totalSupply","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":378,"is_pure":false}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":496,"node_type":63,"name":"totalSupply","src":{"id":497,"line":230,"column":47,"start":7568,"end":7575,"length":8,"parent_index":494},"referenced_declaration":92,"type_descriptions":{"type_identifier":"t_function_$_t_uint256","type_string":"function(uint256)"}}],"parameters":{"id":498,"node_type":43,"src":{"id":499,"line":230,"column":65,"start":7586,"end":7592,"length":7,"parent_index":494},"parameters":[{"id":500,"node_type":44,"src":{"id":501,"line":230,"column":65,"start":7586,"end":7592,"length":7,"parent_index":498},"scope":494,"name":"","type_name":{"id":502,"node_type":30,"src":{"id":503,"line":230,"column":65,"start":7586,"end":7592,"length":7,"parent_index":500},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":504,"node_type":43,"src":{"id":505,"line":230,"column":65,"start":7586,"end":7592,"length":7,"parent_index":494},"parameters":[{"id":506,"node_type":44,"src":{"id":507,"line":230,"column":65,"start":7586,"end":7592,"length":7,"parent_index":504},"scope":494,"name":"","type_name":{"id":508,"node_type":30,"src":{"id":509,"line":230,"column":65,"start":7586,"end":7592,"length":7,"parent_index":506},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_uint256","type_string":"function(uint256)"}},{"id":517,"name":"balanceOf","node_type":42,"kind":41,"src":{"id":518,"line":237,"column":4,"start":7689,"end":7813,"length":125,"parent_index":341},"body":{"id":533,"node_type":46,"kind":0,"src":{"id":534,"line":237,"column":87,"start":7772,"end":7813,"length":42,"parent_index":517},"implemented":true,"statements":[{"id":535,"node_type":47,"src":{"id":536,"line":238,"column":8,"start":7782,"end":7807,"length":26,"parent_index":517},"function_return_parameters":517,"expression":{"id":537,"node_type":22,"src":{"id":538,"line":238,"column":15,"start":7789,"end":7806,"length":18,"parent_index":533},"index_expression":{"id":539,"node_type":16,"src":{"id":540,"line":238,"column":15,"start":7789,"end":7797,"length":9,"parent_index":537},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":355,"is_pure":false},"base_expression":{"id":541,"node_type":16,"src":{"id":542,"line":238,"column":25,"start":7799,"end":7805,"length":7,"parent_index":537},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":541,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"}}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":519,"node_type":63,"name":"balanceOf","src":{"id":520,"line":237,"column":60,"start":7745,"end":7752,"length":8,"parent_index":517},"referenced_declaration":108,"type_descriptions":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}}],"parameters":{"id":521,"node_type":43,"src":{"id":522,"line":237,"column":23,"start":7708,"end":7722,"length":15,"parent_index":517},"parameters":[{"id":523,"node_type":44,"src":{"id":524,"line":237,"column":23,"start":7708,"end":7722,"length":15,"parent_index":521},"scope":517,"name":"account","type_name":{"id":525,"node_type":30,"src":{"id":526,"line":237,"column":23,"start":7708,"end":7714,"length":7,"parent_index":523},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":527,"node_type":43,"src":{"id":528,"line":237,"column":78,"start":7763,"end":7769,"length":7,"parent_index":517},"parameters":[{"id":529,"node_type":44,"src":{"id":530,"line":237,"column":78,"start":7763,"end":7769,"length":7,"parent_index":527},"scope":517,"name":"","type_name":{"id":531,"node_type":30,"src":{"id":532,"line":237,"column":78,"start":7763,"end":7769,"length":7,"parent_index":529},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":544,"name":"transfer","node_type":42,"kind":41,"src":{"id":545,"line":249,"column":4,"start":8010,"end":8198,"length":189,"parent_index":341},"body":{"id":564,"node_type":46,"kind":0,"src":{"id":565,"line":249,"column":89,"start":8095,"end":8198,"length":104,"parent_index":544},"implemented":true,"statements":[{"id":566,"node_type":44,"src":{"id":567,"line":250,"column":8,"start":8105,"end":8133,"length":29,"parent_index":564},"assignments":[568],"declarations":[{"is_constant":false,"id":568,"state_mutability":1,"name":"owner","node_type":44,"scope":564,"src":{"id":569,"line":250,"column":8,"start":8105,"end":8117,"length":13,"parent_index":566},"is_state_variable":false,"storage_location":1,"type_name":{"id":570,"node_type":30,"src":{"id":571,"line":250,"column":8,"start":8105,"end":8111,"length":7,"parent_index":568},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":572,"node_type":24,"kind":24,"src":{"id":573,"line":250,"column":24,"start":8121,"end":8132,"length":12,"parent_index":566},"argument_types":[],"arguments":[],"expression":{"id":574,"node_type":16,"src":{"id":575,"line":250,"column":24,"start":8121,"end":8130,"length":10,"parent_index":572},"name":"_msgSender","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}},{"id":576,"node_type":24,"kind":24,"src":{"id":577,"line":251,"column":8,"start":8143,"end":8170,"length":28,"parent_index":564},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":578,"node_type":16,"src":{"id":579,"line":251,"column":18,"start":8153,"end":8157,"length":5,"parent_index":576},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":566,"is_pure":false},{"id":580,"node_type":16,"src":{"id":581,"line":251,"column":25,"start":8160,"end":8161,"length":2,"parent_index":576},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":580,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":582,"node_type":16,"src":{"id":583,"line":251,"column":29,"start":8164,"end":8169,"length":6,"parent_index":576},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":582,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":584,"node_type":16,"src":{"id":585,"line":251,"column":8,"start":8143,"end":8151,"length":9,"parent_index":576},"name":"_transfer","type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256","type_string":"function(address,address,uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":586,"node_type":47,"src":{"id":587,"line":252,"column":8,"start":8181,"end":8192,"length":12,"parent_index":544},"function_return_parameters":544,"expression":{"id":588,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":589,"line":252,"column":15,"start":8188,"end":8191,"length":4,"parent_index":564},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[{"id":546,"node_type":63,"name":"transfer","src":{"id":547,"line":249,"column":65,"start":8071,"end":8078,"length":8,"parent_index":544},"referenced_declaration":124,"type_descriptions":{"type_identifier":"t_function_$_t_address$$_t_uint256","type_string":"function(address,uint256)"}}],"parameters":{"id":548,"node_type":43,"src":{"id":549,"line":249,"column":22,"start":8028,"end":8053,"length":26,"parent_index":544},"parameters":[{"id":550,"node_type":44,"src":{"id":551,"line":249,"column":22,"start":8028,"end":8037,"length":10,"parent_index":548},"scope":544,"name":"to","type_name":{"id":552,"node_type":30,"src":{"id":553,"line":249,"column":22,"start":8028,"end":8034,"length":7,"parent_index":550},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":554,"node_type":44,"src":{"id":555,"line":249,"column":34,"start":8040,"end":8053,"length":14,"parent_index":548},"scope":544,"name":"amount","type_name":{"id":556,"node_type":30,"src":{"id":557,"line":249,"column":34,"start":8040,"end":8046,"length":7,"parent_index":554},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":558,"node_type":43,"src":{"id":559,"line":249,"column":83,"start":8089,"end":8092,"length":4,"parent_index":544},"parameters":[{"id":560,"node_type":44,"src":{"id":561,"line":249,"column":83,"start":8089,"end":8092,"length":4,"parent_index":558},"scope":544,"name":"","type_name":{"id":562,"node_type":30,"src":{"id":563,"line":249,"column":83,"start":8089,"end":8092,"length":4,"parent_index":560},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$$_t_uint256","type_string":"function(address,uint256)"}},{"id":591,"name":"allowance","node_type":42,"kind":41,"src":{"id":592,"line":258,"column":4,"start":8257,"end":8405,"length":149,"parent_index":341},"body":{"id":611,"node_type":46,"kind":0,"src":{"id":612,"line":258,"column":102,"start":8355,"end":8405,"length":51,"parent_index":591},"implemented":true,"statements":[{"id":613,"node_type":47,"src":{"id":614,"line":259,"column":8,"start":8365,"end":8399,"length":35,"parent_index":591},"function_return_parameters":591,"expression":{"id":615,"node_type":22,"src":{"id":616,"line":259,"column":15,"start":8372,"end":8398,"length":27,"parent_index":611},"index_expression":{"id":617,"node_type":22,"src":{"id":618,"line":259,"column":15,"start":8372,"end":8389,"length":18,"parent_index":615},"index_expression":{"id":619,"node_type":16,"src":{"id":620,"line":259,"column":15,"start":8372,"end":8382,"length":11,"parent_index":617},"name":"_allowances","type_description":{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"},"overloaded_declarations":[],"referenced_declaration":364,"is_pure":false},"base_expression":{"id":621,"node_type":16,"src":{"id":622,"line":259,"column":27,"start":8384,"end":8388,"length":5,"parent_index":617},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":621,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"}},"base_expression":{"id":623,"node_type":16,"src":{"id":624,"line":259,"column":34,"start":8391,"end":8397,"length":7,"parent_index":615},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":623,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"}}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":593,"node_type":63,"name":"allowance","src":{"id":594,"line":258,"column":75,"start":8328,"end":8335,"length":8,"parent_index":591},"referenced_declaration":144,"type_descriptions":{"type_identifier":"t_function_$_t_address$$_t_address","type_string":"function(address,address)"}}],"parameters":{"id":595,"node_type":43,"src":{"id":596,"line":258,"column":23,"start":8276,"end":8305,"length":30,"parent_index":591},"parameters":[{"id":597,"node_type":44,"src":{"id":598,"line":258,"column":23,"start":8276,"end":8288,"length":13,"parent_index":595},"scope":591,"name":"owner","type_name":{"id":599,"node_type":30,"src":{"id":600,"line":258,"column":23,"start":8276,"end":8282,"length":7,"parent_index":597},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":601,"node_type":44,"src":{"id":602,"line":258,"column":38,"start":8291,"end":8305,"length":15,"parent_index":595},"scope":591,"name":"spender","type_name":{"id":603,"node_type":30,"src":{"id":604,"line":258,"column":38,"start":8291,"end":8297,"length":7,"parent_index":601},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":605,"node_type":43,"src":{"id":606,"line":258,"column":93,"start":8346,"end":8352,"length":7,"parent_index":591},"parameters":[{"id":607,"node_type":44,"src":{"id":608,"line":258,"column":93,"start":8346,"end":8352,"length":7,"parent_index":605},"scope":591,"name":"","type_name":{"id":609,"node_type":30,"src":{"id":610,"line":258,"column":93,"start":8346,"end":8352,"length":7,"parent_index":607},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$$_t_address","type_string":"function(address,address)"}},{"id":626,"name":"approve","node_type":42,"kind":41,"src":{"id":627,"line":272,"column":4,"start":8714,"end":8910,"length":197,"parent_index":341},"body":{"id":646,"node_type":46,"kind":0,"src":{"id":647,"line":272,"column":93,"start":8803,"end":8910,"length":108,"parent_index":626},"implemented":true,"statements":[{"id":648,"node_type":44,"src":{"id":649,"line":273,"column":8,"start":8813,"end":8841,"length":29,"parent_index":646},"assignments":[650],"declarations":[{"is_constant":false,"id":650,"state_mutability":1,"name":"owner","node_type":44,"scope":646,"src":{"id":651,"line":273,"column":8,"start":8813,"end":8825,"length":13,"parent_index":648},"is_state_variable":false,"storage_location":1,"type_name":{"id":652,"node_type":30,"src":{"id":653,"line":273,"column":8,"start":8813,"end":8819,"length":7,"parent_index":650},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":654,"node_type":24,"kind":24,"src":{"id":655,"line":273,"column":24,"start":8829,"end":8840,"length":12,"parent_index":648},"argument_types":[],"arguments":[],"expression":{"id":656,"node_type":16,"src":{"id":657,"line":273,"column":24,"start":8829,"end":8838,"length":10,"parent_index":654},"name":"_msgSender","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}},{"id":658,"node_type":24,"kind":24,"src":{"id":659,"line":274,"column":8,"start":8851,"end":8882,"length":32,"parent_index":646},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":660,"node_type":16,"src":{"id":661,"line":274,"column":17,"start":8860,"end":8864,"length":5,"parent_index":658},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":648,"is_pure":false},{"id":662,"node_type":16,"src":{"id":663,"line":274,"column":24,"start":8867,"end":8873,"length":7,"parent_index":658},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":662,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":664,"node_type":16,"src":{"id":665,"line":274,"column":33,"start":8876,"end":8881,"length":6,"parent_index":658},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":664,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":666,"node_type":16,"src":{"id":667,"line":274,"column":8,"start":8851,"end":8858,"length":8,"parent_index":658},"name":"_approve","type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256","type_string":"function(address,address,uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":668,"node_type":47,"src":{"id":669,"line":275,"column":8,"start":8893,"end":8904,"length":12,"parent_index":626},"function_return_parameters":626,"expression":{"id":670,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":671,"line":275,"column":15,"start":8900,"end":8903,"length":4,"parent_index":646},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[{"id":628,"node_type":63,"name":"approve","src":{"id":629,"line":272,"column":69,"start":8779,"end":8786,"length":8,"parent_index":626},"referenced_declaration":164,"type_descriptions":{"type_identifier":"t_function_$_t_address$$_t_uint256","type_string":"function(address,uint256)"}}],"parameters":{"id":630,"node_type":43,"src":{"id":631,"line":272,"column":21,"start":8731,"end":8761,"length":31,"parent_index":626},"parameters":[{"id":632,"node_type":44,"src":{"id":633,"line":272,"column":21,"start":8731,"end":8745,"length":15,"parent_index":630},"scope":626,"name":"spender","type_name":{"id":634,"node_type":30,"src":{"id":635,"line":272,"column":21,"start":8731,"end":8737,"length":7,"parent_index":632},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":636,"node_type":44,"src":{"id":637,"line":272,"column":38,"start":8748,"end":8761,"length":14,"parent_index":630},"scope":626,"name":"amount","type_name":{"id":638,"node_type":30,"src":{"id":639,"line":272,"column":38,"start":8748,"end":8754,"length":7,"parent_index":636},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":640,"node_type":43,"src":{"id":641,"line":272,"column":87,"start":8797,"end":8800,"length":4,"parent_index":626},"parameters":[{"id":642,"node_type":44,"src":{"id":643,"line":272,"column":87,"start":8797,"end":8800,"length":4,"parent_index":640},"scope":626,"name":"","type_name":{"id":644,"node_type":30,"src":{"id":645,"line":272,"column":87,"start":8797,"end":8800,"length":4,"parent_index":642},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$$_t_uint256","type_string":"function(address,uint256)"}},{"id":673,"name":"transferFrom","node_type":42,"kind":41,"src":{"id":674,"line":294,"column":4,"start":9473,"end":9728,"length":256,"parent_index":341},"body":{"id":697,"node_type":46,"kind":0,"src":{"id":698,"line":294,"column":107,"start":9576,"end":9728,"length":153,"parent_index":673},"implemented":true,"statements":[{"id":699,"node_type":44,"src":{"id":700,"line":295,"column":8,"start":9586,"end":9616,"length":31,"parent_index":697},"assignments":[701],"declarations":[{"is_constant":false,"id":701,"state_mutability":1,"name":"spender","node_type":44,"scope":697,"src":{"id":702,"line":295,"column":8,"start":9586,"end":9600,"length":15,"parent_index":699},"is_state_variable":false,"storage_location":1,"type_name":{"id":703,"node_type":30,"src":{"id":704,"line":295,"column":8,"start":9586,"end":9592,"length":7,"parent_index":701},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":705,"node_type":24,"kind":24,"src":{"id":706,"line":295,"column":26,"start":9604,"end":9615,"length":12,"parent_index":699},"argument_types":[],"arguments":[],"expression":{"id":707,"node_type":16,"src":{"id":708,"line":295,"column":26,"start":9604,"end":9613,"length":10,"parent_index":705},"name":"_msgSender","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}},{"id":709,"node_type":24,"kind":24,"src":{"id":710,"line":296,"column":8,"start":9626,"end":9663,"length":38,"parent_index":697},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":711,"node_type":16,"src":{"id":712,"line":296,"column":24,"start":9642,"end":9645,"length":4,"parent_index":709},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":711,"is_pure":false},{"id":713,"node_type":16,"src":{"id":714,"line":296,"column":30,"start":9648,"end":9654,"length":7,"parent_index":709},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":699,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":715,"node_type":16,"src":{"id":716,"line":296,"column":39,"start":9657,"end":9662,"length":6,"parent_index":709},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":715,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":717,"node_type":16,"src":{"id":718,"line":296,"column":8,"start":9626,"end":9640,"length":15,"parent_index":709},"name":"_spendAllowance","type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256","type_string":"function(address,address,uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":719,"node_type":24,"kind":24,"src":{"id":720,"line":297,"column":8,"start":9674,"end":9700,"length":27,"parent_index":697},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":721,"node_type":16,"src":{"id":722,"line":297,"column":18,"start":9684,"end":9687,"length":4,"parent_index":719},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":721,"is_pure":false},{"id":723,"node_type":16,"src":{"id":724,"line":297,"column":24,"start":9690,"end":9691,"length":2,"parent_index":719},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":723,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":725,"node_type":16,"src":{"id":726,"line":297,"column":28,"start":9694,"end":9699,"length":6,"parent_index":719},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":725,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":727,"node_type":16,"src":{"id":728,"line":297,"column":8,"start":9674,"end":9682,"length":9,"parent_index":719},"name":"_transfer","type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256","type_string":"function(address,address,uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":729,"node_type":47,"src":{"id":730,"line":298,"column":8,"start":9711,"end":9722,"length":12,"parent_index":673},"function_return_parameters":673,"expression":{"id":731,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":732,"line":298,"column":15,"start":9718,"end":9721,"length":4,"parent_index":697},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[{"id":675,"node_type":63,"name":"transferFrom","src":{"id":676,"line":294,"column":83,"start":9552,"end":9559,"length":8,"parent_index":673},"referenced_declaration":184,"type_descriptions":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256","type_string":"function(address,address,uint256)"}}],"parameters":{"id":677,"node_type":43,"src":{"id":678,"line":294,"column":26,"start":9495,"end":9534,"length":40,"parent_index":673},"parameters":[{"id":679,"node_type":44,"src":{"id":680,"line":294,"column":26,"start":9495,"end":9506,"length":12,"parent_index":677},"scope":673,"name":"from","type_name":{"id":681,"node_type":30,"src":{"id":682,"line":294,"column":26,"start":9495,"end":9501,"length":7,"parent_index":679},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":683,"node_type":44,"src":{"id":684,"line":294,"column":40,"start":9509,"end":9518,"length":10,"parent_index":677},"scope":673,"name":"to","type_name":{"id":685,"node_type":30,"src":{"id":686,"line":294,"column":40,"start":9509,"end":9515,"length":7,"parent_index":683},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":687,"node_type":44,"src":{"id":688,"line":294,"column":52,"start":9521,"end":9534,"length":14,"parent_index":677},"scope":673,"name":"amount","type_name":{"id":689,"node_type":30,"src":{"id":690,"line":294,"column":52,"start":9521,"end":9527,"length":7,"parent_index":687},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":691,"node_type":43,"src":{"id":692,"line":294,"column":101,"start":9570,"end":9573,"length":4,"parent_index":673},"parameters":[{"id":693,"node_type":44,"src":{"id":694,"line":294,"column":101,"start":9570,"end":9573,"length":4,"parent_index":691},"scope":673,"name":"","type_name":{"id":695,"node_type":30,"src":{"id":696,"line":294,"column":101,"start":9570,"end":9573,"length":4,"parent_index":693},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256","type_string":"function(address,address,uint256)"}},{"id":734,"name":"increaseAllowance","node_type":42,"kind":41,"src":{"id":735,"line":313,"column":4,"start":10124,"end":10357,"length":234,"parent_index":341},"body":{"id":752,"node_type":46,"kind":0,"src":{"id":753,"line":313,"column":98,"start":10218,"end":10357,"length":140,"parent_index":734},"implemented":true,"statements":[{"id":754,"node_type":44,"src":{"id":755,"line":314,"column":8,"start":10228,"end":10256,"length":29,"parent_index":752},"assignments":[756],"declarations":[{"is_constant":false,"id":756,"state_mutability":1,"name":"owner","node_type":44,"scope":752,"src":{"id":757,"line":314,"column":8,"start":10228,"end":10240,"length":13,"parent_index":754},"is_state_variable":false,"storage_location":1,"type_name":{"id":758,"node_type":30,"src":{"id":759,"line":314,"column":8,"start":10228,"end":10234,"length":7,"parent_index":756},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":760,"node_type":24,"kind":24,"src":{"id":761,"line":314,"column":24,"start":10244,"end":10255,"length":12,"parent_index":754},"argument_types":[],"arguments":[],"expression":{"id":762,"node_type":16,"src":{"id":763,"line":314,"column":24,"start":10244,"end":10253,"length":10,"parent_index":760},"name":"_msgSender","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}},{"id":764,"node_type":24,"kind":24,"src":{"id":765,"line":315,"column":8,"start":10266,"end":10329,"length":64,"parent_index":752},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_address$$_t_address$","type_string":"function(address,address)"}],"arguments":[{"id":766,"node_type":16,"src":{"id":767,"line":315,"column":17,"start":10275,"end":10279,"length":5,"parent_index":764},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":754,"is_pure":false},{"id":768,"node_type":16,"src":{"id":769,"line":315,"column":24,"start":10282,"end":10288,"length":7,"parent_index":764},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":768,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":770,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":771,"line":315,"column":33,"start":10291,"end":10328,"length":38,"parent_index":764},"operator":1,"left_expression":{"id":772,"node_type":24,"kind":24,"src":{"id":773,"line":315,"column":33,"start":10291,"end":10315,"length":25,"parent_index":770},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":774,"node_type":16,"src":{"id":775,"line":315,"column":43,"start":10301,"end":10305,"length":5,"parent_index":772},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":754,"is_pure":false},{"id":776,"node_type":16,"src":{"id":777,"line":315,"column":50,"start":10308,"end":10314,"length":7,"parent_index":772},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":776,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":778,"node_type":16,"src":{"id":779,"line":315,"column":33,"start":10291,"end":10299,"length":9,"parent_index":772},"name":"allowance","type_description":{"type_identifier":"t_function_$_t_address$$_t_address","type_string":"function(address,address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$","type_string":"function(address,address)"}},"right_expression":{"id":780,"node_type":16,"src":{"id":781,"line":315,"column":61,"start":10319,"end":10328,"length":10,"parent_index":770},"name":"addedValue","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":780,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$","type_string":"function(address,address)"}}],"expression":{"id":782,"node_type":16,"src":{"id":783,"line":315,"column":8,"start":10266,"end":10273,"length":8,"parent_index":764},"name":"_approve","type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_function_$_t_address$$_t_address$","type_string":"function(address,address,function(address,address))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_address$$_t_address$","type_string":"function(address,address)"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_function_$_t_address$$_t_address$$","type_string":"function(address,address,function(address,address))"}},{"id":784,"node_type":47,"src":{"id":785,"line":316,"column":8,"start":10340,"end":10351,"length":12,"parent_index":734},"function_return_parameters":734,"expression":{"id":786,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":787,"line":316,"column":15,"start":10347,"end":10350,"length":4,"parent_index":752},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":736,"node_type":43,"src":{"id":737,"line":313,"column":31,"start":10151,"end":10185,"length":35,"parent_index":734},"parameters":[{"id":738,"node_type":44,"src":{"id":739,"line":313,"column":31,"start":10151,"end":10165,"length":15,"parent_index":736},"scope":734,"name":"spender","type_name":{"id":740,"node_type":30,"src":{"id":741,"line":313,"column":31,"start":10151,"end":10157,"length":7,"parent_index":738},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":742,"node_type":44,"src":{"id":743,"line":313,"column":48,"start":10168,"end":10185,"length":18,"parent_index":736},"scope":734,"name":"addedValue","type_name":{"id":744,"node_type":30,"src":{"id":745,"line":313,"column":48,"start":10168,"end":10174,"length":7,"parent_index":742},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":746,"node_type":43,"src":{"id":747,"line":313,"column":92,"start":10212,"end":10215,"length":4,"parent_index":734},"parameters":[{"id":748,"node_type":44,"src":{"id":749,"line":313,"column":92,"start":10212,"end":10215,"length":4,"parent_index":746},"scope":734,"name":"","type_name":{"id":750,"node_type":30,"src":{"id":751,"line":313,"column":92,"start":10212,"end":10215,"length":4,"parent_index":748},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$$_t_uint256","type_string":"function(address,uint256)"}},{"id":789,"name":"decreaseAllowance","node_type":42,"kind":41,"src":{"id":790,"line":333,"column":4,"start":10845,"end":11271,"length":427,"parent_index":341},"body":{"id":807,"node_type":46,"kind":0,"src":{"id":808,"line":333,"column":103,"start":10944,"end":11271,"length":328,"parent_index":789},"implemented":true,"statements":[{"id":809,"node_type":44,"src":{"id":810,"line":334,"column":8,"start":10954,"end":10982,"length":29,"parent_index":807},"assignments":[811],"declarations":[{"is_constant":false,"id":811,"state_mutability":1,"name":"owner","node_type":44,"scope":807,"src":{"id":812,"line":334,"column":8,"start":10954,"end":10966,"length":13,"parent_index":809},"is_state_variable":false,"storage_location":1,"type_name":{"id":813,"node_type":30,"src":{"id":814,"line":334,"column":8,"start":10954,"end":10960,"length":7,"parent_index":811},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":815,"node_type":24,"kind":24,"src":{"id":816,"line":334,"column":24,"start":10970,"end":10981,"length":12,"parent_index":809},"argument_types":[],"arguments":[],"expression":{"id":817,"node_type":16,"src":{"id":818,"line":334,"column":24,"start":10970,"end":10979,"length":10,"parent_index":815},"name":"_msgSender","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}},{"id":819,"node_type":44,"src":{"id":820,"line":335,"column":8,"start":10992,"end":11044,"length":53,"parent_index":807},"assignments":[821],"declarations":[{"is_constant":false,"id":821,"state_mutability":1,"name":"currentAllowance","node_type":44,"scope":807,"src":{"id":822,"line":335,"column":8,"start":10992,"end":11015,"length":24,"parent_index":819},"is_state_variable":false,"storage_location":1,"type_name":{"id":823,"node_type":30,"src":{"id":824,"line":335,"column":8,"start":10992,"end":10998,"length":7,"parent_index":821},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":825,"node_type":24,"kind":24,"src":{"id":826,"line":335,"column":35,"start":11019,"end":11043,"length":25,"parent_index":819},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":827,"node_type":16,"src":{"id":828,"line":335,"column":45,"start":11029,"end":11033,"length":5,"parent_index":825},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":809,"is_pure":false},{"id":829,"node_type":16,"src":{"id":830,"line":335,"column":52,"start":11036,"end":11042,"length":7,"parent_index":825},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":829,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":831,"node_type":16,"src":{"id":832,"line":335,"column":35,"start":11019,"end":11027,"length":9,"parent_index":825},"name":"allowance","type_description":{"type_identifier":"t_function_$_t_address$$_t_address","type_string":"function(address,address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$","type_string":"function(address,address)"}}},{"id":833,"node_type":24,"kind":24,"src":{"id":834,"line":336,"column":8,"start":11054,"end":11138,"length":85,"parent_index":807},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: decreased allowance below zero\""}],"arguments":[{"id":835,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":836,"line":336,"column":16,"start":11062,"end":11096,"length":35,"parent_index":833},"operator":8,"left_expression":{"id":837,"node_type":16,"src":{"id":838,"line":336,"column":16,"start":11062,"end":11077,"length":16,"parent_index":835},"name":"currentAllowance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":819,"is_pure":false},"right_expression":{"id":839,"node_type":16,"src":{"id":840,"line":336,"column":36,"start":11082,"end":11096,"length":15,"parent_index":835},"name":"subtractedValue","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":839,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":841,"node_type":17,"kind":50,"value":"ERC20: decreased allowance below zero","hex_value":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","src":{"id":842,"line":336,"column":53,"start":11099,"end":11137,"length":39,"parent_index":833},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: decreased allowance below zero\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":843,"node_type":16,"src":{"id":844,"line":336,"column":8,"start":11054,"end":11060,"length":7,"parent_index":833},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"ERC20: decreased allowance below zero\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: decreased allowance below zero\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":845,"node_type":47,"src":{"id":846,"line":341,"column":8,"start":11254,"end":11265,"length":12,"parent_index":789},"function_return_parameters":789,"expression":{"id":847,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":848,"line":341,"column":15,"start":11261,"end":11264,"length":4,"parent_index":807},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}},{"id":849,"node_type":59,"kind":0,"src":{"id":850,"line":337,"column":8,"start":11149,"end":11243,"length":95,"parent_index":341},"implemented":false,"statements":[{"id":851,"node_type":24,"kind":24,"src":{"id":852,"line":338,"column":12,"start":11173,"end":11232,"length":60,"parent_index":849},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":853,"node_type":16,"src":{"id":854,"line":338,"column":21,"start":11182,"end":11186,"length":5,"parent_index":851},"name":"owner","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":855,"node_type":16,"src":{"id":856,"line":338,"column":28,"start":11189,"end":11195,"length":7,"parent_index":851},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":855,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}]},{"id":857,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":858,"line":338,"column":37,"start":11198,"end":11231,"length":34,"parent_index":851},"operator":2,"left_expression":{"id":859,"node_type":16,"src":{"id":860,"line":338,"column":37,"start":11198,"end":11213,"length":16,"parent_index":857},"name":"currentAllowance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":819,"is_pure":false},"right_expression":{"id":861,"node_type":16,"src":{"id":862,"line":338,"column":56,"start":11217,"end":11231,"length":15,"parent_index":857},"name":"subtractedValue","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":861,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}],"expression":{"id":863,"node_type":16,"src":{"id":864,"line":338,"column":12,"start":11173,"end":11180,"length":8,"parent_index":851},"name":"_approve","type_description":{"type_identifier":"t_function_$_t_function_$$_t_address$$_t_uint256","type_string":"function(function(),address,uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_function_$$_t_address$$_t_uint256$","type_string":"function(function(),address,uint256)"}}]}]},"implemented":false,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":791,"node_type":43,"src":{"id":792,"line":333,"column":31,"start":10872,"end":10911,"length":40,"parent_index":789},"parameters":[{"id":793,"node_type":44,"src":{"id":794,"line":333,"column":31,"start":10872,"end":10886,"length":15,"parent_index":791},"scope":789,"name":"spender","type_name":{"id":795,"node_type":30,"src":{"id":796,"line":333,"column":31,"start":10872,"end":10878,"length":7,"parent_index":793},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":797,"node_type":44,"src":{"id":798,"line":333,"column":48,"start":10889,"end":10911,"length":23,"parent_index":791},"scope":789,"name":"subtractedValue","type_name":{"id":799,"node_type":30,"src":{"id":800,"line":333,"column":48,"start":10889,"end":10895,"length":7,"parent_index":797},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":801,"node_type":43,"src":{"id":802,"line":333,"column":97,"start":10938,"end":10941,"length":4,"parent_index":789},"parameters":[{"id":803,"node_type":44,"src":{"id":804,"line":333,"column":97,"start":10938,"end":10941,"length":4,"parent_index":801},"scope":789,"name":"","type_name":{"id":805,"node_type":30,"src":{"id":806,"line":333,"column":97,"start":10938,"end":10941,"length":4,"parent_index":803},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$$_t_uint256","type_string":"function(address,uint256)"}},{"id":866,"name":"_transfer","node_type":42,"kind":41,"src":{"id":867,"line":358,"column":4,"start":11726,"end":12513,"length":788,"parent_index":341},"body":{"id":883,"node_type":46,"kind":0,"src":{"id":884,"line":358,"column":82,"start":11804,"end":12513,"length":710,"parent_index":866},"implemented":true,"statements":[{"id":885,"node_type":24,"kind":24,"src":{"id":886,"line":359,"column":8,"start":11814,"end":11881,"length":68,"parent_index":883},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: transfer from the zero address\""}],"arguments":[{"id":887,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":888,"line":359,"column":16,"start":11822,"end":11839,"length":18,"parent_index":885},"operator":12,"left_expression":{"id":889,"node_type":16,"src":{"id":890,"line":359,"column":16,"start":11822,"end":11825,"length":4,"parent_index":887},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":889,"is_pure":false},"right_expression":{"id":891,"node_type":24,"kind":24,"src":{"id":892,"line":359,"column":24,"start":11830,"end":11839,"length":10,"parent_index":887},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":893,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":894,"line":359,"column":32,"start":11838,"end":11838,"length":1,"parent_index":891},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":895,"node_type":16,"src":{"id":896,"line":359,"column":24,"start":11830,"end":11836,"length":7,"parent_index":891},"type_name":{"id":897,"node_type":30,"src":{"id":898,"line":359,"column":24,"start":11830,"end":11836,"length":7,"parent_index":895},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":899,"node_type":17,"kind":50,"value":"ERC20: transfer from the zero address","hex_value":"45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373","src":{"id":900,"line":359,"column":36,"start":11842,"end":11880,"length":39,"parent_index":885},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: transfer from the zero address\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":901,"node_type":16,"src":{"id":902,"line":359,"column":8,"start":11814,"end":11820,"length":7,"parent_index":885},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"ERC20: transfer from the zero address\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: transfer from the zero address\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":903,"node_type":24,"kind":24,"src":{"id":904,"line":360,"column":8,"start":11892,"end":11955,"length":64,"parent_index":883},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: transfer to the zero address\""}],"arguments":[{"id":905,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":906,"line":360,"column":16,"start":11900,"end":11915,"length":16,"parent_index":903},"operator":12,"left_expression":{"id":907,"node_type":16,"src":{"id":908,"line":360,"column":16,"start":11900,"end":11901,"length":2,"parent_index":905},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":907,"is_pure":false},"right_expression":{"id":909,"node_type":24,"kind":24,"src":{"id":910,"line":360,"column":22,"start":11906,"end":11915,"length":10,"parent_index":905},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":911,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":912,"line":360,"column":30,"start":11914,"end":11914,"length":1,"parent_index":909},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":913,"node_type":16,"src":{"id":914,"line":360,"column":22,"start":11906,"end":11912,"length":7,"parent_index":909},"type_name":{"id":915,"node_type":30,"src":{"id":916,"line":360,"column":22,"start":11906,"end":11912,"length":7,"parent_index":913},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":917,"node_type":17,"kind":50,"value":"ERC20: transfer to the zero address","hex_value":"45524332303a207472616e7366657220746f20746865207a65726f2061646472657373","src":{"id":918,"line":360,"column":34,"start":11918,"end":11954,"length":37,"parent_index":903},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: transfer to the zero address\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":919,"node_type":16,"src":{"id":920,"line":360,"column":8,"start":11892,"end":11898,"length":7,"parent_index":903},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"ERC20: transfer to the zero address\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: transfer to the zero address\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":921,"node_type":24,"kind":24,"src":{"id":922,"line":362,"column":8,"start":11967,"end":12004,"length":38,"parent_index":883},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":923,"node_type":16,"src":{"id":924,"line":362,"column":29,"start":11988,"end":11991,"length":4,"parent_index":921},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":923,"is_pure":false},{"id":925,"node_type":16,"src":{"id":926,"line":362,"column":35,"start":11994,"end":11995,"length":2,"parent_index":921},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":925,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":927,"node_type":16,"src":{"id":928,"line":362,"column":39,"start":11998,"end":12003,"length":6,"parent_index":921},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":927,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":929,"node_type":16,"src":{"id":930,"line":362,"column":8,"start":11967,"end":11986,"length":20,"parent_index":921},"name":"_beforeTokenTransfer","type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256","type_string":"function(address,address,uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":931,"node_type":44,"src":{"id":932,"line":364,"column":8,"start":12016,"end":12053,"length":38,"parent_index":883},"assignments":[933],"declarations":[{"is_constant":false,"id":933,"state_mutability":1,"name":"fromBalance","node_type":44,"scope":883,"src":{"id":934,"line":364,"column":8,"start":12016,"end":12034,"length":19,"parent_index":931},"is_state_variable":false,"storage_location":1,"type_name":{"id":935,"node_type":30,"src":{"id":936,"line":364,"column":8,"start":12016,"end":12022,"length":7,"parent_index":933},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":937,"node_type":22,"src":{"id":938,"line":364,"column":30,"start":12038,"end":12052,"length":15,"parent_index":931},"index_expression":{"id":939,"node_type":16,"src":{"id":940,"line":364,"column":30,"start":12038,"end":12046,"length":9,"parent_index":937},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":355,"is_pure":false},"base_expression":{"id":941,"node_type":16,"src":{"id":942,"line":364,"column":40,"start":12048,"end":12051,"length":4,"parent_index":937},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":941,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"}}},{"id":943,"node_type":24,"kind":24,"src":{"id":944,"line":365,"column":8,"start":12063,"end":12134,"length":72,"parent_index":883},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: transfer amount exceeds balance\""}],"arguments":[{"id":945,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":946,"line":365,"column":16,"start":12071,"end":12091,"length":21,"parent_index":943},"operator":8,"left_expression":{"id":947,"node_type":16,"src":{"id":948,"line":365,"column":16,"start":12071,"end":12081,"length":11,"parent_index":945},"name":"fromBalance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":931,"is_pure":false},"right_expression":{"id":949,"node_type":16,"src":{"id":950,"line":365,"column":31,"start":12086,"end":12091,"length":6,"parent_index":945},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":949,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":951,"node_type":17,"kind":50,"value":"ERC20: transfer amount exceeds balance","hex_value":"45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365","src":{"id":952,"line":365,"column":39,"start":12094,"end":12133,"length":40,"parent_index":943},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: transfer amount exceeds balance\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":953,"node_type":16,"src":{"id":954,"line":365,"column":8,"start":12063,"end":12069,"length":7,"parent_index":943},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"ERC20: transfer amount exceeds balance\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: transfer amount exceeds balance\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":955,"node_type":64,"src":{"id":956,"line":373,"column":8,"start":12428,"end":12459,"length":32,"parent_index":866},"arguments":[{"id":957,"node_type":16,"src":{"id":958,"line":373,"column":22,"start":12442,"end":12445,"length":4,"parent_index":883},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":957,"is_pure":false},{"id":959,"node_type":16,"src":{"id":960,"line":373,"column":28,"start":12448,"end":12449,"length":2,"parent_index":883},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":959,"is_pure":false},{"id":961,"node_type":16,"src":{"id":962,"line":373,"column":32,"start":12452,"end":12457,"length":6,"parent_index":883},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":961,"is_pure":false}],"expression":{"id":963,"node_type":16,"src":{"id":964,"line":373,"column":13,"start":12433,"end":12440,"length":8,"parent_index":883},"name":"Transfer","type_description":{"type_identifier":"t_event\u0026_IERC20_Transfer_\u002660","type_string":"event IERC20.Transfer"},"overloaded_declarations":[],"referenced_declaration":60,"is_pure":false}},{"id":965,"node_type":24,"kind":24,"src":{"id":966,"line":375,"column":8,"start":12470,"end":12506,"length":37,"parent_index":883},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":967,"node_type":16,"src":{"id":968,"line":375,"column":28,"start":12490,"end":12493,"length":4,"parent_index":965},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":967,"is_pure":false},{"id":969,"node_type":16,"src":{"id":970,"line":375,"column":34,"start":12496,"end":12497,"length":2,"parent_index":965},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":969,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":971,"node_type":16,"src":{"id":972,"line":375,"column":38,"start":12500,"end":12505,"length":6,"parent_index":965},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":971,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":973,"node_type":16,"src":{"id":974,"line":375,"column":8,"start":12470,"end":12488,"length":19,"parent_index":965},"name":"_afterTokenTransfer","type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256","type_string":"function(address,address,uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":975,"node_type":59,"kind":0,"src":{"id":976,"line":366,"column":8,"start":12145,"end":12417,"length":273,"parent_index":341},"implemented":false,"statements":[{"id":977,"node_type":81,"src":{"id":978,"line":367,"column":12,"start":12169,"end":12207,"length":39,"parent_index":975},"expression":{"id":979,"node_type":27,"src":{"id":980,"line":367,"column":12,"start":12169,"end":12206,"length":38,"parent_index":975},"operator":11,"left_expression":{"id":981,"node_type":22,"src":{"id":982,"line":367,"column":12,"start":12169,"end":12183,"length":15,"parent_index":979},"index_expression":{"id":983,"node_type":16,"src":{"id":984,"line":367,"column":12,"start":12169,"end":12177,"length":9,"parent_index":981},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":355,"is_pure":false},"base_expression":{"id":985,"node_type":16,"src":{"id":986,"line":367,"column":22,"start":12179,"end":12182,"length":4,"parent_index":981},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":985,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"}},"right_expression":{"id":987,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":988,"line":367,"column":30,"start":12187,"end":12206,"length":20,"parent_index":979},"operator":2,"left_expression":{"id":989,"node_type":16,"src":{"id":990,"line":367,"column":30,"start":12187,"end":12197,"length":11,"parent_index":987},"name":"fromBalance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":931,"is_pure":false},"right_expression":{"id":991,"node_type":16,"src":{"id":992,"line":367,"column":44,"start":12201,"end":12206,"length":6,"parent_index":987},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":991,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"}}},{"id":993,"node_type":81,"src":{"id":994,"line":370,"column":12,"start":12384,"end":12407,"length":24,"parent_index":975},"expression":{"id":995,"node_type":27,"src":{"id":996,"line":370,"column":12,"start":12384,"end":12406,"length":23,"parent_index":975},"operator":13,"left_expression":{"id":997,"node_type":22,"src":{"id":998,"line":370,"column":12,"start":12384,"end":12396,"length":13,"parent_index":995},"index_expression":{"id":999,"node_type":16,"src":{"id":1000,"line":370,"column":12,"start":12384,"end":12392,"length":9,"parent_index":997},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":355,"is_pure":false},"base_expression":{"id":1001,"node_type":16,"src":{"id":1002,"line":370,"column":22,"start":12394,"end":12395,"length":2,"parent_index":997},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1001,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"}},"right_expression":{"id":1003,"node_type":16,"src":{"id":1004,"line":370,"column":29,"start":12401,"end":12406,"length":6,"parent_index":995},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1003,"is_pure":false},"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"}}}]}]},"implemented":false,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":868,"node_type":43,"src":{"id":869,"line":358,"column":23,"start":11745,"end":11784,"length":40,"parent_index":866},"parameters":[{"id":870,"node_type":44,"src":{"id":871,"line":358,"column":23,"start":11745,"end":11756,"length":12,"parent_index":868},"scope":866,"name":"from","type_name":{"id":872,"node_type":30,"src":{"id":873,"line":358,"column":23,"start":11745,"end":11751,"length":7,"parent_index":870},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":874,"node_type":44,"src":{"id":875,"line":358,"column":37,"start":11759,"end":11768,"length":10,"parent_index":868},"scope":866,"name":"to","type_name":{"id":876,"node_type":30,"src":{"id":877,"line":358,"column":37,"start":11759,"end":11765,"length":7,"parent_index":874},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":878,"node_type":44,"src":{"id":879,"line":358,"column":49,"start":11771,"end":11784,"length":14,"parent_index":868},"scope":866,"name":"amount","type_name":{"id":880,"node_type":30,"src":{"id":881,"line":358,"column":49,"start":11771,"end":11777,"length":7,"parent_index":878},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":882,"node_type":43,"src":{"id":867,"line":358,"column":4,"start":11726,"end":12513,"length":788,"parent_index":866},"parameters":[],"parameter_types":[]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256","type_string":"function(address,address,uint256)"}},{"id":1006,"name":"_mint","node_type":42,"kind":41,"src":{"id":1007,"line":387,"column":4,"start":12790,"end":13324,"length":535,"parent_index":341},"body":{"id":1019,"node_type":46,"kind":0,"src":{"id":1020,"line":387,"column":69,"start":12855,"end":13324,"length":470,"parent_index":1006},"implemented":true,"statements":[{"id":1021,"node_type":24,"kind":24,"src":{"id":1022,"line":388,"column":8,"start":12865,"end":12929,"length":65,"parent_index":1019},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: mint to the zero address\""}],"arguments":[{"id":1023,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1024,"line":388,"column":16,"start":12873,"end":12893,"length":21,"parent_index":1021},"operator":12,"left_expression":{"id":1025,"node_type":16,"src":{"id":1026,"line":388,"column":16,"start":12873,"end":12879,"length":7,"parent_index":1023},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1025,"is_pure":false},"right_expression":{"id":1027,"node_type":24,"kind":24,"src":{"id":1028,"line":388,"column":27,"start":12884,"end":12893,"length":10,"parent_index":1023},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1029,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1030,"line":388,"column":35,"start":12892,"end":12892,"length":1,"parent_index":1027},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1031,"node_type":16,"src":{"id":1032,"line":388,"column":27,"start":12884,"end":12890,"length":7,"parent_index":1027},"type_name":{"id":1033,"node_type":30,"src":{"id":1034,"line":388,"column":27,"start":12884,"end":12890,"length":7,"parent_index":1031},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1035,"node_type":17,"kind":50,"value":"ERC20: mint to the zero address","hex_value":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","src":{"id":1036,"line":388,"column":39,"start":12896,"end":12928,"length":33,"parent_index":1021},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: mint to the zero address\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1037,"node_type":16,"src":{"id":1038,"line":388,"column":8,"start":12865,"end":12871,"length":7,"parent_index":1021},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"ERC20: mint to the zero address\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: mint to the zero address\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1039,"node_type":24,"kind":24,"src":{"id":1040,"line":390,"column":8,"start":12941,"end":12989,"length":49,"parent_index":1019},"argument_types":[{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":1041,"node_type":24,"kind":24,"src":{"id":1042,"line":390,"column":29,"start":12962,"end":12971,"length":10,"parent_index":1039},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1043,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1044,"line":390,"column":37,"start":12970,"end":12970,"length":1,"parent_index":1041},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1045,"node_type":16,"src":{"id":1046,"line":390,"column":29,"start":12962,"end":12968,"length":7,"parent_index":1041},"type_name":{"id":1047,"node_type":30,"src":{"id":1048,"line":390,"column":29,"start":12962,"end":12968,"length":7,"parent_index":1045},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},{"id":1049,"node_type":16,"src":{"id":1050,"line":390,"column":41,"start":12974,"end":12980,"length":7,"parent_index":1039},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1049,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}]},{"id":1051,"node_type":16,"src":{"id":1052,"line":390,"column":50,"start":12983,"end":12988,"length":6,"parent_index":1039},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1051,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":1053,"node_type":16,"src":{"id":1054,"line":390,"column":8,"start":12941,"end":12960,"length":20,"parent_index":1039},"name":"_beforeTokenTransfer","type_description":{"type_identifier":"t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256","type_string":"function(function(int_const 0),address,uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256$","type_string":"function(function(int_const 0),address,uint256)"}},{"id":1055,"node_type":81,"src":{"id":1056,"line":392,"column":8,"start":13001,"end":13023,"length":23,"parent_index":1019},"expression":{"id":1057,"node_type":27,"src":{"id":1058,"line":392,"column":8,"start":13001,"end":13022,"length":22,"parent_index":1019},"operator":13,"left_expression":{"id":1059,"node_type":16,"src":{"id":1060,"line":392,"column":8,"start":13001,"end":13012,"length":12,"parent_index":1057},"name":"_totalSupply","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":378,"is_pure":false},"right_expression":{"id":1061,"node_type":16,"src":{"id":1062,"line":392,"column":24,"start":13017,"end":13022,"length":6,"parent_index":1057},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1061,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":1063,"node_type":64,"src":{"id":1064,"line":397,"column":8,"start":13217,"end":13259,"length":43,"parent_index":1006},"arguments":[{"id":1065,"node_type":24,"kind":24,"src":{"id":1066,"line":397,"column":22,"start":13231,"end":13240,"length":10,"parent_index":1019},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1067,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1068,"line":397,"column":30,"start":13239,"end":13239,"length":1,"parent_index":1065},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1069,"node_type":16,"src":{"id":1070,"line":397,"column":22,"start":13231,"end":13237,"length":7,"parent_index":1065},"type_name":{"id":1071,"node_type":30,"src":{"id":1072,"line":397,"column":22,"start":13231,"end":13237,"length":7,"parent_index":1069},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},{"id":1073,"node_type":16,"src":{"id":1074,"line":397,"column":34,"start":13243,"end":13249,"length":7,"parent_index":1019},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1073,"is_pure":false},{"id":1075,"node_type":16,"src":{"id":1076,"line":397,"column":43,"start":13252,"end":13257,"length":6,"parent_index":1019},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1075,"is_pure":false}],"expression":{"id":1077,"node_type":16,"src":{"id":1078,"line":397,"column":13,"start":13222,"end":13229,"length":8,"parent_index":1019},"name":"Transfer","type_description":{"type_identifier":"t_event\u0026_IERC20_Transfer_\u002660","type_string":"event IERC20.Transfer"},"overloaded_declarations":[],"referenced_declaration":60,"is_pure":false}},{"id":1079,"node_type":24,"kind":24,"src":{"id":1080,"line":399,"column":8,"start":13270,"end":13317,"length":48,"parent_index":1019},"argument_types":[{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":1081,"node_type":24,"kind":24,"src":{"id":1082,"line":399,"column":28,"start":13290,"end":13299,"length":10,"parent_index":1079},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1083,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1084,"line":399,"column":36,"start":13298,"end":13298,"length":1,"parent_index":1081},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1085,"node_type":16,"src":{"id":1086,"line":399,"column":28,"start":13290,"end":13296,"length":7,"parent_index":1081},"type_name":{"id":1087,"node_type":30,"src":{"id":1088,"line":399,"column":28,"start":13290,"end":13296,"length":7,"parent_index":1085},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},{"id":1089,"node_type":16,"src":{"id":1090,"line":399,"column":40,"start":13302,"end":13308,"length":7,"parent_index":1079},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1089,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}]},{"id":1091,"node_type":16,"src":{"id":1092,"line":399,"column":49,"start":13311,"end":13316,"length":6,"parent_index":1079},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1091,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":1093,"node_type":16,"src":{"id":1094,"line":399,"column":8,"start":13270,"end":13288,"length":19,"parent_index":1079},"name":"_afterTokenTransfer","type_description":{"type_identifier":"t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256","type_string":"function(function(int_const 0),address,uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256$","type_string":"function(function(int_const 0),address,uint256)"}},{"id":1095,"node_type":59,"kind":0,"src":{"id":1096,"line":393,"column":8,"start":13033,"end":13207,"length":175,"parent_index":341},"implemented":false,"statements":[{"id":1097,"node_type":81,"src":{"id":1098,"line":395,"column":12,"start":13169,"end":13197,"length":29,"parent_index":1095},"expression":{"id":1099,"node_type":27,"src":{"id":1100,"line":395,"column":12,"start":13169,"end":13196,"length":28,"parent_index":1095},"operator":13,"left_expression":{"id":1101,"node_type":22,"src":{"id":1102,"line":395,"column":12,"start":13169,"end":13186,"length":18,"parent_index":1099},"index_expression":{"id":1103,"node_type":16,"src":{"id":1104,"line":395,"column":12,"start":13169,"end":13177,"length":9,"parent_index":1101},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":355,"is_pure":false},"base_expression":{"id":1105,"node_type":16,"src":{"id":1106,"line":395,"column":22,"start":13179,"end":13185,"length":7,"parent_index":1101},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1105,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"}},"right_expression":{"id":1107,"node_type":16,"src":{"id":1108,"line":395,"column":34,"start":13191,"end":13196,"length":6,"parent_index":1099},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1107,"is_pure":false},"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"}}}]}]},"implemented":false,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1008,"node_type":43,"src":{"id":1009,"line":387,"column":19,"start":12805,"end":12835,"length":31,"parent_index":1006},"parameters":[{"id":1010,"node_type":44,"src":{"id":1011,"line":387,"column":19,"start":12805,"end":12819,"length":15,"parent_index":1008},"scope":1006,"name":"account","type_name":{"id":1012,"node_type":30,"src":{"id":1013,"line":387,"column":19,"start":12805,"end":12811,"length":7,"parent_index":1010},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1014,"node_type":44,"src":{"id":1015,"line":387,"column":36,"start":12822,"end":12835,"length":14,"parent_index":1008},"scope":1006,"name":"amount","type_name":{"id":1016,"node_type":30,"src":{"id":1017,"line":387,"column":36,"start":12822,"end":12828,"length":7,"parent_index":1014},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":1018,"node_type":43,"src":{"id":1007,"line":387,"column":4,"start":12790,"end":13324,"length":535,"parent_index":1006},"parameters":[],"parameter_types":[]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$$_t_uint256","type_string":"function(address,uint256)"}},{"id":1110,"name":"_burn","node_type":42,"kind":41,"src":{"id":1111,"line":413,"column":4,"start":13645,"end":14303,"length":659,"parent_index":341},"body":{"id":1123,"node_type":46,"kind":0,"src":{"id":1124,"line":413,"column":69,"start":13710,"end":14303,"length":594,"parent_index":1110},"implemented":true,"statements":[{"id":1125,"node_type":24,"kind":24,"src":{"id":1126,"line":414,"column":8,"start":13720,"end":13786,"length":67,"parent_index":1123},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: burn from the zero address\""}],"arguments":[{"id":1127,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1128,"line":414,"column":16,"start":13728,"end":13748,"length":21,"parent_index":1125},"operator":12,"left_expression":{"id":1129,"node_type":16,"src":{"id":1130,"line":414,"column":16,"start":13728,"end":13734,"length":7,"parent_index":1127},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1129,"is_pure":false},"right_expression":{"id":1131,"node_type":24,"kind":24,"src":{"id":1132,"line":414,"column":27,"start":13739,"end":13748,"length":10,"parent_index":1127},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1133,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1134,"line":414,"column":35,"start":13747,"end":13747,"length":1,"parent_index":1131},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1135,"node_type":16,"src":{"id":1136,"line":414,"column":27,"start":13739,"end":13745,"length":7,"parent_index":1131},"type_name":{"id":1137,"node_type":30,"src":{"id":1138,"line":414,"column":27,"start":13739,"end":13745,"length":7,"parent_index":1135},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1139,"node_type":17,"kind":50,"value":"ERC20: burn from the zero address","hex_value":"45524332303a206275726e2066726f6d20746865207a65726f2061646472657373","src":{"id":1140,"line":414,"column":39,"start":13751,"end":13785,"length":35,"parent_index":1125},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: burn from the zero address\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1141,"node_type":16,"src":{"id":1142,"line":414,"column":8,"start":13720,"end":13726,"length":7,"parent_index":1125},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"ERC20: burn from the zero address\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: burn from the zero address\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1143,"node_type":24,"kind":24,"src":{"id":1144,"line":416,"column":8,"start":13798,"end":13846,"length":49,"parent_index":1123},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":1145,"node_type":16,"src":{"id":1146,"line":416,"column":29,"start":13819,"end":13825,"length":7,"parent_index":1143},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1145,"is_pure":false},{"id":1147,"node_type":24,"kind":24,"src":{"id":1148,"line":416,"column":38,"start":13828,"end":13837,"length":10,"parent_index":1143},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1149,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1150,"line":416,"column":46,"start":13836,"end":13836,"length":1,"parent_index":1147},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1151,"node_type":16,"src":{"id":1152,"line":416,"column":38,"start":13828,"end":13834,"length":7,"parent_index":1147},"type_name":{"id":1153,"node_type":30,"src":{"id":1154,"line":416,"column":38,"start":13828,"end":13834,"length":7,"parent_index":1151},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},{"id":1155,"node_type":16,"src":{"id":1156,"line":416,"column":50,"start":13840,"end":13845,"length":6,"parent_index":1143},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1155,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}]}],"expression":{"id":1157,"node_type":16,"src":{"id":1158,"line":416,"column":8,"start":13798,"end":13817,"length":20,"parent_index":1143},"name":"_beforeTokenTransfer","type_description":{"type_identifier":"t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256","type_string":"function(address,function(int_const 0),uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256$","type_string":"function(address,function(int_const 0),uint256)"}},{"id":1159,"node_type":44,"src":{"id":1160,"line":418,"column":8,"start":13858,"end":13901,"length":44,"parent_index":1123},"assignments":[1161],"declarations":[{"is_constant":false,"id":1161,"state_mutability":1,"name":"accountBalance","node_type":44,"scope":1123,"src":{"id":1162,"line":418,"column":8,"start":13858,"end":13879,"length":22,"parent_index":1159},"is_state_variable":false,"storage_location":1,"type_name":{"id":1163,"node_type":30,"src":{"id":1164,"line":418,"column":8,"start":13858,"end":13864,"length":7,"parent_index":1161},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":1165,"node_type":22,"src":{"id":1166,"line":418,"column":33,"start":13883,"end":13900,"length":18,"parent_index":1159},"index_expression":{"id":1167,"node_type":16,"src":{"id":1168,"line":418,"column":33,"start":13883,"end":13891,"length":9,"parent_index":1165},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":355,"is_pure":false},"base_expression":{"id":1169,"node_type":16,"src":{"id":1170,"line":418,"column":43,"start":13893,"end":13899,"length":7,"parent_index":1165},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1169,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"}}},{"id":1171,"node_type":24,"kind":24,"src":{"id":1172,"line":419,"column":8,"start":13911,"end":13981,"length":71,"parent_index":1123},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: burn amount exceeds balance\""}],"arguments":[{"id":1173,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1174,"line":419,"column":16,"start":13919,"end":13942,"length":24,"parent_index":1171},"operator":8,"left_expression":{"id":1175,"node_type":16,"src":{"id":1176,"line":419,"column":16,"start":13919,"end":13932,"length":14,"parent_index":1173},"name":"accountBalance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1159,"is_pure":false},"right_expression":{"id":1177,"node_type":16,"src":{"id":1178,"line":419,"column":34,"start":13937,"end":13942,"length":6,"parent_index":1173},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1177,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1179,"node_type":17,"kind":50,"value":"ERC20: burn amount exceeds balance","hex_value":"45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365","src":{"id":1180,"line":419,"column":42,"start":13945,"end":13980,"length":36,"parent_index":1171},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: burn amount exceeds balance\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1181,"node_type":16,"src":{"id":1182,"line":419,"column":8,"start":13911,"end":13917,"length":7,"parent_index":1171},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"ERC20: burn amount exceeds balance\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: burn amount exceeds balance\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1183,"node_type":64,"src":{"id":1184,"line":426,"column":8,"start":14196,"end":14238,"length":43,"parent_index":1110},"arguments":[{"id":1185,"node_type":16,"src":{"id":1186,"line":426,"column":22,"start":14210,"end":14216,"length":7,"parent_index":1123},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1185,"is_pure":false},{"id":1187,"node_type":24,"kind":24,"src":{"id":1188,"line":426,"column":31,"start":14219,"end":14228,"length":10,"parent_index":1123},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1189,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1190,"line":426,"column":39,"start":14227,"end":14227,"length":1,"parent_index":1187},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1191,"node_type":16,"src":{"id":1192,"line":426,"column":31,"start":14219,"end":14225,"length":7,"parent_index":1187},"type_name":{"id":1193,"node_type":30,"src":{"id":1194,"line":426,"column":31,"start":14219,"end":14225,"length":7,"parent_index":1191},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},{"id":1195,"node_type":16,"src":{"id":1196,"line":426,"column":43,"start":14231,"end":14236,"length":6,"parent_index":1123},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1195,"is_pure":false}],"expression":{"id":1197,"node_type":16,"src":{"id":1198,"line":426,"column":13,"start":14201,"end":14208,"length":8,"parent_index":1123},"name":"Transfer","type_description":{"type_identifier":"t_event\u0026_IERC20_Transfer_\u002660","type_string":"event IERC20.Transfer"},"overloaded_declarations":[],"referenced_declaration":60,"is_pure":false}},{"id":1199,"node_type":24,"kind":24,"src":{"id":1200,"line":428,"column":8,"start":14249,"end":14296,"length":48,"parent_index":1123},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":1201,"node_type":16,"src":{"id":1202,"line":428,"column":28,"start":14269,"end":14275,"length":7,"parent_index":1199},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1201,"is_pure":false},{"id":1203,"node_type":24,"kind":24,"src":{"id":1204,"line":428,"column":37,"start":14278,"end":14287,"length":10,"parent_index":1199},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1205,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1206,"line":428,"column":45,"start":14286,"end":14286,"length":1,"parent_index":1203},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1207,"node_type":16,"src":{"id":1208,"line":428,"column":37,"start":14278,"end":14284,"length":7,"parent_index":1203},"type_name":{"id":1209,"node_type":30,"src":{"id":1210,"line":428,"column":37,"start":14278,"end":14284,"length":7,"parent_index":1207},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},{"id":1211,"node_type":16,"src":{"id":1212,"line":428,"column":49,"start":14290,"end":14295,"length":6,"parent_index":1199},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1211,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}]}],"expression":{"id":1213,"node_type":16,"src":{"id":1214,"line":428,"column":8,"start":14249,"end":14267,"length":19,"parent_index":1199},"name":"_afterTokenTransfer","type_description":{"type_identifier":"t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256","type_string":"function(address,function(int_const 0),uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256$","type_string":"function(address,function(int_const 0),uint256)"}},{"id":1215,"node_type":59,"kind":0,"src":{"id":1216,"line":420,"column":8,"start":13992,"end":14185,"length":194,"parent_index":341},"implemented":false,"statements":[{"id":1217,"node_type":81,"src":{"id":1218,"line":421,"column":12,"start":14016,"end":14060,"length":45,"parent_index":1215},"expression":{"id":1219,"node_type":27,"src":{"id":1220,"line":421,"column":12,"start":14016,"end":14059,"length":44,"parent_index":1215},"operator":11,"left_expression":{"id":1221,"node_type":22,"src":{"id":1222,"line":421,"column":12,"start":14016,"end":14033,"length":18,"parent_index":1219},"index_expression":{"id":1223,"node_type":16,"src":{"id":1224,"line":421,"column":12,"start":14016,"end":14024,"length":9,"parent_index":1221},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":355,"is_pure":false},"base_expression":{"id":1225,"node_type":16,"src":{"id":1226,"line":421,"column":22,"start":14026,"end":14032,"length":7,"parent_index":1221},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1225,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"}},"right_expression":{"id":1227,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1228,"line":421,"column":33,"start":14037,"end":14059,"length":23,"parent_index":1219},"operator":2,"left_expression":{"id":1229,"node_type":16,"src":{"id":1230,"line":421,"column":33,"start":14037,"end":14050,"length":14,"parent_index":1227},"name":"accountBalance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1159,"is_pure":false},"right_expression":{"id":1231,"node_type":16,"src":{"id":1232,"line":421,"column":50,"start":14054,"end":14059,"length":6,"parent_index":1227},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1231,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"}}},{"id":1233,"node_type":81,"src":{"id":1234,"line":423,"column":12,"start":14153,"end":14175,"length":23,"parent_index":1215},"expression":{"id":1235,"node_type":27,"src":{"id":1236,"line":423,"column":12,"start":14153,"end":14174,"length":22,"parent_index":1215},"operator":14,"left_expression":{"id":1237,"node_type":16,"src":{"id":1238,"line":423,"column":12,"start":14153,"end":14164,"length":12,"parent_index":1235},"name":"_totalSupply","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":378,"is_pure":false},"right_expression":{"id":1239,"node_type":16,"src":{"id":1240,"line":423,"column":28,"start":14169,"end":14174,"length":6,"parent_index":1235},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1239,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]}]},"implemented":false,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1112,"node_type":43,"src":{"id":1113,"line":413,"column":19,"start":13660,"end":13690,"length":31,"parent_index":1110},"parameters":[{"id":1114,"node_type":44,"src":{"id":1115,"line":413,"column":19,"start":13660,"end":13674,"length":15,"parent_index":1112},"scope":1110,"name":"account","type_name":{"id":1116,"node_type":30,"src":{"id":1117,"line":413,"column":19,"start":13660,"end":13666,"length":7,"parent_index":1114},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1118,"node_type":44,"src":{"id":1119,"line":413,"column":36,"start":13677,"end":13690,"length":14,"parent_index":1112},"scope":1110,"name":"amount","type_name":{"id":1120,"node_type":30,"src":{"id":1121,"line":413,"column":36,"start":13677,"end":13683,"length":7,"parent_index":1118},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":1122,"node_type":43,"src":{"id":1111,"line":413,"column":4,"start":13645,"end":14303,"length":659,"parent_index":1110},"parameters":[],"parameter_types":[]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$$_t_uint256","type_string":"function(address,uint256)"}},{"id":1242,"name":"_approve","node_type":42,"kind":41,"src":{"id":1243,"line":444,"column":4,"start":14727,"end":15066,"length":340,"parent_index":341},"body":{"id":1259,"node_type":46,"kind":0,"src":{"id":1260,"line":444,"column":87,"start":14810,"end":15066,"length":257,"parent_index":1242},"implemented":true,"statements":[{"id":1261,"node_type":24,"kind":24,"src":{"id":1262,"line":445,"column":8,"start":14820,"end":14887,"length":68,"parent_index":1259},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: approve from the zero address\""}],"arguments":[{"id":1263,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1264,"line":445,"column":16,"start":14828,"end":14846,"length":19,"parent_index":1261},"operator":12,"left_expression":{"id":1265,"node_type":16,"src":{"id":1266,"line":445,"column":16,"start":14828,"end":14832,"length":5,"parent_index":1263},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1265,"is_pure":false},"right_expression":{"id":1267,"node_type":24,"kind":24,"src":{"id":1268,"line":445,"column":25,"start":14837,"end":14846,"length":10,"parent_index":1263},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1269,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1270,"line":445,"column":33,"start":14845,"end":14845,"length":1,"parent_index":1267},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1271,"node_type":16,"src":{"id":1272,"line":445,"column":25,"start":14837,"end":14843,"length":7,"parent_index":1267},"type_name":{"id":1273,"node_type":30,"src":{"id":1274,"line":445,"column":25,"start":14837,"end":14843,"length":7,"parent_index":1271},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1275,"node_type":17,"kind":50,"value":"ERC20: approve from the zero address","hex_value":"45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373","src":{"id":1276,"line":445,"column":37,"start":14849,"end":14886,"length":38,"parent_index":1261},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: approve from the zero address\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1277,"node_type":16,"src":{"id":1278,"line":445,"column":8,"start":14820,"end":14826,"length":7,"parent_index":1261},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"ERC20: approve from the zero address\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: approve from the zero address\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1279,"node_type":24,"kind":24,"src":{"id":1280,"line":446,"column":8,"start":14898,"end":14965,"length":68,"parent_index":1259},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: approve to the zero address\""}],"arguments":[{"id":1281,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1282,"line":446,"column":16,"start":14906,"end":14926,"length":21,"parent_index":1279},"operator":12,"left_expression":{"id":1283,"node_type":16,"src":{"id":1284,"line":446,"column":16,"start":14906,"end":14912,"length":7,"parent_index":1281},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1283,"is_pure":false},"right_expression":{"id":1285,"node_type":24,"kind":24,"src":{"id":1286,"line":446,"column":27,"start":14917,"end":14926,"length":10,"parent_index":1281},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1287,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1288,"line":446,"column":35,"start":14925,"end":14925,"length":1,"parent_index":1285},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1289,"node_type":16,"src":{"id":1290,"line":446,"column":27,"start":14917,"end":14923,"length":7,"parent_index":1285},"type_name":{"id":1291,"node_type":30,"src":{"id":1292,"line":446,"column":27,"start":14917,"end":14923,"length":7,"parent_index":1289},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1293,"node_type":17,"kind":50,"value":"ERC20: approve to the zero address","hex_value":"45524332303a20617070726f766520746f20746865207a65726f2061646472657373","src":{"id":1294,"line":446,"column":39,"start":14929,"end":14964,"length":36,"parent_index":1279},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: approve to the zero address\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1295,"node_type":16,"src":{"id":1296,"line":446,"column":8,"start":14898,"end":14904,"length":7,"parent_index":1279},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"ERC20: approve to the zero address\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: approve to the zero address\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1297,"node_type":81,"src":{"id":1298,"line":448,"column":8,"start":14977,"end":15013,"length":37,"parent_index":1259},"expression":{"id":1299,"node_type":27,"src":{"id":1300,"line":448,"column":8,"start":14977,"end":15012,"length":36,"parent_index":1259},"operator":11,"left_expression":{"id":1301,"node_type":22,"src":{"id":1302,"line":448,"column":8,"start":14977,"end":15003,"length":27,"parent_index":1299},"index_expression":{"id":1303,"node_type":22,"src":{"id":1304,"line":448,"column":8,"start":14977,"end":14994,"length":18,"parent_index":1301},"index_expression":{"id":1305,"node_type":16,"src":{"id":1306,"line":448,"column":8,"start":14977,"end":14987,"length":11,"parent_index":1303},"name":"_allowances","type_description":{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"},"overloaded_declarations":[],"referenced_declaration":364,"is_pure":false},"base_expression":{"id":1307,"node_type":16,"src":{"id":1308,"line":448,"column":20,"start":14989,"end":14993,"length":5,"parent_index":1303},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1307,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"}},"base_expression":{"id":1309,"node_type":16,"src":{"id":1310,"line":448,"column":27,"start":14996,"end":15002,"length":7,"parent_index":1301},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1309,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"}},"right_expression":{"id":1311,"node_type":16,"src":{"id":1312,"line":448,"column":38,"start":15007,"end":15012,"length":6,"parent_index":1299},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1311,"is_pure":false},"type_description":{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"}}},{"id":1313,"node_type":64,"src":{"id":1314,"line":449,"column":8,"start":15023,"end":15060,"length":38,"parent_index":1242},"arguments":[{"id":1315,"node_type":16,"src":{"id":1316,"line":449,"column":22,"start":15037,"end":15041,"length":5,"parent_index":1259},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1315,"is_pure":false},{"id":1317,"node_type":16,"src":{"id":1318,"line":449,"column":29,"start":15044,"end":15050,"length":7,"parent_index":1259},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1317,"is_pure":false},{"id":1319,"node_type":16,"src":{"id":1320,"line":449,"column":38,"start":15053,"end":15058,"length":6,"parent_index":1259},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1319,"is_pure":false}],"expression":{"id":1321,"node_type":16,"src":{"id":1322,"line":449,"column":13,"start":15028,"end":15035,"length":8,"parent_index":1259},"name":"Approval","type_description":{"type_identifier":"t_event\u0026_IERC20_Approval_\u002676","type_string":"event IERC20.Approval"},"overloaded_declarations":[],"referenced_declaration":76,"is_pure":false}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1244,"node_type":43,"src":{"id":1245,"line":444,"column":22,"start":14745,"end":14790,"length":46,"parent_index":1242},"parameters":[{"id":1246,"node_type":44,"src":{"id":1247,"line":444,"column":22,"start":14745,"end":14757,"length":13,"parent_index":1244},"scope":1242,"name":"owner","type_name":{"id":1248,"node_type":30,"src":{"id":1249,"line":444,"column":22,"start":14745,"end":14751,"length":7,"parent_index":1246},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1250,"node_type":44,"src":{"id":1251,"line":444,"column":37,"start":14760,"end":14774,"length":15,"parent_index":1244},"scope":1242,"name":"spender","type_name":{"id":1252,"node_type":30,"src":{"id":1253,"line":444,"column":37,"start":14760,"end":14766,"length":7,"parent_index":1250},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1254,"node_type":44,"src":{"id":1255,"line":444,"column":54,"start":14777,"end":14790,"length":14,"parent_index":1244},"scope":1242,"name":"amount","type_name":{"id":1256,"node_type":30,"src":{"id":1257,"line":444,"column":54,"start":14777,"end":14783,"length":7,"parent_index":1254},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":1258,"node_type":43,"src":{"id":1243,"line":444,"column":4,"start":14727,"end":15066,"length":340,"parent_index":1242},"parameters":[],"parameter_types":[]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256","type_string":"function(address,address,uint256)"}},{"id":1324,"name":"_spendAllowance","node_type":42,"kind":41,"src":{"id":1325,"line":460,"column":4,"start":15348,"end":15758,"length":411,"parent_index":341},"body":{"id":1341,"node_type":46,"kind":0,"src":{"id":1342,"line":460,"column":94,"start":15438,"end":15758,"length":321,"parent_index":1324},"implemented":true,"statements":[{"id":1343,"node_type":44,"src":{"id":1344,"line":461,"column":8,"start":15448,"end":15500,"length":53,"parent_index":1341},"assignments":[1345],"declarations":[{"is_constant":false,"id":1345,"state_mutability":1,"name":"currentAllowance","node_type":44,"scope":1341,"src":{"id":1346,"line":461,"column":8,"start":15448,"end":15471,"length":24,"parent_index":1343},"is_state_variable":false,"storage_location":1,"type_name":{"id":1347,"node_type":30,"src":{"id":1348,"line":461,"column":8,"start":15448,"end":15454,"length":7,"parent_index":1345},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":1349,"node_type":24,"kind":24,"src":{"id":1350,"line":461,"column":35,"start":15475,"end":15499,"length":25,"parent_index":1343},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1351,"node_type":16,"src":{"id":1352,"line":461,"column":45,"start":15485,"end":15489,"length":5,"parent_index":1349},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1351,"is_pure":false},{"id":1353,"node_type":16,"src":{"id":1354,"line":461,"column":52,"start":15492,"end":15498,"length":7,"parent_index":1349},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1353,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":1355,"node_type":16,"src":{"id":1356,"line":461,"column":35,"start":15475,"end":15483,"length":9,"parent_index":1349},"name":"allowance","type_description":{"type_identifier":"t_function_$_t_address$$_t_address","type_string":"function(address,address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$","type_string":"function(address,address)"}}},{"id":1357,"node_type":48,"src":{"id":1358,"line":462,"column":0,"start":15510,"end":15752,"length":243,"parent_index":1341},"condition":{"id":1359,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1360,"line":462,"column":12,"start":15514,"end":15550,"length":37,"parent_index":1357},"operator":12,"left_expression":{"id":1361,"node_type":16,"src":{"id":1362,"line":462,"column":12,"start":15514,"end":15529,"length":16,"parent_index":1359},"name":"currentAllowance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1343,"is_pure":false},"right_expression":{"id":1363,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1364,"line":462,"column":32,"start":15534,"end":15550,"length":17,"parent_index":1359},"expression":{"id":1365,"node_type":16,"name":"type","src":{"id":1366,"line":462,"column":32,"start":15534,"end":15546,"length":13,"parent_index":1363},"type_description":{"type_identifier":"","type_string":"type"}},"member_name":"max","argument_types":[],"type_description":{"type_identifier":"","type_string":"type"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":1367,"node_type":46,"kind":0,"src":{"id":1368,"line":462,"column":51,"start":15553,"end":15752,"length":200,"parent_index":1324},"implemented":true,"statements":[{"id":1369,"node_type":24,"kind":24,"src":{"id":1370,"line":463,"column":12,"start":15567,"end":15634,"length":68,"parent_index":1367},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: insufficient allowance\""}],"arguments":[{"id":1371,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1372,"line":463,"column":20,"start":15575,"end":15600,"length":26,"parent_index":1369},"operator":8,"left_expression":{"id":1373,"node_type":16,"src":{"id":1374,"line":463,"column":20,"start":15575,"end":15590,"length":16,"parent_index":1371},"name":"currentAllowance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":819,"is_pure":false},"right_expression":{"id":1375,"node_type":16,"src":{"id":1376,"line":463,"column":40,"start":15595,"end":15600,"length":6,"parent_index":1371},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1375,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1377,"node_type":17,"kind":50,"value":"ERC20: insufficient allowance","hex_value":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","src":{"id":1378,"line":463,"column":48,"start":15603,"end":15633,"length":31,"parent_index":1369},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: insufficient allowance\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1379,"node_type":16,"src":{"id":1380,"line":463,"column":12,"start":15567,"end":15573,"length":7,"parent_index":1369},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"ERC20: insufficient allowance\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: insufficient allowance\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}}]}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1326,"node_type":43,"src":{"id":1327,"line":460,"column":29,"start":15373,"end":15418,"length":46,"parent_index":1324},"parameters":[{"id":1328,"node_type":44,"src":{"id":1329,"line":460,"column":29,"start":15373,"end":15385,"length":13,"parent_index":1326},"scope":1324,"name":"owner","type_name":{"id":1330,"node_type":30,"src":{"id":1331,"line":460,"column":29,"start":15373,"end":15379,"length":7,"parent_index":1328},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1332,"node_type":44,"src":{"id":1333,"line":460,"column":44,"start":15388,"end":15402,"length":15,"parent_index":1326},"scope":1324,"name":"spender","type_name":{"id":1334,"node_type":30,"src":{"id":1335,"line":460,"column":44,"start":15388,"end":15394,"length":7,"parent_index":1332},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1336,"node_type":44,"src":{"id":1337,"line":460,"column":61,"start":15405,"end":15418,"length":14,"parent_index":1326},"scope":1324,"name":"amount","type_name":{"id":1338,"node_type":30,"src":{"id":1339,"line":460,"column":61,"start":15405,"end":15411,"length":7,"parent_index":1336},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":1340,"node_type":43,"src":{"id":1325,"line":460,"column":4,"start":15348,"end":15758,"length":411,"parent_index":1324},"parameters":[],"parameter_types":[]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256","type_string":"function(address,address,uint256)"}},{"id":1382,"name":"_beforeTokenTransfer","node_type":42,"kind":41,"src":{"id":1383,"line":484,"column":4,"start":16343,"end":16433,"length":91,"parent_index":341},"body":{"id":1399,"node_type":46,"kind":0,"src":{"id":1400,"line":484,"column":93,"start":16432,"end":16433,"length":2,"parent_index":1382},"implemented":true,"statements":[]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1384,"node_type":43,"src":{"id":1385,"line":484,"column":34,"start":16373,"end":16412,"length":40,"parent_index":1382},"parameters":[{"id":1386,"node_type":44,"src":{"id":1387,"line":484,"column":34,"start":16373,"end":16384,"length":12,"parent_index":1384},"scope":1382,"name":"from","type_name":{"id":1388,"node_type":30,"src":{"id":1389,"line":484,"column":34,"start":16373,"end":16379,"length":7,"parent_index":1386},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1390,"node_type":44,"src":{"id":1391,"line":484,"column":48,"start":16387,"end":16396,"length":10,"parent_index":1384},"scope":1382,"name":"to","type_name":{"id":1392,"node_type":30,"src":{"id":1393,"line":484,"column":48,"start":16387,"end":16393,"length":7,"parent_index":1390},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1394,"node_type":44,"src":{"id":1395,"line":484,"column":60,"start":16399,"end":16412,"length":14,"parent_index":1384},"scope":1382,"name":"amount","type_name":{"id":1396,"node_type":30,"src":{"id":1397,"line":484,"column":60,"start":16399,"end":16405,"length":7,"parent_index":1394},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":1398,"node_type":43,"src":{"id":1383,"line":484,"column":4,"start":16343,"end":16433,"length":91,"parent_index":1382},"parameters":[],"parameter_types":[]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256","type_string":"function(address,address,uint256)"}},{"id":1402,"name":"_afterTokenTransfer","node_type":42,"kind":41,"src":{"id":1403,"line":500,"column":4,"start":17022,"end":17111,"length":90,"parent_index":341},"body":{"id":1419,"node_type":46,"kind":0,"src":{"id":1420,"line":500,"column":92,"start":17110,"end":17111,"length":2,"parent_index":1402},"implemented":true,"statements":[]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1404,"node_type":43,"src":{"id":1405,"line":500,"column":33,"start":17051,"end":17090,"length":40,"parent_index":1402},"parameters":[{"id":1406,"node_type":44,"src":{"id":1407,"line":500,"column":33,"start":17051,"end":17062,"length":12,"parent_index":1404},"scope":1402,"name":"from","type_name":{"id":1408,"node_type":30,"src":{"id":1409,"line":500,"column":33,"start":17051,"end":17057,"length":7,"parent_index":1406},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1410,"node_type":44,"src":{"id":1411,"line":500,"column":47,"start":17065,"end":17074,"length":10,"parent_index":1404},"scope":1402,"name":"to","type_name":{"id":1412,"node_type":30,"src":{"id":1413,"line":500,"column":47,"start":17065,"end":17071,"length":7,"parent_index":1410},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1414,"node_type":44,"src":{"id":1415,"line":500,"column":59,"start":17077,"end":17090,"length":14,"parent_index":1404},"scope":1402,"name":"amount","type_name":{"id":1416,"node_type":30,"src":{"id":1417,"line":500,"column":59,"start":17077,"end":17083,"length":7,"parent_index":1414},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":1418,"node_type":43,"src":{"id":1403,"line":500,"column":4,"start":17022,"end":17111,"length":90,"parent_index":1402},"parameters":[],"parameter_types":[]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256","type_string":"function(address,address,uint256)"}}],"linearized_base_contracts":[271,49,207,341],"base_contracts":[{"id":342,"node_type":62,"src":{"id":343,"line":174,"column":18,"start":5820,"end":5826,"length":7,"parent_index":341},"base_name":{"id":344,"node_type":52,"src":{"id":345,"line":174,"column":18,"start":5820,"end":5826,"length":7,"parent_index":341},"name":"Context","referenced_declaration":271}},{"id":346,"node_type":62,"src":{"id":347,"line":174,"column":27,"start":5829,"end":5834,"length":6,"parent_index":341},"base_name":{"id":348,"node_type":52,"src":{"id":349,"line":174,"column":27,"start":5829,"end":5834,"length":6,"parent_index":341},"name":"IERC20","referenced_declaration":49}},{"id":350,"node_type":62,"src":{"id":351,"line":174,"column":35,"start":5837,"end":5850,"length":14,"parent_index":341},"base_name":{"id":352,"node_type":52,"src":{"id":353,"line":174,"column":35,"start":5837,"end":5850,"length":14,"parent_index":341},"name":"IERC20Metadata","referenced_declaration":207}}],"contract_dependencies":[271,49,207]}],"src":{"id":328,"line":174,"column":0,"start":5802,"end":17113,"length":11312,"parent_index":48}},{"id":1421,"base_contracts":[{"id":1439,"node_type":62,"src":{"id":1440,"line":509,"column":18,"start":17249,"end":17253,"length":5,"parent_index":1438},"base_name":{"id":1441,"node_type":52,"src":{"id":1442,"line":509,"column":18,"start":17249,"end":17253,"length":5,"parent_index":1438},"name":"ERC20","referenced_declaration":327}}],"license":"MIT","exported_symbols":[{"id":1421,"name":"Token","absolute_path":"Token.sol"},{"id":327,"name":"ERC20","absolute_path":"ERC20.sol"}],"absolute_path":"Token.sol","name":"Token","node_type":1,"nodes":[{"id":1431,"node_type":10,"src":{"id":1432,"line":505,"column":0,"start":17149,"end":17171,"length":23,"parent_index":1421},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":1437,"node_type":29,"src":{"id":0,"line":507,"column":0,"start":17174,"end":17228,"length":55,"parent_index":1421},"absolute_path":"ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","scope":1421,"unit_alias":"","source_unit":327},{"id":1438,"name":"Token","node_type":35,"src":{"id":0,"line":509,"column":0,"start":17231,"end":17360,"length":130,"parent_index":1421},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":1444,"node_type":42,"src":{"id":1445,"line":510,"column":4,"start":17261,"end":17358,"length":98,"parent_index":1438},"kind":11,"state_mutability":4,"visibility":1,"implemented":true,"modifiers":[{"id":1448,"name":"ERC20","node_type":72,"kind":72,"src":{"id":1449,"line":510,"column":18,"start":17275,"end":17297,"length":23,"parent_index":1444},"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"MyToken\""},{"type_identifier":"t_string_literal","type_string":"literal_string \"MTK\""}],"arguments":[{"id":1452,"node_type":17,"kind":50,"value":"MyToken","hex_value":"4d79546f6b656e","src":{"id":1453,"line":510,"column":24,"start":17281,"end":17289,"length":9,"parent_index":1448},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"MyToken\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},{"id":1454,"node_type":17,"kind":50,"value":"MTK","hex_value":"4d544b","src":{"id":1455,"line":510,"column":35,"start":17292,"end":17296,"length":5,"parent_index":1448},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"MTK\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"modifier_name":{"id":1450,"name":"ERC20","node_type":0,"src":{"id":1451,"line":510,"column":18,"start":17275,"end":17279,"length":5,"parent_index":1448}}}],"parameters":{"id":1446,"node_type":43,"src":{"id":1445,"line":510,"column":4,"start":17261,"end":17358,"length":98,"parent_index":1444},"parameters":[],"parameter_types":[]},"return_parameters":{"id":1447,"node_type":43,"src":{"id":1445,"line":510,"column":4,"start":17261,"end":17358,"length":98,"parent_index":1444},"parameters":[],"parameter_types":[]},"scope":1438,"body":{"id":1456,"node_type":46,"kind":0,"src":{"id":1457,"line":510,"column":42,"start":17299,"end":17358,"length":60,"parent_index":1444},"implemented":true,"statements":[{"id":1458,"node_type":24,"kind":24,"src":{"id":1459,"line":511,"column":8,"start":17309,"end":17351,"length":43,"parent_index":1456},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_rational_1000000_by_1","type_string":"int_const 1000000"}],"arguments":[{"id":1460,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1461,"line":511,"column":14,"start":17315,"end":17324,"length":10,"parent_index":1458},"expression":{"id":1462,"node_type":16,"src":{"id":1463,"line":511,"column":14,"start":17315,"end":17317,"length":3,"parent_index":1460},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},{"id":1464,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1465,"line":511,"column":26,"start":17327,"end":17350,"length":24,"parent_index":1458},"operator":3,"left_expression":{"id":1466,"node_type":17,"kind":49,"value":"1000000","hex_value":"31303030303030","src":{"id":1467,"line":511,"column":26,"start":17327,"end":17333,"length":7,"parent_index":1464},"type_description":{"type_identifier":"t_rational_1000000_by_1","type_string":"int_const 1000000"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"right_expression":{"id":1469,"node_type":95,"src":{"id":1470,"line":511,"column":36,"start":17337,"end":17350,"length":14,"parent_index":1464},"left_expression":{"id":1471,"node_type":17,"kind":49,"value":"10","hex_value":"3130","src":{"id":1472,"line":511,"column":36,"start":17337,"end":17338,"length":2,"parent_index":1469},"type_description":{"type_identifier":"t_rational_10_by_1","type_string":"int_const 10"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"right_expression":{"id":1473,"node_type":24,"kind":24,"src":{"id":1474,"line":511,"column":40,"start":17341,"end":17350,"length":10,"parent_index":1469},"argument_types":[],"arguments":[],"expression":{"id":1475,"node_type":16,"src":{"id":1476,"line":511,"column":40,"start":17341,"end":17348,"length":8,"parent_index":1473},"name":"decimals","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_descriptions":[{"type_identifier":"t_rational_10_by_1","type_string":"int_const 10"},{"type_identifier":"t_function_$","type_string":"function()"}]},"type_description":{"type_identifier":"t_rational_1000000_by_1","type_string":"int_const 1000000"}}],"expression":{"id":1477,"node_type":16,"src":{"id":1478,"line":511,"column":8,"start":17309,"end":17313,"length":5,"parent_index":1458},"name":"_mint","type_description":{"type_identifier":"t_function_$_t_address$$_t_rational_1000000_by_1","type_string":"function(address,int_const 1000000)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_rational_1000000_by_1","type_string":"int_const 1000000"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_rational_1000000_by_1$","type_string":"function(address,int_const 1000000)"}}]}}],"linearized_base_contracts":[327,1438,1437],"base_contracts":[{"id":1439,"node_type":62,"src":{"id":1440,"line":509,"column":18,"start":17249,"end":17253,"length":5,"parent_index":1438},"base_name":{"id":1441,"node_type":52,"src":{"id":1442,"line":509,"column":18,"start":17249,"end":17253,"length":5,"parent_index":1438},"name":"ERC20","referenced_declaration":327}}],"contract_dependencies":[327,1437]}],"src":{"id":1422,"line":509,"column":0,"start":17231,"end":17360,"length":130,"parent_index":48}}],"comments":[{"id":1,"src":{"id":0,"line":1,"column":0,"start":0,"end":30,"length":31,"parent_index":2},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":2,"src":{"id":0,"line":2,"column":0,"start":32,"end":103,"length":72,"parent_index":3},"node_type":31,"text":"// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)"},{"id":3,"src":{"id":0,"line":6,"column":0,"start":131,"end":200,"length":70,"parent_index":4},"node_type":32,"text":"/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */"},{"id":4,"src":{"id":0,"line":10,"column":4,"start":225,"end":382,"length":158,"parent_index":5},"node_type":32,"text":"/**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */"},{"id":5,"src":{"id":0,"line":18,"column":4,"start":466,"end":613,"length":148,"parent_index":6},"node_type":32,"text":"/**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */"},{"id":6,"src":{"id":0,"line":24,"column":4,"start":703,"end":768,"length":66,"parent_index":7},"node_type":32,"text":"/**\n * @dev Returns the amount of tokens in existence.\n */"},{"id":7,"src":{"id":0,"line":29,"column":4,"start":835,"end":906,"length":72,"parent_index":8},"node_type":32,"text":"/**\n * @dev Returns the amount of tokens owned by `account`.\n */"},{"id":8,"src":{"id":0,"line":34,"column":4,"start":986,"end":1187,"length":202,"parent_index":9},"node_type":32,"text":"/**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */"},{"id":9,"src":{"id":0,"line":43,"column":4,"start":1269,"end":1532,"length":264,"parent_index":10},"node_type":32,"text":"/**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */"},{"id":10,"src":{"id":0,"line":52,"column":4,"start":1627,"end":2268,"length":642,"parent_index":11},"node_type":32,"text":"/**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */"},{"id":11,"src":{"id":0,"line":68,"column":4,"start":2354,"end":2640,"length":287,"parent_index":12},"node_type":32,"text":"/**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */"},{"id":12,"src":{"id":0,"line":81,"column":0,"start":2739,"end":2769,"length":31,"parent_index":13},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":13,"src":{"id":0,"line":82,"column":0,"start":2771,"end":2846,"length":76,"parent_index":14},"node_type":31,"text":"// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)"},{"id":14,"src":{"id":0,"line":88,"column":0,"start":2899,"end":3014,"length":116,"parent_index":15},"node_type":32,"text":"/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */"},{"id":15,"src":{"id":0,"line":94,"column":4,"start":3057,"end":3110,"length":54,"parent_index":16},"node_type":32,"text":"/**\n * @dev Returns the name of the token.\n */"},{"id":16,"src":{"id":0,"line":99,"column":4,"start":3176,"end":3231,"length":56,"parent_index":17},"node_type":32,"text":"/**\n * @dev Returns the symbol of the token.\n */"},{"id":17,"src":{"id":0,"line":104,"column":4,"start":3299,"end":3363,"length":65,"parent_index":18},"node_type":32,"text":"/**\n * @dev Returns the decimals places of the token.\n */"},{"id":18,"src":{"id":0,"line":111,"column":0,"start":3424,"end":3454,"length":31,"parent_index":19},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":19,"src":{"id":0,"line":112,"column":0,"start":3456,"end":3507,"length":52,"parent_index":20},"node_type":31,"text":"// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)"},{"id":20,"src":{"id":0,"line":116,"column":0,"start":3535,"end":4030,"length":496,"parent_index":21},"node_type":32,"text":"/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */"},{"id":21,"src":{"id":0,"line":137,"column":0,"start":4270,"end":4300,"length":31,"parent_index":22},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":22,"src":{"id":0,"line":138,"column":0,"start":4302,"end":4372,"length":71,"parent_index":23},"node_type":31,"text":"// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)"},{"id":23,"src":{"id":0,"line":146,"column":0,"start":4500,"end":5800,"length":1301,"parent_index":24},"node_type":32,"text":"/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */"},{"id":24,"src":{"id":0,"line":184,"column":4,"start":6074,"end":6244,"length":171,"parent_index":25},"node_type":32,"text":"/**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */"},{"id":25,"src":{"id":0,"line":195,"column":4,"start":6369,"end":6422,"length":54,"parent_index":26},"node_type":32,"text":"/**\n * @dev Returns the name of the token.\n */"},{"id":26,"src":{"id":0,"line":202,"column":4,"start":6532,"end":6633,"length":102,"parent_index":27},"node_type":32,"text":"/**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */"},{"id":27,"src":{"id":0,"line":210,"column":4,"start":6747,"end":7368,"length":622,"parent_index":28},"node_type":32,"text":"/**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */"},{"id":28,"src":{"id":0,"line":227,"column":4,"start":7471,"end":7519,"length":49,"parent_index":29},"node_type":32,"text":"/**\n * @dev See {IERC20-totalSupply}.\n */"},{"id":29,"src":{"id":0,"line":234,"column":4,"start":7637,"end":7683,"length":47,"parent_index":30},"node_type":32,"text":"/**\n * @dev See {IERC20-balanceOf}.\n */"},{"id":30,"src":{"id":0,"line":241,"column":4,"start":7820,"end":8004,"length":185,"parent_index":31},"node_type":32,"text":"/**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */"},{"id":31,"src":{"id":0,"line":255,"column":4,"start":8205,"end":8251,"length":47,"parent_index":32},"node_type":32,"text":"/**\n * @dev See {IERC20-allowance}.\n */"},{"id":32,"src":{"id":0,"line":262,"column":4,"start":8412,"end":8708,"length":297,"parent_index":33},"node_type":32,"text":"/**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */"},{"id":33,"src":{"id":0,"line":278,"column":4,"start":8917,"end":9467,"length":551,"parent_index":34},"node_type":32,"text":"/**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */"},{"id":34,"src":{"id":0,"line":301,"column":4,"start":9735,"end":10118,"length":384,"parent_index":35},"node_type":32,"text":"/**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */"},{"id":35,"src":{"id":0,"line":319,"column":4,"start":10364,"end":10839,"length":476,"parent_index":36},"node_type":32,"text":"/**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */"},{"id":36,"src":{"id":0,"line":344,"column":4,"start":11278,"end":11720,"length":443,"parent_index":37},"node_type":32,"text":"/**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */"},{"id":37,"src":{"id":0,"line":368,"column":12,"start":12221,"end":12323,"length":103,"parent_index":38},"node_type":31,"text":"// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by"},{"id":38,"src":{"id":0,"line":369,"column":12,"start":12337,"end":12370,"length":34,"parent_index":39},"node_type":31,"text":"// decrementing then incrementing."},{"id":39,"src":{"id":0,"line":378,"column":4,"start":12520,"end":12784,"length":265,"parent_index":40},"node_type":32,"text":"/** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */"},{"id":40,"src":{"id":0,"line":394,"column":12,"start":13057,"end":13155,"length":99,"parent_index":41},"node_type":31,"text":"// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above."},{"id":41,"src":{"id":0,"line":402,"column":4,"start":13331,"end":13639,"length":309,"parent_index":42},"node_type":32,"text":"/**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */"},{"id":42,"src":{"id":0,"line":422,"column":12,"start":14074,"end":14139,"length":66,"parent_index":43},"node_type":31,"text":"// Overflow not possible: amount \u003c= accountBalance \u003c= totalSupply."},{"id":43,"src":{"id":0,"line":431,"column":4,"start":14310,"end":14721,"length":412,"parent_index":44},"node_type":32,"text":"/**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */"},{"id":44,"src":{"id":0,"line":452,"column":4,"start":15073,"end":15342,"length":270,"parent_index":45},"node_type":32,"text":"/**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */"},{"id":45,"src":{"id":0,"line":470,"column":4,"start":15765,"end":16337,"length":573,"parent_index":46},"node_type":32,"text":"/**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */"},{"id":46,"src":{"id":0,"line":486,"column":4,"start":16440,"end":17016,"length":577,"parent_index":47},"node_type":32,"text":"/**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */"},{"id":47,"src":{"id":0,"line":504,"column":0,"start":17117,"end":17147,"length":31,"parent_index":48},"node_type":33,"text":"// SPDX-License-Identifier: MIT"}]} \ No newline at end of file +{"id":48,"node_type":80,"entry_source_unit":1421,"root":[{"id":49,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":49,"name":"IERC20","absolute_path":"/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/IERC20.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/IERC20.sol","name":"IERC20","node_type":1,"nodes":[{"id":51,"node_type":10,"src":{"id":52,"line":4,"column":0,"start":106,"end":128,"length":23,"parent_index":49},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":58,"name":"IERC20","node_type":35,"src":{"id":0,"line":9,"column":0,"start":202,"end":2735,"length":2534,"parent_index":49},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":60,"node_type":57,"src":{"id":61,"line":16,"column":4,"start":388,"end":459,"length":72,"parent_index":58},"parameters":{"id":62,"node_type":43,"src":{"id":61,"line":16,"column":4,"start":388,"end":459,"length":72,"parent_index":60},"parameters":[{"id":63,"node_type":44,"src":{"id":64,"line":16,"column":19,"start":403,"end":422,"length":20,"parent_index":62},"scope":60,"name":"from","type_name":{"id":65,"node_type":30,"src":{"id":66,"line":16,"column":19,"start":403,"end":409,"length":7,"parent_index":63},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":67,"node_type":44,"src":{"id":68,"line":16,"column":41,"start":425,"end":442,"length":18,"parent_index":62},"scope":60,"name":"to","type_name":{"id":69,"node_type":30,"src":{"id":70,"line":16,"column":41,"start":425,"end":431,"length":7,"parent_index":67},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":71,"node_type":44,"src":{"id":72,"line":16,"column":61,"start":445,"end":457,"length":13,"parent_index":62},"scope":60,"name":"value","type_name":{"id":73,"node_type":30,"src":{"id":74,"line":16,"column":61,"start":445,"end":451,"length":7,"parent_index":71},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"name":"Transfer","anonymous":false},{"id":76,"node_type":57,"src":{"id":77,"line":22,"column":4,"start":619,"end":696,"length":78,"parent_index":58},"parameters":{"id":78,"node_type":43,"src":{"id":77,"line":22,"column":4,"start":619,"end":696,"length":78,"parent_index":76},"parameters":[{"id":79,"node_type":44,"src":{"id":80,"line":22,"column":19,"start":634,"end":654,"length":21,"parent_index":78},"scope":76,"name":"owner","type_name":{"id":81,"node_type":30,"src":{"id":82,"line":22,"column":19,"start":634,"end":640,"length":7,"parent_index":79},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":83,"node_type":44,"src":{"id":84,"line":22,"column":42,"start":657,"end":679,"length":23,"parent_index":78},"scope":76,"name":"spender","type_name":{"id":85,"node_type":30,"src":{"id":86,"line":22,"column":42,"start":657,"end":663,"length":7,"parent_index":83},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":87,"node_type":44,"src":{"id":88,"line":22,"column":67,"start":682,"end":694,"length":13,"parent_index":78},"scope":76,"name":"value","type_name":{"id":89,"node_type":30,"src":{"id":90,"line":22,"column":67,"start":682,"end":688,"length":7,"parent_index":87},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"name":"Approval","anonymous":false},{"id":92,"name":"totalSupply","node_type":42,"kind":41,"src":{"id":93,"line":27,"column":4,"start":774,"end":828,"length":55,"parent_index":58},"body":{"id":106,"node_type":46,"kind":0,"src":{"id":93,"line":27,"column":4,"start":774,"end":828,"length":55,"parent_index":92},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":94,"node_type":43,"src":{"id":95,"line":27,"column":50,"start":820,"end":826,"length":7,"parent_index":92},"parameters":[{"id":96,"node_type":44,"src":{"id":97,"line":27,"column":50,"start":820,"end":826,"length":7,"parent_index":94},"scope":92,"name":"","type_name":{"id":98,"node_type":30,"src":{"id":99,"line":27,"column":50,"start":820,"end":826,"length":7,"parent_index":96},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":100,"node_type":43,"src":{"id":101,"line":27,"column":50,"start":820,"end":826,"length":7,"parent_index":92},"parameters":[{"id":102,"node_type":44,"src":{"id":103,"line":27,"column":50,"start":820,"end":826,"length":7,"parent_index":100},"scope":92,"name":"","type_name":{"id":104,"node_type":30,"src":{"id":105,"line":27,"column":50,"start":820,"end":826,"length":7,"parent_index":102},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":58,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},{"id":108,"name":"balanceOf","node_type":42,"kind":41,"src":{"id":109,"line":32,"column":4,"start":912,"end":979,"length":68,"parent_index":58},"body":{"id":122,"node_type":46,"kind":0,"src":{"id":109,"line":32,"column":4,"start":912,"end":979,"length":68,"parent_index":108},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":110,"node_type":43,"src":{"id":111,"line":32,"column":23,"start":931,"end":945,"length":15,"parent_index":108},"parameters":[{"id":112,"node_type":44,"src":{"id":113,"line":32,"column":23,"start":931,"end":945,"length":15,"parent_index":110},"scope":108,"name":"account","type_name":{"id":114,"node_type":30,"src":{"id":115,"line":32,"column":23,"start":931,"end":937,"length":7,"parent_index":112},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":116,"node_type":43,"src":{"id":117,"line":32,"column":63,"start":971,"end":977,"length":7,"parent_index":108},"parameters":[{"id":118,"node_type":44,"src":{"id":119,"line":32,"column":63,"start":971,"end":977,"length":7,"parent_index":116},"scope":108,"name":"","type_name":{"id":120,"node_type":30,"src":{"id":121,"line":32,"column":63,"start":971,"end":977,"length":7,"parent_index":118},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":58,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":124,"name":"transfer","node_type":42,"kind":41,"src":{"id":125,"line":41,"column":4,"start":1193,"end":1262,"length":70,"parent_index":58},"body":{"id":142,"node_type":46,"kind":0,"src":{"id":125,"line":41,"column":4,"start":1193,"end":1262,"length":70,"parent_index":124},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":126,"node_type":43,"src":{"id":127,"line":41,"column":22,"start":1211,"end":1236,"length":26,"parent_index":124},"parameters":[{"id":128,"node_type":44,"src":{"id":129,"line":41,"column":22,"start":1211,"end":1220,"length":10,"parent_index":126},"scope":124,"name":"to","type_name":{"id":130,"node_type":30,"src":{"id":131,"line":41,"column":22,"start":1211,"end":1217,"length":7,"parent_index":128},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":132,"node_type":44,"src":{"id":133,"line":41,"column":34,"start":1223,"end":1236,"length":14,"parent_index":126},"scope":124,"name":"amount","type_name":{"id":134,"node_type":30,"src":{"id":135,"line":41,"column":34,"start":1223,"end":1229,"length":7,"parent_index":132},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":136,"node_type":43,"src":{"id":137,"line":41,"column":68,"start":1257,"end":1260,"length":4,"parent_index":124},"parameters":[{"id":138,"node_type":44,"src":{"id":139,"line":41,"column":68,"start":1257,"end":1260,"length":4,"parent_index":136},"scope":124,"name":"","type_name":{"id":140,"node_type":30,"src":{"id":141,"line":41,"column":68,"start":1257,"end":1260,"length":4,"parent_index":138},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":58,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}},{"id":144,"name":"allowance","node_type":42,"kind":41,"src":{"id":145,"line":50,"column":4,"start":1538,"end":1620,"length":83,"parent_index":58},"body":{"id":162,"node_type":46,"kind":0,"src":{"id":145,"line":50,"column":4,"start":1538,"end":1620,"length":83,"parent_index":144},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":146,"node_type":43,"src":{"id":147,"line":50,"column":23,"start":1557,"end":1586,"length":30,"parent_index":144},"parameters":[{"id":148,"node_type":44,"src":{"id":149,"line":50,"column":23,"start":1557,"end":1569,"length":13,"parent_index":146},"scope":144,"name":"owner","type_name":{"id":150,"node_type":30,"src":{"id":151,"line":50,"column":23,"start":1557,"end":1563,"length":7,"parent_index":148},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":152,"node_type":44,"src":{"id":153,"line":50,"column":38,"start":1572,"end":1586,"length":15,"parent_index":146},"scope":144,"name":"spender","type_name":{"id":154,"node_type":30,"src":{"id":155,"line":50,"column":38,"start":1572,"end":1578,"length":7,"parent_index":152},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":156,"node_type":43,"src":{"id":157,"line":50,"column":78,"start":1612,"end":1618,"length":7,"parent_index":144},"parameters":[{"id":158,"node_type":44,"src":{"id":159,"line":50,"column":78,"start":1612,"end":1618,"length":7,"parent_index":156},"scope":144,"name":"","type_name":{"id":160,"node_type":30,"src":{"id":161,"line":50,"column":78,"start":1612,"end":1618,"length":7,"parent_index":158},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":58,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$","type_string":"function(address,address)"}},{"id":164,"name":"approve","node_type":42,"kind":41,"src":{"id":165,"line":66,"column":4,"start":2274,"end":2347,"length":74,"parent_index":58},"body":{"id":182,"node_type":46,"kind":0,"src":{"id":165,"line":66,"column":4,"start":2274,"end":2347,"length":74,"parent_index":164},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":166,"node_type":43,"src":{"id":167,"line":66,"column":21,"start":2291,"end":2321,"length":31,"parent_index":164},"parameters":[{"id":168,"node_type":44,"src":{"id":169,"line":66,"column":21,"start":2291,"end":2305,"length":15,"parent_index":166},"scope":164,"name":"spender","type_name":{"id":170,"node_type":30,"src":{"id":171,"line":66,"column":21,"start":2291,"end":2297,"length":7,"parent_index":168},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":172,"node_type":44,"src":{"id":173,"line":66,"column":38,"start":2308,"end":2321,"length":14,"parent_index":166},"scope":164,"name":"amount","type_name":{"id":174,"node_type":30,"src":{"id":175,"line":66,"column":38,"start":2308,"end":2314,"length":7,"parent_index":172},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":176,"node_type":43,"src":{"id":177,"line":66,"column":72,"start":2342,"end":2345,"length":4,"parent_index":164},"parameters":[{"id":178,"node_type":44,"src":{"id":179,"line":66,"column":72,"start":2342,"end":2345,"length":4,"parent_index":176},"scope":164,"name":"","type_name":{"id":180,"node_type":30,"src":{"id":181,"line":66,"column":72,"start":2342,"end":2345,"length":4,"parent_index":178},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":58,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}},{"id":184,"name":"transferFrom","node_type":42,"kind":41,"src":{"id":185,"line":77,"column":4,"start":2646,"end":2733,"length":88,"parent_index":58},"body":{"id":206,"node_type":46,"kind":0,"src":{"id":185,"line":77,"column":4,"start":2646,"end":2733,"length":88,"parent_index":184},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":186,"node_type":43,"src":{"id":187,"line":77,"column":26,"start":2668,"end":2707,"length":40,"parent_index":184},"parameters":[{"id":188,"node_type":44,"src":{"id":189,"line":77,"column":26,"start":2668,"end":2679,"length":12,"parent_index":186},"scope":184,"name":"from","type_name":{"id":190,"node_type":30,"src":{"id":191,"line":77,"column":26,"start":2668,"end":2674,"length":7,"parent_index":188},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":192,"node_type":44,"src":{"id":193,"line":77,"column":40,"start":2682,"end":2691,"length":10,"parent_index":186},"scope":184,"name":"to","type_name":{"id":194,"node_type":30,"src":{"id":195,"line":77,"column":40,"start":2682,"end":2688,"length":7,"parent_index":192},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":196,"node_type":44,"src":{"id":197,"line":77,"column":52,"start":2694,"end":2707,"length":14,"parent_index":186},"scope":184,"name":"amount","type_name":{"id":198,"node_type":30,"src":{"id":199,"line":77,"column":52,"start":2694,"end":2700,"length":7,"parent_index":196},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":200,"node_type":43,"src":{"id":201,"line":77,"column":86,"start":2728,"end":2731,"length":4,"parent_index":184},"parameters":[{"id":202,"node_type":44,"src":{"id":203,"line":77,"column":86,"start":2728,"end":2731,"length":4,"parent_index":200},"scope":184,"name":"","type_name":{"id":204,"node_type":30,"src":{"id":205,"line":77,"column":86,"start":2728,"end":2731,"length":4,"parent_index":202},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":58,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}}],"linearized_base_contracts":[58],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":50,"line":9,"column":0,"start":202,"end":2735,"length":2534,"parent_index":48}},{"id":207,"base_contracts":[{"id":219,"node_type":62,"src":{"id":220,"line":93,"column":28,"start":3044,"end":3049,"length":6,"parent_index":218},"base_name":{"id":221,"node_type":52,"src":{"id":222,"line":93,"column":28,"start":3044,"end":3049,"length":6,"parent_index":218},"name":"IERC20","referenced_declaration":49}}],"license":"MIT","exported_symbols":[{"id":207,"name":"IERC20Metadata","absolute_path":"/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"},{"id":49,"name":"IERC20","absolute_path":"IERC20.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","name":"IERC20Metadata","node_type":1,"nodes":[{"id":211,"node_type":10,"src":{"id":212,"line":84,"column":0,"start":2849,"end":2871,"length":23,"parent_index":207},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":213,"node_type":29,"src":{"id":0,"line":86,"column":0,"start":2874,"end":2896,"length":23,"parent_index":207},"absolute_path":"IERC20.sol","file":"../IERC20.sol","scope":207,"unit_alias":"","source_unit":49},{"id":218,"name":"IERC20Metadata","node_type":35,"src":{"id":0,"line":93,"column":0,"start":3016,"end":3420,"length":405,"parent_index":207},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":224,"name":"name","node_type":42,"kind":41,"src":{"id":225,"line":97,"column":4,"start":3116,"end":3169,"length":54,"parent_index":218},"body":{"id":238,"node_type":46,"kind":0,"src":{"id":225,"line":97,"column":4,"start":3116,"end":3169,"length":54,"parent_index":224},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":226,"node_type":43,"src":{"id":227,"line":97,"column":43,"start":3155,"end":3167,"length":13,"parent_index":224},"parameters":[{"id":228,"node_type":44,"src":{"id":229,"line":97,"column":43,"start":3155,"end":3167,"length":13,"parent_index":226},"scope":224,"name":"","type_name":{"id":230,"node_type":30,"src":{"id":231,"line":97,"column":43,"start":3155,"end":3160,"length":6,"parent_index":228},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":232,"node_type":43,"src":{"id":233,"line":97,"column":43,"start":3155,"end":3167,"length":13,"parent_index":224},"parameters":[{"id":234,"node_type":44,"src":{"id":235,"line":97,"column":43,"start":3155,"end":3167,"length":13,"parent_index":232},"scope":224,"name":"","type_name":{"id":236,"node_type":30,"src":{"id":237,"line":97,"column":43,"start":3155,"end":3160,"length":6,"parent_index":234},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"scope":218,"type_description":{"type_identifier":"t_function_$_t_string$","type_string":"function(string)"}},{"id":240,"name":"symbol","node_type":42,"kind":41,"src":{"id":241,"line":102,"column":4,"start":3237,"end":3292,"length":56,"parent_index":218},"body":{"id":254,"node_type":46,"kind":0,"src":{"id":241,"line":102,"column":4,"start":3237,"end":3292,"length":56,"parent_index":240},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":242,"node_type":43,"src":{"id":243,"line":102,"column":45,"start":3278,"end":3290,"length":13,"parent_index":240},"parameters":[{"id":244,"node_type":44,"src":{"id":245,"line":102,"column":45,"start":3278,"end":3290,"length":13,"parent_index":242},"scope":240,"name":"","type_name":{"id":246,"node_type":30,"src":{"id":247,"line":102,"column":45,"start":3278,"end":3283,"length":6,"parent_index":244},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":248,"node_type":43,"src":{"id":249,"line":102,"column":45,"start":3278,"end":3290,"length":13,"parent_index":240},"parameters":[{"id":250,"node_type":44,"src":{"id":251,"line":102,"column":45,"start":3278,"end":3290,"length":13,"parent_index":248},"scope":240,"name":"","type_name":{"id":252,"node_type":30,"src":{"id":253,"line":102,"column":45,"start":3278,"end":3283,"length":6,"parent_index":250},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"scope":218,"type_description":{"type_identifier":"t_function_$_t_string$","type_string":"function(string)"}},{"id":256,"name":"decimals","node_type":42,"kind":41,"src":{"id":257,"line":107,"column":4,"start":3369,"end":3418,"length":50,"parent_index":218},"body":{"id":270,"node_type":46,"kind":0,"src":{"id":257,"line":107,"column":4,"start":3369,"end":3418,"length":50,"parent_index":256},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":258,"node_type":43,"src":{"id":259,"line":107,"column":47,"start":3412,"end":3416,"length":5,"parent_index":256},"parameters":[{"id":260,"node_type":44,"src":{"id":261,"line":107,"column":47,"start":3412,"end":3416,"length":5,"parent_index":258},"scope":256,"name":"","type_name":{"id":262,"node_type":30,"src":{"id":263,"line":107,"column":47,"start":3412,"end":3416,"length":5,"parent_index":260},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint8","type_string":"uint8"}]},"return_parameters":{"id":264,"node_type":43,"src":{"id":265,"line":107,"column":47,"start":3412,"end":3416,"length":5,"parent_index":256},"parameters":[{"id":266,"node_type":44,"src":{"id":267,"line":107,"column":47,"start":3412,"end":3416,"length":5,"parent_index":264},"scope":256,"name":"","type_name":{"id":268,"node_type":30,"src":{"id":269,"line":107,"column":47,"start":3412,"end":3416,"length":5,"parent_index":266},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint8","type_string":"uint8"}]},"scope":218,"type_description":{"type_identifier":"t_function_$_t_uint8$","type_string":"function(uint8)"}}],"linearized_base_contracts":[49,218,213],"base_contracts":[{"id":219,"node_type":62,"src":{"id":220,"line":93,"column":28,"start":3044,"end":3049,"length":6,"parent_index":218},"base_name":{"id":221,"node_type":52,"src":{"id":222,"line":93,"column":28,"start":3044,"end":3049,"length":6,"parent_index":218},"name":"IERC20","referenced_declaration":49}}],"contract_dependencies":[49,213]}],"src":{"id":208,"line":93,"column":0,"start":3016,"end":3420,"length":405,"parent_index":48}},{"id":271,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":271,"name":"Context","absolute_path":"/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/utils/Context.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/utils/Context.sol","name":"Context","node_type":1,"nodes":[{"id":277,"node_type":10,"src":{"id":278,"line":114,"column":0,"start":3510,"end":3532,"length":23,"parent_index":271},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":280,"name":"Context","node_type":35,"src":{"id":0,"line":126,"column":0,"start":4032,"end":4266,"length":235,"parent_index":271},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":282,"name":"_msgSender","node_type":42,"kind":41,"src":{"id":283,"line":127,"column":4,"start":4064,"end":4159,"length":96,"parent_index":280},"body":{"id":296,"node_type":46,"kind":0,"src":{"id":297,"line":127,"column":66,"start":4126,"end":4159,"length":34,"parent_index":282},"implemented":true,"statements":[{"id":298,"node_type":47,"src":{"id":299,"line":128,"column":8,"start":4136,"end":4153,"length":18,"parent_index":282},"function_return_parameters":282,"expression":{"id":300,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":301,"line":128,"column":15,"start":4143,"end":4152,"length":10,"parent_index":296},"expression":{"id":302,"node_type":16,"src":{"id":303,"line":128,"column":15,"start":4143,"end":4145,"length":3,"parent_index":300},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":284,"node_type":43,"src":{"id":285,"line":127,"column":57,"start":4117,"end":4123,"length":7,"parent_index":282},"parameters":[{"id":286,"node_type":44,"src":{"id":287,"line":127,"column":57,"start":4117,"end":4123,"length":7,"parent_index":284},"scope":282,"name":"","type_name":{"id":288,"node_type":30,"src":{"id":289,"line":127,"column":57,"start":4117,"end":4123,"length":7,"parent_index":286},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":290,"node_type":43,"src":{"id":291,"line":127,"column":57,"start":4117,"end":4123,"length":7,"parent_index":282},"parameters":[{"id":292,"node_type":44,"src":{"id":293,"line":127,"column":57,"start":4117,"end":4123,"length":7,"parent_index":290},"scope":282,"name":"","type_name":{"id":294,"node_type":30,"src":{"id":295,"line":127,"column":57,"start":4117,"end":4123,"length":7,"parent_index":292},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":280,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":305,"name":"_msgData","node_type":42,"kind":41,"src":{"id":306,"line":131,"column":4,"start":4166,"end":4264,"length":99,"parent_index":280},"body":{"id":319,"node_type":46,"kind":0,"src":{"id":320,"line":131,"column":71,"start":4233,"end":4264,"length":32,"parent_index":305},"implemented":true,"statements":[{"id":321,"node_type":47,"src":{"id":322,"line":132,"column":8,"start":4243,"end":4258,"length":16,"parent_index":305},"function_return_parameters":305,"expression":{"id":323,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":324,"line":132,"column":15,"start":4250,"end":4257,"length":8,"parent_index":319},"expression":{"id":325,"node_type":16,"src":{"id":326,"line":132,"column":15,"start":4250,"end":4252,"length":3,"parent_index":323},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"data","argument_types":[],"type_description":{"type_identifier":"t_bytes_calldata_ptr","type_string":"bytes calldata"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":307,"node_type":43,"src":{"id":308,"line":131,"column":55,"start":4217,"end":4230,"length":14,"parent_index":305},"parameters":[{"id":309,"node_type":44,"src":{"id":310,"line":131,"column":55,"start":4217,"end":4230,"length":14,"parent_index":307},"scope":305,"name":"","type_name":{"id":311,"node_type":30,"src":{"id":312,"line":131,"column":55,"start":4217,"end":4221,"length":5,"parent_index":309},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":313,"node_type":43,"src":{"id":314,"line":131,"column":55,"start":4217,"end":4230,"length":14,"parent_index":305},"parameters":[{"id":315,"node_type":44,"src":{"id":316,"line":131,"column":55,"start":4217,"end":4230,"length":14,"parent_index":313},"scope":305,"name":"","type_name":{"id":317,"node_type":30,"src":{"id":318,"line":131,"column":55,"start":4217,"end":4221,"length":5,"parent_index":315},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":280,"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}}],"linearized_base_contracts":[280],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":272,"line":126,"column":0,"start":4032,"end":4266,"length":235,"parent_index":48}},{"id":327,"base_contracts":[{"id":342,"node_type":62,"src":{"id":343,"line":174,"column":18,"start":5820,"end":5826,"length":7,"parent_index":341},"base_name":{"id":344,"node_type":52,"src":{"id":345,"line":174,"column":18,"start":5820,"end":5826,"length":7,"parent_index":341},"name":"Context","referenced_declaration":271}},{"id":346,"node_type":62,"src":{"id":347,"line":174,"column":27,"start":5829,"end":5834,"length":6,"parent_index":341},"base_name":{"id":348,"node_type":52,"src":{"id":349,"line":174,"column":27,"start":5829,"end":5834,"length":6,"parent_index":341},"name":"IERC20","referenced_declaration":49}},{"id":350,"node_type":62,"src":{"id":351,"line":174,"column":35,"start":5837,"end":5850,"length":14,"parent_index":341},"base_name":{"id":352,"node_type":52,"src":{"id":353,"line":174,"column":35,"start":5837,"end":5850,"length":14,"parent_index":341},"name":"IERC20Metadata","referenced_declaration":207}}],"license":"MIT","exported_symbols":[{"id":327,"name":"ERC20","absolute_path":"/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/ERC20.sol"},{"id":342,"name":"Context","absolute_path":""},{"id":346,"name":"IERC20","absolute_path":""},{"id":350,"name":"IERC20Metadata","absolute_path":""}],"absolute_path":"/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/ERC20.sol","name":"ERC20","node_type":1,"nodes":[{"id":335,"node_type":10,"src":{"id":336,"line":140,"column":0,"start":4375,"end":4397,"length":23,"parent_index":327},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":341,"name":"ERC20","node_type":35,"src":{"id":0,"line":174,"column":0,"start":5802,"end":17113,"length":11312,"parent_index":327},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":355,"name":"_balances","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":356,"line":175,"column":4,"start":5858,"end":5903,"length":46,"parent_index":341},"scope":341,"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":357,"node_type":0,"src":{"id":358,"line":175,"column":4,"start":5858,"end":5884,"length":27,"parent_index":355},"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"key_type":{"id":359,"node_type":30,"src":{"id":360,"line":175,"column":12,"start":5866,"end":5872,"length":7,"parent_index":357},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0},"value_type":{"id":361,"node_type":30,"src":{"id":362,"line":175,"column":23,"start":5877,"end":5883,"length":7,"parent_index":357},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"referenced_declaration":0}},{"id":364,"name":"_allowances","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":365,"line":177,"column":4,"start":5910,"end":5977,"length":68,"parent_index":341},"scope":341,"type_description":{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":366,"node_type":0,"src":{"id":367,"line":177,"column":4,"start":5910,"end":5956,"length":47,"parent_index":364},"type_description":{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"},"key_type":{"id":368,"node_type":30,"src":{"id":369,"line":177,"column":12,"start":5918,"end":5924,"length":7,"parent_index":366},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0},"value_type":{"id":370,"node_type":53,"src":{"id":371,"line":177,"column":23,"start":5929,"end":5955,"length":27,"parent_index":366},"name":"mapping(address=\u003euint256)","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256","type_string":"mapping(address=\u003euint256)"},"key_type":{"id":373,"node_type":30,"src":{"id":374,"line":177,"column":31,"start":5937,"end":5943,"length":7,"parent_index":366},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0},"value_type":{"id":375,"node_type":30,"src":{"id":376,"line":177,"column":42,"start":5948,"end":5954,"length":7,"parent_index":366},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"referenced_declaration":0},"referenced_declaration":0}},{"id":378,"name":"_totalSupply","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":379,"line":179,"column":4,"start":5984,"end":6012,"length":29,"parent_index":341},"scope":341,"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":380,"node_type":30,"src":{"id":381,"line":179,"column":4,"start":5984,"end":5990,"length":7,"parent_index":378},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0}},{"id":383,"name":"_name","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":384,"line":181,"column":4,"start":6019,"end":6039,"length":21,"parent_index":341},"scope":341,"type_description":{"type_identifier":"t_string","type_string":"string"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":385,"node_type":30,"src":{"id":386,"line":181,"column":4,"start":6019,"end":6024,"length":6,"parent_index":383},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0}},{"id":388,"name":"_symbol","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":389,"line":182,"column":4,"start":6045,"end":6067,"length":23,"parent_index":341},"scope":341,"type_description":{"type_identifier":"t_string","type_string":"string"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":390,"node_type":30,"src":{"id":391,"line":182,"column":4,"start":6045,"end":6050,"length":6,"parent_index":388},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0}},{"id":393,"node_type":42,"src":{"id":394,"line":190,"column":4,"start":6250,"end":6362,"length":113,"parent_index":341},"kind":11,"state_mutability":4,"visibility":1,"implemented":true,"modifiers":[],"parameters":{"id":395,"node_type":43,"src":{"id":396,"line":190,"column":16,"start":6262,"end":6303,"length":42,"parent_index":393},"parameters":[{"id":397,"node_type":44,"src":{"id":398,"line":190,"column":16,"start":6262,"end":6280,"length":19,"parent_index":395},"scope":393,"name":"name_","type_name":{"id":399,"node_type":30,"src":{"id":400,"line":190,"column":16,"start":6262,"end":6267,"length":6,"parent_index":397},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":401,"node_type":44,"src":{"id":402,"line":190,"column":37,"start":6283,"end":6303,"length":21,"parent_index":395},"scope":393,"name":"symbol_","type_name":{"id":403,"node_type":30,"src":{"id":404,"line":190,"column":37,"start":6283,"end":6288,"length":6,"parent_index":401},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":405,"node_type":43,"src":{"id":394,"line":190,"column":4,"start":6250,"end":6362,"length":113,"parent_index":393},"parameters":[],"parameter_types":[]},"scope":341,"body":{"id":406,"node_type":46,"kind":0,"src":{"id":407,"line":190,"column":60,"start":6306,"end":6362,"length":57,"parent_index":393},"implemented":true,"statements":[{"id":408,"node_type":81,"src":{"id":409,"line":191,"column":8,"start":6316,"end":6329,"length":14,"parent_index":406},"expression":{"id":410,"node_type":27,"src":{"id":411,"line":191,"column":8,"start":6316,"end":6328,"length":13,"parent_index":406},"operator":11,"left_expression":{"id":412,"node_type":16,"src":{"id":413,"line":191,"column":8,"start":6316,"end":6320,"length":5,"parent_index":410},"name":"_name","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":383,"is_pure":false},"right_expression":{"id":414,"node_type":16,"src":{"id":415,"line":191,"column":16,"start":6324,"end":6328,"length":5,"parent_index":410},"name":"name_","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":414,"is_pure":false},"type_description":{"type_identifier":"t_string","type_string":"string"}},"type_description":{"type_identifier":"t_string","type_string":"string"}},{"id":416,"node_type":81,"src":{"id":417,"line":192,"column":8,"start":6339,"end":6356,"length":18,"parent_index":406},"expression":{"id":418,"node_type":27,"src":{"id":419,"line":192,"column":8,"start":6339,"end":6355,"length":17,"parent_index":406},"operator":11,"left_expression":{"id":420,"node_type":16,"src":{"id":421,"line":192,"column":8,"start":6339,"end":6345,"length":7,"parent_index":418},"name":"_symbol","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":388,"is_pure":false},"right_expression":{"id":422,"node_type":16,"src":{"id":423,"line":192,"column":18,"start":6349,"end":6355,"length":7,"parent_index":418},"name":"symbol_","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":422,"is_pure":false},"type_description":{"type_identifier":"t_string","type_string":"string"}},"type_description":{"type_identifier":"t_string","type_string":"string"}}]}},{"id":425,"name":"name","node_type":42,"kind":41,"src":{"id":426,"line":198,"column":4,"start":6428,"end":6525,"length":98,"parent_index":341},"body":{"id":441,"node_type":46,"kind":0,"src":{"id":442,"line":198,"column":73,"start":6497,"end":6525,"length":29,"parent_index":425},"implemented":true,"statements":[{"id":443,"node_type":47,"src":{"id":444,"line":199,"column":8,"start":6507,"end":6519,"length":13,"parent_index":425},"function_return_parameters":425,"expression":{"id":445,"node_type":16,"src":{"id":446,"line":199,"column":15,"start":6514,"end":6518,"length":5,"parent_index":441},"name":"_name","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":383,"is_pure":false}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":427,"node_type":63,"name":"name","src":{"id":428,"line":198,"column":40,"start":6464,"end":6471,"length":8,"parent_index":425},"referenced_declaration":224,"type_descriptions":{"type_identifier":"t_function_$_t_string$","type_string":"function(string)"}}],"parameters":{"id":429,"node_type":43,"src":{"id":430,"line":198,"column":58,"start":6482,"end":6494,"length":13,"parent_index":425},"parameters":[{"id":431,"node_type":44,"src":{"id":432,"line":198,"column":58,"start":6482,"end":6494,"length":13,"parent_index":429},"scope":425,"name":"","type_name":{"id":433,"node_type":30,"src":{"id":434,"line":198,"column":58,"start":6482,"end":6487,"length":6,"parent_index":431},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":435,"node_type":43,"src":{"id":436,"line":198,"column":58,"start":6482,"end":6494,"length":13,"parent_index":425},"parameters":[{"id":437,"node_type":44,"src":{"id":438,"line":198,"column":58,"start":6482,"end":6494,"length":13,"parent_index":435},"scope":425,"name":"","type_name":{"id":439,"node_type":30,"src":{"id":440,"line":198,"column":58,"start":6482,"end":6487,"length":6,"parent_index":437},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_string$","type_string":"function(string)"}},{"id":448,"name":"symbol","node_type":42,"kind":41,"src":{"id":449,"line":206,"column":4,"start":6639,"end":6740,"length":102,"parent_index":341},"body":{"id":464,"node_type":46,"kind":0,"src":{"id":465,"line":206,"column":75,"start":6710,"end":6740,"length":31,"parent_index":448},"implemented":true,"statements":[{"id":466,"node_type":47,"src":{"id":467,"line":207,"column":8,"start":6720,"end":6734,"length":15,"parent_index":448},"function_return_parameters":448,"expression":{"id":468,"node_type":16,"src":{"id":469,"line":207,"column":15,"start":6727,"end":6733,"length":7,"parent_index":464},"name":"_symbol","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":388,"is_pure":false}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":450,"node_type":63,"name":"symbol","src":{"id":451,"line":206,"column":42,"start":6677,"end":6684,"length":8,"parent_index":448},"referenced_declaration":240,"type_descriptions":{"type_identifier":"t_function_$_t_string$","type_string":"function(string)"}}],"parameters":{"id":452,"node_type":43,"src":{"id":453,"line":206,"column":60,"start":6695,"end":6707,"length":13,"parent_index":448},"parameters":[{"id":454,"node_type":44,"src":{"id":455,"line":206,"column":60,"start":6695,"end":6707,"length":13,"parent_index":452},"scope":448,"name":"","type_name":{"id":456,"node_type":30,"src":{"id":457,"line":206,"column":60,"start":6695,"end":6700,"length":6,"parent_index":454},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":458,"node_type":43,"src":{"id":459,"line":206,"column":60,"start":6695,"end":6707,"length":13,"parent_index":448},"parameters":[{"id":460,"node_type":44,"src":{"id":461,"line":206,"column":60,"start":6695,"end":6707,"length":13,"parent_index":458},"scope":448,"name":"","type_name":{"id":462,"node_type":30,"src":{"id":463,"line":206,"column":60,"start":6695,"end":6700,"length":6,"parent_index":460},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_string$","type_string":"function(string)"}},{"id":471,"name":"decimals","node_type":42,"kind":41,"src":{"id":472,"line":223,"column":4,"start":7374,"end":7464,"length":91,"parent_index":341},"body":{"id":487,"node_type":46,"kind":0,"src":{"id":488,"line":223,"column":69,"start":7439,"end":7464,"length":26,"parent_index":471},"implemented":true,"statements":[{"id":489,"node_type":47,"src":{"id":490,"line":224,"column":8,"start":7449,"end":7458,"length":10,"parent_index":471},"function_return_parameters":471,"expression":{"id":491,"node_type":17,"kind":49,"value":"18","hex_value":"3138","src":{"id":492,"line":224,"column":15,"start":7456,"end":7457,"length":2,"parent_index":487},"type_description":{"type_identifier":"t_rational_18_by_1","type_string":"int_const 18"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":473,"node_type":63,"name":"decimals","src":{"id":474,"line":223,"column":44,"start":7414,"end":7421,"length":8,"parent_index":471},"referenced_declaration":256,"type_descriptions":{"type_identifier":"t_function_$_t_uint8$","type_string":"function(uint8)"}}],"parameters":{"id":475,"node_type":43,"src":{"id":476,"line":223,"column":62,"start":7432,"end":7436,"length":5,"parent_index":471},"parameters":[{"id":477,"node_type":44,"src":{"id":478,"line":223,"column":62,"start":7432,"end":7436,"length":5,"parent_index":475},"scope":471,"name":"","type_name":{"id":479,"node_type":30,"src":{"id":480,"line":223,"column":62,"start":7432,"end":7436,"length":5,"parent_index":477},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint8","type_string":"uint8"}]},"return_parameters":{"id":481,"node_type":43,"src":{"id":482,"line":223,"column":62,"start":7432,"end":7436,"length":5,"parent_index":471},"parameters":[{"id":483,"node_type":44,"src":{"id":484,"line":223,"column":62,"start":7432,"end":7436,"length":5,"parent_index":481},"scope":471,"name":"","type_name":{"id":485,"node_type":30,"src":{"id":486,"line":223,"column":62,"start":7432,"end":7436,"length":5,"parent_index":483},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint8","type_string":"uint8"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_uint8$","type_string":"function(uint8)"}},{"id":494,"name":"totalSupply","node_type":42,"kind":41,"src":{"id":495,"line":230,"column":4,"start":7525,"end":7630,"length":106,"parent_index":341},"body":{"id":510,"node_type":46,"kind":0,"src":{"id":511,"line":230,"column":74,"start":7595,"end":7630,"length":36,"parent_index":494},"implemented":true,"statements":[{"id":512,"node_type":47,"src":{"id":513,"line":231,"column":8,"start":7605,"end":7624,"length":20,"parent_index":494},"function_return_parameters":494,"expression":{"id":514,"node_type":16,"src":{"id":515,"line":231,"column":15,"start":7612,"end":7623,"length":12,"parent_index":510},"name":"_totalSupply","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":378,"is_pure":false}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":496,"node_type":63,"name":"totalSupply","src":{"id":497,"line":230,"column":47,"start":7568,"end":7575,"length":8,"parent_index":494},"referenced_declaration":92,"type_descriptions":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}}],"parameters":{"id":498,"node_type":43,"src":{"id":499,"line":230,"column":65,"start":7586,"end":7592,"length":7,"parent_index":494},"parameters":[{"id":500,"node_type":44,"src":{"id":501,"line":230,"column":65,"start":7586,"end":7592,"length":7,"parent_index":498},"scope":494,"name":"","type_name":{"id":502,"node_type":30,"src":{"id":503,"line":230,"column":65,"start":7586,"end":7592,"length":7,"parent_index":500},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":504,"node_type":43,"src":{"id":505,"line":230,"column":65,"start":7586,"end":7592,"length":7,"parent_index":494},"parameters":[{"id":506,"node_type":44,"src":{"id":507,"line":230,"column":65,"start":7586,"end":7592,"length":7,"parent_index":504},"scope":494,"name":"","type_name":{"id":508,"node_type":30,"src":{"id":509,"line":230,"column":65,"start":7586,"end":7592,"length":7,"parent_index":506},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},{"id":517,"name":"balanceOf","node_type":42,"kind":41,"src":{"id":518,"line":237,"column":4,"start":7689,"end":7813,"length":125,"parent_index":341},"body":{"id":533,"node_type":46,"kind":0,"src":{"id":534,"line":237,"column":87,"start":7772,"end":7813,"length":42,"parent_index":517},"implemented":true,"statements":[{"id":535,"node_type":47,"src":{"id":536,"line":238,"column":8,"start":7782,"end":7807,"length":26,"parent_index":517},"function_return_parameters":517,"expression":{"id":537,"node_type":22,"src":{"id":538,"line":238,"column":15,"start":7789,"end":7806,"length":18,"parent_index":533},"index_expression":{"id":539,"node_type":16,"src":{"id":540,"line":238,"column":15,"start":7789,"end":7797,"length":9,"parent_index":537},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":355,"is_pure":false},"base_expression":{"id":541,"node_type":16,"src":{"id":542,"line":238,"column":25,"start":7799,"end":7805,"length":7,"parent_index":537},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":541,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":519,"node_type":63,"name":"balanceOf","src":{"id":520,"line":237,"column":60,"start":7745,"end":7752,"length":8,"parent_index":517},"referenced_declaration":108,"type_descriptions":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}],"parameters":{"id":521,"node_type":43,"src":{"id":522,"line":237,"column":23,"start":7708,"end":7722,"length":15,"parent_index":517},"parameters":[{"id":523,"node_type":44,"src":{"id":524,"line":237,"column":23,"start":7708,"end":7722,"length":15,"parent_index":521},"scope":517,"name":"account","type_name":{"id":525,"node_type":30,"src":{"id":526,"line":237,"column":23,"start":7708,"end":7714,"length":7,"parent_index":523},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":527,"node_type":43,"src":{"id":528,"line":237,"column":78,"start":7763,"end":7769,"length":7,"parent_index":517},"parameters":[{"id":529,"node_type":44,"src":{"id":530,"line":237,"column":78,"start":7763,"end":7769,"length":7,"parent_index":527},"scope":517,"name":"","type_name":{"id":531,"node_type":30,"src":{"id":532,"line":237,"column":78,"start":7763,"end":7769,"length":7,"parent_index":529},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":544,"name":"transfer","node_type":42,"kind":41,"src":{"id":545,"line":249,"column":4,"start":8010,"end":8198,"length":189,"parent_index":341},"body":{"id":564,"node_type":46,"kind":0,"src":{"id":565,"line":249,"column":89,"start":8095,"end":8198,"length":104,"parent_index":544},"implemented":true,"statements":[{"id":566,"node_type":44,"src":{"id":567,"line":250,"column":8,"start":8105,"end":8133,"length":29,"parent_index":564},"assignments":[568],"declarations":[{"is_constant":false,"id":568,"state_mutability":1,"name":"owner","node_type":44,"scope":564,"src":{"id":569,"line":250,"column":8,"start":8105,"end":8117,"length":13,"parent_index":566},"is_state_variable":false,"storage_location":1,"type_name":{"id":570,"node_type":30,"src":{"id":571,"line":250,"column":8,"start":8105,"end":8111,"length":7,"parent_index":568},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":572,"node_type":24,"kind":24,"src":{"id":573,"line":250,"column":24,"start":8121,"end":8132,"length":12,"parent_index":566},"argument_types":[],"arguments":[],"expression":{"id":574,"node_type":16,"src":{"id":575,"line":250,"column":24,"start":8121,"end":8130,"length":10,"parent_index":572},"name":"_msgSender","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}},{"id":576,"node_type":24,"kind":24,"src":{"id":577,"line":251,"column":8,"start":8143,"end":8170,"length":28,"parent_index":564},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":580,"node_type":16,"src":{"id":581,"line":251,"column":18,"start":8153,"end":8157,"length":5,"parent_index":576},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":566,"is_pure":false},{"id":582,"node_type":16,"src":{"id":583,"line":251,"column":25,"start":8160,"end":8161,"length":2,"parent_index":576},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":582,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":584,"node_type":16,"src":{"id":585,"line":251,"column":29,"start":8164,"end":8169,"length":6,"parent_index":576},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":584,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":578,"node_type":16,"src":{"id":579,"line":251,"column":8,"start":8143,"end":8151,"length":9,"parent_index":576},"name":"_transfer","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":586,"node_type":47,"src":{"id":587,"line":252,"column":8,"start":8181,"end":8192,"length":12,"parent_index":544},"function_return_parameters":544,"expression":{"id":588,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":589,"line":252,"column":15,"start":8188,"end":8191,"length":4,"parent_index":564},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[{"id":546,"node_type":63,"name":"transfer","src":{"id":547,"line":249,"column":65,"start":8071,"end":8078,"length":8,"parent_index":544},"referenced_declaration":124,"type_descriptions":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}}],"parameters":{"id":548,"node_type":43,"src":{"id":549,"line":249,"column":22,"start":8028,"end":8053,"length":26,"parent_index":544},"parameters":[{"id":550,"node_type":44,"src":{"id":551,"line":249,"column":22,"start":8028,"end":8037,"length":10,"parent_index":548},"scope":544,"name":"to","type_name":{"id":552,"node_type":30,"src":{"id":553,"line":249,"column":22,"start":8028,"end":8034,"length":7,"parent_index":550},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":554,"node_type":44,"src":{"id":555,"line":249,"column":34,"start":8040,"end":8053,"length":14,"parent_index":548},"scope":544,"name":"amount","type_name":{"id":556,"node_type":30,"src":{"id":557,"line":249,"column":34,"start":8040,"end":8046,"length":7,"parent_index":554},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":558,"node_type":43,"src":{"id":559,"line":249,"column":83,"start":8089,"end":8092,"length":4,"parent_index":544},"parameters":[{"id":560,"node_type":44,"src":{"id":561,"line":249,"column":83,"start":8089,"end":8092,"length":4,"parent_index":558},"scope":544,"name":"","type_name":{"id":562,"node_type":30,"src":{"id":563,"line":249,"column":83,"start":8089,"end":8092,"length":4,"parent_index":560},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}},{"id":591,"name":"allowance","node_type":42,"kind":41,"src":{"id":592,"line":258,"column":4,"start":8257,"end":8405,"length":149,"parent_index":341},"body":{"id":611,"node_type":46,"kind":0,"src":{"id":612,"line":258,"column":102,"start":8355,"end":8405,"length":51,"parent_index":591},"implemented":true,"statements":[{"id":613,"node_type":47,"src":{"id":614,"line":259,"column":8,"start":8365,"end":8399,"length":35,"parent_index":591},"function_return_parameters":591,"expression":{"id":615,"node_type":22,"src":{"id":616,"line":259,"column":15,"start":8372,"end":8398,"length":27,"parent_index":611},"index_expression":{"id":617,"node_type":22,"src":{"id":618,"line":259,"column":15,"start":8372,"end":8389,"length":18,"parent_index":615},"index_expression":{"id":619,"node_type":16,"src":{"id":620,"line":259,"column":15,"start":8372,"end":8382,"length":11,"parent_index":617},"name":"_allowances","type_description":{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"},"overloaded_declarations":[],"referenced_declaration":364,"is_pure":false},"base_expression":{"id":621,"node_type":16,"src":{"id":622,"line":259,"column":27,"start":8384,"end":8388,"length":5,"parent_index":617},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":621,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003emapping(address=\u003euint256)):address]"}},"base_expression":{"id":623,"node_type":16,"src":{"id":624,"line":259,"column":34,"start":8391,"end":8397,"length":7,"parent_index":615},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":623,"is_pure":false},"type_descriptions":[{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003emapping(address=\u003euint256)):address]"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$","type_string":"index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]"}}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":593,"node_type":63,"name":"allowance","src":{"id":594,"line":258,"column":75,"start":8328,"end":8335,"length":8,"parent_index":591},"referenced_declaration":144,"type_descriptions":{"type_identifier":"t_function_$_t_address$_t_address$","type_string":"function(address,address)"}}],"parameters":{"id":595,"node_type":43,"src":{"id":596,"line":258,"column":23,"start":8276,"end":8305,"length":30,"parent_index":591},"parameters":[{"id":597,"node_type":44,"src":{"id":598,"line":258,"column":23,"start":8276,"end":8288,"length":13,"parent_index":595},"scope":591,"name":"owner","type_name":{"id":599,"node_type":30,"src":{"id":600,"line":258,"column":23,"start":8276,"end":8282,"length":7,"parent_index":597},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":601,"node_type":44,"src":{"id":602,"line":258,"column":38,"start":8291,"end":8305,"length":15,"parent_index":595},"scope":591,"name":"spender","type_name":{"id":603,"node_type":30,"src":{"id":604,"line":258,"column":38,"start":8291,"end":8297,"length":7,"parent_index":601},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":605,"node_type":43,"src":{"id":606,"line":258,"column":93,"start":8346,"end":8352,"length":7,"parent_index":591},"parameters":[{"id":607,"node_type":44,"src":{"id":608,"line":258,"column":93,"start":8346,"end":8352,"length":7,"parent_index":605},"scope":591,"name":"","type_name":{"id":609,"node_type":30,"src":{"id":610,"line":258,"column":93,"start":8346,"end":8352,"length":7,"parent_index":607},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$","type_string":"function(address,address)"}},{"id":626,"name":"approve","node_type":42,"kind":41,"src":{"id":627,"line":272,"column":4,"start":8714,"end":8910,"length":197,"parent_index":341},"body":{"id":646,"node_type":46,"kind":0,"src":{"id":647,"line":272,"column":93,"start":8803,"end":8910,"length":108,"parent_index":626},"implemented":true,"statements":[{"id":648,"node_type":44,"src":{"id":649,"line":273,"column":8,"start":8813,"end":8841,"length":29,"parent_index":646},"assignments":[650],"declarations":[{"is_constant":false,"id":650,"state_mutability":1,"name":"owner","node_type":44,"scope":646,"src":{"id":651,"line":273,"column":8,"start":8813,"end":8825,"length":13,"parent_index":648},"is_state_variable":false,"storage_location":1,"type_name":{"id":652,"node_type":30,"src":{"id":653,"line":273,"column":8,"start":8813,"end":8819,"length":7,"parent_index":650},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":654,"node_type":24,"kind":24,"src":{"id":655,"line":273,"column":24,"start":8829,"end":8840,"length":12,"parent_index":648},"argument_types":[],"arguments":[],"expression":{"id":656,"node_type":16,"src":{"id":657,"line":273,"column":24,"start":8829,"end":8838,"length":10,"parent_index":654},"name":"_msgSender","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}},{"id":658,"node_type":24,"kind":24,"src":{"id":659,"line":274,"column":8,"start":8851,"end":8882,"length":32,"parent_index":646},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":662,"node_type":16,"src":{"id":663,"line":274,"column":17,"start":8860,"end":8864,"length":5,"parent_index":658},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":648,"is_pure":false},{"id":664,"node_type":16,"src":{"id":665,"line":274,"column":24,"start":8867,"end":8873,"length":7,"parent_index":658},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":664,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":666,"node_type":16,"src":{"id":667,"line":274,"column":33,"start":8876,"end":8881,"length":6,"parent_index":658},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":666,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":660,"node_type":16,"src":{"id":661,"line":274,"column":8,"start":8851,"end":8858,"length":8,"parent_index":658},"name":"_approve","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":668,"node_type":47,"src":{"id":669,"line":275,"column":8,"start":8893,"end":8904,"length":12,"parent_index":626},"function_return_parameters":626,"expression":{"id":670,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":671,"line":275,"column":15,"start":8900,"end":8903,"length":4,"parent_index":646},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[{"id":628,"node_type":63,"name":"approve","src":{"id":629,"line":272,"column":69,"start":8779,"end":8786,"length":8,"parent_index":626},"referenced_declaration":164,"type_descriptions":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}}],"parameters":{"id":630,"node_type":43,"src":{"id":631,"line":272,"column":21,"start":8731,"end":8761,"length":31,"parent_index":626},"parameters":[{"id":632,"node_type":44,"src":{"id":633,"line":272,"column":21,"start":8731,"end":8745,"length":15,"parent_index":630},"scope":626,"name":"spender","type_name":{"id":634,"node_type":30,"src":{"id":635,"line":272,"column":21,"start":8731,"end":8737,"length":7,"parent_index":632},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":636,"node_type":44,"src":{"id":637,"line":272,"column":38,"start":8748,"end":8761,"length":14,"parent_index":630},"scope":626,"name":"amount","type_name":{"id":638,"node_type":30,"src":{"id":639,"line":272,"column":38,"start":8748,"end":8754,"length":7,"parent_index":636},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":640,"node_type":43,"src":{"id":641,"line":272,"column":87,"start":8797,"end":8800,"length":4,"parent_index":626},"parameters":[{"id":642,"node_type":44,"src":{"id":643,"line":272,"column":87,"start":8797,"end":8800,"length":4,"parent_index":640},"scope":626,"name":"","type_name":{"id":644,"node_type":30,"src":{"id":645,"line":272,"column":87,"start":8797,"end":8800,"length":4,"parent_index":642},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}},{"id":673,"name":"transferFrom","node_type":42,"kind":41,"src":{"id":674,"line":294,"column":4,"start":9473,"end":9728,"length":256,"parent_index":341},"body":{"id":697,"node_type":46,"kind":0,"src":{"id":698,"line":294,"column":107,"start":9576,"end":9728,"length":153,"parent_index":673},"implemented":true,"statements":[{"id":699,"node_type":44,"src":{"id":700,"line":295,"column":8,"start":9586,"end":9616,"length":31,"parent_index":697},"assignments":[701],"declarations":[{"is_constant":false,"id":701,"state_mutability":1,"name":"spender","node_type":44,"scope":697,"src":{"id":702,"line":295,"column":8,"start":9586,"end":9600,"length":15,"parent_index":699},"is_state_variable":false,"storage_location":1,"type_name":{"id":703,"node_type":30,"src":{"id":704,"line":295,"column":8,"start":9586,"end":9592,"length":7,"parent_index":701},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":705,"node_type":24,"kind":24,"src":{"id":706,"line":295,"column":26,"start":9604,"end":9615,"length":12,"parent_index":699},"argument_types":[],"arguments":[],"expression":{"id":707,"node_type":16,"src":{"id":708,"line":295,"column":26,"start":9604,"end":9613,"length":10,"parent_index":705},"name":"_msgSender","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}},{"id":709,"node_type":24,"kind":24,"src":{"id":710,"line":296,"column":8,"start":9626,"end":9663,"length":38,"parent_index":697},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":713,"node_type":16,"src":{"id":714,"line":296,"column":24,"start":9642,"end":9645,"length":4,"parent_index":709},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":713,"is_pure":false},{"id":715,"node_type":16,"src":{"id":716,"line":296,"column":30,"start":9648,"end":9654,"length":7,"parent_index":709},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":699,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":717,"node_type":16,"src":{"id":718,"line":296,"column":39,"start":9657,"end":9662,"length":6,"parent_index":709},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":717,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":711,"node_type":16,"src":{"id":712,"line":296,"column":8,"start":9626,"end":9640,"length":15,"parent_index":709},"name":"_spendAllowance","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":719,"node_type":24,"kind":24,"src":{"id":720,"line":297,"column":8,"start":9674,"end":9700,"length":27,"parent_index":697},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":723,"node_type":16,"src":{"id":724,"line":297,"column":18,"start":9684,"end":9687,"length":4,"parent_index":719},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":723,"is_pure":false},{"id":725,"node_type":16,"src":{"id":726,"line":297,"column":24,"start":9690,"end":9691,"length":2,"parent_index":719},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":725,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":727,"node_type":16,"src":{"id":728,"line":297,"column":28,"start":9694,"end":9699,"length":6,"parent_index":719},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":727,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":721,"node_type":16,"src":{"id":722,"line":297,"column":8,"start":9674,"end":9682,"length":9,"parent_index":719},"name":"_transfer","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":729,"node_type":47,"src":{"id":730,"line":298,"column":8,"start":9711,"end":9722,"length":12,"parent_index":673},"function_return_parameters":673,"expression":{"id":731,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":732,"line":298,"column":15,"start":9718,"end":9721,"length":4,"parent_index":697},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[{"id":675,"node_type":63,"name":"transferFrom","src":{"id":676,"line":294,"column":83,"start":9552,"end":9559,"length":8,"parent_index":673},"referenced_declaration":184,"type_descriptions":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}}],"parameters":{"id":677,"node_type":43,"src":{"id":678,"line":294,"column":26,"start":9495,"end":9534,"length":40,"parent_index":673},"parameters":[{"id":679,"node_type":44,"src":{"id":680,"line":294,"column":26,"start":9495,"end":9506,"length":12,"parent_index":677},"scope":673,"name":"from","type_name":{"id":681,"node_type":30,"src":{"id":682,"line":294,"column":26,"start":9495,"end":9501,"length":7,"parent_index":679},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":683,"node_type":44,"src":{"id":684,"line":294,"column":40,"start":9509,"end":9518,"length":10,"parent_index":677},"scope":673,"name":"to","type_name":{"id":685,"node_type":30,"src":{"id":686,"line":294,"column":40,"start":9509,"end":9515,"length":7,"parent_index":683},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":687,"node_type":44,"src":{"id":688,"line":294,"column":52,"start":9521,"end":9534,"length":14,"parent_index":677},"scope":673,"name":"amount","type_name":{"id":689,"node_type":30,"src":{"id":690,"line":294,"column":52,"start":9521,"end":9527,"length":7,"parent_index":687},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":691,"node_type":43,"src":{"id":692,"line":294,"column":101,"start":9570,"end":9573,"length":4,"parent_index":673},"parameters":[{"id":693,"node_type":44,"src":{"id":694,"line":294,"column":101,"start":9570,"end":9573,"length":4,"parent_index":691},"scope":673,"name":"","type_name":{"id":695,"node_type":30,"src":{"id":696,"line":294,"column":101,"start":9570,"end":9573,"length":4,"parent_index":693},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":734,"name":"increaseAllowance","node_type":42,"kind":41,"src":{"id":735,"line":313,"column":4,"start":10124,"end":10357,"length":234,"parent_index":341},"body":{"id":752,"node_type":46,"kind":0,"src":{"id":753,"line":313,"column":98,"start":10218,"end":10357,"length":140,"parent_index":734},"implemented":true,"statements":[{"id":754,"node_type":44,"src":{"id":755,"line":314,"column":8,"start":10228,"end":10256,"length":29,"parent_index":752},"assignments":[756],"declarations":[{"is_constant":false,"id":756,"state_mutability":1,"name":"owner","node_type":44,"scope":752,"src":{"id":757,"line":314,"column":8,"start":10228,"end":10240,"length":13,"parent_index":754},"is_state_variable":false,"storage_location":1,"type_name":{"id":758,"node_type":30,"src":{"id":759,"line":314,"column":8,"start":10228,"end":10234,"length":7,"parent_index":756},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":760,"node_type":24,"kind":24,"src":{"id":761,"line":314,"column":24,"start":10244,"end":10255,"length":12,"parent_index":754},"argument_types":[],"arguments":[],"expression":{"id":762,"node_type":16,"src":{"id":763,"line":314,"column":24,"start":10244,"end":10253,"length":10,"parent_index":760},"name":"_msgSender","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}},{"id":764,"node_type":24,"kind":24,"src":{"id":765,"line":315,"column":8,"start":10266,"end":10329,"length":64,"parent_index":752},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_address$_t_address$","type_string":"function(address,address)"}],"arguments":[{"id":768,"node_type":16,"src":{"id":769,"line":315,"column":17,"start":10275,"end":10279,"length":5,"parent_index":764},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":754,"is_pure":false},{"id":770,"node_type":16,"src":{"id":771,"line":315,"column":24,"start":10282,"end":10288,"length":7,"parent_index":764},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":770,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":772,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":773,"line":315,"column":33,"start":10291,"end":10328,"length":38,"parent_index":764},"operator":1,"left_expression":{"id":774,"node_type":24,"kind":24,"src":{"id":775,"line":315,"column":33,"start":10291,"end":10315,"length":25,"parent_index":772},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":778,"node_type":16,"src":{"id":779,"line":315,"column":43,"start":10301,"end":10305,"length":5,"parent_index":774},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":754,"is_pure":false},{"id":780,"node_type":16,"src":{"id":781,"line":315,"column":50,"start":10308,"end":10314,"length":7,"parent_index":774},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":780,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":776,"node_type":16,"src":{"id":777,"line":315,"column":33,"start":10291,"end":10299,"length":9,"parent_index":774},"name":"allowance","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$","type_string":"function(address,address)"}},"right_expression":{"id":782,"node_type":16,"src":{"id":783,"line":315,"column":61,"start":10319,"end":10328,"length":10,"parent_index":772},"name":"addedValue","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":782,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$","type_string":"function(address,address)"}}],"expression":{"id":766,"node_type":16,"src":{"id":767,"line":315,"column":8,"start":10266,"end":10273,"length":8,"parent_index":764},"name":"_approve","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_function_$_t_address$_t_address$","type_string":"function(address,address,function(address,address))"}},{"id":784,"node_type":47,"src":{"id":785,"line":316,"column":8,"start":10340,"end":10351,"length":12,"parent_index":734},"function_return_parameters":734,"expression":{"id":786,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":787,"line":316,"column":15,"start":10347,"end":10350,"length":4,"parent_index":752},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":736,"node_type":43,"src":{"id":737,"line":313,"column":31,"start":10151,"end":10185,"length":35,"parent_index":734},"parameters":[{"id":738,"node_type":44,"src":{"id":739,"line":313,"column":31,"start":10151,"end":10165,"length":15,"parent_index":736},"scope":734,"name":"spender","type_name":{"id":740,"node_type":30,"src":{"id":741,"line":313,"column":31,"start":10151,"end":10157,"length":7,"parent_index":738},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":742,"node_type":44,"src":{"id":743,"line":313,"column":48,"start":10168,"end":10185,"length":18,"parent_index":736},"scope":734,"name":"addedValue","type_name":{"id":744,"node_type":30,"src":{"id":745,"line":313,"column":48,"start":10168,"end":10174,"length":7,"parent_index":742},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":746,"node_type":43,"src":{"id":747,"line":313,"column":92,"start":10212,"end":10215,"length":4,"parent_index":734},"parameters":[{"id":748,"node_type":44,"src":{"id":749,"line":313,"column":92,"start":10212,"end":10215,"length":4,"parent_index":746},"scope":734,"name":"","type_name":{"id":750,"node_type":30,"src":{"id":751,"line":313,"column":92,"start":10212,"end":10215,"length":4,"parent_index":748},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}},{"id":789,"name":"decreaseAllowance","node_type":42,"kind":41,"src":{"id":790,"line":333,"column":4,"start":10845,"end":11271,"length":427,"parent_index":341},"body":{"id":807,"node_type":46,"kind":0,"src":{"id":808,"line":333,"column":103,"start":10944,"end":11271,"length":328,"parent_index":789},"implemented":true,"statements":[{"id":809,"node_type":44,"src":{"id":810,"line":334,"column":8,"start":10954,"end":10982,"length":29,"parent_index":807},"assignments":[811],"declarations":[{"is_constant":false,"id":811,"state_mutability":1,"name":"owner","node_type":44,"scope":807,"src":{"id":812,"line":334,"column":8,"start":10954,"end":10966,"length":13,"parent_index":809},"is_state_variable":false,"storage_location":1,"type_name":{"id":813,"node_type":30,"src":{"id":814,"line":334,"column":8,"start":10954,"end":10960,"length":7,"parent_index":811},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":815,"node_type":24,"kind":24,"src":{"id":816,"line":334,"column":24,"start":10970,"end":10981,"length":12,"parent_index":809},"argument_types":[],"arguments":[],"expression":{"id":817,"node_type":16,"src":{"id":818,"line":334,"column":24,"start":10970,"end":10979,"length":10,"parent_index":815},"name":"_msgSender","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}},{"id":819,"node_type":44,"src":{"id":820,"line":335,"column":8,"start":10992,"end":11044,"length":53,"parent_index":807},"assignments":[821],"declarations":[{"is_constant":false,"id":821,"state_mutability":1,"name":"currentAllowance","node_type":44,"scope":807,"src":{"id":822,"line":335,"column":8,"start":10992,"end":11015,"length":24,"parent_index":819},"is_state_variable":false,"storage_location":1,"type_name":{"id":823,"node_type":30,"src":{"id":824,"line":335,"column":8,"start":10992,"end":10998,"length":7,"parent_index":821},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":825,"node_type":24,"kind":24,"src":{"id":826,"line":335,"column":35,"start":11019,"end":11043,"length":25,"parent_index":819},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":829,"node_type":16,"src":{"id":830,"line":335,"column":45,"start":11029,"end":11033,"length":5,"parent_index":825},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":809,"is_pure":false},{"id":831,"node_type":16,"src":{"id":832,"line":335,"column":52,"start":11036,"end":11042,"length":7,"parent_index":825},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":831,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":827,"node_type":16,"src":{"id":828,"line":335,"column":35,"start":11019,"end":11027,"length":9,"parent_index":825},"name":"allowance","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$","type_string":"function(address,address)"}}},{"id":833,"node_type":24,"kind":24,"src":{"id":834,"line":336,"column":8,"start":11054,"end":11138,"length":85,"parent_index":807},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: decreased allowance below zero\""}],"arguments":[{"id":837,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":838,"line":336,"column":16,"start":11062,"end":11096,"length":35,"parent_index":833},"operator":8,"left_expression":{"id":839,"node_type":16,"src":{"id":840,"line":336,"column":16,"start":11062,"end":11077,"length":16,"parent_index":837},"name":"currentAllowance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":819,"is_pure":false},"right_expression":{"id":841,"node_type":16,"src":{"id":842,"line":336,"column":36,"start":11082,"end":11096,"length":15,"parent_index":837},"name":"subtractedValue","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":841,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":843,"node_type":17,"kind":50,"value":"ERC20: decreased allowance below zero","hex_value":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","src":{"id":844,"line":336,"column":53,"start":11099,"end":11137,"length":39,"parent_index":833},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: decreased allowance below zero\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":835,"node_type":16,"src":{"id":836,"line":336,"column":8,"start":11054,"end":11060,"length":7,"parent_index":833},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":845,"node_type":47,"src":{"id":846,"line":341,"column":8,"start":11254,"end":11265,"length":12,"parent_index":789},"function_return_parameters":789,"expression":{"id":847,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":848,"line":341,"column":15,"start":11261,"end":11264,"length":4,"parent_index":807},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}},{"id":849,"node_type":59,"kind":0,"src":{"id":850,"line":337,"column":8,"start":11149,"end":11243,"length":95,"parent_index":341},"implemented":false,"statements":[{"id":851,"node_type":24,"kind":24,"src":{"id":852,"line":338,"column":12,"start":11173,"end":11232,"length":60,"parent_index":849},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":855,"node_type":16,"src":{"id":856,"line":338,"column":21,"start":11182,"end":11186,"length":5,"parent_index":851},"name":"owner","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":857,"node_type":16,"src":{"id":858,"line":338,"column":28,"start":11189,"end":11195,"length":7,"parent_index":851},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":857,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]},{"id":859,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":860,"line":338,"column":37,"start":11198,"end":11231,"length":34,"parent_index":851},"operator":2,"left_expression":{"id":861,"node_type":16,"src":{"id":862,"line":338,"column":37,"start":11198,"end":11213,"length":16,"parent_index":859},"name":"currentAllowance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":819,"is_pure":false},"right_expression":{"id":863,"node_type":16,"src":{"id":864,"line":338,"column":56,"start":11217,"end":11231,"length":15,"parent_index":859},"name":"subtractedValue","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":863,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}],"expression":{"id":853,"node_type":16,"src":{"id":854,"line":338,"column":12,"start":11173,"end":11180,"length":8,"parent_index":851},"name":"_approve","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_uint256$","type_string":"function(function(),address,uint256)"}}]}]},"implemented":false,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":791,"node_type":43,"src":{"id":792,"line":333,"column":31,"start":10872,"end":10911,"length":40,"parent_index":789},"parameters":[{"id":793,"node_type":44,"src":{"id":794,"line":333,"column":31,"start":10872,"end":10886,"length":15,"parent_index":791},"scope":789,"name":"spender","type_name":{"id":795,"node_type":30,"src":{"id":796,"line":333,"column":31,"start":10872,"end":10878,"length":7,"parent_index":793},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":797,"node_type":44,"src":{"id":798,"line":333,"column":48,"start":10889,"end":10911,"length":23,"parent_index":791},"scope":789,"name":"subtractedValue","type_name":{"id":799,"node_type":30,"src":{"id":800,"line":333,"column":48,"start":10889,"end":10895,"length":7,"parent_index":797},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":801,"node_type":43,"src":{"id":802,"line":333,"column":97,"start":10938,"end":10941,"length":4,"parent_index":789},"parameters":[{"id":803,"node_type":44,"src":{"id":804,"line":333,"column":97,"start":10938,"end":10941,"length":4,"parent_index":801},"scope":789,"name":"","type_name":{"id":805,"node_type":30,"src":{"id":806,"line":333,"column":97,"start":10938,"end":10941,"length":4,"parent_index":803},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}},{"id":866,"name":"_transfer","node_type":42,"kind":41,"src":{"id":867,"line":358,"column":4,"start":11726,"end":12513,"length":788,"parent_index":341},"body":{"id":883,"node_type":46,"kind":0,"src":{"id":884,"line":358,"column":82,"start":11804,"end":12513,"length":710,"parent_index":866},"implemented":true,"statements":[{"id":885,"node_type":24,"kind":24,"src":{"id":886,"line":359,"column":8,"start":11814,"end":11881,"length":68,"parent_index":883},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: transfer from the zero address\""}],"arguments":[{"id":889,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":890,"line":359,"column":16,"start":11822,"end":11839,"length":18,"parent_index":885},"operator":12,"left_expression":{"id":891,"node_type":16,"src":{"id":892,"line":359,"column":16,"start":11822,"end":11825,"length":4,"parent_index":889},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":891,"is_pure":false},"right_expression":{"id":893,"node_type":24,"kind":24,"src":{"id":894,"line":359,"column":24,"start":11830,"end":11839,"length":10,"parent_index":889},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":899,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":900,"line":359,"column":32,"start":11838,"end":11838,"length":1,"parent_index":893},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":895,"node_type":16,"src":{"id":896,"line":359,"column":24,"start":11830,"end":11836,"length":7,"parent_index":893},"name":"address","type_name":{"id":897,"node_type":30,"src":{"id":898,"line":359,"column":24,"start":11830,"end":11836,"length":7,"parent_index":895},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":901,"node_type":17,"kind":50,"value":"ERC20: transfer from the zero address","hex_value":"45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373","src":{"id":902,"line":359,"column":36,"start":11842,"end":11880,"length":39,"parent_index":885},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: transfer from the zero address\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":887,"node_type":16,"src":{"id":888,"line":359,"column":8,"start":11814,"end":11820,"length":7,"parent_index":885},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":903,"node_type":24,"kind":24,"src":{"id":904,"line":360,"column":8,"start":11892,"end":11955,"length":64,"parent_index":883},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: transfer to the zero address\""}],"arguments":[{"id":907,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":908,"line":360,"column":16,"start":11900,"end":11915,"length":16,"parent_index":903},"operator":12,"left_expression":{"id":909,"node_type":16,"src":{"id":910,"line":360,"column":16,"start":11900,"end":11901,"length":2,"parent_index":907},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":909,"is_pure":false},"right_expression":{"id":911,"node_type":24,"kind":24,"src":{"id":912,"line":360,"column":22,"start":11906,"end":11915,"length":10,"parent_index":907},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":917,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":918,"line":360,"column":30,"start":11914,"end":11914,"length":1,"parent_index":911},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":913,"node_type":16,"src":{"id":914,"line":360,"column":22,"start":11906,"end":11912,"length":7,"parent_index":911},"name":"address","type_name":{"id":915,"node_type":30,"src":{"id":916,"line":360,"column":22,"start":11906,"end":11912,"length":7,"parent_index":913},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":919,"node_type":17,"kind":50,"value":"ERC20: transfer to the zero address","hex_value":"45524332303a207472616e7366657220746f20746865207a65726f2061646472657373","src":{"id":920,"line":360,"column":34,"start":11918,"end":11954,"length":37,"parent_index":903},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: transfer to the zero address\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":905,"node_type":16,"src":{"id":906,"line":360,"column":8,"start":11892,"end":11898,"length":7,"parent_index":903},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":921,"node_type":24,"kind":24,"src":{"id":922,"line":362,"column":8,"start":11967,"end":12004,"length":38,"parent_index":883},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":925,"node_type":16,"src":{"id":926,"line":362,"column":29,"start":11988,"end":11991,"length":4,"parent_index":921},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":925,"is_pure":false},{"id":927,"node_type":16,"src":{"id":928,"line":362,"column":35,"start":11994,"end":11995,"length":2,"parent_index":921},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":927,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":929,"node_type":16,"src":{"id":930,"line":362,"column":39,"start":11998,"end":12003,"length":6,"parent_index":921},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":929,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":923,"node_type":16,"src":{"id":924,"line":362,"column":8,"start":11967,"end":11986,"length":20,"parent_index":921},"name":"_beforeTokenTransfer","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":931,"node_type":44,"src":{"id":932,"line":364,"column":8,"start":12016,"end":12053,"length":38,"parent_index":883},"assignments":[933],"declarations":[{"is_constant":false,"id":933,"state_mutability":1,"name":"fromBalance","node_type":44,"scope":883,"src":{"id":934,"line":364,"column":8,"start":12016,"end":12034,"length":19,"parent_index":931},"is_state_variable":false,"storage_location":1,"type_name":{"id":935,"node_type":30,"src":{"id":936,"line":364,"column":8,"start":12016,"end":12022,"length":7,"parent_index":933},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":937,"node_type":22,"src":{"id":938,"line":364,"column":30,"start":12038,"end":12052,"length":15,"parent_index":931},"index_expression":{"id":939,"node_type":16,"src":{"id":940,"line":364,"column":30,"start":12038,"end":12046,"length":9,"parent_index":937},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":355,"is_pure":false},"base_expression":{"id":941,"node_type":16,"src":{"id":942,"line":364,"column":40,"start":12048,"end":12051,"length":4,"parent_index":937},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":941,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}}},{"id":943,"node_type":24,"kind":24,"src":{"id":944,"line":365,"column":8,"start":12063,"end":12134,"length":72,"parent_index":883},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: transfer amount exceeds balance\""}],"arguments":[{"id":947,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":948,"line":365,"column":16,"start":12071,"end":12091,"length":21,"parent_index":943},"operator":8,"left_expression":{"id":949,"node_type":16,"src":{"id":950,"line":365,"column":16,"start":12071,"end":12081,"length":11,"parent_index":947},"name":"fromBalance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":931,"is_pure":false},"right_expression":{"id":951,"node_type":16,"src":{"id":952,"line":365,"column":31,"start":12086,"end":12091,"length":6,"parent_index":947},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":951,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":953,"node_type":17,"kind":50,"value":"ERC20: transfer amount exceeds balance","hex_value":"45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365","src":{"id":954,"line":365,"column":39,"start":12094,"end":12133,"length":40,"parent_index":943},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: transfer amount exceeds balance\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":945,"node_type":16,"src":{"id":946,"line":365,"column":8,"start":12063,"end":12069,"length":7,"parent_index":943},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":955,"node_type":64,"src":{"id":956,"line":373,"column":8,"start":12428,"end":12459,"length":32,"parent_index":866},"arguments":[{"id":957,"node_type":16,"src":{"id":958,"line":373,"column":22,"start":12442,"end":12445,"length":4,"parent_index":883},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":957,"is_pure":false},{"id":959,"node_type":16,"src":{"id":960,"line":373,"column":28,"start":12448,"end":12449,"length":2,"parent_index":883},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":959,"is_pure":false},{"id":961,"node_type":16,"src":{"id":962,"line":373,"column":32,"start":12452,"end":12457,"length":6,"parent_index":883},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":961,"is_pure":false}],"expression":{"id":963,"node_type":16,"src":{"id":964,"line":373,"column":13,"start":12433,"end":12440,"length":8,"parent_index":883},"name":"Transfer","type_description":{"type_identifier":"t_event\u0026_IERC20_Transfer_\u002660","type_string":"event IERC20.Transfer"},"overloaded_declarations":[],"referenced_declaration":60,"is_pure":false}},{"id":965,"node_type":24,"kind":24,"src":{"id":966,"line":375,"column":8,"start":12470,"end":12506,"length":37,"parent_index":883},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":969,"node_type":16,"src":{"id":970,"line":375,"column":28,"start":12490,"end":12493,"length":4,"parent_index":965},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":969,"is_pure":false},{"id":971,"node_type":16,"src":{"id":972,"line":375,"column":34,"start":12496,"end":12497,"length":2,"parent_index":965},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":971,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":973,"node_type":16,"src":{"id":974,"line":375,"column":38,"start":12500,"end":12505,"length":6,"parent_index":965},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":973,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":967,"node_type":16,"src":{"id":968,"line":375,"column":8,"start":12470,"end":12488,"length":19,"parent_index":965},"name":"_afterTokenTransfer","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":975,"node_type":59,"kind":0,"src":{"id":976,"line":366,"column":8,"start":12145,"end":12417,"length":273,"parent_index":341},"implemented":false,"statements":[{"id":977,"node_type":81,"src":{"id":978,"line":367,"column":12,"start":12169,"end":12207,"length":39,"parent_index":975},"expression":{"id":979,"node_type":27,"src":{"id":980,"line":367,"column":12,"start":12169,"end":12206,"length":38,"parent_index":975},"operator":11,"left_expression":{"id":981,"node_type":22,"src":{"id":982,"line":367,"column":12,"start":12169,"end":12183,"length":15,"parent_index":979},"index_expression":{"id":983,"node_type":16,"src":{"id":984,"line":367,"column":12,"start":12169,"end":12177,"length":9,"parent_index":981},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":355,"is_pure":false},"base_expression":{"id":985,"node_type":16,"src":{"id":986,"line":367,"column":22,"start":12179,"end":12182,"length":4,"parent_index":981},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":985,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}},"right_expression":{"id":987,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":988,"line":367,"column":30,"start":12187,"end":12206,"length":20,"parent_index":979},"operator":2,"left_expression":{"id":989,"node_type":16,"src":{"id":990,"line":367,"column":30,"start":12187,"end":12197,"length":11,"parent_index":987},"name":"fromBalance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":931,"is_pure":false},"right_expression":{"id":991,"node_type":16,"src":{"id":992,"line":367,"column":44,"start":12201,"end":12206,"length":6,"parent_index":987},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":991,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}},"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}},{"id":993,"node_type":81,"src":{"id":994,"line":370,"column":12,"start":12384,"end":12407,"length":24,"parent_index":975},"expression":{"id":995,"node_type":27,"src":{"id":996,"line":370,"column":12,"start":12384,"end":12406,"length":23,"parent_index":975},"operator":13,"left_expression":{"id":997,"node_type":22,"src":{"id":998,"line":370,"column":12,"start":12384,"end":12396,"length":13,"parent_index":995},"index_expression":{"id":999,"node_type":16,"src":{"id":1000,"line":370,"column":12,"start":12384,"end":12392,"length":9,"parent_index":997},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":355,"is_pure":false},"base_expression":{"id":1001,"node_type":16,"src":{"id":1002,"line":370,"column":22,"start":12394,"end":12395,"length":2,"parent_index":997},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1001,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}},"right_expression":{"id":1003,"node_type":16,"src":{"id":1004,"line":370,"column":29,"start":12401,"end":12406,"length":6,"parent_index":995},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1003,"is_pure":false},"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}},"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}}]}]},"implemented":false,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":868,"node_type":43,"src":{"id":869,"line":358,"column":23,"start":11745,"end":11784,"length":40,"parent_index":866},"parameters":[{"id":870,"node_type":44,"src":{"id":871,"line":358,"column":23,"start":11745,"end":11756,"length":12,"parent_index":868},"scope":866,"name":"from","type_name":{"id":872,"node_type":30,"src":{"id":873,"line":358,"column":23,"start":11745,"end":11751,"length":7,"parent_index":870},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":874,"node_type":44,"src":{"id":875,"line":358,"column":37,"start":11759,"end":11768,"length":10,"parent_index":868},"scope":866,"name":"to","type_name":{"id":876,"node_type":30,"src":{"id":877,"line":358,"column":37,"start":11759,"end":11765,"length":7,"parent_index":874},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":878,"node_type":44,"src":{"id":879,"line":358,"column":49,"start":11771,"end":11784,"length":14,"parent_index":868},"scope":866,"name":"amount","type_name":{"id":880,"node_type":30,"src":{"id":881,"line":358,"column":49,"start":11771,"end":11777,"length":7,"parent_index":878},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":882,"node_type":43,"src":{"id":867,"line":358,"column":4,"start":11726,"end":12513,"length":788,"parent_index":866},"parameters":[],"parameter_types":[]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":1006,"name":"_mint","node_type":42,"kind":41,"src":{"id":1007,"line":387,"column":4,"start":12790,"end":13324,"length":535,"parent_index":341},"body":{"id":1019,"node_type":46,"kind":0,"src":{"id":1020,"line":387,"column":69,"start":12855,"end":13324,"length":470,"parent_index":1006},"implemented":true,"statements":[{"id":1021,"node_type":24,"kind":24,"src":{"id":1022,"line":388,"column":8,"start":12865,"end":12929,"length":65,"parent_index":1019},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: mint to the zero address\""}],"arguments":[{"id":1025,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1026,"line":388,"column":16,"start":12873,"end":12893,"length":21,"parent_index":1021},"operator":12,"left_expression":{"id":1027,"node_type":16,"src":{"id":1028,"line":388,"column":16,"start":12873,"end":12879,"length":7,"parent_index":1025},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1027,"is_pure":false},"right_expression":{"id":1029,"node_type":24,"kind":24,"src":{"id":1030,"line":388,"column":27,"start":12884,"end":12893,"length":10,"parent_index":1025},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1035,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1036,"line":388,"column":35,"start":12892,"end":12892,"length":1,"parent_index":1029},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1031,"node_type":16,"src":{"id":1032,"line":388,"column":27,"start":12884,"end":12890,"length":7,"parent_index":1029},"name":"address","type_name":{"id":1033,"node_type":30,"src":{"id":1034,"line":388,"column":27,"start":12884,"end":12890,"length":7,"parent_index":1031},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1037,"node_type":17,"kind":50,"value":"ERC20: mint to the zero address","hex_value":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","src":{"id":1038,"line":388,"column":39,"start":12896,"end":12928,"length":33,"parent_index":1021},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: mint to the zero address\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1023,"node_type":16,"src":{"id":1024,"line":388,"column":8,"start":12865,"end":12871,"length":7,"parent_index":1021},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1039,"node_type":24,"kind":24,"src":{"id":1040,"line":390,"column":8,"start":12941,"end":12989,"length":49,"parent_index":1019},"argument_types":[{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":1043,"node_type":24,"kind":24,"src":{"id":1044,"line":390,"column":29,"start":12962,"end":12971,"length":10,"parent_index":1039},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1049,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1050,"line":390,"column":37,"start":12970,"end":12970,"length":1,"parent_index":1043},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1045,"node_type":16,"src":{"id":1046,"line":390,"column":29,"start":12962,"end":12968,"length":7,"parent_index":1043},"name":"address","type_name":{"id":1047,"node_type":30,"src":{"id":1048,"line":390,"column":29,"start":12962,"end":12968,"length":7,"parent_index":1045},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},{"id":1051,"node_type":16,"src":{"id":1052,"line":390,"column":41,"start":12974,"end":12980,"length":7,"parent_index":1039},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1051,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}]},{"id":1053,"node_type":16,"src":{"id":1054,"line":390,"column":50,"start":12983,"end":12988,"length":6,"parent_index":1039},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1053,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":1041,"node_type":16,"src":{"id":1042,"line":390,"column":8,"start":12941,"end":12960,"length":20,"parent_index":1039},"name":"_beforeTokenTransfer","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_rational_0_by_1$_t_address$_t_uint256$","type_string":"function(function(int_const 0),address,uint256)"}},{"id":1055,"node_type":81,"src":{"id":1056,"line":392,"column":8,"start":13001,"end":13023,"length":23,"parent_index":1019},"expression":{"id":1057,"node_type":27,"src":{"id":1058,"line":392,"column":8,"start":13001,"end":13022,"length":22,"parent_index":1019},"operator":13,"left_expression":{"id":1059,"node_type":16,"src":{"id":1060,"line":392,"column":8,"start":13001,"end":13012,"length":12,"parent_index":1057},"name":"_totalSupply","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":378,"is_pure":false},"right_expression":{"id":1061,"node_type":16,"src":{"id":1062,"line":392,"column":24,"start":13017,"end":13022,"length":6,"parent_index":1057},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1061,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},{"id":1063,"node_type":64,"src":{"id":1064,"line":397,"column":8,"start":13217,"end":13259,"length":43,"parent_index":1006},"arguments":[{"id":1065,"node_type":24,"kind":24,"src":{"id":1066,"line":397,"column":22,"start":13231,"end":13240,"length":10,"parent_index":1019},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1071,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1072,"line":397,"column":30,"start":13239,"end":13239,"length":1,"parent_index":1065},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1067,"node_type":16,"src":{"id":1068,"line":397,"column":22,"start":13231,"end":13237,"length":7,"parent_index":1065},"name":"address","type_name":{"id":1069,"node_type":30,"src":{"id":1070,"line":397,"column":22,"start":13231,"end":13237,"length":7,"parent_index":1067},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},{"id":1073,"node_type":16,"src":{"id":1074,"line":397,"column":34,"start":13243,"end":13249,"length":7,"parent_index":1019},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1073,"is_pure":false},{"id":1075,"node_type":16,"src":{"id":1076,"line":397,"column":43,"start":13252,"end":13257,"length":6,"parent_index":1019},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1075,"is_pure":false}],"expression":{"id":1077,"node_type":16,"src":{"id":1078,"line":397,"column":13,"start":13222,"end":13229,"length":8,"parent_index":1019},"name":"Transfer","type_description":{"type_identifier":"t_event\u0026_IERC20_Transfer_\u002660","type_string":"event IERC20.Transfer"},"overloaded_declarations":[],"referenced_declaration":60,"is_pure":false}},{"id":1079,"node_type":24,"kind":24,"src":{"id":1080,"line":399,"column":8,"start":13270,"end":13317,"length":48,"parent_index":1019},"argument_types":[{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":1083,"node_type":24,"kind":24,"src":{"id":1084,"line":399,"column":28,"start":13290,"end":13299,"length":10,"parent_index":1079},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1089,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1090,"line":399,"column":36,"start":13298,"end":13298,"length":1,"parent_index":1083},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1085,"node_type":16,"src":{"id":1086,"line":399,"column":28,"start":13290,"end":13296,"length":7,"parent_index":1083},"name":"address","type_name":{"id":1087,"node_type":30,"src":{"id":1088,"line":399,"column":28,"start":13290,"end":13296,"length":7,"parent_index":1085},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},{"id":1091,"node_type":16,"src":{"id":1092,"line":399,"column":40,"start":13302,"end":13308,"length":7,"parent_index":1079},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1091,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}]},{"id":1093,"node_type":16,"src":{"id":1094,"line":399,"column":49,"start":13311,"end":13316,"length":6,"parent_index":1079},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1093,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":1081,"node_type":16,"src":{"id":1082,"line":399,"column":8,"start":13270,"end":13288,"length":19,"parent_index":1079},"name":"_afterTokenTransfer","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_rational_0_by_1$_t_address$_t_uint256$","type_string":"function(function(int_const 0),address,uint256)"}},{"id":1095,"node_type":59,"kind":0,"src":{"id":1096,"line":393,"column":8,"start":13033,"end":13207,"length":175,"parent_index":341},"implemented":false,"statements":[{"id":1097,"node_type":81,"src":{"id":1098,"line":395,"column":12,"start":13169,"end":13197,"length":29,"parent_index":1095},"expression":{"id":1099,"node_type":27,"src":{"id":1100,"line":395,"column":12,"start":13169,"end":13196,"length":28,"parent_index":1095},"operator":13,"left_expression":{"id":1101,"node_type":22,"src":{"id":1102,"line":395,"column":12,"start":13169,"end":13186,"length":18,"parent_index":1099},"index_expression":{"id":1103,"node_type":16,"src":{"id":1104,"line":395,"column":12,"start":13169,"end":13177,"length":9,"parent_index":1101},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":355,"is_pure":false},"base_expression":{"id":1105,"node_type":16,"src":{"id":1106,"line":395,"column":22,"start":13179,"end":13185,"length":7,"parent_index":1101},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1105,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}},"right_expression":{"id":1107,"node_type":16,"src":{"id":1108,"line":395,"column":34,"start":13191,"end":13196,"length":6,"parent_index":1099},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1107,"is_pure":false},"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}},"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}}]}]},"implemented":false,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1008,"node_type":43,"src":{"id":1009,"line":387,"column":19,"start":12805,"end":12835,"length":31,"parent_index":1006},"parameters":[{"id":1010,"node_type":44,"src":{"id":1011,"line":387,"column":19,"start":12805,"end":12819,"length":15,"parent_index":1008},"scope":1006,"name":"account","type_name":{"id":1012,"node_type":30,"src":{"id":1013,"line":387,"column":19,"start":12805,"end":12811,"length":7,"parent_index":1010},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1014,"node_type":44,"src":{"id":1015,"line":387,"column":36,"start":12822,"end":12835,"length":14,"parent_index":1008},"scope":1006,"name":"amount","type_name":{"id":1016,"node_type":30,"src":{"id":1017,"line":387,"column":36,"start":12822,"end":12828,"length":7,"parent_index":1014},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":1018,"node_type":43,"src":{"id":1007,"line":387,"column":4,"start":12790,"end":13324,"length":535,"parent_index":1006},"parameters":[],"parameter_types":[]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}},{"id":1110,"name":"_burn","node_type":42,"kind":41,"src":{"id":1111,"line":413,"column":4,"start":13645,"end":14303,"length":659,"parent_index":341},"body":{"id":1123,"node_type":46,"kind":0,"src":{"id":1124,"line":413,"column":69,"start":13710,"end":14303,"length":594,"parent_index":1110},"implemented":true,"statements":[{"id":1125,"node_type":24,"kind":24,"src":{"id":1126,"line":414,"column":8,"start":13720,"end":13786,"length":67,"parent_index":1123},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: burn from the zero address\""}],"arguments":[{"id":1129,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1130,"line":414,"column":16,"start":13728,"end":13748,"length":21,"parent_index":1125},"operator":12,"left_expression":{"id":1131,"node_type":16,"src":{"id":1132,"line":414,"column":16,"start":13728,"end":13734,"length":7,"parent_index":1129},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1131,"is_pure":false},"right_expression":{"id":1133,"node_type":24,"kind":24,"src":{"id":1134,"line":414,"column":27,"start":13739,"end":13748,"length":10,"parent_index":1129},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1139,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1140,"line":414,"column":35,"start":13747,"end":13747,"length":1,"parent_index":1133},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1135,"node_type":16,"src":{"id":1136,"line":414,"column":27,"start":13739,"end":13745,"length":7,"parent_index":1133},"name":"address","type_name":{"id":1137,"node_type":30,"src":{"id":1138,"line":414,"column":27,"start":13739,"end":13745,"length":7,"parent_index":1135},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1141,"node_type":17,"kind":50,"value":"ERC20: burn from the zero address","hex_value":"45524332303a206275726e2066726f6d20746865207a65726f2061646472657373","src":{"id":1142,"line":414,"column":39,"start":13751,"end":13785,"length":35,"parent_index":1125},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: burn from the zero address\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1127,"node_type":16,"src":{"id":1128,"line":414,"column":8,"start":13720,"end":13726,"length":7,"parent_index":1125},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1143,"node_type":24,"kind":24,"src":{"id":1144,"line":416,"column":8,"start":13798,"end":13846,"length":49,"parent_index":1123},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":1147,"node_type":16,"src":{"id":1148,"line":416,"column":29,"start":13819,"end":13825,"length":7,"parent_index":1143},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1147,"is_pure":false},{"id":1149,"node_type":24,"kind":24,"src":{"id":1150,"line":416,"column":38,"start":13828,"end":13837,"length":10,"parent_index":1143},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1155,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1156,"line":416,"column":46,"start":13836,"end":13836,"length":1,"parent_index":1149},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1151,"node_type":16,"src":{"id":1152,"line":416,"column":38,"start":13828,"end":13834,"length":7,"parent_index":1149},"name":"address","type_name":{"id":1153,"node_type":30,"src":{"id":1154,"line":416,"column":38,"start":13828,"end":13834,"length":7,"parent_index":1151},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},{"id":1157,"node_type":16,"src":{"id":1158,"line":416,"column":50,"start":13840,"end":13845,"length":6,"parent_index":1143},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1157,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}]}],"expression":{"id":1145,"node_type":16,"src":{"id":1146,"line":416,"column":8,"start":13798,"end":13817,"length":20,"parent_index":1143},"name":"_beforeTokenTransfer","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_function_$_t_rational_0_by_1$_t_uint256$","type_string":"function(address,function(int_const 0),uint256)"}},{"id":1159,"node_type":44,"src":{"id":1160,"line":418,"column":8,"start":13858,"end":13901,"length":44,"parent_index":1123},"assignments":[1161],"declarations":[{"is_constant":false,"id":1161,"state_mutability":1,"name":"accountBalance","node_type":44,"scope":1123,"src":{"id":1162,"line":418,"column":8,"start":13858,"end":13879,"length":22,"parent_index":1159},"is_state_variable":false,"storage_location":1,"type_name":{"id":1163,"node_type":30,"src":{"id":1164,"line":418,"column":8,"start":13858,"end":13864,"length":7,"parent_index":1161},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":1165,"node_type":22,"src":{"id":1166,"line":418,"column":33,"start":13883,"end":13900,"length":18,"parent_index":1159},"index_expression":{"id":1167,"node_type":16,"src":{"id":1168,"line":418,"column":33,"start":13883,"end":13891,"length":9,"parent_index":1165},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":355,"is_pure":false},"base_expression":{"id":1169,"node_type":16,"src":{"id":1170,"line":418,"column":43,"start":13893,"end":13899,"length":7,"parent_index":1165},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1169,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}}},{"id":1171,"node_type":24,"kind":24,"src":{"id":1172,"line":419,"column":8,"start":13911,"end":13981,"length":71,"parent_index":1123},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: burn amount exceeds balance\""}],"arguments":[{"id":1175,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1176,"line":419,"column":16,"start":13919,"end":13942,"length":24,"parent_index":1171},"operator":8,"left_expression":{"id":1177,"node_type":16,"src":{"id":1178,"line":419,"column":16,"start":13919,"end":13932,"length":14,"parent_index":1175},"name":"accountBalance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1159,"is_pure":false},"right_expression":{"id":1179,"node_type":16,"src":{"id":1180,"line":419,"column":34,"start":13937,"end":13942,"length":6,"parent_index":1175},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1179,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1181,"node_type":17,"kind":50,"value":"ERC20: burn amount exceeds balance","hex_value":"45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365","src":{"id":1182,"line":419,"column":42,"start":13945,"end":13980,"length":36,"parent_index":1171},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: burn amount exceeds balance\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1173,"node_type":16,"src":{"id":1174,"line":419,"column":8,"start":13911,"end":13917,"length":7,"parent_index":1171},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1183,"node_type":64,"src":{"id":1184,"line":426,"column":8,"start":14196,"end":14238,"length":43,"parent_index":1110},"arguments":[{"id":1185,"node_type":16,"src":{"id":1186,"line":426,"column":22,"start":14210,"end":14216,"length":7,"parent_index":1123},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1185,"is_pure":false},{"id":1187,"node_type":24,"kind":24,"src":{"id":1188,"line":426,"column":31,"start":14219,"end":14228,"length":10,"parent_index":1123},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1193,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1194,"line":426,"column":39,"start":14227,"end":14227,"length":1,"parent_index":1187},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1189,"node_type":16,"src":{"id":1190,"line":426,"column":31,"start":14219,"end":14225,"length":7,"parent_index":1187},"name":"address","type_name":{"id":1191,"node_type":30,"src":{"id":1192,"line":426,"column":31,"start":14219,"end":14225,"length":7,"parent_index":1189},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},{"id":1195,"node_type":16,"src":{"id":1196,"line":426,"column":43,"start":14231,"end":14236,"length":6,"parent_index":1123},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1195,"is_pure":false}],"expression":{"id":1197,"node_type":16,"src":{"id":1198,"line":426,"column":13,"start":14201,"end":14208,"length":8,"parent_index":1123},"name":"Transfer","type_description":{"type_identifier":"t_event\u0026_IERC20_Transfer_\u002660","type_string":"event IERC20.Transfer"},"overloaded_declarations":[],"referenced_declaration":60,"is_pure":false}},{"id":1199,"node_type":24,"kind":24,"src":{"id":1200,"line":428,"column":8,"start":14249,"end":14296,"length":48,"parent_index":1123},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":1203,"node_type":16,"src":{"id":1204,"line":428,"column":28,"start":14269,"end":14275,"length":7,"parent_index":1199},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1203,"is_pure":false},{"id":1205,"node_type":24,"kind":24,"src":{"id":1206,"line":428,"column":37,"start":14278,"end":14287,"length":10,"parent_index":1199},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1211,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1212,"line":428,"column":45,"start":14286,"end":14286,"length":1,"parent_index":1205},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1207,"node_type":16,"src":{"id":1208,"line":428,"column":37,"start":14278,"end":14284,"length":7,"parent_index":1205},"name":"address","type_name":{"id":1209,"node_type":30,"src":{"id":1210,"line":428,"column":37,"start":14278,"end":14284,"length":7,"parent_index":1207},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},{"id":1213,"node_type":16,"src":{"id":1214,"line":428,"column":49,"start":14290,"end":14295,"length":6,"parent_index":1199},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1213,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}]}],"expression":{"id":1201,"node_type":16,"src":{"id":1202,"line":428,"column":8,"start":14249,"end":14267,"length":19,"parent_index":1199},"name":"_afterTokenTransfer","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_function_$_t_rational_0_by_1$_t_uint256$","type_string":"function(address,function(int_const 0),uint256)"}},{"id":1215,"node_type":59,"kind":0,"src":{"id":1216,"line":420,"column":8,"start":13992,"end":14185,"length":194,"parent_index":341},"implemented":false,"statements":[{"id":1217,"node_type":81,"src":{"id":1218,"line":421,"column":12,"start":14016,"end":14060,"length":45,"parent_index":1215},"expression":{"id":1219,"node_type":27,"src":{"id":1220,"line":421,"column":12,"start":14016,"end":14059,"length":44,"parent_index":1215},"operator":11,"left_expression":{"id":1221,"node_type":22,"src":{"id":1222,"line":421,"column":12,"start":14016,"end":14033,"length":18,"parent_index":1219},"index_expression":{"id":1223,"node_type":16,"src":{"id":1224,"line":421,"column":12,"start":14016,"end":14024,"length":9,"parent_index":1221},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":355,"is_pure":false},"base_expression":{"id":1225,"node_type":16,"src":{"id":1226,"line":421,"column":22,"start":14026,"end":14032,"length":7,"parent_index":1221},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1225,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}},"right_expression":{"id":1227,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1228,"line":421,"column":33,"start":14037,"end":14059,"length":23,"parent_index":1219},"operator":2,"left_expression":{"id":1229,"node_type":16,"src":{"id":1230,"line":421,"column":33,"start":14037,"end":14050,"length":14,"parent_index":1227},"name":"accountBalance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1159,"is_pure":false},"right_expression":{"id":1231,"node_type":16,"src":{"id":1232,"line":421,"column":50,"start":14054,"end":14059,"length":6,"parent_index":1227},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1231,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}},"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}},{"id":1233,"node_type":81,"src":{"id":1234,"line":423,"column":12,"start":14153,"end":14175,"length":23,"parent_index":1215},"expression":{"id":1235,"node_type":27,"src":{"id":1236,"line":423,"column":12,"start":14153,"end":14174,"length":22,"parent_index":1215},"operator":14,"left_expression":{"id":1237,"node_type":16,"src":{"id":1238,"line":423,"column":12,"start":14153,"end":14164,"length":12,"parent_index":1235},"name":"_totalSupply","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":378,"is_pure":false},"right_expression":{"id":1239,"node_type":16,"src":{"id":1240,"line":423,"column":28,"start":14169,"end":14174,"length":6,"parent_index":1235},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1239,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}]}]},"implemented":false,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1112,"node_type":43,"src":{"id":1113,"line":413,"column":19,"start":13660,"end":13690,"length":31,"parent_index":1110},"parameters":[{"id":1114,"node_type":44,"src":{"id":1115,"line":413,"column":19,"start":13660,"end":13674,"length":15,"parent_index":1112},"scope":1110,"name":"account","type_name":{"id":1116,"node_type":30,"src":{"id":1117,"line":413,"column":19,"start":13660,"end":13666,"length":7,"parent_index":1114},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1118,"node_type":44,"src":{"id":1119,"line":413,"column":36,"start":13677,"end":13690,"length":14,"parent_index":1112},"scope":1110,"name":"amount","type_name":{"id":1120,"node_type":30,"src":{"id":1121,"line":413,"column":36,"start":13677,"end":13683,"length":7,"parent_index":1118},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":1122,"node_type":43,"src":{"id":1111,"line":413,"column":4,"start":13645,"end":14303,"length":659,"parent_index":1110},"parameters":[],"parameter_types":[]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}},{"id":1242,"name":"_approve","node_type":42,"kind":41,"src":{"id":1243,"line":444,"column":4,"start":14727,"end":15066,"length":340,"parent_index":341},"body":{"id":1259,"node_type":46,"kind":0,"src":{"id":1260,"line":444,"column":87,"start":14810,"end":15066,"length":257,"parent_index":1242},"implemented":true,"statements":[{"id":1261,"node_type":24,"kind":24,"src":{"id":1262,"line":445,"column":8,"start":14820,"end":14887,"length":68,"parent_index":1259},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: approve from the zero address\""}],"arguments":[{"id":1265,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1266,"line":445,"column":16,"start":14828,"end":14846,"length":19,"parent_index":1261},"operator":12,"left_expression":{"id":1267,"node_type":16,"src":{"id":1268,"line":445,"column":16,"start":14828,"end":14832,"length":5,"parent_index":1265},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1267,"is_pure":false},"right_expression":{"id":1269,"node_type":24,"kind":24,"src":{"id":1270,"line":445,"column":25,"start":14837,"end":14846,"length":10,"parent_index":1265},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1275,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1276,"line":445,"column":33,"start":14845,"end":14845,"length":1,"parent_index":1269},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1271,"node_type":16,"src":{"id":1272,"line":445,"column":25,"start":14837,"end":14843,"length":7,"parent_index":1269},"name":"address","type_name":{"id":1273,"node_type":30,"src":{"id":1274,"line":445,"column":25,"start":14837,"end":14843,"length":7,"parent_index":1271},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1277,"node_type":17,"kind":50,"value":"ERC20: approve from the zero address","hex_value":"45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373","src":{"id":1278,"line":445,"column":37,"start":14849,"end":14886,"length":38,"parent_index":1261},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: approve from the zero address\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1263,"node_type":16,"src":{"id":1264,"line":445,"column":8,"start":14820,"end":14826,"length":7,"parent_index":1261},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1279,"node_type":24,"kind":24,"src":{"id":1280,"line":446,"column":8,"start":14898,"end":14965,"length":68,"parent_index":1259},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: approve to the zero address\""}],"arguments":[{"id":1283,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1284,"line":446,"column":16,"start":14906,"end":14926,"length":21,"parent_index":1279},"operator":12,"left_expression":{"id":1285,"node_type":16,"src":{"id":1286,"line":446,"column":16,"start":14906,"end":14912,"length":7,"parent_index":1283},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1285,"is_pure":false},"right_expression":{"id":1287,"node_type":24,"kind":24,"src":{"id":1288,"line":446,"column":27,"start":14917,"end":14926,"length":10,"parent_index":1283},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1293,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1294,"line":446,"column":35,"start":14925,"end":14925,"length":1,"parent_index":1287},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1289,"node_type":16,"src":{"id":1290,"line":446,"column":27,"start":14917,"end":14923,"length":7,"parent_index":1287},"name":"address","type_name":{"id":1291,"node_type":30,"src":{"id":1292,"line":446,"column":27,"start":14917,"end":14923,"length":7,"parent_index":1289},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1295,"node_type":17,"kind":50,"value":"ERC20: approve to the zero address","hex_value":"45524332303a20617070726f766520746f20746865207a65726f2061646472657373","src":{"id":1296,"line":446,"column":39,"start":14929,"end":14964,"length":36,"parent_index":1279},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: approve to the zero address\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1281,"node_type":16,"src":{"id":1282,"line":446,"column":8,"start":14898,"end":14904,"length":7,"parent_index":1279},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1297,"node_type":81,"src":{"id":1298,"line":448,"column":8,"start":14977,"end":15013,"length":37,"parent_index":1259},"expression":{"id":1299,"node_type":27,"src":{"id":1300,"line":448,"column":8,"start":14977,"end":15012,"length":36,"parent_index":1259},"operator":11,"left_expression":{"id":1301,"node_type":22,"src":{"id":1302,"line":448,"column":8,"start":14977,"end":15003,"length":27,"parent_index":1299},"index_expression":{"id":1303,"node_type":22,"src":{"id":1304,"line":448,"column":8,"start":14977,"end":14994,"length":18,"parent_index":1301},"index_expression":{"id":1305,"node_type":16,"src":{"id":1306,"line":448,"column":8,"start":14977,"end":14987,"length":11,"parent_index":1303},"name":"_allowances","type_description":{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"},"overloaded_declarations":[],"referenced_declaration":364,"is_pure":false},"base_expression":{"id":1307,"node_type":16,"src":{"id":1308,"line":448,"column":20,"start":14989,"end":14993,"length":5,"parent_index":1303},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1307,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003emapping(address=\u003euint256))"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003emapping(address=\u003euint256)):address]"}},"base_expression":{"id":1309,"node_type":16,"src":{"id":1310,"line":448,"column":27,"start":14996,"end":15002,"length":7,"parent_index":1301},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1309,"is_pure":false},"type_descriptions":[{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003emapping(address=\u003euint256)):address]"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$","type_string":"index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]"}},"right_expression":{"id":1311,"node_type":16,"src":{"id":1312,"line":448,"column":38,"start":15007,"end":15012,"length":6,"parent_index":1299},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1311,"is_pure":false},"type_description":{"type_identifier":"t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$","type_string":"index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]"}},"type_description":{"type_identifier":"t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$","type_string":"index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]"}},{"id":1313,"node_type":64,"src":{"id":1314,"line":449,"column":8,"start":15023,"end":15060,"length":38,"parent_index":1242},"arguments":[{"id":1315,"node_type":16,"src":{"id":1316,"line":449,"column":22,"start":15037,"end":15041,"length":5,"parent_index":1259},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1315,"is_pure":false},{"id":1317,"node_type":16,"src":{"id":1318,"line":449,"column":29,"start":15044,"end":15050,"length":7,"parent_index":1259},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1317,"is_pure":false},{"id":1319,"node_type":16,"src":{"id":1320,"line":449,"column":38,"start":15053,"end":15058,"length":6,"parent_index":1259},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1319,"is_pure":false}],"expression":{"id":1321,"node_type":16,"src":{"id":1322,"line":449,"column":13,"start":15028,"end":15035,"length":8,"parent_index":1259},"name":"Approval","type_description":{"type_identifier":"t_event\u0026_IERC20_Approval_\u002676","type_string":"event IERC20.Approval"},"overloaded_declarations":[],"referenced_declaration":76,"is_pure":false}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1244,"node_type":43,"src":{"id":1245,"line":444,"column":22,"start":14745,"end":14790,"length":46,"parent_index":1242},"parameters":[{"id":1246,"node_type":44,"src":{"id":1247,"line":444,"column":22,"start":14745,"end":14757,"length":13,"parent_index":1244},"scope":1242,"name":"owner","type_name":{"id":1248,"node_type":30,"src":{"id":1249,"line":444,"column":22,"start":14745,"end":14751,"length":7,"parent_index":1246},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1250,"node_type":44,"src":{"id":1251,"line":444,"column":37,"start":14760,"end":14774,"length":15,"parent_index":1244},"scope":1242,"name":"spender","type_name":{"id":1252,"node_type":30,"src":{"id":1253,"line":444,"column":37,"start":14760,"end":14766,"length":7,"parent_index":1250},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1254,"node_type":44,"src":{"id":1255,"line":444,"column":54,"start":14777,"end":14790,"length":14,"parent_index":1244},"scope":1242,"name":"amount","type_name":{"id":1256,"node_type":30,"src":{"id":1257,"line":444,"column":54,"start":14777,"end":14783,"length":7,"parent_index":1254},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":1258,"node_type":43,"src":{"id":1243,"line":444,"column":4,"start":14727,"end":15066,"length":340,"parent_index":1242},"parameters":[],"parameter_types":[]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":1324,"name":"_spendAllowance","node_type":42,"kind":41,"src":{"id":1325,"line":460,"column":4,"start":15348,"end":15758,"length":411,"parent_index":341},"body":{"id":1341,"node_type":46,"kind":0,"src":{"id":1342,"line":460,"column":94,"start":15438,"end":15758,"length":321,"parent_index":1324},"implemented":true,"statements":[{"id":1343,"node_type":44,"src":{"id":1344,"line":461,"column":8,"start":15448,"end":15500,"length":53,"parent_index":1341},"assignments":[1345],"declarations":[{"is_constant":false,"id":1345,"state_mutability":1,"name":"currentAllowance","node_type":44,"scope":1341,"src":{"id":1346,"line":461,"column":8,"start":15448,"end":15471,"length":24,"parent_index":1343},"is_state_variable":false,"storage_location":1,"type_name":{"id":1347,"node_type":30,"src":{"id":1348,"line":461,"column":8,"start":15448,"end":15454,"length":7,"parent_index":1345},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":1349,"node_type":24,"kind":24,"src":{"id":1350,"line":461,"column":35,"start":15475,"end":15499,"length":25,"parent_index":1343},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1353,"node_type":16,"src":{"id":1354,"line":461,"column":45,"start":15485,"end":15489,"length":5,"parent_index":1349},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1353,"is_pure":false},{"id":1355,"node_type":16,"src":{"id":1356,"line":461,"column":52,"start":15492,"end":15498,"length":7,"parent_index":1349},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1355,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":1351,"node_type":16,"src":{"id":1352,"line":461,"column":35,"start":15475,"end":15483,"length":9,"parent_index":1349},"name":"allowance","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$","type_string":"function(address,address)"}}},{"id":1357,"node_type":48,"src":{"id":1358,"line":462,"column":0,"start":15510,"end":15752,"length":243,"parent_index":1341},"condition":{"id":1359,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1360,"line":462,"column":12,"start":15514,"end":15550,"length":37,"parent_index":1357},"operator":12,"left_expression":{"id":1361,"node_type":16,"src":{"id":1362,"line":462,"column":12,"start":15514,"end":15529,"length":16,"parent_index":1359},"name":"currentAllowance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1343,"is_pure":false},"right_expression":{"id":1363,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1364,"line":462,"column":32,"start":15534,"end":15550,"length":17,"parent_index":1359},"expression":{"id":1365,"node_type":16,"name":"type","src":{"id":1366,"line":462,"column":32,"start":15534,"end":15546,"length":13,"parent_index":1363},"type_description":{"type_identifier":"","type_string":"type"}},"member_name":"max","argument_types":[],"type_description":{"type_identifier":"","type_string":"type"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":1367,"node_type":46,"kind":0,"src":{"id":1368,"line":462,"column":51,"start":15553,"end":15752,"length":200,"parent_index":1324},"implemented":true,"statements":[{"id":1369,"node_type":24,"kind":24,"src":{"id":1370,"line":463,"column":12,"start":15567,"end":15634,"length":68,"parent_index":1367},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: insufficient allowance\""}],"arguments":[{"id":1373,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1374,"line":463,"column":20,"start":15575,"end":15600,"length":26,"parent_index":1369},"operator":8,"left_expression":{"id":1375,"node_type":16,"src":{"id":1376,"line":463,"column":20,"start":15575,"end":15590,"length":16,"parent_index":1373},"name":"currentAllowance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":819,"is_pure":false},"right_expression":{"id":1377,"node_type":16,"src":{"id":1378,"line":463,"column":40,"start":15595,"end":15600,"length":6,"parent_index":1373},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1377,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1379,"node_type":17,"kind":50,"value":"ERC20: insufficient allowance","hex_value":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","src":{"id":1380,"line":463,"column":48,"start":15603,"end":15633,"length":31,"parent_index":1369},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC20: insufficient allowance\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1371,"node_type":16,"src":{"id":1372,"line":463,"column":12,"start":15567,"end":15573,"length":7,"parent_index":1369},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}}]}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1326,"node_type":43,"src":{"id":1327,"line":460,"column":29,"start":15373,"end":15418,"length":46,"parent_index":1324},"parameters":[{"id":1328,"node_type":44,"src":{"id":1329,"line":460,"column":29,"start":15373,"end":15385,"length":13,"parent_index":1326},"scope":1324,"name":"owner","type_name":{"id":1330,"node_type":30,"src":{"id":1331,"line":460,"column":29,"start":15373,"end":15379,"length":7,"parent_index":1328},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1332,"node_type":44,"src":{"id":1333,"line":460,"column":44,"start":15388,"end":15402,"length":15,"parent_index":1326},"scope":1324,"name":"spender","type_name":{"id":1334,"node_type":30,"src":{"id":1335,"line":460,"column":44,"start":15388,"end":15394,"length":7,"parent_index":1332},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1336,"node_type":44,"src":{"id":1337,"line":460,"column":61,"start":15405,"end":15418,"length":14,"parent_index":1326},"scope":1324,"name":"amount","type_name":{"id":1338,"node_type":30,"src":{"id":1339,"line":460,"column":61,"start":15405,"end":15411,"length":7,"parent_index":1336},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":1340,"node_type":43,"src":{"id":1325,"line":460,"column":4,"start":15348,"end":15758,"length":411,"parent_index":1324},"parameters":[],"parameter_types":[]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":1382,"name":"_beforeTokenTransfer","node_type":42,"kind":41,"src":{"id":1383,"line":484,"column":4,"start":16343,"end":16433,"length":91,"parent_index":341},"body":{"id":1399,"node_type":46,"kind":0,"src":{"id":1400,"line":484,"column":93,"start":16432,"end":16433,"length":2,"parent_index":1382},"implemented":true,"statements":[]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1384,"node_type":43,"src":{"id":1385,"line":484,"column":34,"start":16373,"end":16412,"length":40,"parent_index":1382},"parameters":[{"id":1386,"node_type":44,"src":{"id":1387,"line":484,"column":34,"start":16373,"end":16384,"length":12,"parent_index":1384},"scope":1382,"name":"from","type_name":{"id":1388,"node_type":30,"src":{"id":1389,"line":484,"column":34,"start":16373,"end":16379,"length":7,"parent_index":1386},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1390,"node_type":44,"src":{"id":1391,"line":484,"column":48,"start":16387,"end":16396,"length":10,"parent_index":1384},"scope":1382,"name":"to","type_name":{"id":1392,"node_type":30,"src":{"id":1393,"line":484,"column":48,"start":16387,"end":16393,"length":7,"parent_index":1390},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1394,"node_type":44,"src":{"id":1395,"line":484,"column":60,"start":16399,"end":16412,"length":14,"parent_index":1384},"scope":1382,"name":"amount","type_name":{"id":1396,"node_type":30,"src":{"id":1397,"line":484,"column":60,"start":16399,"end":16405,"length":7,"parent_index":1394},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":1398,"node_type":43,"src":{"id":1383,"line":484,"column":4,"start":16343,"end":16433,"length":91,"parent_index":1382},"parameters":[],"parameter_types":[]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":1402,"name":"_afterTokenTransfer","node_type":42,"kind":41,"src":{"id":1403,"line":500,"column":4,"start":17022,"end":17111,"length":90,"parent_index":341},"body":{"id":1419,"node_type":46,"kind":0,"src":{"id":1420,"line":500,"column":92,"start":17110,"end":17111,"length":2,"parent_index":1402},"implemented":true,"statements":[]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1404,"node_type":43,"src":{"id":1405,"line":500,"column":33,"start":17051,"end":17090,"length":40,"parent_index":1402},"parameters":[{"id":1406,"node_type":44,"src":{"id":1407,"line":500,"column":33,"start":17051,"end":17062,"length":12,"parent_index":1404},"scope":1402,"name":"from","type_name":{"id":1408,"node_type":30,"src":{"id":1409,"line":500,"column":33,"start":17051,"end":17057,"length":7,"parent_index":1406},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1410,"node_type":44,"src":{"id":1411,"line":500,"column":47,"start":17065,"end":17074,"length":10,"parent_index":1404},"scope":1402,"name":"to","type_name":{"id":1412,"node_type":30,"src":{"id":1413,"line":500,"column":47,"start":17065,"end":17071,"length":7,"parent_index":1410},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1414,"node_type":44,"src":{"id":1415,"line":500,"column":59,"start":17077,"end":17090,"length":14,"parent_index":1404},"scope":1402,"name":"amount","type_name":{"id":1416,"node_type":30,"src":{"id":1417,"line":500,"column":59,"start":17077,"end":17083,"length":7,"parent_index":1414},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":1418,"node_type":43,"src":{"id":1403,"line":500,"column":4,"start":17022,"end":17111,"length":90,"parent_index":1402},"parameters":[],"parameter_types":[]},"scope":341,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}}],"linearized_base_contracts":[271,49,207,341],"base_contracts":[{"id":342,"node_type":62,"src":{"id":343,"line":174,"column":18,"start":5820,"end":5826,"length":7,"parent_index":341},"base_name":{"id":344,"node_type":52,"src":{"id":345,"line":174,"column":18,"start":5820,"end":5826,"length":7,"parent_index":341},"name":"Context","referenced_declaration":271}},{"id":346,"node_type":62,"src":{"id":347,"line":174,"column":27,"start":5829,"end":5834,"length":6,"parent_index":341},"base_name":{"id":348,"node_type":52,"src":{"id":349,"line":174,"column":27,"start":5829,"end":5834,"length":6,"parent_index":341},"name":"IERC20","referenced_declaration":49}},{"id":350,"node_type":62,"src":{"id":351,"line":174,"column":35,"start":5837,"end":5850,"length":14,"parent_index":341},"base_name":{"id":352,"node_type":52,"src":{"id":353,"line":174,"column":35,"start":5837,"end":5850,"length":14,"parent_index":341},"name":"IERC20Metadata","referenced_declaration":207}}],"contract_dependencies":[271,49,207]}],"src":{"id":328,"line":174,"column":0,"start":5802,"end":17113,"length":11312,"parent_index":48}},{"id":1421,"base_contracts":[{"id":1439,"node_type":62,"src":{"id":1440,"line":509,"column":18,"start":17249,"end":17253,"length":5,"parent_index":1438},"base_name":{"id":1441,"node_type":52,"src":{"id":1442,"line":509,"column":18,"start":17249,"end":17253,"length":5,"parent_index":1438},"name":"ERC20","referenced_declaration":327}}],"license":"MIT","exported_symbols":[{"id":1421,"name":"Token","absolute_path":"Token.sol"},{"id":327,"name":"ERC20","absolute_path":"ERC20.sol"}],"absolute_path":"Token.sol","name":"Token","node_type":1,"nodes":[{"id":1431,"node_type":10,"src":{"id":1432,"line":505,"column":0,"start":17149,"end":17171,"length":23,"parent_index":1421},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":1437,"node_type":29,"src":{"id":0,"line":507,"column":0,"start":17174,"end":17228,"length":55,"parent_index":1421},"absolute_path":"ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","scope":1421,"unit_alias":"","source_unit":327},{"id":1438,"name":"Token","node_type":35,"src":{"id":0,"line":509,"column":0,"start":17231,"end":17360,"length":130,"parent_index":1421},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":1444,"node_type":42,"src":{"id":1445,"line":510,"column":4,"start":17261,"end":17358,"length":98,"parent_index":1438},"kind":11,"state_mutability":4,"visibility":1,"implemented":true,"modifiers":[{"id":1448,"name":"ERC20","node_type":72,"kind":72,"src":{"id":1449,"line":510,"column":18,"start":17275,"end":17297,"length":23,"parent_index":1444},"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"MyToken\""},{"type_identifier":"t_string_literal","type_string":"literal_string \"MTK\""}],"arguments":[{"id":1452,"node_type":17,"kind":50,"value":"MyToken","hex_value":"4d79546f6b656e","src":{"id":1453,"line":510,"column":24,"start":17281,"end":17289,"length":9,"parent_index":1448},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"MyToken\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},{"id":1454,"node_type":17,"kind":50,"value":"MTK","hex_value":"4d544b","src":{"id":1455,"line":510,"column":35,"start":17292,"end":17296,"length":5,"parent_index":1448},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"MTK\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"modifier_name":{"id":1450,"name":"ERC20","node_type":0,"src":{"id":1451,"line":510,"column":18,"start":17275,"end":17279,"length":5,"parent_index":1448}}}],"parameters":{"id":1446,"node_type":43,"src":{"id":1445,"line":510,"column":4,"start":17261,"end":17358,"length":98,"parent_index":1444},"parameters":[],"parameter_types":[]},"return_parameters":{"id":1447,"node_type":43,"src":{"id":1445,"line":510,"column":4,"start":17261,"end":17358,"length":98,"parent_index":1444},"parameters":[],"parameter_types":[]},"scope":1438,"body":{"id":1456,"node_type":46,"kind":0,"src":{"id":1457,"line":510,"column":42,"start":17299,"end":17358,"length":60,"parent_index":1444},"implemented":true,"statements":[{"id":1458,"node_type":24,"kind":24,"src":{"id":1459,"line":511,"column":8,"start":17309,"end":17351,"length":43,"parent_index":1456},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_rational_1000000_by_1","type_string":"int_const 1000000"}],"arguments":[{"id":1462,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1463,"line":511,"column":14,"start":17315,"end":17324,"length":10,"parent_index":1458},"expression":{"id":1464,"node_type":16,"src":{"id":1465,"line":511,"column":14,"start":17315,"end":17317,"length":3,"parent_index":1462},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},{"id":1466,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1467,"line":511,"column":26,"start":17327,"end":17350,"length":24,"parent_index":1458},"operator":3,"left_expression":{"id":1468,"node_type":17,"kind":49,"value":"1000000","hex_value":"31303030303030","src":{"id":1469,"line":511,"column":26,"start":17327,"end":17333,"length":7,"parent_index":1466},"type_description":{"type_identifier":"t_rational_1000000_by_1","type_string":"int_const 1000000"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"right_expression":{"id":1471,"node_type":95,"src":{"id":1472,"line":511,"column":36,"start":17337,"end":17350,"length":14,"parent_index":1466},"left_expression":{"id":1473,"node_type":17,"kind":49,"value":"10","hex_value":"3130","src":{"id":1474,"line":511,"column":36,"start":17337,"end":17338,"length":2,"parent_index":1471},"type_description":{"type_identifier":"t_rational_10_by_1","type_string":"int_const 10"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"right_expression":{"id":1475,"node_type":24,"kind":24,"src":{"id":1476,"line":511,"column":40,"start":17341,"end":17350,"length":10,"parent_index":1471},"argument_types":[],"arguments":[],"expression":{"id":1477,"node_type":16,"src":{"id":1478,"line":511,"column":40,"start":17341,"end":17348,"length":8,"parent_index":1475},"name":"decimals","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_descriptions":[{"type_identifier":"t_rational_10_by_1","type_string":"int_const 10"},{"type_identifier":"t_function_$","type_string":"function()"}]},"type_description":{"type_identifier":"t_rational_1000000_by_1","type_string":"int_const 1000000"}}],"expression":{"id":1460,"node_type":16,"src":{"id":1461,"line":511,"column":8,"start":17309,"end":17313,"length":5,"parent_index":1458},"name":"_mint","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_rational_1000000_by_1$","type_string":"function(address,int_const 1000000)"}}]}}],"linearized_base_contracts":[327,1438,1437],"base_contracts":[{"id":1439,"node_type":62,"src":{"id":1440,"line":509,"column":18,"start":17249,"end":17253,"length":5,"parent_index":1438},"base_name":{"id":1441,"node_type":52,"src":{"id":1442,"line":509,"column":18,"start":17249,"end":17253,"length":5,"parent_index":1438},"name":"ERC20","referenced_declaration":327}}],"contract_dependencies":[327,1437]}],"src":{"id":1422,"line":509,"column":0,"start":17231,"end":17360,"length":130,"parent_index":48}}],"comments":[{"id":1,"src":{"id":0,"line":1,"column":0,"start":0,"end":30,"length":31,"parent_index":2},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":2,"src":{"id":0,"line":2,"column":0,"start":32,"end":103,"length":72,"parent_index":3},"node_type":31,"text":"// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)"},{"id":3,"src":{"id":0,"line":6,"column":0,"start":131,"end":200,"length":70,"parent_index":4},"node_type":32,"text":"/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */"},{"id":4,"src":{"id":0,"line":10,"column":4,"start":225,"end":382,"length":158,"parent_index":5},"node_type":32,"text":"/**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */"},{"id":5,"src":{"id":0,"line":18,"column":4,"start":466,"end":613,"length":148,"parent_index":6},"node_type":32,"text":"/**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */"},{"id":6,"src":{"id":0,"line":24,"column":4,"start":703,"end":768,"length":66,"parent_index":7},"node_type":32,"text":"/**\n * @dev Returns the amount of tokens in existence.\n */"},{"id":7,"src":{"id":0,"line":29,"column":4,"start":835,"end":906,"length":72,"parent_index":8},"node_type":32,"text":"/**\n * @dev Returns the amount of tokens owned by `account`.\n */"},{"id":8,"src":{"id":0,"line":34,"column":4,"start":986,"end":1187,"length":202,"parent_index":9},"node_type":32,"text":"/**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */"},{"id":9,"src":{"id":0,"line":43,"column":4,"start":1269,"end":1532,"length":264,"parent_index":10},"node_type":32,"text":"/**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */"},{"id":10,"src":{"id":0,"line":52,"column":4,"start":1627,"end":2268,"length":642,"parent_index":11},"node_type":32,"text":"/**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */"},{"id":11,"src":{"id":0,"line":68,"column":4,"start":2354,"end":2640,"length":287,"parent_index":12},"node_type":32,"text":"/**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */"},{"id":12,"src":{"id":0,"line":81,"column":0,"start":2739,"end":2769,"length":31,"parent_index":13},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":13,"src":{"id":0,"line":82,"column":0,"start":2771,"end":2846,"length":76,"parent_index":14},"node_type":31,"text":"// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)"},{"id":14,"src":{"id":0,"line":88,"column":0,"start":2899,"end":3014,"length":116,"parent_index":15},"node_type":32,"text":"/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */"},{"id":15,"src":{"id":0,"line":94,"column":4,"start":3057,"end":3110,"length":54,"parent_index":16},"node_type":32,"text":"/**\n * @dev Returns the name of the token.\n */"},{"id":16,"src":{"id":0,"line":99,"column":4,"start":3176,"end":3231,"length":56,"parent_index":17},"node_type":32,"text":"/**\n * @dev Returns the symbol of the token.\n */"},{"id":17,"src":{"id":0,"line":104,"column":4,"start":3299,"end":3363,"length":65,"parent_index":18},"node_type":32,"text":"/**\n * @dev Returns the decimals places of the token.\n */"},{"id":18,"src":{"id":0,"line":111,"column":0,"start":3424,"end":3454,"length":31,"parent_index":19},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":19,"src":{"id":0,"line":112,"column":0,"start":3456,"end":3507,"length":52,"parent_index":20},"node_type":31,"text":"// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)"},{"id":20,"src":{"id":0,"line":116,"column":0,"start":3535,"end":4030,"length":496,"parent_index":21},"node_type":32,"text":"/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */"},{"id":21,"src":{"id":0,"line":137,"column":0,"start":4270,"end":4300,"length":31,"parent_index":22},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":22,"src":{"id":0,"line":138,"column":0,"start":4302,"end":4372,"length":71,"parent_index":23},"node_type":31,"text":"// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)"},{"id":23,"src":{"id":0,"line":146,"column":0,"start":4500,"end":5800,"length":1301,"parent_index":24},"node_type":32,"text":"/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */"},{"id":24,"src":{"id":0,"line":184,"column":4,"start":6074,"end":6244,"length":171,"parent_index":25},"node_type":32,"text":"/**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */"},{"id":25,"src":{"id":0,"line":195,"column":4,"start":6369,"end":6422,"length":54,"parent_index":26},"node_type":32,"text":"/**\n * @dev Returns the name of the token.\n */"},{"id":26,"src":{"id":0,"line":202,"column":4,"start":6532,"end":6633,"length":102,"parent_index":27},"node_type":32,"text":"/**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */"},{"id":27,"src":{"id":0,"line":210,"column":4,"start":6747,"end":7368,"length":622,"parent_index":28},"node_type":32,"text":"/**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */"},{"id":28,"src":{"id":0,"line":227,"column":4,"start":7471,"end":7519,"length":49,"parent_index":29},"node_type":32,"text":"/**\n * @dev See {IERC20-totalSupply}.\n */"},{"id":29,"src":{"id":0,"line":234,"column":4,"start":7637,"end":7683,"length":47,"parent_index":30},"node_type":32,"text":"/**\n * @dev See {IERC20-balanceOf}.\n */"},{"id":30,"src":{"id":0,"line":241,"column":4,"start":7820,"end":8004,"length":185,"parent_index":31},"node_type":32,"text":"/**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */"},{"id":31,"src":{"id":0,"line":255,"column":4,"start":8205,"end":8251,"length":47,"parent_index":32},"node_type":32,"text":"/**\n * @dev See {IERC20-allowance}.\n */"},{"id":32,"src":{"id":0,"line":262,"column":4,"start":8412,"end":8708,"length":297,"parent_index":33},"node_type":32,"text":"/**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */"},{"id":33,"src":{"id":0,"line":278,"column":4,"start":8917,"end":9467,"length":551,"parent_index":34},"node_type":32,"text":"/**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */"},{"id":34,"src":{"id":0,"line":301,"column":4,"start":9735,"end":10118,"length":384,"parent_index":35},"node_type":32,"text":"/**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */"},{"id":35,"src":{"id":0,"line":319,"column":4,"start":10364,"end":10839,"length":476,"parent_index":36},"node_type":32,"text":"/**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */"},{"id":36,"src":{"id":0,"line":344,"column":4,"start":11278,"end":11720,"length":443,"parent_index":37},"node_type":32,"text":"/**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */"},{"id":37,"src":{"id":0,"line":368,"column":12,"start":12221,"end":12323,"length":103,"parent_index":38},"node_type":31,"text":"// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by"},{"id":38,"src":{"id":0,"line":369,"column":12,"start":12337,"end":12370,"length":34,"parent_index":39},"node_type":31,"text":"// decrementing then incrementing."},{"id":39,"src":{"id":0,"line":378,"column":4,"start":12520,"end":12784,"length":265,"parent_index":40},"node_type":32,"text":"/** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */"},{"id":40,"src":{"id":0,"line":394,"column":12,"start":13057,"end":13155,"length":99,"parent_index":41},"node_type":31,"text":"// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above."},{"id":41,"src":{"id":0,"line":402,"column":4,"start":13331,"end":13639,"length":309,"parent_index":42},"node_type":32,"text":"/**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */"},{"id":42,"src":{"id":0,"line":422,"column":12,"start":14074,"end":14139,"length":66,"parent_index":43},"node_type":31,"text":"// Overflow not possible: amount \u003c= accountBalance \u003c= totalSupply."},{"id":43,"src":{"id":0,"line":431,"column":4,"start":14310,"end":14721,"length":412,"parent_index":44},"node_type":32,"text":"/**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */"},{"id":44,"src":{"id":0,"line":452,"column":4,"start":15073,"end":15342,"length":270,"parent_index":45},"node_type":32,"text":"/**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */"},{"id":45,"src":{"id":0,"line":470,"column":4,"start":15765,"end":16337,"length":573,"parent_index":46},"node_type":32,"text":"/**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */"},{"id":46,"src":{"id":0,"line":486,"column":4,"start":16440,"end":17016,"length":577,"parent_index":47},"node_type":32,"text":"/**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */"},{"id":47,"src":{"id":0,"line":504,"column":0,"start":17117,"end":17147,"length":31,"parent_index":48},"node_type":33,"text":"// SPDX-License-Identifier: MIT"}]} \ No newline at end of file diff --git a/data/tests/ast/Token.solgo.ast.proto.json b/data/tests/ast/Token.solgo.ast.proto.json index e8a1be4a..2422992a 100644 --- a/data/tests/ast/Token.solgo.ast.proto.json +++ b/data/tests/ast/Token.solgo.ast.proto.json @@ -1,15755 +1,15508 @@ { - "id": 48, - "entry_source_unit": 1421, - "node_type": 80, - "source_units": [ - { - "id": 49, - "license": "MIT", - "name": "IERC20", - "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/IERC20.sol", - "exported_symbols": [ - { - "id": 49, - "name": "IERC20", - "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/IERC20.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "51", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "128", - "id": "52", - "length": "23", - "line": "4", - "parentIndex": "49", - "start": "106" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "fullyImplemented": true, - "id": "58", - "kind": "KIND_LIBRARY", - "linearizedBaseContracts": [ - "58" - ], - "name": "IERC20", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", - "value": { - "id": "60", - "name": "Transfer", - "nodeType": "EVENT_DEFINITION", - "parameters": { - "id": "62", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "63", - "indexed": true, - "name": "from", - "nodeType": "VARIABLE_DECLARATION", - "scope": "63", - "src": { - "column": "19", - "end": "422", - "id": "64", - "length": "20", - "line": "16", - "parentIndex": "62", - "start": "403" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "65", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "19", - "end": "409", - "id": "66", - "length": "7", - "line": "16", - "parentIndex": "63", - "start": "403" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "67", - "indexed": true, - "name": "to", - "nodeType": "VARIABLE_DECLARATION", - "scope": "67", - "src": { - "column": "41", - "end": "442", - "id": "68", - "length": "18", - "line": "16", - "parentIndex": "62", - "start": "425" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "69", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "41", - "end": "431", - "id": "70", - "length": "7", - "line": "16", - "parentIndex": "67", - "start": "425" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "71", - "name": "value", - "nodeType": "VARIABLE_DECLARATION", - "scope": "71", - "src": { - "column": "61", - "end": "457", - "id": "72", - "length": "13", - "line": "16", - "parentIndex": "62", - "start": "445" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "73", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "61", - "end": "451", - "id": "74", - "length": "7", - "line": "16", - "parentIndex": "71", - "start": "445" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "4", - "end": "459", - "id": "61", - "length": "72", - "line": "16", - "parentIndex": "60", - "start": "388" - } - }, - "src": { - "column": "4", - "end": "459", - "id": "61", - "length": "72", - "line": "16", - "parentIndex": "58", - "start": "388" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u002660", - "typeString": "event IERC20.Transfer" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", - "value": { - "id": "76", - "name": "Approval", - "nodeType": "EVENT_DEFINITION", - "parameters": { - "id": "78", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "79", - "indexed": true, - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "79", - "src": { - "column": "19", - "end": "654", - "id": "80", - "length": "21", - "line": "22", - "parentIndex": "78", - "start": "634" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "81", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "19", - "end": "640", - "id": "82", - "length": "7", - "line": "22", - "parentIndex": "79", - "start": "634" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "83", - "indexed": true, - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "83", - "src": { - "column": "42", - "end": "679", - "id": "84", - "length": "23", - "line": "22", - "parentIndex": "78", - "start": "657" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "85", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "42", - "end": "663", - "id": "86", - "length": "7", - "line": "22", - "parentIndex": "83", - "start": "657" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "87", - "name": "value", - "nodeType": "VARIABLE_DECLARATION", - "scope": "87", - "src": { - "column": "67", - "end": "694", - "id": "88", - "length": "13", - "line": "22", - "parentIndex": "78", - "start": "682" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "89", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "67", - "end": "688", - "id": "90", - "length": "7", - "line": "22", - "parentIndex": "87", - "start": "682" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "4", - "end": "696", - "id": "77", - "length": "78", - "line": "22", - "parentIndex": "76", - "start": "619" - } - }, - "src": { - "column": "4", - "end": "696", - "id": "77", - "length": "78", - "line": "22", - "parentIndex": "58", - "start": "619" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_IERC20_Approval_\u002676", - "typeString": "event IERC20.Approval" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "106", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "828", - "id": "93", - "length": "55", - "line": "27", - "parentIndex": "92", - "start": "774" - } - }, - "id": "92", - "kind": "KIND_FUNCTION", - "name": "totalSupply", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "94", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "96", - "nodeType": "VARIABLE_DECLARATION", - "scope": "96", - "src": { - "column": "50", - "end": "826", - "id": "97", - "length": "7", - "line": "27", - "parentIndex": "94", - "start": "820" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "98", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "50", - "end": "826", - "id": "99", - "length": "7", - "line": "27", - "parentIndex": "96", - "start": "820" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "50", - "end": "826", - "id": "95", - "length": "7", - "line": "27", - "parentIndex": "92", - "start": "820" - } - }, - "returnParameters": { - "id": "100", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "102", - "nodeType": "VARIABLE_DECLARATION", - "scope": "102", - "src": { - "column": "50", - "end": "826", - "id": "103", - "length": "7", - "line": "27", - "parentIndex": "100", - "start": "820" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "104", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "50", - "end": "826", - "id": "105", - "length": "7", - "line": "27", - "parentIndex": "102", - "start": "820" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "50", - "end": "826", - "id": "101", - "length": "7", - "line": "27", - "parentIndex": "92", - "start": "820" - } - }, - "scope": "58", - "src": { - "column": "4", - "end": "828", - "id": "93", - "length": "55", - "line": "27", - "parentIndex": "58", - "start": "774" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256", - "typeString": "function(uint256)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "122", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "979", - "id": "109", - "length": "68", - "line": "32", - "parentIndex": "108", - "start": "912" - } - }, - "id": "108", - "kind": "KIND_FUNCTION", - "name": "balanceOf", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "110", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "112", - "name": "account", - "nodeType": "VARIABLE_DECLARATION", - "scope": "112", - "src": { - "column": "23", - "end": "945", - "id": "113", - "length": "15", - "line": "32", - "parentIndex": "110", - "start": "931" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "114", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "937", - "id": "115", - "length": "7", - "line": "32", - "parentIndex": "112", - "start": "931" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "945", - "id": "111", - "length": "15", - "line": "32", - "parentIndex": "108", - "start": "931" - } - }, - "returnParameters": { - "id": "116", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "118", - "nodeType": "VARIABLE_DECLARATION", - "scope": "118", - "src": { - "column": "63", - "end": "977", - "id": "119", - "length": "7", - "line": "32", - "parentIndex": "116", - "start": "971" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "120", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "63", - "end": "977", - "id": "121", - "length": "7", - "line": "32", - "parentIndex": "118", - "start": "971" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "63", - "end": "977", - "id": "117", - "length": "7", - "line": "32", - "parentIndex": "108", - "start": "971" - } - }, - "scope": "58", - "src": { - "column": "4", - "end": "979", - "id": "109", - "length": "68", - "line": "32", - "parentIndex": "58", - "start": "912" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "142", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "1262", - "id": "125", - "length": "70", - "line": "41", - "parentIndex": "124", - "start": "1193" - } - }, - "id": "124", - "kind": "KIND_FUNCTION", - "name": "transfer", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "126", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "128", - "name": "to", - "nodeType": "VARIABLE_DECLARATION", - "scope": "128", - "src": { - "column": "22", - "end": "1220", - "id": "129", - "length": "10", - "line": "41", - "parentIndex": "126", - "start": "1211" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "130", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "22", - "end": "1217", - "id": "131", - "length": "7", - "line": "41", - "parentIndex": "128", - "start": "1211" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "132", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "132", - "src": { - "column": "34", - "end": "1236", - "id": "133", - "length": "14", - "line": "41", - "parentIndex": "126", - "start": "1223" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "134", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "34", - "end": "1229", - "id": "135", - "length": "7", - "line": "41", - "parentIndex": "132", - "start": "1223" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "22", - "end": "1236", - "id": "127", - "length": "26", - "line": "41", - "parentIndex": "124", - "start": "1211" - } - }, - "returnParameters": { - "id": "136", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "138", - "nodeType": "VARIABLE_DECLARATION", - "scope": "138", - "src": { - "column": "68", - "end": "1260", - "id": "139", - "length": "4", - "line": "41", - "parentIndex": "136", - "start": "1257" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "140", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "68", - "end": "1260", - "id": "141", - "length": "4", - "line": "41", - "parentIndex": "138", - "start": "1257" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "68", - "end": "1260", - "id": "137", - "length": "4", - "line": "41", - "parentIndex": "124", - "start": "1257" - } - }, - "scope": "58", - "src": { - "column": "4", - "end": "1262", - "id": "125", - "length": "70", - "line": "41", - "parentIndex": "58", - "start": "1193" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "162", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "1620", - "id": "145", - "length": "83", - "line": "50", - "parentIndex": "144", - "start": "1538" - } - }, - "id": "144", - "kind": "KIND_FUNCTION", - "name": "allowance", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "146", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "148", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "148", - "src": { - "column": "23", - "end": "1569", - "id": "149", - "length": "13", - "line": "50", - "parentIndex": "146", - "start": "1557" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "150", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "1563", - "id": "151", - "length": "7", - "line": "50", - "parentIndex": "148", - "start": "1557" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "152", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "152", - "src": { - "column": "38", - "end": "1586", - "id": "153", - "length": "15", - "line": "50", - "parentIndex": "146", - "start": "1572" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "154", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "38", - "end": "1578", - "id": "155", - "length": "7", - "line": "50", - "parentIndex": "152", - "start": "1572" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "1586", - "id": "147", - "length": "30", - "line": "50", - "parentIndex": "144", - "start": "1557" - } - }, - "returnParameters": { - "id": "156", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "158", - "nodeType": "VARIABLE_DECLARATION", - "scope": "158", - "src": { - "column": "78", - "end": "1618", - "id": "159", - "length": "7", - "line": "50", - "parentIndex": "156", - "start": "1612" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "160", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "78", - "end": "1618", - "id": "161", - "length": "7", - "line": "50", - "parentIndex": "158", - "start": "1612" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "78", - "end": "1618", - "id": "157", - "length": "7", - "line": "50", - "parentIndex": "144", - "start": "1612" - } - }, - "scope": "58", - "src": { - "column": "4", - "end": "1620", - "id": "145", - "length": "83", - "line": "50", - "parentIndex": "58", - "start": "1538" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address", - "typeString": "function(address,address)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "182", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "2347", - "id": "165", - "length": "74", - "line": "66", - "parentIndex": "164", - "start": "2274" - } - }, - "id": "164", - "kind": "KIND_FUNCTION", - "name": "approve", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "166", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "168", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "168", - "src": { - "column": "21", - "end": "2305", - "id": "169", - "length": "15", - "line": "66", - "parentIndex": "166", - "start": "2291" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "170", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "21", - "end": "2297", - "id": "171", - "length": "7", - "line": "66", - "parentIndex": "168", - "start": "2291" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "172", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "172", - "src": { - "column": "38", - "end": "2321", - "id": "173", - "length": "14", - "line": "66", - "parentIndex": "166", - "start": "2308" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "174", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "38", - "end": "2314", - "id": "175", - "length": "7", - "line": "66", - "parentIndex": "172", - "start": "2308" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "21", - "end": "2321", - "id": "167", - "length": "31", - "line": "66", - "parentIndex": "164", - "start": "2291" - } - }, - "returnParameters": { - "id": "176", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "178", - "nodeType": "VARIABLE_DECLARATION", - "scope": "178", - "src": { - "column": "72", - "end": "2345", - "id": "179", - "length": "4", - "line": "66", - "parentIndex": "176", - "start": "2342" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "180", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "72", - "end": "2345", - "id": "181", - "length": "4", - "line": "66", - "parentIndex": "178", - "start": "2342" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "72", - "end": "2345", - "id": "177", - "length": "4", - "line": "66", - "parentIndex": "164", - "start": "2342" - } - }, - "scope": "58", - "src": { - "column": "4", - "end": "2347", - "id": "165", - "length": "74", - "line": "66", - "parentIndex": "58", - "start": "2274" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "206", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "2733", - "id": "185", - "length": "88", - "line": "77", - "parentIndex": "184", - "start": "2646" - } - }, - "id": "184", - "kind": "KIND_FUNCTION", - "name": "transferFrom", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "186", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "188", - "name": "from", - "nodeType": "VARIABLE_DECLARATION", - "scope": "188", - "src": { - "column": "26", - "end": "2679", - "id": "189", - "length": "12", - "line": "77", - "parentIndex": "186", - "start": "2668" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "190", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "26", - "end": "2674", - "id": "191", - "length": "7", - "line": "77", - "parentIndex": "188", - "start": "2668" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "192", - "name": "to", - "nodeType": "VARIABLE_DECLARATION", - "scope": "192", - "src": { - "column": "40", - "end": "2691", - "id": "193", - "length": "10", - "line": "77", - "parentIndex": "186", - "start": "2682" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "194", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "40", - "end": "2688", - "id": "195", - "length": "7", - "line": "77", - "parentIndex": "192", - "start": "2682" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "196", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "196", - "src": { - "column": "52", - "end": "2707", - "id": "197", - "length": "14", - "line": "77", - "parentIndex": "186", - "start": "2694" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "198", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "52", - "end": "2700", - "id": "199", - "length": "7", - "line": "77", - "parentIndex": "196", - "start": "2694" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "26", - "end": "2707", - "id": "187", - "length": "40", - "line": "77", - "parentIndex": "184", - "start": "2668" - } - }, - "returnParameters": { - "id": "200", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "202", - "nodeType": "VARIABLE_DECLARATION", - "scope": "202", - "src": { - "column": "86", - "end": "2731", - "id": "203", - "length": "4", - "line": "77", - "parentIndex": "200", - "start": "2728" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "204", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "86", - "end": "2731", - "id": "205", - "length": "4", - "line": "77", - "parentIndex": "202", - "start": "2728" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "86", - "end": "2731", - "id": "201", - "length": "4", - "line": "77", - "parentIndex": "184", - "start": "2728" - } - }, - "scope": "58", - "src": { - "column": "4", - "end": "2733", - "id": "185", - "length": "88", - "line": "77", - "parentIndex": "58", - "start": "2646" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - }, - "visibility": "EXTERNAL" - } - } - ], - "src": { - "end": "2735", - "length": "2534", - "line": "9", - "parentIndex": "49", - "start": "202" - } - } - } - ] - }, - "src": { - "id": 50, - "line": 9, - "start": 202, - "end": 2735, - "length": 2534, - "parent_index": 48 - } - }, - { - "id": 207, - "license": "MIT", - "name": "IERC20Metadata", - "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "exported_symbols": [ - { - "id": 207, - "name": "IERC20Metadata", - "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol" - }, - { - "id": 49, - "name": "IERC20", - "absolute_path": "IERC20.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "211", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "2871", - "id": "212", - "length": "23", - "line": "84", - "parentIndex": "207", - "start": "2849" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "IERC20.sol", - "file": "../IERC20.sol", - "id": "213", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "207", - "sourceUnit": "49", - "src": { - "end": "2896", - "length": "23", - "line": "86", - "parentIndex": "207", - "start": "2874" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "baseContracts": [ - { - "baseName": { - "id": "221", - "name": "IERC20", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "49", - "src": { - "column": "28", - "end": "3049", - "id": "222", - "length": "6", - "line": "93", - "parentIndex": "218", - "start": "3044" - } - }, - "id": "219", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "28", - "end": "3049", - "id": "220", - "length": "6", - "line": "93", - "parentIndex": "218", - "start": "3044" - } - } - ], - "contractDependencies": [ - "49", - "213" - ], - "fullyImplemented": true, - "id": "218", - "kind": "KIND_LIBRARY", - "linearizedBaseContracts": [ - "49", - "218", - "213" - ], - "name": "IERC20Metadata", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "238", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "3169", - "id": "225", - "length": "54", - "line": "97", - "parentIndex": "224", - "start": "3116" - } - }, - "id": "224", - "kind": "KIND_FUNCTION", - "name": "name", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "226", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "228", - "nodeType": "VARIABLE_DECLARATION", - "scope": "228", - "src": { - "column": "43", - "end": "3167", - "id": "229", - "length": "13", - "line": "97", - "parentIndex": "226", - "start": "3155" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "230", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "43", - "end": "3160", - "id": "231", - "length": "6", - "line": "97", - "parentIndex": "228", - "start": "3155" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "43", - "end": "3167", - "id": "227", - "length": "13", - "line": "97", - "parentIndex": "224", - "start": "3155" - } - }, - "returnParameters": { - "id": "232", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "234", - "nodeType": "VARIABLE_DECLARATION", - "scope": "234", - "src": { - "column": "43", - "end": "3167", - "id": "235", - "length": "13", - "line": "97", - "parentIndex": "232", - "start": "3155" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "236", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "43", - "end": "3160", - "id": "237", - "length": "6", - "line": "97", - "parentIndex": "234", - "start": "3155" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "43", - "end": "3167", - "id": "233", - "length": "13", - "line": "97", - "parentIndex": "224", - "start": "3155" - } - }, - "scope": "218", - "src": { - "column": "4", - "end": "3169", - "id": "225", - "length": "54", - "line": "97", - "parentIndex": "218", - "start": "3116" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_string", - "typeString": "function(string)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "254", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "3292", - "id": "241", - "length": "56", - "line": "102", - "parentIndex": "240", - "start": "3237" - } - }, - "id": "240", - "kind": "KIND_FUNCTION", - "name": "symbol", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "242", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "244", - "nodeType": "VARIABLE_DECLARATION", - "scope": "244", - "src": { - "column": "45", - "end": "3290", - "id": "245", - "length": "13", - "line": "102", - "parentIndex": "242", - "start": "3278" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "246", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "45", - "end": "3283", - "id": "247", - "length": "6", - "line": "102", - "parentIndex": "244", - "start": "3278" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "45", - "end": "3290", - "id": "243", - "length": "13", - "line": "102", - "parentIndex": "240", - "start": "3278" - } - }, - "returnParameters": { - "id": "248", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "250", - "nodeType": "VARIABLE_DECLARATION", - "scope": "250", - "src": { - "column": "45", - "end": "3290", - "id": "251", - "length": "13", - "line": "102", - "parentIndex": "248", - "start": "3278" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "252", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "45", - "end": "3283", - "id": "253", - "length": "6", - "line": "102", - "parentIndex": "250", - "start": "3278" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "45", - "end": "3290", - "id": "249", - "length": "13", - "line": "102", - "parentIndex": "240", - "start": "3278" - } - }, - "scope": "218", - "src": { - "column": "4", - "end": "3292", - "id": "241", - "length": "56", - "line": "102", - "parentIndex": "218", - "start": "3237" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_string", - "typeString": "function(string)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "270", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "3418", - "id": "257", - "length": "50", - "line": "107", - "parentIndex": "256", - "start": "3369" - } - }, - "id": "256", - "kind": "KIND_FUNCTION", - "name": "decimals", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "258", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "260", - "nodeType": "VARIABLE_DECLARATION", - "scope": "260", - "src": { - "column": "47", - "end": "3416", - "id": "261", - "length": "5", - "line": "107", - "parentIndex": "258", - "start": "3412" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": "262", - "name": "uint8", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "47", - "end": "3416", - "id": "263", - "length": "5", - "line": "107", - "parentIndex": "260", - "start": "3412" - }, - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "47", - "end": "3416", - "id": "259", - "length": "5", - "line": "107", - "parentIndex": "256", - "start": "3412" - } - }, - "returnParameters": { - "id": "264", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "266", - "nodeType": "VARIABLE_DECLARATION", - "scope": "266", - "src": { - "column": "47", - "end": "3416", - "id": "267", - "length": "5", - "line": "107", - "parentIndex": "264", - "start": "3412" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": "268", - "name": "uint8", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "47", - "end": "3416", - "id": "269", - "length": "5", - "line": "107", - "parentIndex": "266", - "start": "3412" - }, - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "47", - "end": "3416", - "id": "265", - "length": "5", - "line": "107", - "parentIndex": "256", - "start": "3412" - } - }, - "scope": "218", - "src": { - "column": "4", - "end": "3418", - "id": "257", - "length": "50", - "line": "107", - "parentIndex": "218", - "start": "3369" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint8", - "typeString": "function(uint8)" - }, - "visibility": "EXTERNAL" - } - } - ], - "src": { - "end": "3420", - "length": "405", - "line": "93", - "parentIndex": "207", - "start": "3016" - } - } - } - ] - }, - "src": { - "id": 208, - "line": 93, - "start": 3016, - "end": 3420, - "length": 405, - "parent_index": 48 - } - }, - { - "id": 271, - "license": "MIT", - "name": "Context", - "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/utils/Context.sol", - "exported_symbols": [ - { - "id": 271, - "name": "Context", - "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/utils/Context.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "277", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "3532", - "id": "278", - "length": "23", - "line": "114", - "parentIndex": "271", - "start": "3510" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "fullyImplemented": true, - "id": "280", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "280" - ], - "name": "Context", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "296", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "66", - "end": "4159", - "id": "297", - "length": "34", - "line": "127", - "parentIndex": "282", - "start": "4126" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "302", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "4145", - "id": "303", - "length": "3", - "line": "128", - "parentIndex": "300", - "start": "4143" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "300", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "4152", - "id": "301", - "length": "10", - "line": "128", - "parentIndex": "296", - "start": "4143" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "functionReturnParameters": "282", - "id": "298", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "4153", - "id": "299", - "length": "18", - "line": "128", - "parentIndex": "282", - "start": "4136" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ] - }, - "id": "282", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_msgSender", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "284", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "286", - "nodeType": "VARIABLE_DECLARATION", - "scope": "286", - "src": { - "column": "57", - "end": "4123", - "id": "287", - "length": "7", - "line": "127", - "parentIndex": "284", - "start": "4117" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "288", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "57", - "end": "4123", - "id": "289", - "length": "7", - "line": "127", - "parentIndex": "286", - "start": "4117" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "57", - "end": "4123", - "id": "285", - "length": "7", - "line": "127", - "parentIndex": "282", - "start": "4117" - } - }, - "returnParameters": { - "id": "290", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "292", - "nodeType": "VARIABLE_DECLARATION", - "scope": "292", - "src": { - "column": "57", - "end": "4123", - "id": "293", - "length": "7", - "line": "127", - "parentIndex": "290", - "start": "4117" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "294", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "57", - "end": "4123", - "id": "295", - "length": "7", - "line": "127", - "parentIndex": "292", - "start": "4117" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "57", - "end": "4123", - "id": "291", - "length": "7", - "line": "127", - "parentIndex": "282", - "start": "4117" - } - }, - "scope": "280", - "src": { - "column": "4", - "end": "4159", - "id": "283", - "length": "96", - "line": "127", - "parentIndex": "280", - "start": "4064" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "319", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "71", - "end": "4264", - "id": "320", - "length": "32", - "line": "131", - "parentIndex": "305", - "start": "4233" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "325", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "4252", - "id": "326", - "length": "3", - "line": "132", - "parentIndex": "323", - "start": "4250" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "323", - "memberName": "data", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "4257", - "id": "324", - "length": "8", - "line": "132", - "parentIndex": "319", - "start": "4250" - }, - "typeDescription": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - }, - "functionReturnParameters": "305", - "id": "321", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "4258", - "id": "322", - "length": "16", - "line": "132", - "parentIndex": "305", - "start": "4243" - }, - "typeDescription": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - } - ] - }, - "id": "305", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_msgData", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "307", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "309", - "nodeType": "VARIABLE_DECLARATION", - "scope": "309", - "src": { - "column": "55", - "end": "4230", - "id": "310", - "length": "14", - "line": "131", - "parentIndex": "307", - "start": "4217" - }, - "stateMutability": "MUTABLE", - "storageLocation": "CALLDATA", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "311", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "55", - "end": "4221", - "id": "312", - "length": "5", - "line": "131", - "parentIndex": "309", - "start": "4217" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "55", - "end": "4230", - "id": "308", - "length": "14", - "line": "131", - "parentIndex": "305", - "start": "4217" - } - }, - "returnParameters": { - "id": "313", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "315", - "nodeType": "VARIABLE_DECLARATION", - "scope": "315", - "src": { - "column": "55", - "end": "4230", - "id": "316", - "length": "14", - "line": "131", - "parentIndex": "313", - "start": "4217" - }, - "stateMutability": "MUTABLE", - "storageLocation": "CALLDATA", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "317", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "55", - "end": "4221", - "id": "318", - "length": "5", - "line": "131", - "parentIndex": "315", - "start": "4217" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "55", - "end": "4230", - "id": "314", - "length": "14", - "line": "131", - "parentIndex": "305", - "start": "4217" - } - }, - "scope": "280", - "src": { - "column": "4", - "end": "4264", - "id": "306", - "length": "99", - "line": "131", - "parentIndex": "280", - "start": "4166" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_bytes", - "typeString": "function(bytes)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - } - ], - "src": { - "end": "4266", - "length": "235", - "line": "126", - "parentIndex": "271", - "start": "4032" - } - } - } - ] - }, - "src": { - "id": 272, - "line": 126, - "start": 4032, - "end": 4266, - "length": 235, - "parent_index": 48 - } - }, - { - "id": 327, - "license": "MIT", - "name": "ERC20", - "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/ERC20.sol", - "exported_symbols": [ - { - "id": 327, - "name": "ERC20", - "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/ERC20.sol" - }, - { - "id": 342, - "name": "Context" - }, - { - "id": 346, - "name": "IERC20" - }, - { - "id": 350, - "name": "IERC20Metadata" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "335", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "4397", - "id": "336", - "length": "23", - "line": "140", - "parentIndex": "327", - "start": "4375" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "baseContracts": [ - { - "baseName": { - "id": "344", - "name": "Context", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "271", - "src": { - "column": "18", - "end": "5826", - "id": "345", - "length": "7", - "line": "174", - "parentIndex": "341", - "start": "5820" - } - }, - "id": "342", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "18", - "end": "5826", - "id": "343", - "length": "7", - "line": "174", - "parentIndex": "341", - "start": "5820" - } - }, - { - "baseName": { - "id": "348", - "name": "IERC20", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "49", - "src": { - "column": "27", - "end": "5834", - "id": "349", - "length": "6", - "line": "174", - "parentIndex": "341", - "start": "5829" - } - }, - "id": "346", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "27", - "end": "5834", - "id": "347", - "length": "6", - "line": "174", - "parentIndex": "341", - "start": "5829" - } - }, - { - "baseName": { - "id": "352", - "name": "IERC20Metadata", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "207", - "src": { - "column": "35", - "end": "5850", - "id": "353", - "length": "14", - "line": "174", - "parentIndex": "341", - "start": "5837" - } - }, - "id": "350", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "35", - "end": "5850", - "id": "351", - "length": "14", - "line": "174", - "parentIndex": "341", - "start": "5837" - } - } - ], - "contractDependencies": [ - "271", - "49", - "207" - ], - "fullyImplemented": true, - "id": "341", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "271", - "49", - "207", - "341" - ], - "name": "ERC20", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "355", - "isStateVariable": true, - "name": "_balances", - "nodeType": "VARIABLE_DECLARATION", - "scope": "341", - "src": { - "column": "4", - "end": "5903", - "id": "356", - "length": "46", - "line": "175", - "parentIndex": "341", - "start": "5858" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "typeName": { - "id": "357", - "keyType": { - "id": "359", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "12", - "end": "5872", - "id": "360", - "length": "7", - "line": "175", - "parentIndex": "357", - "start": "5866" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": { - "column": "4", - "end": "5884", - "id": "358", - "length": "27", - "line": "175", - "parentIndex": "355", - "start": "5858" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "valueType": { - "id": "361", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "5883", - "id": "362", - "length": "7", - "line": "175", - "parentIndex": "357", - "start": "5877" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "364", - "isStateVariable": true, - "name": "_allowances", - "nodeType": "VARIABLE_DECLARATION", - "scope": "341", - "src": { - "column": "4", - "end": "5977", - "id": "365", - "length": "68", - "line": "177", - "parentIndex": "341", - "start": "5910" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - "typeName": { - "id": "366", - "keyType": { - "id": "368", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "12", - "end": "5924", - "id": "369", - "length": "7", - "line": "177", - "parentIndex": "366", - "start": "5918" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": { - "column": "4", - "end": "5956", - "id": "367", - "length": "47", - "line": "177", - "parentIndex": "364", - "start": "5910" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - "valueType": { - "id": "370", - "keyType": { - "id": "373", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "5943", - "id": "374", - "length": "7", - "line": "177", - "parentIndex": "366", - "start": "5937" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "name": "mapping(address=\u003euint256)", - "nodeType": "MAPPING_TYPE_NAME", - "src": { - "column": "23", - "end": "5955", - "id": "371", - "length": "27", - "line": "177", - "parentIndex": "366", - "start": "5929" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256", - "typeString": "mapping(address=\u003euint256)" - }, - "valueType": { - "id": "375", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "42", - "end": "5954", - "id": "376", - "length": "7", - "line": "177", - "parentIndex": "366", - "start": "5948" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "378", - "isStateVariable": true, - "name": "_totalSupply", - "nodeType": "VARIABLE_DECLARATION", - "scope": "341", - "src": { - "column": "4", - "end": "6012", - "id": "379", - "length": "29", - "line": "179", - "parentIndex": "341", - "start": "5984" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "380", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "4", - "end": "5990", - "id": "381", - "length": "7", - "line": "179", - "parentIndex": "378", - "start": "5984" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "383", - "isStateVariable": true, - "name": "_name", - "nodeType": "VARIABLE_DECLARATION", - "scope": "341", - "src": { - "column": "4", - "end": "6039", - "id": "384", - "length": "21", - "line": "181", - "parentIndex": "341", - "start": "6019" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "385", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "4", - "end": "6024", - "id": "386", - "length": "6", - "line": "181", - "parentIndex": "383", - "start": "6019" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "388", - "isStateVariable": true, - "name": "_symbol", - "nodeType": "VARIABLE_DECLARATION", - "scope": "341", - "src": { - "column": "4", - "end": "6067", - "id": "389", - "length": "23", - "line": "182", - "parentIndex": "341", - "start": "6045" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "390", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "4", - "end": "6050", - "id": "391", - "length": "6", - "line": "182", - "parentIndex": "388", - "start": "6045" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "406", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "60", - "end": "6362", - "id": "407", - "length": "57", - "line": "190", - "parentIndex": "393", - "start": "6306" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "410", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "412", - "name": "_name", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "383", - "src": { - "column": "8", - "end": "6320", - "id": "413", - "length": "5", - "line": "191", - "parentIndex": "410", - "start": "6316" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "414", - "name": "name_", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "414", - "src": { - "column": "16", - "end": "6328", - "id": "415", - "length": "5", - "line": "191", - "parentIndex": "410", - "start": "6324" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - }, - "src": { - "column": "8", - "end": "6328", - "id": "411", - "length": "13", - "line": "191", - "parentIndex": "406", - "start": "6316" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - }, - "id": "408", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "6329", - "id": "409", - "length": "14", - "line": "191", - "parentIndex": "406", - "start": "6316" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "418", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "420", - "name": "_symbol", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "388", - "src": { - "column": "8", - "end": "6345", - "id": "421", - "length": "7", - "line": "192", - "parentIndex": "418", - "start": "6339" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "422", - "name": "symbol_", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "422", - "src": { - "column": "18", - "end": "6355", - "id": "423", - "length": "7", - "line": "192", - "parentIndex": "418", - "start": "6349" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - }, - "src": { - "column": "8", - "end": "6355", - "id": "419", - "length": "17", - "line": "192", - "parentIndex": "406", - "start": "6339" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - }, - "id": "416", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "6356", - "id": "417", - "length": "18", - "line": "192", - "parentIndex": "406", - "start": "6339" - } - } - } - ] - }, - "id": "393", - "implemented": true, - "kind": "CONSTRUCTOR", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "395", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "397", - "name": "name_", - "nodeType": "VARIABLE_DECLARATION", - "scope": "397", - "src": { - "column": "16", - "end": "6280", - "id": "398", - "length": "19", - "line": "190", - "parentIndex": "395", - "start": "6262" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "399", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "16", - "end": "6267", - "id": "400", - "length": "6", - "line": "190", - "parentIndex": "397", - "start": "6262" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "401", - "name": "symbol_", - "nodeType": "VARIABLE_DECLARATION", - "scope": "401", - "src": { - "column": "37", - "end": "6303", - "id": "402", - "length": "21", - "line": "190", - "parentIndex": "395", - "start": "6283" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "403", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "37", - "end": "6288", - "id": "404", - "length": "6", - "line": "190", - "parentIndex": "401", - "start": "6283" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "16", - "end": "6303", - "id": "396", - "length": "42", - "line": "190", - "parentIndex": "393", - "start": "6262" - } - }, - "returnParameters": { - "id": "405", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "6362", - "id": "394", - "length": "113", - "line": "190", - "parentIndex": "393", - "start": "6250" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "6362", - "id": "394", - "length": "113", - "line": "190", - "parentIndex": "341", - "start": "6250" - }, - "stateMutability": "NONPAYABLE", - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "441", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "73", - "end": "6525", - "id": "442", - "length": "29", - "line": "198", - "parentIndex": "425", - "start": "6497" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "445", - "name": "_name", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "383", - "src": { - "column": "15", - "end": "6518", - "id": "446", - "length": "5", - "line": "199", - "parentIndex": "441", - "start": "6514" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - }, - "functionReturnParameters": "425", - "id": "443", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "6519", - "id": "444", - "length": "13", - "line": "199", - "parentIndex": "425", - "start": "6507" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - } - ] - }, - "id": "425", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "name", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "427", - "name": "name", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "224", - "src": { - "column": "40", - "end": "6471", - "id": "428", - "length": "8", - "line": "198", - "parentIndex": "425", - "start": "6464" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_string", - "typeString": "function(string)" - } - } - ], - "parameters": { - "id": "429", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "431", - "nodeType": "VARIABLE_DECLARATION", - "scope": "431", - "src": { - "column": "58", - "end": "6494", - "id": "432", - "length": "13", - "line": "198", - "parentIndex": "429", - "start": "6482" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "433", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "58", - "end": "6487", - "id": "434", - "length": "6", - "line": "198", - "parentIndex": "431", - "start": "6482" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "58", - "end": "6494", - "id": "430", - "length": "13", - "line": "198", - "parentIndex": "425", - "start": "6482" - } - }, - "returnParameters": { - "id": "435", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "437", - "nodeType": "VARIABLE_DECLARATION", - "scope": "437", - "src": { - "column": "58", - "end": "6494", - "id": "438", - "length": "13", - "line": "198", - "parentIndex": "435", - "start": "6482" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "439", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "58", - "end": "6487", - "id": "440", - "length": "6", - "line": "198", - "parentIndex": "437", - "start": "6482" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "58", - "end": "6494", - "id": "436", - "length": "13", - "line": "198", - "parentIndex": "425", - "start": "6482" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "6525", - "id": "426", - "length": "98", - "line": "198", - "parentIndex": "341", - "start": "6428" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_string", - "typeString": "function(string)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "464", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "75", - "end": "6740", - "id": "465", - "length": "31", - "line": "206", - "parentIndex": "448", - "start": "6710" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "468", - "name": "_symbol", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "388", - "src": { - "column": "15", - "end": "6733", - "id": "469", - "length": "7", - "line": "207", - "parentIndex": "464", - "start": "6727" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - }, - "functionReturnParameters": "448", - "id": "466", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "6734", - "id": "467", - "length": "15", - "line": "207", - "parentIndex": "448", - "start": "6720" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - } - ] - }, - "id": "448", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "symbol", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "450", - "name": "symbol", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "240", - "src": { - "column": "42", - "end": "6684", - "id": "451", - "length": "8", - "line": "206", - "parentIndex": "448", - "start": "6677" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_string", - "typeString": "function(string)" - } - } - ], - "parameters": { - "id": "452", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "454", - "nodeType": "VARIABLE_DECLARATION", - "scope": "454", - "src": { - "column": "60", - "end": "6707", - "id": "455", - "length": "13", - "line": "206", - "parentIndex": "452", - "start": "6695" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "456", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "60", - "end": "6700", - "id": "457", - "length": "6", - "line": "206", - "parentIndex": "454", - "start": "6695" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "60", - "end": "6707", - "id": "453", - "length": "13", - "line": "206", - "parentIndex": "448", - "start": "6695" - } - }, - "returnParameters": { - "id": "458", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "460", - "nodeType": "VARIABLE_DECLARATION", - "scope": "460", - "src": { - "column": "60", - "end": "6707", - "id": "461", - "length": "13", - "line": "206", - "parentIndex": "458", - "start": "6695" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "462", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "60", - "end": "6700", - "id": "463", - "length": "6", - "line": "206", - "parentIndex": "460", - "start": "6695" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "60", - "end": "6707", - "id": "459", - "length": "13", - "line": "206", - "parentIndex": "448", - "start": "6695" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "6740", - "id": "449", - "length": "102", - "line": "206", - "parentIndex": "341", - "start": "6639" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_string", - "typeString": "function(string)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "487", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "69", - "end": "7464", - "id": "488", - "length": "26", - "line": "223", - "parentIndex": "471", - "start": "7439" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "3138", - "id": "491", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "15", - "end": "7457", - "id": "492", - "length": "2", - "line": "224", - "parentIndex": "487", - "start": "7456" - }, - "typeDescription": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - } - }, - "functionReturnParameters": "471", - "id": "489", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "7458", - "id": "490", - "length": "10", - "line": "224", - "parentIndex": "471", - "start": "7449" - }, - "typeDescription": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - } - } - } - ] - }, - "id": "471", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "decimals", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "473", - "name": "decimals", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "256", - "src": { - "column": "44", - "end": "7421", - "id": "474", - "length": "8", - "line": "223", - "parentIndex": "471", - "start": "7414" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint8", - "typeString": "function(uint8)" - } - } - ], - "parameters": { - "id": "475", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "477", - "nodeType": "VARIABLE_DECLARATION", - "scope": "477", - "src": { - "column": "62", - "end": "7436", - "id": "478", - "length": "5", - "line": "223", - "parentIndex": "475", - "start": "7432" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": "479", - "name": "uint8", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "7436", - "id": "480", - "length": "5", - "line": "223", - "parentIndex": "477", - "start": "7432" - }, - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "62", - "end": "7436", - "id": "476", - "length": "5", - "line": "223", - "parentIndex": "471", - "start": "7432" - } - }, - "returnParameters": { - "id": "481", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "483", - "nodeType": "VARIABLE_DECLARATION", - "scope": "483", - "src": { - "column": "62", - "end": "7436", - "id": "484", - "length": "5", - "line": "223", - "parentIndex": "481", - "start": "7432" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": "485", - "name": "uint8", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "7436", - "id": "486", - "length": "5", - "line": "223", - "parentIndex": "483", - "start": "7432" - }, - "typeDescription": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "62", - "end": "7436", - "id": "482", - "length": "5", - "line": "223", - "parentIndex": "471", - "start": "7432" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "7464", - "id": "472", - "length": "91", - "line": "223", - "parentIndex": "341", - "start": "7374" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint8", - "typeString": "function(uint8)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "510", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "74", - "end": "7630", - "id": "511", - "length": "36", - "line": "230", - "parentIndex": "494", - "start": "7595" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "514", - "name": "_totalSupply", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "378", - "src": { - "column": "15", - "end": "7623", - "id": "515", - "length": "12", - "line": "231", - "parentIndex": "510", - "start": "7612" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "494", - "id": "512", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "7624", - "id": "513", - "length": "20", - "line": "231", - "parentIndex": "494", - "start": "7605" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "494", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "totalSupply", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "496", - "name": "totalSupply", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "92", - "src": { - "column": "47", - "end": "7575", - "id": "497", - "length": "8", - "line": "230", - "parentIndex": "494", - "start": "7568" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256", - "typeString": "function(uint256)" - } - } - ], - "parameters": { - "id": "498", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "500", - "nodeType": "VARIABLE_DECLARATION", - "scope": "500", - "src": { - "column": "65", - "end": "7592", - "id": "501", - "length": "7", - "line": "230", - "parentIndex": "498", - "start": "7586" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "502", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "65", - "end": "7592", - "id": "503", - "length": "7", - "line": "230", - "parentIndex": "500", - "start": "7586" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "7592", - "id": "499", - "length": "7", - "line": "230", - "parentIndex": "494", - "start": "7586" - } - }, - "returnParameters": { - "id": "504", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "506", - "nodeType": "VARIABLE_DECLARATION", - "scope": "506", - "src": { - "column": "65", - "end": "7592", - "id": "507", - "length": "7", - "line": "230", - "parentIndex": "504", - "start": "7586" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "508", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "65", - "end": "7592", - "id": "509", - "length": "7", - "line": "230", - "parentIndex": "506", - "start": "7586" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "7592", - "id": "505", - "length": "7", - "line": "230", - "parentIndex": "494", - "start": "7586" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "7630", - "id": "495", - "length": "106", - "line": "230", - "parentIndex": "341", - "start": "7525" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256", - "typeString": "function(uint256)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "533", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "87", - "end": "7813", - "id": "534", - "length": "42", - "line": "237", - "parentIndex": "517", - "start": "7772" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "541", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "541", - "src": { - "column": "25", - "end": "7805", - "id": "542", - "length": "7", - "line": "238", - "parentIndex": "537", - "start": "7799" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "537", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "539", - "name": "_balances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "355", - "src": { - "column": "15", - "end": "7797", - "id": "540", - "length": "9", - "line": "238", - "parentIndex": "537", - "start": "7789" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "15", - "end": "7806", - "id": "538", - "length": "18", - "line": "238", - "parentIndex": "533", - "start": "7789" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "functionReturnParameters": "517", - "id": "535", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "7807", - "id": "536", - "length": "26", - "line": "238", - "parentIndex": "517", - "start": "7782" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - } - ] - }, - "id": "517", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "balanceOf", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "519", - "name": "balanceOf", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "108", - "src": { - "column": "60", - "end": "7752", - "id": "520", - "length": "8", - "line": "237", - "parentIndex": "517", - "start": "7745" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - ], - "parameters": { - "id": "521", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "523", - "name": "account", - "nodeType": "VARIABLE_DECLARATION", - "scope": "523", - "src": { - "column": "23", - "end": "7722", - "id": "524", - "length": "15", - "line": "237", - "parentIndex": "521", - "start": "7708" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "525", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "7714", - "id": "526", - "length": "7", - "line": "237", - "parentIndex": "523", - "start": "7708" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "7722", - "id": "522", - "length": "15", - "line": "237", - "parentIndex": "517", - "start": "7708" - } - }, - "returnParameters": { - "id": "527", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "529", - "nodeType": "VARIABLE_DECLARATION", - "scope": "529", - "src": { - "column": "78", - "end": "7769", - "id": "530", - "length": "7", - "line": "237", - "parentIndex": "527", - "start": "7763" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "531", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "78", - "end": "7769", - "id": "532", - "length": "7", - "line": "237", - "parentIndex": "529", - "start": "7763" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "78", - "end": "7769", - "id": "528", - "length": "7", - "line": "237", - "parentIndex": "517", - "start": "7763" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "7813", - "id": "518", - "length": "125", - "line": "237", - "parentIndex": "341", - "start": "7689" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "564", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "89", - "end": "8198", - "id": "565", - "length": "104", - "line": "249", - "parentIndex": "544", - "start": "8095" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "568" - ], - "declarations": [ - { - "id": "568", - "mutability": "MUTABLE", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "564", - "src": { - "column": "8", - "end": "8117", - "id": "569", - "length": "13", - "line": "250", - "parentIndex": "566", - "start": "8105" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "570", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "8111", - "id": "571", - "length": "7", - "line": "250", - "parentIndex": "568", - "start": "8105" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "566", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "574", - "name": "_msgSender", - "nodeType": "IDENTIFIER", - "src": { - "column": "24", - "end": "8130", - "id": "575", - "length": "10", - "line": "250", - "parentIndex": "572", - "start": "8121" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "572", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "24", - "end": "8132", - "id": "573", - "length": "12", - "line": "250", - "parentIndex": "566", - "start": "8121" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "8133", - "id": "567", - "length": "29", - "line": "250", - "parentIndex": "564", - "start": "8105" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "578", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "566", - "src": { - "column": "18", - "end": "8157", - "id": "579", - "length": "5", - "line": "251", - "parentIndex": "576", - "start": "8153" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "580", - "name": "to", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "580", - "src": { - "column": "25", - "end": "8161", - "id": "581", - "length": "2", - "line": "251", - "parentIndex": "576", - "start": "8160" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "582", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "582", - "src": { - "column": "29", - "end": "8169", - "id": "583", - "length": "6", - "line": "251", - "parentIndex": "576", - "start": "8164" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "584", - "name": "_transfer", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "8151", - "id": "585", - "length": "9", - "line": "251", - "parentIndex": "576", - "start": "8143" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - } - } - }, - "id": "576", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "8170", - "id": "577", - "length": "28", - "line": "251", - "parentIndex": "564", - "start": "8143" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "typeString": "function(address,address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "588", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "15", - "end": "8191", - "id": "589", - "length": "4", - "line": "252", - "parentIndex": "564", - "start": "8188" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - "functionReturnParameters": "544", - "id": "586", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "8192", - "id": "587", - "length": "12", - "line": "252", - "parentIndex": "544", - "start": "8181" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - ] - }, - "id": "544", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "transfer", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "546", - "name": "transfer", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "124", - "src": { - "column": "65", - "end": "8078", - "id": "547", - "length": "8", - "line": "249", - "parentIndex": "544", - "start": "8071" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - } - } - ], - "parameters": { - "id": "548", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "550", - "name": "to", - "nodeType": "VARIABLE_DECLARATION", - "scope": "550", - "src": { - "column": "22", - "end": "8037", - "id": "551", - "length": "10", - "line": "249", - "parentIndex": "548", - "start": "8028" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "552", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "22", - "end": "8034", - "id": "553", - "length": "7", - "line": "249", - "parentIndex": "550", - "start": "8028" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "554", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "554", - "src": { - "column": "34", - "end": "8053", - "id": "555", - "length": "14", - "line": "249", - "parentIndex": "548", - "start": "8040" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "556", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "34", - "end": "8046", - "id": "557", - "length": "7", - "line": "249", - "parentIndex": "554", - "start": "8040" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "22", - "end": "8053", - "id": "549", - "length": "26", - "line": "249", - "parentIndex": "544", - "start": "8028" - } - }, - "returnParameters": { - "id": "558", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "560", - "nodeType": "VARIABLE_DECLARATION", - "scope": "560", - "src": { - "column": "83", - "end": "8092", - "id": "561", - "length": "4", - "line": "249", - "parentIndex": "558", - "start": "8089" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "562", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "83", - "end": "8092", - "id": "563", - "length": "4", - "line": "249", - "parentIndex": "560", - "start": "8089" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "83", - "end": "8092", - "id": "559", - "length": "4", - "line": "249", - "parentIndex": "544", - "start": "8089" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "8198", - "id": "545", - "length": "189", - "line": "249", - "parentIndex": "341", - "start": "8010" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "611", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "102", - "end": "8405", - "id": "612", - "length": "51", - "line": "258", - "parentIndex": "591", - "start": "8355" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "623", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "623", - "src": { - "column": "34", - "end": "8397", - "id": "624", - "length": "7", - "line": "259", - "parentIndex": "615", - "start": "8391" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "615", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "621", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "621", - "src": { - "column": "27", - "end": "8388", - "id": "622", - "length": "5", - "line": "259", - "parentIndex": "617", - "start": "8384" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "617", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "619", - "name": "_allowances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "364", - "src": { - "column": "15", - "end": "8382", - "id": "620", - "length": "11", - "line": "259", - "parentIndex": "617", - "start": "8372" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "15", - "end": "8389", - "id": "618", - "length": "18", - "line": "259", - "parentIndex": "615", - "start": "8372" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "15", - "end": "8398", - "id": "616", - "length": "27", - "line": "259", - "parentIndex": "611", - "start": "8372" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "functionReturnParameters": "591", - "id": "613", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "8399", - "id": "614", - "length": "35", - "line": "259", - "parentIndex": "591", - "start": "8365" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - } - } - } - ] - }, - "id": "591", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "allowance", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "593", - "name": "allowance", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "144", - "src": { - "column": "75", - "end": "8335", - "id": "594", - "length": "8", - "line": "258", - "parentIndex": "591", - "start": "8328" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address", - "typeString": "function(address,address)" - } - } - ], - "parameters": { - "id": "595", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "597", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "597", - "src": { - "column": "23", - "end": "8288", - "id": "598", - "length": "13", - "line": "258", - "parentIndex": "595", - "start": "8276" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "599", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "8282", - "id": "600", - "length": "7", - "line": "258", - "parentIndex": "597", - "start": "8276" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "601", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "601", - "src": { - "column": "38", - "end": "8305", - "id": "602", - "length": "15", - "line": "258", - "parentIndex": "595", - "start": "8291" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "603", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "38", - "end": "8297", - "id": "604", - "length": "7", - "line": "258", - "parentIndex": "601", - "start": "8291" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "8305", - "id": "596", - "length": "30", - "line": "258", - "parentIndex": "591", - "start": "8276" - } - }, - "returnParameters": { - "id": "605", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "607", - "nodeType": "VARIABLE_DECLARATION", - "scope": "607", - "src": { - "column": "93", - "end": "8352", - "id": "608", - "length": "7", - "line": "258", - "parentIndex": "605", - "start": "8346" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "609", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "93", - "end": "8352", - "id": "610", - "length": "7", - "line": "258", - "parentIndex": "607", - "start": "8346" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "93", - "end": "8352", - "id": "606", - "length": "7", - "line": "258", - "parentIndex": "591", - "start": "8346" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "8405", - "id": "592", - "length": "149", - "line": "258", - "parentIndex": "341", - "start": "8257" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address", - "typeString": "function(address,address)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "646", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "93", - "end": "8910", - "id": "647", - "length": "108", - "line": "272", - "parentIndex": "626", - "start": "8803" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "650" - ], - "declarations": [ - { - "id": "650", - "mutability": "MUTABLE", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "646", - "src": { - "column": "8", - "end": "8825", - "id": "651", - "length": "13", - "line": "273", - "parentIndex": "648", - "start": "8813" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "652", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "8819", - "id": "653", - "length": "7", - "line": "273", - "parentIndex": "650", - "start": "8813" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "648", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "656", - "name": "_msgSender", - "nodeType": "IDENTIFIER", - "src": { - "column": "24", - "end": "8838", - "id": "657", - "length": "10", - "line": "273", - "parentIndex": "654", - "start": "8829" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "654", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "24", - "end": "8840", - "id": "655", - "length": "12", - "line": "273", - "parentIndex": "648", - "start": "8829" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "8841", - "id": "649", - "length": "29", - "line": "273", - "parentIndex": "646", - "start": "8813" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "660", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "648", - "src": { - "column": "17", - "end": "8864", - "id": "661", - "length": "5", - "line": "274", - "parentIndex": "658", - "start": "8860" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "662", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "662", - "src": { - "column": "24", - "end": "8873", - "id": "663", - "length": "7", - "line": "274", - "parentIndex": "658", - "start": "8867" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "664", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "664", - "src": { - "column": "33", - "end": "8881", - "id": "665", - "length": "6", - "line": "274", - "parentIndex": "658", - "start": "8876" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "666", - "name": "_approve", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "8858", - "id": "667", - "length": "8", - "line": "274", - "parentIndex": "658", - "start": "8851" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - } - } - }, - "id": "658", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "8882", - "id": "659", - "length": "32", - "line": "274", - "parentIndex": "646", - "start": "8851" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "typeString": "function(address,address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "670", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "15", - "end": "8903", - "id": "671", - "length": "4", - "line": "275", - "parentIndex": "646", - "start": "8900" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - "functionReturnParameters": "626", - "id": "668", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "8904", - "id": "669", - "length": "12", - "line": "275", - "parentIndex": "626", - "start": "8893" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - ] - }, - "id": "626", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "approve", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "628", - "name": "approve", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "164", - "src": { - "column": "69", - "end": "8786", - "id": "629", - "length": "8", - "line": "272", - "parentIndex": "626", - "start": "8779" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - } - } - ], - "parameters": { - "id": "630", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "632", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "632", - "src": { - "column": "21", - "end": "8745", - "id": "633", - "length": "15", - "line": "272", - "parentIndex": "630", - "start": "8731" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "634", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "21", - "end": "8737", - "id": "635", - "length": "7", - "line": "272", - "parentIndex": "632", - "start": "8731" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "636", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "636", - "src": { - "column": "38", - "end": "8761", - "id": "637", - "length": "14", - "line": "272", - "parentIndex": "630", - "start": "8748" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "638", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "38", - "end": "8754", - "id": "639", - "length": "7", - "line": "272", - "parentIndex": "636", - "start": "8748" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "21", - "end": "8761", - "id": "631", - "length": "31", - "line": "272", - "parentIndex": "626", - "start": "8731" - } - }, - "returnParameters": { - "id": "640", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "642", - "nodeType": "VARIABLE_DECLARATION", - "scope": "642", - "src": { - "column": "87", - "end": "8800", - "id": "643", - "length": "4", - "line": "272", - "parentIndex": "640", - "start": "8797" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "644", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "87", - "end": "8800", - "id": "645", - "length": "4", - "line": "272", - "parentIndex": "642", - "start": "8797" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "87", - "end": "8800", - "id": "641", - "length": "4", - "line": "272", - "parentIndex": "626", - "start": "8797" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "8910", - "id": "627", - "length": "197", - "line": "272", - "parentIndex": "341", - "start": "8714" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "697", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "107", - "end": "9728", - "id": "698", - "length": "153", - "line": "294", - "parentIndex": "673", - "start": "9576" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "701" - ], - "declarations": [ - { - "id": "701", - "mutability": "MUTABLE", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "697", - "src": { - "column": "8", - "end": "9600", - "id": "702", - "length": "15", - "line": "295", - "parentIndex": "699", - "start": "9586" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "703", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "9592", - "id": "704", - "length": "7", - "line": "295", - "parentIndex": "701", - "start": "9586" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "699", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "707", - "name": "_msgSender", - "nodeType": "IDENTIFIER", - "src": { - "column": "26", - "end": "9613", - "id": "708", - "length": "10", - "line": "295", - "parentIndex": "705", - "start": "9604" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "705", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "26", - "end": "9615", - "id": "706", - "length": "12", - "line": "295", - "parentIndex": "699", - "start": "9604" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "9616", - "id": "700", - "length": "31", - "line": "295", - "parentIndex": "697", - "start": "9586" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "711", - "name": "from", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "711", - "src": { - "column": "24", - "end": "9645", - "id": "712", - "length": "4", - "line": "296", - "parentIndex": "709", - "start": "9642" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "713", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "699", - "src": { - "column": "30", - "end": "9654", - "id": "714", - "length": "7", - "line": "296", - "parentIndex": "709", - "start": "9648" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "715", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "715", - "src": { - "column": "39", - "end": "9662", - "id": "716", - "length": "6", - "line": "296", - "parentIndex": "709", - "start": "9657" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "717", - "name": "_spendAllowance", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "9640", - "id": "718", - "length": "15", - "line": "296", - "parentIndex": "709", - "start": "9626" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - } - } - }, - "id": "709", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "9663", - "id": "710", - "length": "38", - "line": "296", - "parentIndex": "697", - "start": "9626" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "typeString": "function(address,address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "721", - "name": "from", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "721", - "src": { - "column": "18", - "end": "9687", - "id": "722", - "length": "4", - "line": "297", - "parentIndex": "719", - "start": "9684" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "723", - "name": "to", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "723", - "src": { - "column": "24", - "end": "9691", - "id": "724", - "length": "2", - "line": "297", - "parentIndex": "719", - "start": "9690" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "725", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "725", - "src": { - "column": "28", - "end": "9699", - "id": "726", - "length": "6", - "line": "297", - "parentIndex": "719", - "start": "9694" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "727", - "name": "_transfer", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "9682", - "id": "728", - "length": "9", - "line": "297", - "parentIndex": "719", - "start": "9674" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - } - } - }, - "id": "719", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "9700", - "id": "720", - "length": "27", - "line": "297", - "parentIndex": "697", - "start": "9674" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "typeString": "function(address,address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "731", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "15", - "end": "9721", - "id": "732", - "length": "4", - "line": "298", - "parentIndex": "697", - "start": "9718" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - "functionReturnParameters": "673", - "id": "729", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "9722", - "id": "730", - "length": "12", - "line": "298", - "parentIndex": "673", - "start": "9711" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - ] - }, - "id": "673", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "transferFrom", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "675", - "name": "transferFrom", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "184", - "src": { - "column": "83", - "end": "9559", - "id": "676", - "length": "8", - "line": "294", - "parentIndex": "673", - "start": "9552" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - } - } - ], - "parameters": { - "id": "677", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "679", - "name": "from", - "nodeType": "VARIABLE_DECLARATION", - "scope": "679", - "src": { - "column": "26", - "end": "9506", - "id": "680", - "length": "12", - "line": "294", - "parentIndex": "677", - "start": "9495" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "681", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "26", - "end": "9501", - "id": "682", - "length": "7", - "line": "294", - "parentIndex": "679", - "start": "9495" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "683", - "name": "to", - "nodeType": "VARIABLE_DECLARATION", - "scope": "683", - "src": { - "column": "40", - "end": "9518", - "id": "684", - "length": "10", - "line": "294", - "parentIndex": "677", - "start": "9509" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "685", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "40", - "end": "9515", - "id": "686", - "length": "7", - "line": "294", - "parentIndex": "683", - "start": "9509" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "687", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "687", - "src": { - "column": "52", - "end": "9534", - "id": "688", - "length": "14", - "line": "294", - "parentIndex": "677", - "start": "9521" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "689", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "52", - "end": "9527", - "id": "690", - "length": "7", - "line": "294", - "parentIndex": "687", - "start": "9521" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "26", - "end": "9534", - "id": "678", - "length": "40", - "line": "294", - "parentIndex": "673", - "start": "9495" - } - }, - "returnParameters": { - "id": "691", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "693", - "nodeType": "VARIABLE_DECLARATION", - "scope": "693", - "src": { - "column": "101", - "end": "9573", - "id": "694", - "length": "4", - "line": "294", - "parentIndex": "691", - "start": "9570" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "695", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "101", - "end": "9573", - "id": "696", - "length": "4", - "line": "294", - "parentIndex": "693", - "start": "9570" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "101", - "end": "9573", - "id": "692", - "length": "4", - "line": "294", - "parentIndex": "673", - "start": "9570" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "9728", - "id": "674", - "length": "256", - "line": "294", - "parentIndex": "341", - "start": "9473" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "752", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "98", - "end": "10357", - "id": "753", - "length": "140", - "line": "313", - "parentIndex": "734", - "start": "10218" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "756" - ], - "declarations": [ - { - "id": "756", - "mutability": "MUTABLE", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "752", - "src": { - "column": "8", - "end": "10240", - "id": "757", - "length": "13", - "line": "314", - "parentIndex": "754", - "start": "10228" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "758", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "10234", - "id": "759", - "length": "7", - "line": "314", - "parentIndex": "756", - "start": "10228" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "754", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "762", - "name": "_msgSender", - "nodeType": "IDENTIFIER", - "src": { - "column": "24", - "end": "10253", - "id": "763", - "length": "10", - "line": "314", - "parentIndex": "760", - "start": "10244" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "760", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "24", - "end": "10255", - "id": "761", - "length": "12", - "line": "314", - "parentIndex": "754", - "start": "10244" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "10256", - "id": "755", - "length": "29", - "line": "314", - "parentIndex": "752", - "start": "10228" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function_$_t_address$$_t_address$", - "typeString": "function(address,address)" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "766", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "754", - "src": { - "column": "17", - "end": "10279", - "id": "767", - "length": "5", - "line": "315", - "parentIndex": "764", - "start": "10275" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "768", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "768", - "src": { - "column": "24", - "end": "10288", - "id": "769", - "length": "7", - "line": "315", - "parentIndex": "764", - "start": "10282" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "770", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "774", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "754", - "src": { - "column": "43", - "end": "10305", - "id": "775", - "length": "5", - "line": "315", - "parentIndex": "772", - "start": "10301" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "776", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "776", - "src": { - "column": "50", - "end": "10314", - "id": "777", - "length": "7", - "line": "315", - "parentIndex": "772", - "start": "10308" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "778", - "name": "allowance", - "nodeType": "IDENTIFIER", - "src": { - "column": "33", - "end": "10299", - "id": "779", - "length": "9", - "line": "315", - "parentIndex": "772", - "start": "10291" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address", - "typeString": "function(address,address)" - } - } - }, - "id": "772", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "33", - "end": "10315", - "id": "773", - "length": "25", - "line": "315", - "parentIndex": "770", - "start": "10291" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$", - "typeString": "function(address,address)" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "ADDITION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "780", - "name": "addedValue", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "780", - "src": { - "column": "61", - "end": "10328", - "id": "781", - "length": "10", - "line": "315", - "parentIndex": "770", - "start": "10319" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "33", - "end": "10328", - "id": "771", - "length": "38", - "line": "315", - "parentIndex": "764", - "start": "10291" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$", - "typeString": "function(address,address)" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function_$_t_address$$_t_address$", - "typeString": "function(address,address)" - } - ], - "id": "782", - "name": "_approve", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "10273", - "id": "783", - "length": "8", - "line": "315", - "parentIndex": "764", - "start": "10266" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_function_$_t_address$$_t_address$", - "typeString": "function(address,address,function(address,address))" - } - } - }, - "id": "764", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "10329", - "id": "765", - "length": "64", - "line": "315", - "parentIndex": "752", - "start": "10266" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_function_$_t_address$$_t_address$$", - "typeString": "function(address,address,function(address,address))" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "786", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "15", - "end": "10350", - "id": "787", - "length": "4", - "line": "316", - "parentIndex": "752", - "start": "10347" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - "functionReturnParameters": "734", - "id": "784", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "10351", - "id": "785", - "length": "12", - "line": "316", - "parentIndex": "734", - "start": "10340" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - ] - }, - "id": "734", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "increaseAllowance", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "736", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "738", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "738", - "src": { - "column": "31", - "end": "10165", - "id": "739", - "length": "15", - "line": "313", - "parentIndex": "736", - "start": "10151" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "740", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "10157", - "id": "741", - "length": "7", - "line": "313", - "parentIndex": "738", - "start": "10151" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "742", - "name": "addedValue", - "nodeType": "VARIABLE_DECLARATION", - "scope": "742", - "src": { - "column": "48", - "end": "10185", - "id": "743", - "length": "18", - "line": "313", - "parentIndex": "736", - "start": "10168" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "744", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "48", - "end": "10174", - "id": "745", - "length": "7", - "line": "313", - "parentIndex": "742", - "start": "10168" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "31", - "end": "10185", - "id": "737", - "length": "35", - "line": "313", - "parentIndex": "734", - "start": "10151" - } - }, - "returnParameters": { - "id": "746", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "748", - "nodeType": "VARIABLE_DECLARATION", - "scope": "748", - "src": { - "column": "92", - "end": "10215", - "id": "749", - "length": "4", - "line": "313", - "parentIndex": "746", - "start": "10212" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "750", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "92", - "end": "10215", - "id": "751", - "length": "4", - "line": "313", - "parentIndex": "748", - "start": "10212" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "92", - "end": "10215", - "id": "747", - "length": "4", - "line": "313", - "parentIndex": "734", - "start": "10212" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "10357", - "id": "735", - "length": "234", - "line": "313", - "parentIndex": "341", - "start": "10124" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "807", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "103", - "end": "11271", - "id": "808", - "length": "328", - "line": "333", - "parentIndex": "789", - "start": "10944" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "811" - ], - "declarations": [ - { - "id": "811", - "mutability": "MUTABLE", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "807", - "src": { - "column": "8", - "end": "10966", - "id": "812", - "length": "13", - "line": "334", - "parentIndex": "809", - "start": "10954" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "813", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "10960", - "id": "814", - "length": "7", - "line": "334", - "parentIndex": "811", - "start": "10954" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "809", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "817", - "name": "_msgSender", - "nodeType": "IDENTIFIER", - "src": { - "column": "24", - "end": "10979", - "id": "818", - "length": "10", - "line": "334", - "parentIndex": "815", - "start": "10970" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "815", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "24", - "end": "10981", - "id": "816", - "length": "12", - "line": "334", - "parentIndex": "809", - "start": "10970" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "10982", - "id": "810", - "length": "29", - "line": "334", - "parentIndex": "807", - "start": "10954" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "821" - ], - "declarations": [ - { - "id": "821", - "mutability": "MUTABLE", - "name": "currentAllowance", - "nodeType": "VARIABLE_DECLARATION", - "scope": "807", - "src": { - "column": "8", - "end": "11015", - "id": "822", - "length": "24", - "line": "335", - "parentIndex": "819", - "start": "10992" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "823", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "10998", - "id": "824", - "length": "7", - "line": "335", - "parentIndex": "821", - "start": "10992" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "819", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "827", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "809", - "src": { - "column": "45", - "end": "11033", - "id": "828", - "length": "5", - "line": "335", - "parentIndex": "825", - "start": "11029" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "829", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "829", - "src": { - "column": "52", - "end": "11042", - "id": "830", - "length": "7", - "line": "335", - "parentIndex": "825", - "start": "11036" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "831", - "name": "allowance", - "nodeType": "IDENTIFIER", - "src": { - "column": "35", - "end": "11027", - "id": "832", - "length": "9", - "line": "335", - "parentIndex": "825", - "start": "11019" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address", - "typeString": "function(address,address)" - } - } - }, - "id": "825", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "35", - "end": "11043", - "id": "826", - "length": "25", - "line": "335", - "parentIndex": "819", - "start": "11019" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$", - "typeString": "function(address,address)" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "11044", - "id": "820", - "length": "53", - "line": "335", - "parentIndex": "807", - "start": "10992" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: decreased allowance below zero\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "835", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "837", - "name": "currentAllowance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "819", - "src": { - "column": "16", - "end": "11077", - "id": "838", - "length": "16", - "line": "336", - "parentIndex": "835", - "start": "11062" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN_OR_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "839", - "name": "subtractedValue", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "839", - "src": { - "column": "36", - "end": "11096", - "id": "840", - "length": "15", - "line": "336", - "parentIndex": "835", - "start": "11082" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "11096", - "id": "836", - "length": "35", - "line": "336", - "parentIndex": "833", - "start": "11062" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", - "id": "841", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "53", - "end": "11137", - "id": "842", - "length": "39", - "line": "336", - "parentIndex": "833", - "start": "11099" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: decreased allowance below zero\"" - }, - "value": "ERC20: decreased allowance below zero" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: decreased allowance below zero\"" - } - ], - "id": "843", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "11060", - "id": "844", - "length": "7", - "line": "336", - "parentIndex": "833", - "start": "11054" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: decreased allowance below zero\")" - } - } - }, - "id": "833", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "11138", - "id": "834", - "length": "85", - "line": "336", - "parentIndex": "807", - "start": "11054" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "847", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "15", - "end": "11264", - "id": "848", - "length": "4", - "line": "341", - "parentIndex": "807", - "start": "11261" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - "functionReturnParameters": "789", - "id": "845", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "11265", - "id": "846", - "length": "12", - "line": "341", - "parentIndex": "789", - "start": "11254" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "849", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "11243", - "id": "850", - "length": "95", - "line": "337", - "parentIndex": "341", - "start": "11149" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "853", - "name": "owner", - "nodeType": "IDENTIFIER", - "src": { - "column": "21", - "end": "11186", - "id": "854", - "length": "5", - "line": "338", - "parentIndex": "851", - "start": "11182" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "id": "855", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "855", - "src": { - "column": "28", - "end": "11195", - "id": "856", - "length": "7", - "line": "338", - "parentIndex": "851", - "start": "11189" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "857", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "859", - "name": "currentAllowance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "819", - "src": { - "column": "37", - "end": "11213", - "id": "860", - "length": "16", - "line": "338", - "parentIndex": "857", - "start": "11198" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "861", - "name": "subtractedValue", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "861", - "src": { - "column": "56", - "end": "11231", - "id": "862", - "length": "15", - "line": "338", - "parentIndex": "857", - "start": "11217" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "37", - "end": "11231", - "id": "858", - "length": "34", - "line": "338", - "parentIndex": "851", - "start": "11198" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "863", - "name": "_approve", - "nodeType": "IDENTIFIER", - "src": { - "column": "12", - "end": "11180", - "id": "864", - "length": "8", - "line": "338", - "parentIndex": "851", - "start": "11173" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_address$$_t_uint256", - "typeString": "function(function(),address,uint256)" - } - } - }, - "id": "851", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "11232", - "id": "852", - "length": "60", - "line": "338", - "parentIndex": "849", - "start": "11173" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_address$$_t_uint256$", - "typeString": "function(function(),address,uint256)" - } - } - } - ] - } - } - ] - }, - "id": "789", - "kind": "KIND_FUNCTION", - "name": "decreaseAllowance", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "791", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "793", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "793", - "src": { - "column": "31", - "end": "10886", - "id": "794", - "length": "15", - "line": "333", - "parentIndex": "791", - "start": "10872" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "795", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "10878", - "id": "796", - "length": "7", - "line": "333", - "parentIndex": "793", - "start": "10872" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "797", - "name": "subtractedValue", - "nodeType": "VARIABLE_DECLARATION", - "scope": "797", - "src": { - "column": "48", - "end": "10911", - "id": "798", - "length": "23", - "line": "333", - "parentIndex": "791", - "start": "10889" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "799", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "48", - "end": "10895", - "id": "800", - "length": "7", - "line": "333", - "parentIndex": "797", - "start": "10889" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "31", - "end": "10911", - "id": "792", - "length": "40", - "line": "333", - "parentIndex": "789", - "start": "10872" - } - }, - "returnParameters": { - "id": "801", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "803", - "nodeType": "VARIABLE_DECLARATION", - "scope": "803", - "src": { - "column": "97", - "end": "10941", - "id": "804", - "length": "4", - "line": "333", - "parentIndex": "801", - "start": "10938" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "805", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "97", - "end": "10941", - "id": "806", - "length": "4", - "line": "333", - "parentIndex": "803", - "start": "10938" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "97", - "end": "10941", - "id": "802", - "length": "4", - "line": "333", - "parentIndex": "789", - "start": "10938" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "11271", - "id": "790", - "length": "427", - "line": "333", - "parentIndex": "341", - "start": "10845" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "883", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "82", - "end": "12513", - "id": "884", - "length": "710", - "line": "358", - "parentIndex": "866", - "start": "11804" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer from the zero address\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "887", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "889", - "name": "from", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "889", - "src": { - "column": "16", - "end": "11825", - "id": "890", - "length": "4", - "line": "359", - "parentIndex": "887", - "start": "11822" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "893", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "32", - "end": "11838", - "id": "894", - "length": "1", - "line": "359", - "parentIndex": "891", - "start": "11838" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "895", - "nodeType": "IDENTIFIER", - "src": { - "column": "24", - "end": "11836", - "id": "896", - "length": "7", - "line": "359", - "parentIndex": "891", - "start": "11830" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "897", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "24", - "end": "11836", - "id": "898", - "length": "7", - "line": "359", - "parentIndex": "895", - "start": "11830" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "891", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "24", - "end": "11839", - "id": "892", - "length": "10", - "line": "359", - "parentIndex": "887", - "start": "11830" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "16", - "end": "11839", - "id": "888", - "length": "18", - "line": "359", - "parentIndex": "885", - "start": "11822" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", - "id": "899", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "36", - "end": "11880", - "id": "900", - "length": "39", - "line": "359", - "parentIndex": "885", - "start": "11842" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer from the zero address\"" - }, - "value": "ERC20: transfer from the zero address" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer from the zero address\"" - } - ], - "id": "901", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "11820", - "id": "902", - "length": "7", - "line": "359", - "parentIndex": "885", - "start": "11814" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: transfer from the zero address\")" - } - } - }, - "id": "885", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "11881", - "id": "886", - "length": "68", - "line": "359", - "parentIndex": "883", - "start": "11814" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer to the zero address\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "905", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "907", - "name": "to", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "907", - "src": { - "column": "16", - "end": "11901", - "id": "908", - "length": "2", - "line": "360", - "parentIndex": "905", - "start": "11900" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "911", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "30", - "end": "11914", - "id": "912", - "length": "1", - "line": "360", - "parentIndex": "909", - "start": "11914" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "913", - "nodeType": "IDENTIFIER", - "src": { - "column": "22", - "end": "11912", - "id": "914", - "length": "7", - "line": "360", - "parentIndex": "909", - "start": "11906" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "915", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "22", - "end": "11912", - "id": "916", - "length": "7", - "line": "360", - "parentIndex": "913", - "start": "11906" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "909", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "22", - "end": "11915", - "id": "910", - "length": "10", - "line": "360", - "parentIndex": "905", - "start": "11906" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "16", - "end": "11915", - "id": "906", - "length": "16", - "line": "360", - "parentIndex": "903", - "start": "11900" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", - "id": "917", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "34", - "end": "11954", - "id": "918", - "length": "37", - "line": "360", - "parentIndex": "903", - "start": "11918" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer to the zero address\"" - }, - "value": "ERC20: transfer to the zero address" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer to the zero address\"" - } - ], - "id": "919", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "11898", - "id": "920", - "length": "7", - "line": "360", - "parentIndex": "903", - "start": "11892" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: transfer to the zero address\")" - } - } - }, - "id": "903", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "11955", - "id": "904", - "length": "64", - "line": "360", - "parentIndex": "883", - "start": "11892" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "923", - "name": "from", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "923", - "src": { - "column": "29", - "end": "11991", - "id": "924", - "length": "4", - "line": "362", - "parentIndex": "921", - "start": "11988" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "925", - "name": "to", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "925", - "src": { - "column": "35", - "end": "11995", - "id": "926", - "length": "2", - "line": "362", - "parentIndex": "921", - "start": "11994" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "927", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "927", - "src": { - "column": "39", - "end": "12003", - "id": "928", - "length": "6", - "line": "362", - "parentIndex": "921", - "start": "11998" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "929", - "name": "_beforeTokenTransfer", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "11986", - "id": "930", - "length": "20", - "line": "362", - "parentIndex": "921", - "start": "11967" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - } - } - }, - "id": "921", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "12004", - "id": "922", - "length": "38", - "line": "362", - "parentIndex": "883", - "start": "11967" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "typeString": "function(address,address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "933" - ], - "declarations": [ - { - "id": "933", - "mutability": "MUTABLE", - "name": "fromBalance", - "nodeType": "VARIABLE_DECLARATION", - "scope": "883", - "src": { - "column": "8", - "end": "12034", - "id": "934", - "length": "19", - "line": "364", - "parentIndex": "931", - "start": "12016" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "935", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "12022", - "id": "936", - "length": "7", - "line": "364", - "parentIndex": "933", - "start": "12016" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "931", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "941", - "name": "from", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "941", - "src": { - "column": "40", - "end": "12051", - "id": "942", - "length": "4", - "line": "364", - "parentIndex": "937", - "start": "12048" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "937", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "939", - "name": "_balances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "355", - "src": { - "column": "30", - "end": "12046", - "id": "940", - "length": "9", - "line": "364", - "parentIndex": "937", - "start": "12038" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "30", - "end": "12052", - "id": "938", - "length": "15", - "line": "364", - "parentIndex": "931", - "start": "12038" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "12053", - "id": "932", - "length": "38", - "line": "364", - "parentIndex": "883", - "start": "12016" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "945", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "947", - "name": "fromBalance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "931", - "src": { - "column": "16", - "end": "12081", - "id": "948", - "length": "11", - "line": "365", - "parentIndex": "945", - "start": "12071" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN_OR_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "949", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "949", - "src": { - "column": "31", - "end": "12091", - "id": "950", - "length": "6", - "line": "365", - "parentIndex": "945", - "start": "12086" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "12091", - "id": "946", - "length": "21", - "line": "365", - "parentIndex": "943", - "start": "12071" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", - "id": "951", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "39", - "end": "12133", - "id": "952", - "length": "40", - "line": "365", - "parentIndex": "943", - "start": "12094" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" - }, - "value": "ERC20: transfer amount exceeds balance" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" - } - ], - "id": "953", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "12069", - "id": "954", - "length": "7", - "line": "365", - "parentIndex": "943", - "start": "12063" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: transfer amount exceeds balance\")" - } - } - }, - "id": "943", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "12134", - "id": "944", - "length": "72", - "line": "365", - "parentIndex": "883", - "start": "12063" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "957", - "name": "from", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "957", - "src": { - "column": "22", - "end": "12445", - "id": "958", - "length": "4", - "line": "373", - "parentIndex": "883", - "start": "12442" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "959", - "name": "to", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "959", - "src": { - "column": "28", - "end": "12449", - "id": "960", - "length": "2", - "line": "373", - "parentIndex": "883", - "start": "12448" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "961", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "961", - "src": { - "column": "32", - "end": "12457", - "id": "962", - "length": "6", - "line": "373", - "parentIndex": "883", - "start": "12452" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "963", - "name": "Transfer", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "60", - "src": { - "column": "13", - "end": "12440", - "id": "964", - "length": "8", - "line": "373", - "parentIndex": "883", - "start": "12433" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u002660", - "typeString": "event IERC20.Transfer" - } - } - }, - "id": "955", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "12459", - "id": "956", - "length": "32", - "line": "373", - "parentIndex": "866", - "start": "12428" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "967", - "name": "from", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "967", - "src": { - "column": "28", - "end": "12493", - "id": "968", - "length": "4", - "line": "375", - "parentIndex": "965", - "start": "12490" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "969", - "name": "to", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "969", - "src": { - "column": "34", - "end": "12497", - "id": "970", - "length": "2", - "line": "375", - "parentIndex": "965", - "start": "12496" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "971", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "971", - "src": { - "column": "38", - "end": "12505", - "id": "972", - "length": "6", - "line": "375", - "parentIndex": "965", - "start": "12500" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "973", - "name": "_afterTokenTransfer", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "12488", - "id": "974", - "length": "19", - "line": "375", - "parentIndex": "965", - "start": "12470" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - } - } - }, - "id": "965", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "12506", - "id": "966", - "length": "37", - "line": "375", - "parentIndex": "883", - "start": "12470" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", - "typeString": "function(address,address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "975", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "12417", - "id": "976", - "length": "273", - "line": "366", - "parentIndex": "341", - "start": "12145" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "979", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "985", - "name": "from", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "985", - "src": { - "column": "22", - "end": "12182", - "id": "986", - "length": "4", - "line": "367", - "parentIndex": "981", - "start": "12179" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "981", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "983", - "name": "_balances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "355", - "src": { - "column": "12", - "end": "12177", - "id": "984", - "length": "9", - "line": "367", - "parentIndex": "981", - "start": "12169" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "12", - "end": "12183", - "id": "982", - "length": "15", - "line": "367", - "parentIndex": "979", - "start": "12169" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "987", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "989", - "name": "fromBalance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "931", - "src": { - "column": "30", - "end": "12197", - "id": "990", - "length": "11", - "line": "367", - "parentIndex": "987", - "start": "12187" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "991", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "991", - "src": { - "column": "44", - "end": "12206", - "id": "992", - "length": "6", - "line": "367", - "parentIndex": "987", - "start": "12201" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "30", - "end": "12206", - "id": "988", - "length": "20", - "line": "367", - "parentIndex": "979", - "start": "12187" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "12", - "end": "12206", - "id": "980", - "length": "38", - "line": "367", - "parentIndex": "975", - "start": "12169" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "id": "977", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "12", - "end": "12207", - "id": "978", - "length": "39", - "line": "367", - "parentIndex": "975", - "start": "12169" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "995", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1001", - "name": "to", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1001", - "src": { - "column": "22", - "end": "12395", - "id": "1002", - "length": "2", - "line": "370", - "parentIndex": "997", - "start": "12394" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "997", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "999", - "name": "_balances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "355", - "src": { - "column": "12", - "end": "12392", - "id": "1000", - "length": "9", - "line": "370", - "parentIndex": "997", - "start": "12384" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "12", - "end": "12396", - "id": "998", - "length": "13", - "line": "370", - "parentIndex": "995", - "start": "12384" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "ASSIGNMENT", - "operator": "PLUS_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1003", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1003", - "src": { - "column": "29", - "end": "12406", - "id": "1004", - "length": "6", - "line": "370", - "parentIndex": "995", - "start": "12401" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "12", - "end": "12406", - "id": "996", - "length": "23", - "line": "370", - "parentIndex": "975", - "start": "12384" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "id": "993", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "12", - "end": "12407", - "id": "994", - "length": "24", - "line": "370", - "parentIndex": "975", - "start": "12384" - } - } - } - ] - } - } - ] - }, - "id": "866", - "kind": "KIND_FUNCTION", - "name": "_transfer", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "868", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "870", - "name": "from", - "nodeType": "VARIABLE_DECLARATION", - "scope": "870", - "src": { - "column": "23", - "end": "11756", - "id": "871", - "length": "12", - "line": "358", - "parentIndex": "868", - "start": "11745" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "872", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "11751", - "id": "873", - "length": "7", - "line": "358", - "parentIndex": "870", - "start": "11745" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "874", - "name": "to", - "nodeType": "VARIABLE_DECLARATION", - "scope": "874", - "src": { - "column": "37", - "end": "11768", - "id": "875", - "length": "10", - "line": "358", - "parentIndex": "868", - "start": "11759" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "876", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "37", - "end": "11765", - "id": "877", - "length": "7", - "line": "358", - "parentIndex": "874", - "start": "11759" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "878", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "878", - "src": { - "column": "49", - "end": "11784", - "id": "879", - "length": "14", - "line": "358", - "parentIndex": "868", - "start": "11771" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "880", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "49", - "end": "11777", - "id": "881", - "length": "7", - "line": "358", - "parentIndex": "878", - "start": "11771" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "11784", - "id": "869", - "length": "40", - "line": "358", - "parentIndex": "866", - "start": "11745" - } - }, - "returnParameters": { - "id": "882", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "12513", - "id": "867", - "length": "788", - "line": "358", - "parentIndex": "866", - "start": "11726" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "12513", - "id": "867", - "length": "788", - "line": "358", - "parentIndex": "341", - "start": "11726" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1019", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "69", - "end": "13324", - "id": "1020", - "length": "470", - "line": "387", - "parentIndex": "1006", - "start": "12855" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: mint to the zero address\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1023", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1025", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1025", - "src": { - "column": "16", - "end": "12879", - "id": "1026", - "length": "7", - "line": "388", - "parentIndex": "1023", - "start": "12873" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1029", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "35", - "end": "12892", - "id": "1030", - "length": "1", - "line": "388", - "parentIndex": "1027", - "start": "12892" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1031", - "nodeType": "IDENTIFIER", - "src": { - "column": "27", - "end": "12890", - "id": "1032", - "length": "7", - "line": "388", - "parentIndex": "1027", - "start": "12884" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1033", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "27", - "end": "12890", - "id": "1034", - "length": "7", - "line": "388", - "parentIndex": "1031", - "start": "12884" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1027", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "27", - "end": "12893", - "id": "1028", - "length": "10", - "line": "388", - "parentIndex": "1023", - "start": "12884" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "16", - "end": "12893", - "id": "1024", - "length": "21", - "line": "388", - "parentIndex": "1021", - "start": "12873" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", - "id": "1035", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "39", - "end": "12928", - "id": "1036", - "length": "33", - "line": "388", - "parentIndex": "1021", - "start": "12896" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: mint to the zero address\"" - }, - "value": "ERC20: mint to the zero address" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: mint to the zero address\"" - } - ], - "id": "1037", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "12871", - "id": "1038", - "length": "7", - "line": "388", - "parentIndex": "1021", - "start": "12865" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: mint to the zero address\")" - } - } - }, - "id": "1021", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "12929", - "id": "1022", - "length": "65", - "line": "388", - "parentIndex": "1019", - "start": "12865" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1043", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "37", - "end": "12970", - "id": "1044", - "length": "1", - "line": "390", - "parentIndex": "1041", - "start": "12970" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1045", - "nodeType": "IDENTIFIER", - "src": { - "column": "29", - "end": "12968", - "id": "1046", - "length": "7", - "line": "390", - "parentIndex": "1041", - "start": "12962" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1047", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "29", - "end": "12968", - "id": "1048", - "length": "7", - "line": "390", - "parentIndex": "1045", - "start": "12962" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1041", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "29", - "end": "12971", - "id": "1042", - "length": "10", - "line": "390", - "parentIndex": "1039", - "start": "12962" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - ], - "id": "1049", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1049", - "src": { - "column": "41", - "end": "12980", - "id": "1050", - "length": "7", - "line": "390", - "parentIndex": "1039", - "start": "12974" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1051", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1051", - "src": { - "column": "50", - "end": "12988", - "id": "1052", - "length": "6", - "line": "390", - "parentIndex": "1039", - "start": "12983" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "1053", - "name": "_beforeTokenTransfer", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "12960", - "id": "1054", - "length": "20", - "line": "390", - "parentIndex": "1039", - "start": "12941" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256", - "typeString": "function(function(int_const 0),address,uint256)" - } - } - }, - "id": "1039", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "12989", - "id": "1040", - "length": "49", - "line": "390", - "parentIndex": "1019", - "start": "12941" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256$", - "typeString": "function(function(int_const 0),address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1057", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1059", - "name": "_totalSupply", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "378", - "src": { - "column": "8", - "end": "13012", - "id": "1060", - "length": "12", - "line": "392", - "parentIndex": "1057", - "start": "13001" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "PLUS_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1061", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1061", - "src": { - "column": "24", - "end": "13022", - "id": "1062", - "length": "6", - "line": "392", - "parentIndex": "1057", - "start": "13017" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "8", - "end": "13022", - "id": "1058", - "length": "22", - "line": "392", - "parentIndex": "1019", - "start": "13001" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "1055", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "13023", - "id": "1056", - "length": "23", - "line": "392", - "parentIndex": "1019", - "start": "13001" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1067", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "30", - "end": "13239", - "id": "1068", - "length": "1", - "line": "397", - "parentIndex": "1065", - "start": "13239" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1069", - "nodeType": "IDENTIFIER", - "src": { - "column": "22", - "end": "13237", - "id": "1070", - "length": "7", - "line": "397", - "parentIndex": "1065", - "start": "13231" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1071", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "22", - "end": "13237", - "id": "1072", - "length": "7", - "line": "397", - "parentIndex": "1069", - "start": "13231" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1065", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "22", - "end": "13240", - "id": "1066", - "length": "10", - "line": "397", - "parentIndex": "1019", - "start": "13231" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1073", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1073", - "src": { - "column": "34", - "end": "13249", - "id": "1074", - "length": "7", - "line": "397", - "parentIndex": "1019", - "start": "13243" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1075", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1075", - "src": { - "column": "43", - "end": "13257", - "id": "1076", - "length": "6", - "line": "397", - "parentIndex": "1019", - "start": "13252" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1077", - "name": "Transfer", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "60", - "src": { - "column": "13", - "end": "13229", - "id": "1078", - "length": "8", - "line": "397", - "parentIndex": "1019", - "start": "13222" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u002660", - "typeString": "event IERC20.Transfer" - } - } - }, - "id": "1063", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "13259", - "id": "1064", - "length": "43", - "line": "397", - "parentIndex": "1006", - "start": "13217" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1083", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "36", - "end": "13298", - "id": "1084", - "length": "1", - "line": "399", - "parentIndex": "1081", - "start": "13298" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1085", - "nodeType": "IDENTIFIER", - "src": { - "column": "28", - "end": "13296", - "id": "1086", - "length": "7", - "line": "399", - "parentIndex": "1081", - "start": "13290" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1087", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "13296", - "id": "1088", - "length": "7", - "line": "399", - "parentIndex": "1085", - "start": "13290" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1081", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "28", - "end": "13299", - "id": "1082", - "length": "10", - "line": "399", - "parentIndex": "1079", - "start": "13290" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - ], - "id": "1089", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1089", - "src": { - "column": "40", - "end": "13308", - "id": "1090", - "length": "7", - "line": "399", - "parentIndex": "1079", - "start": "13302" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1091", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1091", - "src": { - "column": "49", - "end": "13316", - "id": "1092", - "length": "6", - "line": "399", - "parentIndex": "1079", - "start": "13311" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "1093", - "name": "_afterTokenTransfer", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "13288", - "id": "1094", - "length": "19", - "line": "399", - "parentIndex": "1079", - "start": "13270" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256", - "typeString": "function(function(int_const 0),address,uint256)" - } - } - }, - "id": "1079", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "13317", - "id": "1080", - "length": "48", - "line": "399", - "parentIndex": "1019", - "start": "13270" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256$", - "typeString": "function(function(int_const 0),address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "1095", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "13207", - "id": "1096", - "length": "175", - "line": "393", - "parentIndex": "341", - "start": "13033" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1099", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1105", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1105", - "src": { - "column": "22", - "end": "13185", - "id": "1106", - "length": "7", - "line": "395", - "parentIndex": "1101", - "start": "13179" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1101", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1103", - "name": "_balances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "355", - "src": { - "column": "12", - "end": "13177", - "id": "1104", - "length": "9", - "line": "395", - "parentIndex": "1101", - "start": "13169" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "12", - "end": "13186", - "id": "1102", - "length": "18", - "line": "395", - "parentIndex": "1099", - "start": "13169" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "ASSIGNMENT", - "operator": "PLUS_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1107", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1107", - "src": { - "column": "34", - "end": "13196", - "id": "1108", - "length": "6", - "line": "395", - "parentIndex": "1099", - "start": "13191" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "12", - "end": "13196", - "id": "1100", - "length": "28", - "line": "395", - "parentIndex": "1095", - "start": "13169" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "id": "1097", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "12", - "end": "13197", - "id": "1098", - "length": "29", - "line": "395", - "parentIndex": "1095", - "start": "13169" - } - } - } - ] - } - } - ] - }, - "id": "1006", - "kind": "KIND_FUNCTION", - "name": "_mint", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1008", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1010", - "name": "account", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1010", - "src": { - "column": "19", - "end": "12819", - "id": "1011", - "length": "15", - "line": "387", - "parentIndex": "1008", - "start": "12805" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1012", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "19", - "end": "12811", - "id": "1013", - "length": "7", - "line": "387", - "parentIndex": "1010", - "start": "12805" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1014", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1014", - "src": { - "column": "36", - "end": "12835", - "id": "1015", - "length": "14", - "line": "387", - "parentIndex": "1008", - "start": "12822" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1016", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "36", - "end": "12828", - "id": "1017", - "length": "7", - "line": "387", - "parentIndex": "1014", - "start": "12822" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "19", - "end": "12835", - "id": "1009", - "length": "31", - "line": "387", - "parentIndex": "1006", - "start": "12805" - } - }, - "returnParameters": { - "id": "1018", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "13324", - "id": "1007", - "length": "535", - "line": "387", - "parentIndex": "1006", - "start": "12790" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "13324", - "id": "1007", - "length": "535", - "line": "387", - "parentIndex": "341", - "start": "12790" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1123", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "69", - "end": "14303", - "id": "1124", - "length": "594", - "line": "413", - "parentIndex": "1110", - "start": "13710" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: burn from the zero address\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1127", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1129", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1129", - "src": { - "column": "16", - "end": "13734", - "id": "1130", - "length": "7", - "line": "414", - "parentIndex": "1127", - "start": "13728" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1133", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "35", - "end": "13747", - "id": "1134", - "length": "1", - "line": "414", - "parentIndex": "1131", - "start": "13747" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1135", - "nodeType": "IDENTIFIER", - "src": { - "column": "27", - "end": "13745", - "id": "1136", - "length": "7", - "line": "414", - "parentIndex": "1131", - "start": "13739" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1137", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "27", - "end": "13745", - "id": "1138", - "length": "7", - "line": "414", - "parentIndex": "1135", - "start": "13739" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1131", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "27", - "end": "13748", - "id": "1132", - "length": "10", - "line": "414", - "parentIndex": "1127", - "start": "13739" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "16", - "end": "13748", - "id": "1128", - "length": "21", - "line": "414", - "parentIndex": "1125", - "start": "13728" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", - "id": "1139", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "39", - "end": "13785", - "id": "1140", - "length": "35", - "line": "414", - "parentIndex": "1125", - "start": "13751" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: burn from the zero address\"" - }, - "value": "ERC20: burn from the zero address" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: burn from the zero address\"" - } - ], - "id": "1141", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "13726", - "id": "1142", - "length": "7", - "line": "414", - "parentIndex": "1125", - "start": "13720" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: burn from the zero address\")" - } - } - }, - "id": "1125", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "13786", - "id": "1126", - "length": "67", - "line": "414", - "parentIndex": "1123", - "start": "13720" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1145", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1145", - "src": { - "column": "29", - "end": "13825", - "id": "1146", - "length": "7", - "line": "416", - "parentIndex": "1143", - "start": "13819" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1149", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "46", - "end": "13836", - "id": "1150", - "length": "1", - "line": "416", - "parentIndex": "1147", - "start": "13836" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1151", - "nodeType": "IDENTIFIER", - "src": { - "column": "38", - "end": "13834", - "id": "1152", - "length": "7", - "line": "416", - "parentIndex": "1147", - "start": "13828" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1153", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "38", - "end": "13834", - "id": "1154", - "length": "7", - "line": "416", - "parentIndex": "1151", - "start": "13828" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1147", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "38", - "end": "13837", - "id": "1148", - "length": "10", - "line": "416", - "parentIndex": "1143", - "start": "13828" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - ], - "id": "1155", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1155", - "src": { - "column": "50", - "end": "13845", - "id": "1156", - "length": "6", - "line": "416", - "parentIndex": "1143", - "start": "13840" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "1157", - "name": "_beforeTokenTransfer", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "13817", - "id": "1158", - "length": "20", - "line": "416", - "parentIndex": "1143", - "start": "13798" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256", - "typeString": "function(address,function(int_const 0),uint256)" - } - } - }, - "id": "1143", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "13846", - "id": "1144", - "length": "49", - "line": "416", - "parentIndex": "1123", - "start": "13798" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256$", - "typeString": "function(address,function(int_const 0),uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "1161" - ], - "declarations": [ - { - "id": "1161", - "mutability": "MUTABLE", - "name": "accountBalance", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1123", - "src": { - "column": "8", - "end": "13879", - "id": "1162", - "length": "22", - "line": "418", - "parentIndex": "1159", - "start": "13858" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1163", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "13864", - "id": "1164", - "length": "7", - "line": "418", - "parentIndex": "1161", - "start": "13858" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "1159", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1169", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1169", - "src": { - "column": "43", - "end": "13899", - "id": "1170", - "length": "7", - "line": "418", - "parentIndex": "1165", - "start": "13893" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1165", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1167", - "name": "_balances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "355", - "src": { - "column": "33", - "end": "13891", - "id": "1168", - "length": "9", - "line": "418", - "parentIndex": "1165", - "start": "13883" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "33", - "end": "13900", - "id": "1166", - "length": "18", - "line": "418", - "parentIndex": "1159", - "start": "13883" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "13901", - "id": "1160", - "length": "44", - "line": "418", - "parentIndex": "1123", - "start": "13858" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1173", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1175", - "name": "accountBalance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1159", - "src": { - "column": "16", - "end": "13932", - "id": "1176", - "length": "14", - "line": "419", - "parentIndex": "1173", - "start": "13919" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN_OR_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1177", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1177", - "src": { - "column": "34", - "end": "13942", - "id": "1178", - "length": "6", - "line": "419", - "parentIndex": "1173", - "start": "13937" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "13942", - "id": "1174", - "length": "24", - "line": "419", - "parentIndex": "1171", - "start": "13919" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", - "id": "1179", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "42", - "end": "13980", - "id": "1180", - "length": "36", - "line": "419", - "parentIndex": "1171", - "start": "13945" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" - }, - "value": "ERC20: burn amount exceeds balance" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" - } - ], - "id": "1181", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "13917", - "id": "1182", - "length": "7", - "line": "419", - "parentIndex": "1171", - "start": "13911" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: burn amount exceeds balance\")" - } - } - }, - "id": "1171", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "13981", - "id": "1172", - "length": "71", - "line": "419", - "parentIndex": "1123", - "start": "13911" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1185", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1185", - "src": { - "column": "22", - "end": "14216", - "id": "1186", - "length": "7", - "line": "426", - "parentIndex": "1123", - "start": "14210" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1189", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "39", - "end": "14227", - "id": "1190", - "length": "1", - "line": "426", - "parentIndex": "1187", - "start": "14227" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1191", - "nodeType": "IDENTIFIER", - "src": { - "column": "31", - "end": "14225", - "id": "1192", - "length": "7", - "line": "426", - "parentIndex": "1187", - "start": "14219" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1193", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "14225", - "id": "1194", - "length": "7", - "line": "426", - "parentIndex": "1191", - "start": "14219" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1187", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "31", - "end": "14228", - "id": "1188", - "length": "10", - "line": "426", - "parentIndex": "1123", - "start": "14219" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1195", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1195", - "src": { - "column": "43", - "end": "14236", - "id": "1196", - "length": "6", - "line": "426", - "parentIndex": "1123", - "start": "14231" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1197", - "name": "Transfer", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "60", - "src": { - "column": "13", - "end": "14208", - "id": "1198", - "length": "8", - "line": "426", - "parentIndex": "1123", - "start": "14201" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u002660", - "typeString": "event IERC20.Transfer" - } - } - }, - "id": "1183", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "14238", - "id": "1184", - "length": "43", - "line": "426", - "parentIndex": "1110", - "start": "14196" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1201", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1201", - "src": { - "column": "28", - "end": "14275", - "id": "1202", - "length": "7", - "line": "428", - "parentIndex": "1199", - "start": "14269" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1205", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "45", - "end": "14286", - "id": "1206", - "length": "1", - "line": "428", - "parentIndex": "1203", - "start": "14286" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1207", - "nodeType": "IDENTIFIER", - "src": { - "column": "37", - "end": "14284", - "id": "1208", - "length": "7", - "line": "428", - "parentIndex": "1203", - "start": "14278" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1209", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "37", - "end": "14284", - "id": "1210", - "length": "7", - "line": "428", - "parentIndex": "1207", - "start": "14278" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1203", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "37", - "end": "14287", - "id": "1204", - "length": "10", - "line": "428", - "parentIndex": "1199", - "start": "14278" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - ], - "id": "1211", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1211", - "src": { - "column": "49", - "end": "14295", - "id": "1212", - "length": "6", - "line": "428", - "parentIndex": "1199", - "start": "14290" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": "1213", - "name": "_afterTokenTransfer", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "14267", - "id": "1214", - "length": "19", - "line": "428", - "parentIndex": "1199", - "start": "14249" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256", - "typeString": "function(address,function(int_const 0),uint256)" - } - } - }, - "id": "1199", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "14296", - "id": "1200", - "length": "48", - "line": "428", - "parentIndex": "1123", - "start": "14249" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256$", - "typeString": "function(address,function(int_const 0),uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "1215", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "14185", - "id": "1216", - "length": "194", - "line": "420", - "parentIndex": "341", - "start": "13992" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1219", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1225", - "name": "account", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1225", - "src": { - "column": "22", - "end": "14032", - "id": "1226", - "length": "7", - "line": "421", - "parentIndex": "1221", - "start": "14026" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1221", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1223", - "name": "_balances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "355", - "src": { - "column": "12", - "end": "14024", - "id": "1224", - "length": "9", - "line": "421", - "parentIndex": "1221", - "start": "14016" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "12", - "end": "14033", - "id": "1222", - "length": "18", - "line": "421", - "parentIndex": "1219", - "start": "14016" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1227", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1229", - "name": "accountBalance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1159", - "src": { - "column": "33", - "end": "14050", - "id": "1230", - "length": "14", - "line": "421", - "parentIndex": "1227", - "start": "14037" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1231", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1231", - "src": { - "column": "50", - "end": "14059", - "id": "1232", - "length": "6", - "line": "421", - "parentIndex": "1227", - "start": "14054" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "33", - "end": "14059", - "id": "1228", - "length": "23", - "line": "421", - "parentIndex": "1219", - "start": "14037" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "12", - "end": "14059", - "id": "1220", - "length": "44", - "line": "421", - "parentIndex": "1215", - "start": "14016" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003euint256)" - } - } - }, - "id": "1217", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "12", - "end": "14060", - "id": "1218", - "length": "45", - "line": "421", - "parentIndex": "1215", - "start": "14016" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1235", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1237", - "name": "_totalSupply", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "378", - "src": { - "column": "12", - "end": "14164", - "id": "1238", - "length": "12", - "line": "423", - "parentIndex": "1235", - "start": "14153" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "MINUS_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1239", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1239", - "src": { - "column": "28", - "end": "14174", - "id": "1240", - "length": "6", - "line": "423", - "parentIndex": "1235", - "start": "14169" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "12", - "end": "14174", - "id": "1236", - "length": "22", - "line": "423", - "parentIndex": "1215", - "start": "14153" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "1233", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "12", - "end": "14175", - "id": "1234", - "length": "23", - "line": "423", - "parentIndex": "1215", - "start": "14153" - } - } - } - ] - } - } - ] - }, - "id": "1110", - "kind": "KIND_FUNCTION", - "name": "_burn", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1112", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1114", - "name": "account", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1114", - "src": { - "column": "19", - "end": "13674", - "id": "1115", - "length": "15", - "line": "413", - "parentIndex": "1112", - "start": "13660" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1116", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "19", - "end": "13666", - "id": "1117", - "length": "7", - "line": "413", - "parentIndex": "1114", - "start": "13660" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1118", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1118", - "src": { - "column": "36", - "end": "13690", - "id": "1119", - "length": "14", - "line": "413", - "parentIndex": "1112", - "start": "13677" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1120", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "36", - "end": "13683", - "id": "1121", - "length": "7", - "line": "413", - "parentIndex": "1118", - "start": "13677" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "19", - "end": "13690", - "id": "1113", - "length": "31", - "line": "413", - "parentIndex": "1110", - "start": "13660" - } - }, - "returnParameters": { - "id": "1122", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "14303", - "id": "1111", - "length": "659", - "line": "413", - "parentIndex": "1110", - "start": "13645" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "14303", - "id": "1111", - "length": "659", - "line": "413", - "parentIndex": "341", - "start": "13645" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1259", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "87", - "end": "15066", - "id": "1260", - "length": "257", - "line": "444", - "parentIndex": "1242", - "start": "14810" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: approve from the zero address\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1263", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1265", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1265", - "src": { - "column": "16", - "end": "14832", - "id": "1266", - "length": "5", - "line": "445", - "parentIndex": "1263", - "start": "14828" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1269", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "33", - "end": "14845", - "id": "1270", - "length": "1", - "line": "445", - "parentIndex": "1267", - "start": "14845" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1271", - "nodeType": "IDENTIFIER", - "src": { - "column": "25", - "end": "14843", - "id": "1272", - "length": "7", - "line": "445", - "parentIndex": "1267", - "start": "14837" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1273", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "25", - "end": "14843", - "id": "1274", - "length": "7", - "line": "445", - "parentIndex": "1271", - "start": "14837" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1267", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "25", - "end": "14846", - "id": "1268", - "length": "10", - "line": "445", - "parentIndex": "1263", - "start": "14837" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "16", - "end": "14846", - "id": "1264", - "length": "19", - "line": "445", - "parentIndex": "1261", - "start": "14828" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", - "id": "1275", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "37", - "end": "14886", - "id": "1276", - "length": "38", - "line": "445", - "parentIndex": "1261", - "start": "14849" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: approve from the zero address\"" - }, - "value": "ERC20: approve from the zero address" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: approve from the zero address\"" - } - ], - "id": "1277", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "14826", - "id": "1278", - "length": "7", - "line": "445", - "parentIndex": "1261", - "start": "14820" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: approve from the zero address\")" - } - } - }, - "id": "1261", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "14887", - "id": "1262", - "length": "68", - "line": "445", - "parentIndex": "1259", - "start": "14820" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: approve to the zero address\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1281", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1283", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1283", - "src": { - "column": "16", - "end": "14912", - "id": "1284", - "length": "7", - "line": "446", - "parentIndex": "1281", - "start": "14906" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1287", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "35", - "end": "14925", - "id": "1288", - "length": "1", - "line": "446", - "parentIndex": "1285", - "start": "14925" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1289", - "nodeType": "IDENTIFIER", - "src": { - "column": "27", - "end": "14923", - "id": "1290", - "length": "7", - "line": "446", - "parentIndex": "1285", - "start": "14917" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1291", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "27", - "end": "14923", - "id": "1292", - "length": "7", - "line": "446", - "parentIndex": "1289", - "start": "14917" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1285", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "27", - "end": "14926", - "id": "1286", - "length": "10", - "line": "446", - "parentIndex": "1281", - "start": "14917" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "16", - "end": "14926", - "id": "1282", - "length": "21", - "line": "446", - "parentIndex": "1279", - "start": "14906" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", - "id": "1293", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "39", - "end": "14964", - "id": "1294", - "length": "36", - "line": "446", - "parentIndex": "1279", - "start": "14929" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: approve to the zero address\"" - }, - "value": "ERC20: approve to the zero address" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: approve to the zero address\"" - } - ], - "id": "1295", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "14904", - "id": "1296", - "length": "7", - "line": "446", - "parentIndex": "1279", - "start": "14898" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: approve to the zero address\")" - } - } - }, - "id": "1279", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "14965", - "id": "1280", - "length": "68", - "line": "446", - "parentIndex": "1259", - "start": "14898" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1299", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1309", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1309", - "src": { - "column": "27", - "end": "15002", - "id": "1310", - "length": "7", - "line": "448", - "parentIndex": "1301", - "start": "14996" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1301", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", - "value": { - "baseExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1307", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1307", - "src": { - "column": "20", - "end": "14993", - "id": "1308", - "length": "5", - "line": "448", - "parentIndex": "1303", - "start": "14989" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1303", - "indexExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1305", - "name": "_allowances", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "364", - "src": { - "column": "8", - "end": "14987", - "id": "1306", - "length": "11", - "line": "448", - "parentIndex": "1303", - "start": "14977" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - } - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "8", - "end": "14994", - "id": "1304", - "length": "18", - "line": "448", - "parentIndex": "1301", - "start": "14977" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "INDEX_ACCESS", - "src": { - "column": "8", - "end": "15003", - "id": "1302", - "length": "27", - "line": "448", - "parentIndex": "1299", - "start": "14977" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - "typeDescriptions": [ - { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ] - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1311", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1311", - "src": { - "column": "38", - "end": "15012", - "id": "1312", - "length": "6", - "line": "448", - "parentIndex": "1299", - "start": "15007" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "8", - "end": "15012", - "id": "1300", - "length": "36", - "line": "448", - "parentIndex": "1259", - "start": "14977" - }, - "typeDescription": { - "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", - "typeString": "mapping(address=\u003emapping(address=\u003euint256))" - } - } - }, - "id": "1297", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "15013", - "id": "1298", - "length": "37", - "line": "448", - "parentIndex": "1259", - "start": "14977" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1315", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1315", - "src": { - "column": "22", - "end": "15041", - "id": "1316", - "length": "5", - "line": "449", - "parentIndex": "1259", - "start": "15037" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1317", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1317", - "src": { - "column": "29", - "end": "15050", - "id": "1318", - "length": "7", - "line": "449", - "parentIndex": "1259", - "start": "15044" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1319", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1319", - "src": { - "column": "38", - "end": "15058", - "id": "1320", - "length": "6", - "line": "449", - "parentIndex": "1259", - "start": "15053" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1321", - "name": "Approval", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "76", - "src": { - "column": "13", - "end": "15035", - "id": "1322", - "length": "8", - "line": "449", - "parentIndex": "1259", - "start": "15028" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_IERC20_Approval_\u002676", - "typeString": "event IERC20.Approval" - } - } - }, - "id": "1313", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "15060", - "id": "1314", - "length": "38", - "line": "449", - "parentIndex": "1242", - "start": "15023" - } - } - } - ] - }, - "id": "1242", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_approve", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1244", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1246", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1246", - "src": { - "column": "22", - "end": "14757", - "id": "1247", - "length": "13", - "line": "444", - "parentIndex": "1244", - "start": "14745" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1248", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "22", - "end": "14751", - "id": "1249", - "length": "7", - "line": "444", - "parentIndex": "1246", - "start": "14745" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1250", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1250", - "src": { - "column": "37", - "end": "14774", - "id": "1251", - "length": "15", - "line": "444", - "parentIndex": "1244", - "start": "14760" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1252", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "37", - "end": "14766", - "id": "1253", - "length": "7", - "line": "444", - "parentIndex": "1250", - "start": "14760" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1254", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1254", - "src": { - "column": "54", - "end": "14790", - "id": "1255", - "length": "14", - "line": "444", - "parentIndex": "1244", - "start": "14777" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1256", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "54", - "end": "14783", - "id": "1257", - "length": "7", - "line": "444", - "parentIndex": "1254", - "start": "14777" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "22", - "end": "14790", - "id": "1245", - "length": "46", - "line": "444", - "parentIndex": "1242", - "start": "14745" - } - }, - "returnParameters": { - "id": "1258", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "15066", - "id": "1243", - "length": "340", - "line": "444", - "parentIndex": "1242", - "start": "14727" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "15066", - "id": "1243", - "length": "340", - "line": "444", - "parentIndex": "341", - "start": "14727" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1341", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "94", - "end": "15758", - "id": "1342", - "length": "321", - "line": "460", - "parentIndex": "1324", - "start": "15438" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "1345" - ], - "declarations": [ - { - "id": "1345", - "mutability": "MUTABLE", - "name": "currentAllowance", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1341", - "src": { - "column": "8", - "end": "15471", - "id": "1346", - "length": "24", - "line": "461", - "parentIndex": "1343", - "start": "15448" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1347", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "15454", - "id": "1348", - "length": "7", - "line": "461", - "parentIndex": "1345", - "start": "15448" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "1343", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1351", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1351", - "src": { - "column": "45", - "end": "15489", - "id": "1352", - "length": "5", - "line": "461", - "parentIndex": "1349", - "start": "15485" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1353", - "name": "spender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1353", - "src": { - "column": "52", - "end": "15498", - "id": "1354", - "length": "7", - "line": "461", - "parentIndex": "1349", - "start": "15492" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1355", - "name": "allowance", - "nodeType": "IDENTIFIER", - "src": { - "column": "35", - "end": "15483", - "id": "1356", - "length": "9", - "line": "461", - "parentIndex": "1349", - "start": "15475" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address", - "typeString": "function(address,address)" - } - } - }, - "id": "1349", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "35", - "end": "15499", - "id": "1350", - "length": "25", - "line": "461", - "parentIndex": "1343", - "start": "15475" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$", - "typeString": "function(address,address)" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "15500", - "id": "1344", - "length": "53", - "line": "461", - "parentIndex": "1341", - "start": "15448" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "1367", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "51", - "end": "15752", - "id": "1368", - "length": "200", - "line": "462", - "parentIndex": "1324", - "start": "15553" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: insufficient allowance\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1371", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1373", - "name": "currentAllowance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "819", - "src": { - "column": "20", - "end": "15590", - "id": "1374", - "length": "16", - "line": "463", - "parentIndex": "1371", - "start": "15575" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN_OR_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1375", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1375", - "src": { - "column": "40", - "end": "15600", - "id": "1376", - "length": "6", - "line": "463", - "parentIndex": "1371", - "start": "15595" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "20", - "end": "15600", - "id": "1372", - "length": "26", - "line": "463", - "parentIndex": "1369", - "start": "15575" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365", - "id": "1377", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "48", - "end": "15633", - "id": "1378", - "length": "31", - "line": "463", - "parentIndex": "1369", - "start": "15603" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: insufficient allowance\"" - }, - "value": "ERC20: insufficient allowance" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC20: insufficient allowance\"" - } - ], - "id": "1379", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "12", - "end": "15573", - "id": "1380", - "length": "7", - "line": "463", - "parentIndex": "1369", - "start": "15567" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC20: insufficient allowance\")" - } - } - }, - "id": "1369", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "15634", - "id": "1370", - "length": "68", - "line": "463", - "parentIndex": "1367", - "start": "15567" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1359", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1361", - "name": "currentAllowance", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1343", - "src": { - "column": "12", - "end": "15529", - "id": "1362", - "length": "16", - "line": "462", - "parentIndex": "1359", - "start": "15514" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MetaType", - "value": { - "id": "1365", - "name": "type", - "nodeType": "IDENTIFIER", - "src": { - "column": "32", - "end": "15546", - "id": "1366", - "length": "13", - "line": "462", - "parentIndex": "1363", - "start": "15534" - }, - "typeDescription": { - "typeString": "type" - } - } - }, - "id": "1363", - "memberName": "max", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "32", - "end": "15550", - "id": "1364", - "length": "17", - "line": "462", - "parentIndex": "1359", - "start": "15534" - }, - "typeDescription": { - "typeString": "type" - } - } - }, - "src": { - "column": "12", - "end": "15550", - "id": "1360", - "length": "37", - "line": "462", - "parentIndex": "1357", - "start": "15514" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "1357", - "nodeType": "IF_STATEMENT", - "src": { - "end": "15752", - "id": "1358", - "length": "243", - "line": "462", - "parentIndex": "1341", - "start": "15510" - } - } - } - ] - }, - "id": "1324", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_spendAllowance", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1326", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1328", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1328", - "src": { - "column": "29", - "end": "15385", - "id": "1329", - "length": "13", - "line": "460", - "parentIndex": "1326", - "start": "15373" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1330", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "29", - "end": "15379", - "id": "1331", - "length": "7", - "line": "460", - "parentIndex": "1328", - "start": "15373" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1332", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1332", - "src": { - "column": "44", - "end": "15402", - "id": "1333", - "length": "15", - "line": "460", - "parentIndex": "1326", - "start": "15388" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1334", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "44", - "end": "15394", - "id": "1335", - "length": "7", - "line": "460", - "parentIndex": "1332", - "start": "15388" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1336", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1336", - "src": { - "column": "61", - "end": "15418", - "id": "1337", - "length": "14", - "line": "460", - "parentIndex": "1326", - "start": "15405" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1338", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "61", - "end": "15411", - "id": "1339", - "length": "7", - "line": "460", - "parentIndex": "1336", - "start": "15405" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "29", - "end": "15418", - "id": "1327", - "length": "46", - "line": "460", - "parentIndex": "1324", - "start": "15373" - } - }, - "returnParameters": { - "id": "1340", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "15758", - "id": "1325", - "length": "411", - "line": "460", - "parentIndex": "1324", - "start": "15348" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "15758", - "id": "1325", - "length": "411", - "line": "460", - "parentIndex": "341", - "start": "15348" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1399", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "93", - "end": "16433", - "id": "1400", - "length": "2", - "line": "484", - "parentIndex": "1382", - "start": "16432" - } - }, - "id": "1382", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_beforeTokenTransfer", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1384", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1386", - "name": "from", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1386", - "src": { - "column": "34", - "end": "16384", - "id": "1387", - "length": "12", - "line": "484", - "parentIndex": "1384", - "start": "16373" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1388", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "34", - "end": "16379", - "id": "1389", - "length": "7", - "line": "484", - "parentIndex": "1386", - "start": "16373" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1390", - "name": "to", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1390", - "src": { - "column": "48", - "end": "16396", - "id": "1391", - "length": "10", - "line": "484", - "parentIndex": "1384", - "start": "16387" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1392", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "48", - "end": "16393", - "id": "1393", - "length": "7", - "line": "484", - "parentIndex": "1390", - "start": "16387" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1394", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1394", - "src": { - "column": "60", - "end": "16412", - "id": "1395", - "length": "14", - "line": "484", - "parentIndex": "1384", - "start": "16399" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1396", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "60", - "end": "16405", - "id": "1397", - "length": "7", - "line": "484", - "parentIndex": "1394", - "start": "16399" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "34", - "end": "16412", - "id": "1385", - "length": "40", - "line": "484", - "parentIndex": "1382", - "start": "16373" - } - }, - "returnParameters": { - "id": "1398", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "16433", - "id": "1383", - "length": "91", - "line": "484", - "parentIndex": "1382", - "start": "16343" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "16433", - "id": "1383", - "length": "91", - "line": "484", - "parentIndex": "341", - "start": "16343" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1419", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "92", - "end": "17111", - "id": "1420", - "length": "2", - "line": "500", - "parentIndex": "1402", - "start": "17110" - } - }, - "id": "1402", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_afterTokenTransfer", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1404", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1406", - "name": "from", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1406", - "src": { - "column": "33", - "end": "17062", - "id": "1407", - "length": "12", - "line": "500", - "parentIndex": "1404", - "start": "17051" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1408", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "33", - "end": "17057", - "id": "1409", - "length": "7", - "line": "500", - "parentIndex": "1406", - "start": "17051" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1410", - "name": "to", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1410", - "src": { - "column": "47", - "end": "17074", - "id": "1411", - "length": "10", - "line": "500", - "parentIndex": "1404", - "start": "17065" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1412", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "47", - "end": "17071", - "id": "1413", - "length": "7", - "line": "500", - "parentIndex": "1410", - "start": "17065" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1414", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1414", - "src": { - "column": "59", - "end": "17090", - "id": "1415", - "length": "14", - "line": "500", - "parentIndex": "1404", - "start": "17077" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "1416", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "59", - "end": "17083", - "id": "1417", - "length": "7", - "line": "500", - "parentIndex": "1414", - "start": "17077" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "33", - "end": "17090", - "id": "1405", - "length": "40", - "line": "500", - "parentIndex": "1402", - "start": "17051" - } - }, - "returnParameters": { - "id": "1418", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "17111", - "id": "1403", - "length": "90", - "line": "500", - "parentIndex": "1402", - "start": "17022" - } - }, - "scope": "341", - "src": { - "column": "4", - "end": "17111", - "id": "1403", - "length": "90", - "line": "500", - "parentIndex": "341", - "start": "17022" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - } - ], - "src": { - "end": "17113", - "length": "11312", - "line": "174", - "parentIndex": "327", - "start": "5802" - } - } - } - ] - }, - "src": { - "id": 328, - "line": 174, - "start": 5802, - "end": 17113, - "length": 11312, - "parent_index": 48 - } - }, - { - "id": 1421, - "license": "MIT", - "name": "Token", - "absolute_path": "Token.sol", - "exported_symbols": [ - { - "id": 1421, - "name": "Token", - "absolute_path": "Token.sol" - }, - { - "id": 327, - "name": "ERC20", - "absolute_path": "ERC20.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "1431", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "17171", - "id": "1432", - "length": "23", - "line": "505", - "parentIndex": "1421", - "start": "17149" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "ERC20.sol", - "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", - "id": "1437", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "1421", - "sourceUnit": "327", - "src": { - "end": "17228", - "length": "55", - "line": "507", - "parentIndex": "1421", - "start": "17174" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "baseContracts": [ - { - "baseName": { - "id": "1441", - "name": "ERC20", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "327", - "src": { - "column": "18", - "end": "17253", - "id": "1442", - "length": "5", - "line": "509", - "parentIndex": "1438", - "start": "17249" - } - }, - "id": "1439", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "18", - "end": "17253", - "id": "1440", - "length": "5", - "line": "509", - "parentIndex": "1438", - "start": "17249" - } - } - ], - "contractDependencies": [ - "327", - "1437" - ], - "fullyImplemented": true, - "id": "1438", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "327", - "1438", - "1437" - ], - "name": "Token", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1456", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "42", - "end": "17358", - "id": "1457", - "length": "60", - "line": "510", - "parentIndex": "1444", - "start": "17299" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_rational_1000000_by_1", - "typeString": "int_const 1000000" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1462", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "14", - "end": "17317", - "id": "1463", - "length": "3", - "line": "511", - "parentIndex": "1460", - "start": "17315" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "1460", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "14", - "end": "17324", - "id": "1461", - "length": "10", - "line": "511", - "parentIndex": "1458", - "start": "17315" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1464", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "31303030303030", - "id": "1466", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "26", - "end": "17333", - "id": "1467", - "length": "7", - "line": "511", - "parentIndex": "1464", - "start": "17327" - }, - "typeDescription": { - "typeIdentifier": "t_rational_1000000_by_1", - "typeString": "int_const 1000000" - }, - "value": "1000000" - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "MULTIPLICATION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.ExprOperation", - "value": { - "id": "1469", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "3130", - "id": "1471", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "36", - "end": "17338", - "id": "1472", - "length": "2", - "line": "511", - "parentIndex": "1469", - "start": "17337" - }, - "typeDescription": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - } - }, - "nodeType": "EXPRESSION_OPERATION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1475", - "name": "decimals", - "nodeType": "IDENTIFIER", - "src": { - "column": "40", - "end": "17348", - "id": "1476", - "length": "8", - "line": "511", - "parentIndex": "1473", - "start": "17341" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "1473", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "40", - "end": "17350", - "id": "1474", - "length": "10", - "line": "511", - "parentIndex": "1469", - "start": "17341" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "src": { - "column": "36", - "end": "17350", - "id": "1470", - "length": "14", - "line": "511", - "parentIndex": "1464", - "start": "17337" - }, - "typeDescription": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - } - } - }, - "src": { - "column": "26", - "end": "17350", - "id": "1465", - "length": "24", - "line": "511", - "parentIndex": "1458", - "start": "17327" - }, - "typeDescription": { - "typeIdentifier": "t_rational_1000000_by_1", - "typeString": "int_const 1000000" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_rational_1000000_by_1", - "typeString": "int_const 1000000" - } - ], - "id": "1477", - "name": "_mint", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "17313", - "id": "1478", - "length": "5", - "line": "511", - "parentIndex": "1458", - "start": "17309" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_rational_1000000_by_1", - "typeString": "function(address,int_const 1000000)" - } - } - }, - "id": "1458", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "17351", - "id": "1459", - "length": "43", - "line": "511", - "parentIndex": "1456", - "start": "17309" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_rational_1000000_by_1$", - "typeString": "function(address,int_const 1000000)" - } - } - } - ] - }, - "id": "1444", - "implemented": true, - "kind": "CONSTRUCTOR", - "modifiers": [ - { - "argumentTypes": [ - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"MyToken\"" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"MTK\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "4d79546f6b656e", - "id": "1452", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "24", - "end": "17289", - "id": "1453", - "length": "9", - "line": "510", - "parentIndex": "1448", - "start": "17281" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"MyToken\"" - }, - "value": "MyToken" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "4d544b", - "id": "1454", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "35", - "end": "17296", - "id": "1455", - "length": "5", - "line": "510", - "parentIndex": "1448", - "start": "17292" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"MTK\"" - }, - "value": "MTK" - } - } - ], - "id": "1448", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "1450", - "name": "ERC20", - "src": { - "column": "18", - "end": "17279", - "id": "1451", - "length": "5", - "line": "510", - "parentIndex": "1448", - "start": "17275" - } - }, - "name": "ERC20", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "18", - "end": "17297", - "id": "1449", - "length": "23", - "line": "510", - "parentIndex": "1444", - "start": "17275" - } - } - ], - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1446", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "17358", - "id": "1445", - "length": "98", - "line": "510", - "parentIndex": "1444", - "start": "17261" - } - }, - "returnParameters": { - "id": "1447", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "17358", - "id": "1445", - "length": "98", - "line": "510", - "parentIndex": "1444", - "start": "17261" - } - }, - "scope": "1438", - "src": { - "column": "4", - "end": "17358", - "id": "1445", - "length": "98", - "line": "510", - "parentIndex": "1438", - "start": "17261" - }, - "stateMutability": "NONPAYABLE", - "visibility": "INTERNAL" - } - } - ], - "src": { - "end": "17360", - "length": "130", - "line": "509", - "parentIndex": "1421", - "start": "17231" - } - } - } - ] - }, - "src": { - "id": 1422, - "line": 509, - "start": 17231, - "end": 17360, - "length": 130, - "parent_index": 48 - } - } - ], - "comments": [ - { - "id": 1, - "node_type": 33, - "src": { - "line": 1, - "end": 30, - "length": 31, - "parent_index": 2 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 2, - "node_type": 31, - "src": { - "line": 2, - "start": 32, - "end": 103, - "length": 72, - "parent_index": 3 - }, - "text": "// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)" - }, - { - "id": 3, - "node_type": 32, - "src": { - "line": 6, - "start": 131, - "end": 200, - "length": 70, - "parent_index": 4 - }, - "text": "/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */" - }, - { - "id": 4, - "node_type": 32, - "src": { - "line": 10, - "column": 4, - "start": 225, - "end": 382, - "length": 158, - "parent_index": 5 - }, - "text": "/**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */" - }, - { - "id": 5, - "node_type": 32, - "src": { - "line": 18, - "column": 4, - "start": 466, - "end": 613, - "length": 148, - "parent_index": 6 - }, - "text": "/**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */" - }, - { - "id": 6, - "node_type": 32, - "src": { - "line": 24, - "column": 4, - "start": 703, - "end": 768, - "length": 66, - "parent_index": 7 - }, - "text": "/**\n * @dev Returns the amount of tokens in existence.\n */" - }, - { - "id": 7, - "node_type": 32, - "src": { - "line": 29, - "column": 4, - "start": 835, - "end": 906, - "length": 72, - "parent_index": 8 - }, - "text": "/**\n * @dev Returns the amount of tokens owned by `account`.\n */" - }, - { - "id": 8, - "node_type": 32, - "src": { - "line": 34, - "column": 4, - "start": 986, - "end": 1187, - "length": 202, - "parent_index": 9 - }, - "text": "/**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */" - }, - { - "id": 9, - "node_type": 32, - "src": { - "line": 43, - "column": 4, - "start": 1269, - "end": 1532, - "length": 264, - "parent_index": 10 - }, - "text": "/**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */" - }, - { - "id": 10, - "node_type": 32, - "src": { - "line": 52, - "column": 4, - "start": 1627, - "end": 2268, - "length": 642, - "parent_index": 11 - }, - "text": "/**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */" - }, - { - "id": 11, - "node_type": 32, - "src": { - "line": 68, - "column": 4, - "start": 2354, - "end": 2640, - "length": 287, - "parent_index": 12 - }, - "text": "/**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */" - }, - { - "id": 12, - "node_type": 33, - "src": { - "line": 81, - "start": 2739, - "end": 2769, - "length": 31, - "parent_index": 13 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 13, - "node_type": 31, - "src": { - "line": 82, - "start": 2771, - "end": 2846, - "length": 76, - "parent_index": 14 - }, - "text": "// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)" - }, - { - "id": 14, - "node_type": 32, - "src": { - "line": 88, - "start": 2899, - "end": 3014, - "length": 116, - "parent_index": 15 - }, - "text": "/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */" - }, - { - "id": 15, - "node_type": 32, - "src": { - "line": 94, - "column": 4, - "start": 3057, - "end": 3110, - "length": 54, - "parent_index": 16 - }, - "text": "/**\n * @dev Returns the name of the token.\n */" - }, - { - "id": 16, - "node_type": 32, - "src": { - "line": 99, - "column": 4, - "start": 3176, - "end": 3231, - "length": 56, - "parent_index": 17 - }, - "text": "/**\n * @dev Returns the symbol of the token.\n */" - }, - { - "id": 17, - "node_type": 32, - "src": { - "line": 104, - "column": 4, - "start": 3299, - "end": 3363, - "length": 65, - "parent_index": 18 - }, - "text": "/**\n * @dev Returns the decimals places of the token.\n */" - }, - { - "id": 18, - "node_type": 33, - "src": { - "line": 111, - "start": 3424, - "end": 3454, - "length": 31, - "parent_index": 19 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 19, - "node_type": 31, - "src": { - "line": 112, - "start": 3456, - "end": 3507, - "length": 52, - "parent_index": 20 - }, - "text": "// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)" - }, - { - "id": 20, - "node_type": 32, - "src": { - "line": 116, - "start": 3535, - "end": 4030, - "length": 496, - "parent_index": 21 - }, - "text": "/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */" - }, - { - "id": 21, - "node_type": 33, - "src": { - "line": 137, - "start": 4270, - "end": 4300, - "length": 31, - "parent_index": 22 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 22, - "node_type": 31, - "src": { - "line": 138, - "start": 4302, - "end": 4372, - "length": 71, - "parent_index": 23 - }, - "text": "// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)" - }, - { - "id": 23, - "node_type": 32, - "src": { - "line": 146, - "start": 4500, - "end": 5800, - "length": 1301, - "parent_index": 24 - }, - "text": "/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */" - }, - { - "id": 24, - "node_type": 32, - "src": { - "line": 184, - "column": 4, - "start": 6074, - "end": 6244, - "length": 171, - "parent_index": 25 - }, - "text": "/**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */" - }, - { - "id": 25, - "node_type": 32, - "src": { - "line": 195, - "column": 4, - "start": 6369, - "end": 6422, - "length": 54, - "parent_index": 26 - }, - "text": "/**\n * @dev Returns the name of the token.\n */" - }, - { - "id": 26, - "node_type": 32, - "src": { - "line": 202, - "column": 4, - "start": 6532, - "end": 6633, - "length": 102, - "parent_index": 27 - }, - "text": "/**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */" - }, - { - "id": 27, - "node_type": 32, - "src": { - "line": 210, - "column": 4, - "start": 6747, - "end": 7368, - "length": 622, - "parent_index": 28 - }, - "text": "/**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */" - }, - { - "id": 28, - "node_type": 32, - "src": { - "line": 227, - "column": 4, - "start": 7471, - "end": 7519, - "length": 49, - "parent_index": 29 - }, - "text": "/**\n * @dev See {IERC20-totalSupply}.\n */" - }, - { - "id": 29, - "node_type": 32, - "src": { - "line": 234, - "column": 4, - "start": 7637, - "end": 7683, - "length": 47, - "parent_index": 30 - }, - "text": "/**\n * @dev See {IERC20-balanceOf}.\n */" - }, - { - "id": 30, - "node_type": 32, - "src": { - "line": 241, - "column": 4, - "start": 7820, - "end": 8004, - "length": 185, - "parent_index": 31 - }, - "text": "/**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */" - }, - { - "id": 31, - "node_type": 32, - "src": { - "line": 255, - "column": 4, - "start": 8205, - "end": 8251, - "length": 47, - "parent_index": 32 - }, - "text": "/**\n * @dev See {IERC20-allowance}.\n */" - }, - { - "id": 32, - "node_type": 32, - "src": { - "line": 262, - "column": 4, - "start": 8412, - "end": 8708, - "length": 297, - "parent_index": 33 - }, - "text": "/**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */" - }, - { - "id": 33, - "node_type": 32, - "src": { - "line": 278, - "column": 4, - "start": 8917, - "end": 9467, - "length": 551, - "parent_index": 34 - }, - "text": "/**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */" - }, - { - "id": 34, - "node_type": 32, - "src": { - "line": 301, - "column": 4, - "start": 9735, - "end": 10118, - "length": 384, - "parent_index": 35 - }, - "text": "/**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */" - }, - { - "id": 35, - "node_type": 32, - "src": { - "line": 319, - "column": 4, - "start": 10364, - "end": 10839, - "length": 476, - "parent_index": 36 - }, - "text": "/**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */" - }, - { - "id": 36, - "node_type": 32, - "src": { - "line": 344, - "column": 4, - "start": 11278, - "end": 11720, - "length": 443, - "parent_index": 37 - }, - "text": "/**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */" - }, - { - "id": 37, - "node_type": 31, - "src": { - "line": 368, - "column": 12, - "start": 12221, - "end": 12323, - "length": 103, - "parent_index": 38 - }, - "text": "// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by" - }, - { - "id": 38, - "node_type": 31, - "src": { - "line": 369, - "column": 12, - "start": 12337, - "end": 12370, - "length": 34, - "parent_index": 39 - }, - "text": "// decrementing then incrementing." - }, - { - "id": 39, - "node_type": 32, - "src": { - "line": 378, - "column": 4, - "start": 12520, - "end": 12784, - "length": 265, - "parent_index": 40 - }, - "text": "/** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */" - }, - { - "id": 40, - "node_type": 31, - "src": { - "line": 394, - "column": 12, - "start": 13057, - "end": 13155, - "length": 99, - "parent_index": 41 - }, - "text": "// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above." - }, - { - "id": 41, - "node_type": 32, - "src": { - "line": 402, - "column": 4, - "start": 13331, - "end": 13639, - "length": 309, - "parent_index": 42 - }, - "text": "/**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */" - }, - { - "id": 42, - "node_type": 31, - "src": { - "line": 422, - "column": 12, - "start": 14074, - "end": 14139, - "length": 66, - "parent_index": 43 - }, - "text": "// Overflow not possible: amount \u003c= accountBalance \u003c= totalSupply." - }, - { - "id": 43, - "node_type": 32, - "src": { - "line": 431, - "column": 4, - "start": 14310, - "end": 14721, - "length": 412, - "parent_index": 44 - }, - "text": "/**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */" - }, - { - "id": 44, - "node_type": 32, - "src": { - "line": 452, - "column": 4, - "start": 15073, - "end": 15342, - "length": 270, - "parent_index": 45 - }, - "text": "/**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */" - }, - { - "id": 45, - "node_type": 32, - "src": { - "line": 470, - "column": 4, - "start": 15765, - "end": 16337, - "length": 573, - "parent_index": 46 - }, - "text": "/**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */" - }, - { - "id": 46, - "node_type": 32, - "src": { - "line": 486, - "column": 4, - "start": 16440, - "end": 17016, - "length": 577, - "parent_index": 47 - }, - "text": "/**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */" - }, - { - "id": 47, - "node_type": 33, - "src": { - "line": 504, - "start": 17117, - "end": 17147, - "length": 31, - "parent_index": 48 - }, - "text": "// SPDX-License-Identifier: MIT" - } - ] + "id": 48, + "entry_source_unit": 1421, + "node_type": 80, + "source_units": [ + { + "id": 49, + "license": "MIT", + "name": "IERC20", + "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/IERC20.sol", + "exported_symbols": [ + { + "id": 49, + "name": "IERC20", + "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/IERC20.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "51", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "128", + "id": "52", + "length": "23", + "line": "4", + "parentIndex": "49", + "start": "106" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "58", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "58" + ], + "name": "IERC20", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "60", + "name": "Transfer", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "62", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "63", + "indexed": true, + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "63", + "src": { + "column": "19", + "end": "422", + "id": "64", + "length": "20", + "line": "16", + "parentIndex": "62", + "start": "403" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "65", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "19", + "end": "409", + "id": "66", + "length": "7", + "line": "16", + "parentIndex": "63", + "start": "403" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "67", + "indexed": true, + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "67", + "src": { + "column": "41", + "end": "442", + "id": "68", + "length": "18", + "line": "16", + "parentIndex": "62", + "start": "425" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "69", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "41", + "end": "431", + "id": "70", + "length": "7", + "line": "16", + "parentIndex": "67", + "start": "425" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "71", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "71", + "src": { + "column": "61", + "end": "457", + "id": "72", + "length": "13", + "line": "16", + "parentIndex": "62", + "start": "445" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "73", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "61", + "end": "451", + "id": "74", + "length": "7", + "line": "16", + "parentIndex": "71", + "start": "445" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "459", + "id": "61", + "length": "72", + "line": "16", + "parentIndex": "60", + "start": "388" + } + }, + "src": { + "column": "4", + "end": "459", + "id": "61", + "length": "72", + "line": "16", + "parentIndex": "58", + "start": "388" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u002660", + "typeString": "event IERC20.Transfer" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "76", + "name": "Approval", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "78", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "79", + "indexed": true, + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "79", + "src": { + "column": "19", + "end": "654", + "id": "80", + "length": "21", + "line": "22", + "parentIndex": "78", + "start": "634" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "81", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "19", + "end": "640", + "id": "82", + "length": "7", + "line": "22", + "parentIndex": "79", + "start": "634" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "83", + "indexed": true, + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "83", + "src": { + "column": "42", + "end": "679", + "id": "84", + "length": "23", + "line": "22", + "parentIndex": "78", + "start": "657" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "85", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "42", + "end": "663", + "id": "86", + "length": "7", + "line": "22", + "parentIndex": "83", + "start": "657" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "87", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "87", + "src": { + "column": "67", + "end": "694", + "id": "88", + "length": "13", + "line": "22", + "parentIndex": "78", + "start": "682" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "89", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "67", + "end": "688", + "id": "90", + "length": "7", + "line": "22", + "parentIndex": "87", + "start": "682" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "696", + "id": "77", + "length": "78", + "line": "22", + "parentIndex": "76", + "start": "619" + } + }, + "src": { + "column": "4", + "end": "696", + "id": "77", + "length": "78", + "line": "22", + "parentIndex": "58", + "start": "619" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IERC20_Approval_\u002676", + "typeString": "event IERC20.Approval" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "106", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "828", + "id": "93", + "length": "55", + "line": "27", + "parentIndex": "92", + "start": "774" + } + }, + "id": "92", + "kind": "KIND_FUNCTION", + "name": "totalSupply", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "94", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "96", + "nodeType": "VARIABLE_DECLARATION", + "scope": "96", + "src": { + "column": "50", + "end": "826", + "id": "97", + "length": "7", + "line": "27", + "parentIndex": "94", + "start": "820" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "98", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "826", + "id": "99", + "length": "7", + "line": "27", + "parentIndex": "96", + "start": "820" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "50", + "end": "826", + "id": "95", + "length": "7", + "line": "27", + "parentIndex": "92", + "start": "820" + } + }, + "returnParameters": { + "id": "100", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "102", + "nodeType": "VARIABLE_DECLARATION", + "scope": "102", + "src": { + "column": "50", + "end": "826", + "id": "103", + "length": "7", + "line": "27", + "parentIndex": "100", + "start": "820" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "104", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "826", + "id": "105", + "length": "7", + "line": "27", + "parentIndex": "102", + "start": "820" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "50", + "end": "826", + "id": "101", + "length": "7", + "line": "27", + "parentIndex": "92", + "start": "820" + } + }, + "scope": "58", + "src": { + "column": "4", + "end": "828", + "id": "93", + "length": "55", + "line": "27", + "parentIndex": "58", + "start": "774" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "122", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "979", + "id": "109", + "length": "68", + "line": "32", + "parentIndex": "108", + "start": "912" + } + }, + "id": "108", + "kind": "KIND_FUNCTION", + "name": "balanceOf", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "110", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "112", + "name": "account", + "nodeType": "VARIABLE_DECLARATION", + "scope": "112", + "src": { + "column": "23", + "end": "945", + "id": "113", + "length": "15", + "line": "32", + "parentIndex": "110", + "start": "931" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "114", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "937", + "id": "115", + "length": "7", + "line": "32", + "parentIndex": "112", + "start": "931" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "945", + "id": "111", + "length": "15", + "line": "32", + "parentIndex": "108", + "start": "931" + } + }, + "returnParameters": { + "id": "116", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "118", + "nodeType": "VARIABLE_DECLARATION", + "scope": "118", + "src": { + "column": "63", + "end": "977", + "id": "119", + "length": "7", + "line": "32", + "parentIndex": "116", + "start": "971" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "120", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "63", + "end": "977", + "id": "121", + "length": "7", + "line": "32", + "parentIndex": "118", + "start": "971" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "63", + "end": "977", + "id": "117", + "length": "7", + "line": "32", + "parentIndex": "108", + "start": "971" + } + }, + "scope": "58", + "src": { + "column": "4", + "end": "979", + "id": "109", + "length": "68", + "line": "32", + "parentIndex": "58", + "start": "912" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "142", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "1262", + "id": "125", + "length": "70", + "line": "41", + "parentIndex": "124", + "start": "1193" + } + }, + "id": "124", + "kind": "KIND_FUNCTION", + "name": "transfer", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "126", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "128", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "128", + "src": { + "column": "22", + "end": "1220", + "id": "129", + "length": "10", + "line": "41", + "parentIndex": "126", + "start": "1211" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "130", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "1217", + "id": "131", + "length": "7", + "line": "41", + "parentIndex": "128", + "start": "1211" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "132", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "132", + "src": { + "column": "34", + "end": "1236", + "id": "133", + "length": "14", + "line": "41", + "parentIndex": "126", + "start": "1223" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "134", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "34", + "end": "1229", + "id": "135", + "length": "7", + "line": "41", + "parentIndex": "132", + "start": "1223" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "22", + "end": "1236", + "id": "127", + "length": "26", + "line": "41", + "parentIndex": "124", + "start": "1211" + } + }, + "returnParameters": { + "id": "136", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "138", + "nodeType": "VARIABLE_DECLARATION", + "scope": "138", + "src": { + "column": "68", + "end": "1260", + "id": "139", + "length": "4", + "line": "41", + "parentIndex": "136", + "start": "1257" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "140", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "68", + "end": "1260", + "id": "141", + "length": "4", + "line": "41", + "parentIndex": "138", + "start": "1257" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "68", + "end": "1260", + "id": "137", + "length": "4", + "line": "41", + "parentIndex": "124", + "start": "1257" + } + }, + "scope": "58", + "src": { + "column": "4", + "end": "1262", + "id": "125", + "length": "70", + "line": "41", + "parentIndex": "58", + "start": "1193" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "162", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "1620", + "id": "145", + "length": "83", + "line": "50", + "parentIndex": "144", + "start": "1538" + } + }, + "id": "144", + "kind": "KIND_FUNCTION", + "name": "allowance", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "146", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "148", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "148", + "src": { + "column": "23", + "end": "1569", + "id": "149", + "length": "13", + "line": "50", + "parentIndex": "146", + "start": "1557" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "150", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "1563", + "id": "151", + "length": "7", + "line": "50", + "parentIndex": "148", + "start": "1557" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "152", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "152", + "src": { + "column": "38", + "end": "1586", + "id": "153", + "length": "15", + "line": "50", + "parentIndex": "146", + "start": "1572" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "154", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "38", + "end": "1578", + "id": "155", + "length": "7", + "line": "50", + "parentIndex": "152", + "start": "1572" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "1586", + "id": "147", + "length": "30", + "line": "50", + "parentIndex": "144", + "start": "1557" + } + }, + "returnParameters": { + "id": "156", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "158", + "nodeType": "VARIABLE_DECLARATION", + "scope": "158", + "src": { + "column": "78", + "end": "1618", + "id": "159", + "length": "7", + "line": "50", + "parentIndex": "156", + "start": "1612" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "160", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "78", + "end": "1618", + "id": "161", + "length": "7", + "line": "50", + "parentIndex": "158", + "start": "1612" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "78", + "end": "1618", + "id": "157", + "length": "7", + "line": "50", + "parentIndex": "144", + "start": "1612" + } + }, + "scope": "58", + "src": { + "column": "4", + "end": "1620", + "id": "145", + "length": "83", + "line": "50", + "parentIndex": "58", + "start": "1538" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "182", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "2347", + "id": "165", + "length": "74", + "line": "66", + "parentIndex": "164", + "start": "2274" + } + }, + "id": "164", + "kind": "KIND_FUNCTION", + "name": "approve", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "166", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "168", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "168", + "src": { + "column": "21", + "end": "2305", + "id": "169", + "length": "15", + "line": "66", + "parentIndex": "166", + "start": "2291" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "170", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "21", + "end": "2297", + "id": "171", + "length": "7", + "line": "66", + "parentIndex": "168", + "start": "2291" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "172", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "172", + "src": { + "column": "38", + "end": "2321", + "id": "173", + "length": "14", + "line": "66", + "parentIndex": "166", + "start": "2308" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "174", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "38", + "end": "2314", + "id": "175", + "length": "7", + "line": "66", + "parentIndex": "172", + "start": "2308" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "21", + "end": "2321", + "id": "167", + "length": "31", + "line": "66", + "parentIndex": "164", + "start": "2291" + } + }, + "returnParameters": { + "id": "176", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "178", + "nodeType": "VARIABLE_DECLARATION", + "scope": "178", + "src": { + "column": "72", + "end": "2345", + "id": "179", + "length": "4", + "line": "66", + "parentIndex": "176", + "start": "2342" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "180", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "72", + "end": "2345", + "id": "181", + "length": "4", + "line": "66", + "parentIndex": "178", + "start": "2342" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "72", + "end": "2345", + "id": "177", + "length": "4", + "line": "66", + "parentIndex": "164", + "start": "2342" + } + }, + "scope": "58", + "src": { + "column": "4", + "end": "2347", + "id": "165", + "length": "74", + "line": "66", + "parentIndex": "58", + "start": "2274" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "206", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "2733", + "id": "185", + "length": "88", + "line": "77", + "parentIndex": "184", + "start": "2646" + } + }, + "id": "184", + "kind": "KIND_FUNCTION", + "name": "transferFrom", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "186", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "188", + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "188", + "src": { + "column": "26", + "end": "2679", + "id": "189", + "length": "12", + "line": "77", + "parentIndex": "186", + "start": "2668" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "190", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "26", + "end": "2674", + "id": "191", + "length": "7", + "line": "77", + "parentIndex": "188", + "start": "2668" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "192", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "192", + "src": { + "column": "40", + "end": "2691", + "id": "193", + "length": "10", + "line": "77", + "parentIndex": "186", + "start": "2682" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "194", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "40", + "end": "2688", + "id": "195", + "length": "7", + "line": "77", + "parentIndex": "192", + "start": "2682" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "196", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "196", + "src": { + "column": "52", + "end": "2707", + "id": "197", + "length": "14", + "line": "77", + "parentIndex": "186", + "start": "2694" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "198", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "52", + "end": "2700", + "id": "199", + "length": "7", + "line": "77", + "parentIndex": "196", + "start": "2694" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "26", + "end": "2707", + "id": "187", + "length": "40", + "line": "77", + "parentIndex": "184", + "start": "2668" + } + }, + "returnParameters": { + "id": "200", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "202", + "nodeType": "VARIABLE_DECLARATION", + "scope": "202", + "src": { + "column": "86", + "end": "2731", + "id": "203", + "length": "4", + "line": "77", + "parentIndex": "200", + "start": "2728" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "204", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "86", + "end": "2731", + "id": "205", + "length": "4", + "line": "77", + "parentIndex": "202", + "start": "2728" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "86", + "end": "2731", + "id": "201", + "length": "4", + "line": "77", + "parentIndex": "184", + "start": "2728" + } + }, + "scope": "58", + "src": { + "column": "4", + "end": "2733", + "id": "185", + "length": "88", + "line": "77", + "parentIndex": "58", + "start": "2646" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + }, + "visibility": "EXTERNAL" + } + } + ], + "src": { + "end": "2735", + "length": "2534", + "line": "9", + "parentIndex": "49", + "start": "202" + } + } + } + ] + }, + "src": { + "id": 50, + "line": 9, + "start": 202, + "end": 2735, + "length": 2534, + "parent_index": 48 + } + }, + { + "id": 207, + "license": "MIT", + "name": "IERC20Metadata", + "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "exported_symbols": [ + { + "id": 207, + "name": "IERC20Metadata", + "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol" + }, + { + "id": 49, + "name": "IERC20", + "absolute_path": "IERC20.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "211", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "2871", + "id": "212", + "length": "23", + "line": "84", + "parentIndex": "207", + "start": "2849" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IERC20.sol", + "file": "../IERC20.sol", + "id": "213", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "207", + "sourceUnit": "49", + "src": { + "end": "2896", + "length": "23", + "line": "86", + "parentIndex": "207", + "start": "2874" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "221", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "49", + "src": { + "column": "28", + "end": "3049", + "id": "222", + "length": "6", + "line": "93", + "parentIndex": "218", + "start": "3044" + } + }, + "id": "219", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "28", + "end": "3049", + "id": "220", + "length": "6", + "line": "93", + "parentIndex": "218", + "start": "3044" + } + } + ], + "contractDependencies": [ + "49", + "213" + ], + "fullyImplemented": true, + "id": "218", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "49", + "218", + "213" + ], + "name": "IERC20Metadata", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "238", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "3169", + "id": "225", + "length": "54", + "line": "97", + "parentIndex": "224", + "start": "3116" + } + }, + "id": "224", + "kind": "KIND_FUNCTION", + "name": "name", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "226", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "228", + "nodeType": "VARIABLE_DECLARATION", + "scope": "228", + "src": { + "column": "43", + "end": "3167", + "id": "229", + "length": "13", + "line": "97", + "parentIndex": "226", + "start": "3155" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "230", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "43", + "end": "3160", + "id": "231", + "length": "6", + "line": "97", + "parentIndex": "228", + "start": "3155" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "43", + "end": "3167", + "id": "227", + "length": "13", + "line": "97", + "parentIndex": "224", + "start": "3155" + } + }, + "returnParameters": { + "id": "232", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "234", + "nodeType": "VARIABLE_DECLARATION", + "scope": "234", + "src": { + "column": "43", + "end": "3167", + "id": "235", + "length": "13", + "line": "97", + "parentIndex": "232", + "start": "3155" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "236", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "43", + "end": "3160", + "id": "237", + "length": "6", + "line": "97", + "parentIndex": "234", + "start": "3155" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "43", + "end": "3167", + "id": "233", + "length": "13", + "line": "97", + "parentIndex": "224", + "start": "3155" + } + }, + "scope": "218", + "src": { + "column": "4", + "end": "3169", + "id": "225", + "length": "54", + "line": "97", + "parentIndex": "218", + "start": "3116" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_string$", + "typeString": "function(string)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "254", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "3292", + "id": "241", + "length": "56", + "line": "102", + "parentIndex": "240", + "start": "3237" + } + }, + "id": "240", + "kind": "KIND_FUNCTION", + "name": "symbol", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "242", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "244", + "nodeType": "VARIABLE_DECLARATION", + "scope": "244", + "src": { + "column": "45", + "end": "3290", + "id": "245", + "length": "13", + "line": "102", + "parentIndex": "242", + "start": "3278" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "246", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "45", + "end": "3283", + "id": "247", + "length": "6", + "line": "102", + "parentIndex": "244", + "start": "3278" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "45", + "end": "3290", + "id": "243", + "length": "13", + "line": "102", + "parentIndex": "240", + "start": "3278" + } + }, + "returnParameters": { + "id": "248", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "250", + "nodeType": "VARIABLE_DECLARATION", + "scope": "250", + "src": { + "column": "45", + "end": "3290", + "id": "251", + "length": "13", + "line": "102", + "parentIndex": "248", + "start": "3278" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "252", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "45", + "end": "3283", + "id": "253", + "length": "6", + "line": "102", + "parentIndex": "250", + "start": "3278" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "45", + "end": "3290", + "id": "249", + "length": "13", + "line": "102", + "parentIndex": "240", + "start": "3278" + } + }, + "scope": "218", + "src": { + "column": "4", + "end": "3292", + "id": "241", + "length": "56", + "line": "102", + "parentIndex": "218", + "start": "3237" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_string$", + "typeString": "function(string)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "270", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "3418", + "id": "257", + "length": "50", + "line": "107", + "parentIndex": "256", + "start": "3369" + } + }, + "id": "256", + "kind": "KIND_FUNCTION", + "name": "decimals", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "258", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "260", + "nodeType": "VARIABLE_DECLARATION", + "scope": "260", + "src": { + "column": "47", + "end": "3416", + "id": "261", + "length": "5", + "line": "107", + "parentIndex": "258", + "start": "3412" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "262", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "3416", + "id": "263", + "length": "5", + "line": "107", + "parentIndex": "260", + "start": "3412" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "47", + "end": "3416", + "id": "259", + "length": "5", + "line": "107", + "parentIndex": "256", + "start": "3412" + } + }, + "returnParameters": { + "id": "264", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "266", + "nodeType": "VARIABLE_DECLARATION", + "scope": "266", + "src": { + "column": "47", + "end": "3416", + "id": "267", + "length": "5", + "line": "107", + "parentIndex": "264", + "start": "3412" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "268", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "3416", + "id": "269", + "length": "5", + "line": "107", + "parentIndex": "266", + "start": "3412" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "47", + "end": "3416", + "id": "265", + "length": "5", + "line": "107", + "parentIndex": "256", + "start": "3412" + } + }, + "scope": "218", + "src": { + "column": "4", + "end": "3418", + "id": "257", + "length": "50", + "line": "107", + "parentIndex": "218", + "start": "3369" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint8$", + "typeString": "function(uint8)" + }, + "visibility": "EXTERNAL" + } + } + ], + "src": { + "end": "3420", + "length": "405", + "line": "93", + "parentIndex": "207", + "start": "3016" + } + } + } + ] + }, + "src": { + "id": 208, + "line": 93, + "start": 3016, + "end": 3420, + "length": 405, + "parent_index": 48 + } + }, + { + "id": 271, + "license": "MIT", + "name": "Context", + "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/utils/Context.sol", + "exported_symbols": [ + { + "id": 271, + "name": "Context", + "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/utils/Context.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "277", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "3532", + "id": "278", + "length": "23", + "line": "114", + "parentIndex": "271", + "start": "3510" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "280", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "280" + ], + "name": "Context", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "296", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "66", + "end": "4159", + "id": "297", + "length": "34", + "line": "127", + "parentIndex": "282", + "start": "4126" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "302", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "4145", + "id": "303", + "length": "3", + "line": "128", + "parentIndex": "300", + "start": "4143" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "300", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "4152", + "id": "301", + "length": "10", + "line": "128", + "parentIndex": "296", + "start": "4143" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "functionReturnParameters": "282", + "id": "298", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "4153", + "id": "299", + "length": "18", + "line": "128", + "parentIndex": "282", + "start": "4136" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ] + }, + "id": "282", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_msgSender", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "284", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "286", + "nodeType": "VARIABLE_DECLARATION", + "scope": "286", + "src": { + "column": "57", + "end": "4123", + "id": "287", + "length": "7", + "line": "127", + "parentIndex": "284", + "start": "4117" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "288", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "57", + "end": "4123", + "id": "289", + "length": "7", + "line": "127", + "parentIndex": "286", + "start": "4117" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "57", + "end": "4123", + "id": "285", + "length": "7", + "line": "127", + "parentIndex": "282", + "start": "4117" + } + }, + "returnParameters": { + "id": "290", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "292", + "nodeType": "VARIABLE_DECLARATION", + "scope": "292", + "src": { + "column": "57", + "end": "4123", + "id": "293", + "length": "7", + "line": "127", + "parentIndex": "290", + "start": "4117" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "294", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "57", + "end": "4123", + "id": "295", + "length": "7", + "line": "127", + "parentIndex": "292", + "start": "4117" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "57", + "end": "4123", + "id": "291", + "length": "7", + "line": "127", + "parentIndex": "282", + "start": "4117" + } + }, + "scope": "280", + "src": { + "column": "4", + "end": "4159", + "id": "283", + "length": "96", + "line": "127", + "parentIndex": "280", + "start": "4064" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "319", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "71", + "end": "4264", + "id": "320", + "length": "32", + "line": "131", + "parentIndex": "305", + "start": "4233" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "325", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "4252", + "id": "326", + "length": "3", + "line": "132", + "parentIndex": "323", + "start": "4250" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "323", + "memberName": "data", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "4257", + "id": "324", + "length": "8", + "line": "132", + "parentIndex": "319", + "start": "4250" + }, + "typeDescription": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + }, + "functionReturnParameters": "305", + "id": "321", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "4258", + "id": "322", + "length": "16", + "line": "132", + "parentIndex": "305", + "start": "4243" + }, + "typeDescription": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + } + ] + }, + "id": "305", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_msgData", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "307", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "309", + "nodeType": "VARIABLE_DECLARATION", + "scope": "309", + "src": { + "column": "55", + "end": "4230", + "id": "310", + "length": "14", + "line": "131", + "parentIndex": "307", + "start": "4217" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "311", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "55", + "end": "4221", + "id": "312", + "length": "5", + "line": "131", + "parentIndex": "309", + "start": "4217" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "55", + "end": "4230", + "id": "308", + "length": "14", + "line": "131", + "parentIndex": "305", + "start": "4217" + } + }, + "returnParameters": { + "id": "313", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "315", + "nodeType": "VARIABLE_DECLARATION", + "scope": "315", + "src": { + "column": "55", + "end": "4230", + "id": "316", + "length": "14", + "line": "131", + "parentIndex": "313", + "start": "4217" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "317", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "55", + "end": "4221", + "id": "318", + "length": "5", + "line": "131", + "parentIndex": "315", + "start": "4217" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "55", + "end": "4230", + "id": "314", + "length": "14", + "line": "131", + "parentIndex": "305", + "start": "4217" + } + }, + "scope": "280", + "src": { + "column": "4", + "end": "4264", + "id": "306", + "length": "99", + "line": "131", + "parentIndex": "280", + "start": "4166" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "4266", + "length": "235", + "line": "126", + "parentIndex": "271", + "start": "4032" + } + } + } + ] + }, + "src": { + "id": 272, + "line": 126, + "start": 4032, + "end": 4266, + "length": 235, + "parent_index": 48 + } + }, + { + "id": 327, + "license": "MIT", + "name": "ERC20", + "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/ERC20.sol", + "exported_symbols": [ + { + "id": 327, + "name": "ERC20", + "absolute_path": "/home/cortex/github/txpull/solgo/sources/openzeppelin/contracts/token/ERC20/ERC20.sol" + }, + { + "id": 342, + "name": "Context" + }, + { + "id": 346, + "name": "IERC20" + }, + { + "id": 350, + "name": "IERC20Metadata" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "335", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "4397", + "id": "336", + "length": "23", + "line": "140", + "parentIndex": "327", + "start": "4375" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "344", + "name": "Context", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "271", + "src": { + "column": "18", + "end": "5826", + "id": "345", + "length": "7", + "line": "174", + "parentIndex": "341", + "start": "5820" + } + }, + "id": "342", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "18", + "end": "5826", + "id": "343", + "length": "7", + "line": "174", + "parentIndex": "341", + "start": "5820" + } + }, + { + "baseName": { + "id": "348", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "49", + "src": { + "column": "27", + "end": "5834", + "id": "349", + "length": "6", + "line": "174", + "parentIndex": "341", + "start": "5829" + } + }, + "id": "346", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "27", + "end": "5834", + "id": "347", + "length": "6", + "line": "174", + "parentIndex": "341", + "start": "5829" + } + }, + { + "baseName": { + "id": "352", + "name": "IERC20Metadata", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "207", + "src": { + "column": "35", + "end": "5850", + "id": "353", + "length": "14", + "line": "174", + "parentIndex": "341", + "start": "5837" + } + }, + "id": "350", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "35", + "end": "5850", + "id": "351", + "length": "14", + "line": "174", + "parentIndex": "341", + "start": "5837" + } + } + ], + "contractDependencies": [ + "271", + "49", + "207" + ], + "fullyImplemented": true, + "id": "341", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "271", + "49", + "207", + "341" + ], + "name": "ERC20", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "355", + "isStateVariable": true, + "name": "_balances", + "nodeType": "VARIABLE_DECLARATION", + "scope": "341", + "src": { + "column": "4", + "end": "5903", + "id": "356", + "length": "46", + "line": "175", + "parentIndex": "341", + "start": "5858" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + "typeName": { + "id": "357", + "keyType": { + "id": "359", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "5872", + "id": "360", + "length": "7", + "line": "175", + "parentIndex": "357", + "start": "5866" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": { + "column": "4", + "end": "5884", + "id": "358", + "length": "27", + "line": "175", + "parentIndex": "355", + "start": "5858" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + "valueType": { + "id": "361", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "5883", + "id": "362", + "length": "7", + "line": "175", + "parentIndex": "357", + "start": "5877" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "364", + "isStateVariable": true, + "name": "_allowances", + "nodeType": "VARIABLE_DECLARATION", + "scope": "341", + "src": { + "column": "4", + "end": "5977", + "id": "365", + "length": "68", + "line": "177", + "parentIndex": "341", + "start": "5910" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003emapping(address=\u003euint256))" + }, + "typeName": { + "id": "366", + "keyType": { + "id": "368", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "5924", + "id": "369", + "length": "7", + "line": "177", + "parentIndex": "366", + "start": "5918" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": { + "column": "4", + "end": "5956", + "id": "367", + "length": "47", + "line": "177", + "parentIndex": "364", + "start": "5910" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003emapping(address=\u003euint256))" + }, + "valueType": { + "id": "370", + "keyType": { + "id": "373", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "5943", + "id": "374", + "length": "7", + "line": "177", + "parentIndex": "366", + "start": "5937" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "name": "mapping(address=\u003euint256)", + "nodeType": "MAPPING_TYPE_NAME", + "src": { + "column": "23", + "end": "5955", + "id": "371", + "length": "27", + "line": "177", + "parentIndex": "366", + "start": "5929" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256", + "typeString": "mapping(address=\u003euint256)" + }, + "valueType": { + "id": "375", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "42", + "end": "5954", + "id": "376", + "length": "7", + "line": "177", + "parentIndex": "366", + "start": "5948" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "378", + "isStateVariable": true, + "name": "_totalSupply", + "nodeType": "VARIABLE_DECLARATION", + "scope": "341", + "src": { + "column": "4", + "end": "6012", + "id": "379", + "length": "29", + "line": "179", + "parentIndex": "341", + "start": "5984" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "380", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "5990", + "id": "381", + "length": "7", + "line": "179", + "parentIndex": "378", + "start": "5984" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "383", + "isStateVariable": true, + "name": "_name", + "nodeType": "VARIABLE_DECLARATION", + "scope": "341", + "src": { + "column": "4", + "end": "6039", + "id": "384", + "length": "21", + "line": "181", + "parentIndex": "341", + "start": "6019" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "385", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "6024", + "id": "386", + "length": "6", + "line": "181", + "parentIndex": "383", + "start": "6019" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "388", + "isStateVariable": true, + "name": "_symbol", + "nodeType": "VARIABLE_DECLARATION", + "scope": "341", + "src": { + "column": "4", + "end": "6067", + "id": "389", + "length": "23", + "line": "182", + "parentIndex": "341", + "start": "6045" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "390", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "6050", + "id": "391", + "length": "6", + "line": "182", + "parentIndex": "388", + "start": "6045" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "406", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "60", + "end": "6362", + "id": "407", + "length": "57", + "line": "190", + "parentIndex": "393", + "start": "6306" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "410", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "412", + "name": "_name", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "383", + "src": { + "column": "8", + "end": "6320", + "id": "413", + "length": "5", + "line": "191", + "parentIndex": "410", + "start": "6316" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "414", + "name": "name_", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "414", + "src": { + "column": "16", + "end": "6328", + "id": "415", + "length": "5", + "line": "191", + "parentIndex": "410", + "start": "6324" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + "src": { + "column": "8", + "end": "6328", + "id": "411", + "length": "13", + "line": "191", + "parentIndex": "406", + "start": "6316" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + "id": "408", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "6329", + "id": "409", + "length": "14", + "line": "191", + "parentIndex": "406", + "start": "6316" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "418", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "420", + "name": "_symbol", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "388", + "src": { + "column": "8", + "end": "6345", + "id": "421", + "length": "7", + "line": "192", + "parentIndex": "418", + "start": "6339" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "422", + "name": "symbol_", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "422", + "src": { + "column": "18", + "end": "6355", + "id": "423", + "length": "7", + "line": "192", + "parentIndex": "418", + "start": "6349" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + "src": { + "column": "8", + "end": "6355", + "id": "419", + "length": "17", + "line": "192", + "parentIndex": "406", + "start": "6339" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + "id": "416", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "6356", + "id": "417", + "length": "18", + "line": "192", + "parentIndex": "406", + "start": "6339" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ] + }, + "id": "393", + "implemented": true, + "kind": "CONSTRUCTOR", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "395", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "397", + "name": "name_", + "nodeType": "VARIABLE_DECLARATION", + "scope": "397", + "src": { + "column": "16", + "end": "6280", + "id": "398", + "length": "19", + "line": "190", + "parentIndex": "395", + "start": "6262" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "399", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "6267", + "id": "400", + "length": "6", + "line": "190", + "parentIndex": "397", + "start": "6262" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "401", + "name": "symbol_", + "nodeType": "VARIABLE_DECLARATION", + "scope": "401", + "src": { + "column": "37", + "end": "6303", + "id": "402", + "length": "21", + "line": "190", + "parentIndex": "395", + "start": "6283" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "403", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "37", + "end": "6288", + "id": "404", + "length": "6", + "line": "190", + "parentIndex": "401", + "start": "6283" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "16", + "end": "6303", + "id": "396", + "length": "42", + "line": "190", + "parentIndex": "393", + "start": "6262" + } + }, + "returnParameters": { + "id": "405", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "6362", + "id": "394", + "length": "113", + "line": "190", + "parentIndex": "393", + "start": "6250" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "6362", + "id": "394", + "length": "113", + "line": "190", + "parentIndex": "341", + "start": "6250" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "$_t_constructor", + "typeString": "constructor" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "441", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "73", + "end": "6525", + "id": "442", + "length": "29", + "line": "198", + "parentIndex": "425", + "start": "6497" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "445", + "name": "_name", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "383", + "src": { + "column": "15", + "end": "6518", + "id": "446", + "length": "5", + "line": "199", + "parentIndex": "441", + "start": "6514" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + "functionReturnParameters": "425", + "id": "443", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "6519", + "id": "444", + "length": "13", + "line": "199", + "parentIndex": "425", + "start": "6507" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ] + }, + "id": "425", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "name", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "427", + "name": "name", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "224", + "src": { + "column": "40", + "end": "6471", + "id": "428", + "length": "8", + "line": "198", + "parentIndex": "425", + "start": "6464" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_string$", + "typeString": "function(string)" + } + } + ], + "parameters": { + "id": "429", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "431", + "nodeType": "VARIABLE_DECLARATION", + "scope": "431", + "src": { + "column": "58", + "end": "6494", + "id": "432", + "length": "13", + "line": "198", + "parentIndex": "429", + "start": "6482" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "433", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "58", + "end": "6487", + "id": "434", + "length": "6", + "line": "198", + "parentIndex": "431", + "start": "6482" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "58", + "end": "6494", + "id": "430", + "length": "13", + "line": "198", + "parentIndex": "425", + "start": "6482" + } + }, + "returnParameters": { + "id": "435", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "437", + "nodeType": "VARIABLE_DECLARATION", + "scope": "437", + "src": { + "column": "58", + "end": "6494", + "id": "438", + "length": "13", + "line": "198", + "parentIndex": "435", + "start": "6482" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "439", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "58", + "end": "6487", + "id": "440", + "length": "6", + "line": "198", + "parentIndex": "437", + "start": "6482" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "58", + "end": "6494", + "id": "436", + "length": "13", + "line": "198", + "parentIndex": "425", + "start": "6482" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "6525", + "id": "426", + "length": "98", + "line": "198", + "parentIndex": "341", + "start": "6428" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_string$", + "typeString": "function(string)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "464", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "75", + "end": "6740", + "id": "465", + "length": "31", + "line": "206", + "parentIndex": "448", + "start": "6710" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "468", + "name": "_symbol", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "388", + "src": { + "column": "15", + "end": "6733", + "id": "469", + "length": "7", + "line": "207", + "parentIndex": "464", + "start": "6727" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + }, + "functionReturnParameters": "448", + "id": "466", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "6734", + "id": "467", + "length": "15", + "line": "207", + "parentIndex": "448", + "start": "6720" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ] + }, + "id": "448", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "symbol", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "450", + "name": "symbol", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "240", + "src": { + "column": "42", + "end": "6684", + "id": "451", + "length": "8", + "line": "206", + "parentIndex": "448", + "start": "6677" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_string$", + "typeString": "function(string)" + } + } + ], + "parameters": { + "id": "452", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "454", + "nodeType": "VARIABLE_DECLARATION", + "scope": "454", + "src": { + "column": "60", + "end": "6707", + "id": "455", + "length": "13", + "line": "206", + "parentIndex": "452", + "start": "6695" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "456", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "60", + "end": "6700", + "id": "457", + "length": "6", + "line": "206", + "parentIndex": "454", + "start": "6695" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "60", + "end": "6707", + "id": "453", + "length": "13", + "line": "206", + "parentIndex": "448", + "start": "6695" + } + }, + "returnParameters": { + "id": "458", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "460", + "nodeType": "VARIABLE_DECLARATION", + "scope": "460", + "src": { + "column": "60", + "end": "6707", + "id": "461", + "length": "13", + "line": "206", + "parentIndex": "458", + "start": "6695" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "462", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "60", + "end": "6700", + "id": "463", + "length": "6", + "line": "206", + "parentIndex": "460", + "start": "6695" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "60", + "end": "6707", + "id": "459", + "length": "13", + "line": "206", + "parentIndex": "448", + "start": "6695" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "6740", + "id": "449", + "length": "102", + "line": "206", + "parentIndex": "341", + "start": "6639" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_string$", + "typeString": "function(string)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "487", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "69", + "end": "7464", + "id": "488", + "length": "26", + "line": "223", + "parentIndex": "471", + "start": "7439" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "3138", + "id": "491", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "15", + "end": "7457", + "id": "492", + "length": "2", + "line": "224", + "parentIndex": "487", + "start": "7456" + }, + "typeDescription": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + } + }, + "functionReturnParameters": "471", + "id": "489", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "7458", + "id": "490", + "length": "10", + "line": "224", + "parentIndex": "471", + "start": "7449" + }, + "typeDescription": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + } + } + } + ] + }, + "id": "471", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "decimals", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "473", + "name": "decimals", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "256", + "src": { + "column": "44", + "end": "7421", + "id": "474", + "length": "8", + "line": "223", + "parentIndex": "471", + "start": "7414" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint8$", + "typeString": "function(uint8)" + } + } + ], + "parameters": { + "id": "475", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "477", + "nodeType": "VARIABLE_DECLARATION", + "scope": "477", + "src": { + "column": "62", + "end": "7436", + "id": "478", + "length": "5", + "line": "223", + "parentIndex": "475", + "start": "7432" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "479", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "7436", + "id": "480", + "length": "5", + "line": "223", + "parentIndex": "477", + "start": "7432" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "7436", + "id": "476", + "length": "5", + "line": "223", + "parentIndex": "471", + "start": "7432" + } + }, + "returnParameters": { + "id": "481", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "483", + "nodeType": "VARIABLE_DECLARATION", + "scope": "483", + "src": { + "column": "62", + "end": "7436", + "id": "484", + "length": "5", + "line": "223", + "parentIndex": "481", + "start": "7432" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "485", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "7436", + "id": "486", + "length": "5", + "line": "223", + "parentIndex": "483", + "start": "7432" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "7436", + "id": "482", + "length": "5", + "line": "223", + "parentIndex": "471", + "start": "7432" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "7464", + "id": "472", + "length": "91", + "line": "223", + "parentIndex": "341", + "start": "7374" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint8$", + "typeString": "function(uint8)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "510", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "74", + "end": "7630", + "id": "511", + "length": "36", + "line": "230", + "parentIndex": "494", + "start": "7595" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "514", + "name": "_totalSupply", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "378", + "src": { + "column": "15", + "end": "7623", + "id": "515", + "length": "12", + "line": "231", + "parentIndex": "510", + "start": "7612" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "494", + "id": "512", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "7624", + "id": "513", + "length": "20", + "line": "231", + "parentIndex": "494", + "start": "7605" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "494", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "totalSupply", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "496", + "name": "totalSupply", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "92", + "src": { + "column": "47", + "end": "7575", + "id": "497", + "length": "8", + "line": "230", + "parentIndex": "494", + "start": "7568" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + } + } + ], + "parameters": { + "id": "498", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "500", + "nodeType": "VARIABLE_DECLARATION", + "scope": "500", + "src": { + "column": "65", + "end": "7592", + "id": "501", + "length": "7", + "line": "230", + "parentIndex": "498", + "start": "7586" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "502", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "65", + "end": "7592", + "id": "503", + "length": "7", + "line": "230", + "parentIndex": "500", + "start": "7586" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "7592", + "id": "499", + "length": "7", + "line": "230", + "parentIndex": "494", + "start": "7586" + } + }, + "returnParameters": { + "id": "504", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "506", + "nodeType": "VARIABLE_DECLARATION", + "scope": "506", + "src": { + "column": "65", + "end": "7592", + "id": "507", + "length": "7", + "line": "230", + "parentIndex": "504", + "start": "7586" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "508", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "65", + "end": "7592", + "id": "509", + "length": "7", + "line": "230", + "parentIndex": "506", + "start": "7586" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "7592", + "id": "505", + "length": "7", + "line": "230", + "parentIndex": "494", + "start": "7586" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "7630", + "id": "495", + "length": "106", + "line": "230", + "parentIndex": "341", + "start": "7525" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "533", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "87", + "end": "7813", + "id": "534", + "length": "42", + "line": "237", + "parentIndex": "517", + "start": "7772" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "541", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "541", + "src": { + "column": "25", + "end": "7805", + "id": "542", + "length": "7", + "line": "238", + "parentIndex": "537", + "start": "7799" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "537", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "539", + "name": "_balances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "355", + "src": { + "column": "15", + "end": "7797", + "id": "540", + "length": "9", + "line": "238", + "parentIndex": "537", + "start": "7789" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "15", + "end": "7806", + "id": "538", + "length": "18", + "line": "238", + "parentIndex": "533", + "start": "7789" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "functionReturnParameters": "517", + "id": "535", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "7807", + "id": "536", + "length": "26", + "line": "238", + "parentIndex": "517", + "start": "7782" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + } + ] + }, + "id": "517", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "balanceOf", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "519", + "name": "balanceOf", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "108", + "src": { + "column": "60", + "end": "7752", + "id": "520", + "length": "8", + "line": "237", + "parentIndex": "517", + "start": "7745" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + ], + "parameters": { + "id": "521", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "523", + "name": "account", + "nodeType": "VARIABLE_DECLARATION", + "scope": "523", + "src": { + "column": "23", + "end": "7722", + "id": "524", + "length": "15", + "line": "237", + "parentIndex": "521", + "start": "7708" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "525", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "7714", + "id": "526", + "length": "7", + "line": "237", + "parentIndex": "523", + "start": "7708" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "7722", + "id": "522", + "length": "15", + "line": "237", + "parentIndex": "517", + "start": "7708" + } + }, + "returnParameters": { + "id": "527", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "529", + "nodeType": "VARIABLE_DECLARATION", + "scope": "529", + "src": { + "column": "78", + "end": "7769", + "id": "530", + "length": "7", + "line": "237", + "parentIndex": "527", + "start": "7763" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "531", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "78", + "end": "7769", + "id": "532", + "length": "7", + "line": "237", + "parentIndex": "529", + "start": "7763" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "78", + "end": "7769", + "id": "528", + "length": "7", + "line": "237", + "parentIndex": "517", + "start": "7763" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "7813", + "id": "518", + "length": "125", + "line": "237", + "parentIndex": "341", + "start": "7689" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "564", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "89", + "end": "8198", + "id": "565", + "length": "104", + "line": "249", + "parentIndex": "544", + "start": "8095" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "568" + ], + "declarations": [ + { + "id": "568", + "mutability": "MUTABLE", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "564", + "src": { + "column": "8", + "end": "8117", + "id": "569", + "length": "13", + "line": "250", + "parentIndex": "566", + "start": "8105" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "570", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "8111", + "id": "571", + "length": "7", + "line": "250", + "parentIndex": "568", + "start": "8105" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "566", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "574", + "name": "_msgSender", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "8130", + "id": "575", + "length": "10", + "line": "250", + "parentIndex": "572", + "start": "8121" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "572", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "8132", + "id": "573", + "length": "12", + "line": "250", + "parentIndex": "566", + "start": "8121" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "8133", + "id": "567", + "length": "29", + "line": "250", + "parentIndex": "564", + "start": "8105" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "580", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "566", + "src": { + "column": "18", + "end": "8157", + "id": "581", + "length": "5", + "line": "251", + "parentIndex": "576", + "start": "8153" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "582", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "582", + "src": { + "column": "25", + "end": "8161", + "id": "583", + "length": "2", + "line": "251", + "parentIndex": "576", + "start": "8160" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "584", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "584", + "src": { + "column": "29", + "end": "8169", + "id": "585", + "length": "6", + "line": "251", + "parentIndex": "576", + "start": "8164" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "578", + "name": "_transfer", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "8151", + "id": "579", + "length": "9", + "line": "251", + "parentIndex": "576", + "start": "8143" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "576", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "8170", + "id": "577", + "length": "28", + "line": "251", + "parentIndex": "564", + "start": "8143" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "588", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "15", + "end": "8191", + "id": "589", + "length": "4", + "line": "252", + "parentIndex": "564", + "start": "8188" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + "functionReturnParameters": "544", + "id": "586", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "8192", + "id": "587", + "length": "12", + "line": "252", + "parentIndex": "544", + "start": "8181" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ] + }, + "id": "544", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "transfer", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "546", + "name": "transfer", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "124", + "src": { + "column": "65", + "end": "8078", + "id": "547", + "length": "8", + "line": "249", + "parentIndex": "544", + "start": "8071" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + } + } + ], + "parameters": { + "id": "548", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "550", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "550", + "src": { + "column": "22", + "end": "8037", + "id": "551", + "length": "10", + "line": "249", + "parentIndex": "548", + "start": "8028" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "552", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "8034", + "id": "553", + "length": "7", + "line": "249", + "parentIndex": "550", + "start": "8028" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "554", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "554", + "src": { + "column": "34", + "end": "8053", + "id": "555", + "length": "14", + "line": "249", + "parentIndex": "548", + "start": "8040" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "556", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "34", + "end": "8046", + "id": "557", + "length": "7", + "line": "249", + "parentIndex": "554", + "start": "8040" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "22", + "end": "8053", + "id": "549", + "length": "26", + "line": "249", + "parentIndex": "544", + "start": "8028" + } + }, + "returnParameters": { + "id": "558", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "560", + "nodeType": "VARIABLE_DECLARATION", + "scope": "560", + "src": { + "column": "83", + "end": "8092", + "id": "561", + "length": "4", + "line": "249", + "parentIndex": "558", + "start": "8089" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "562", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "83", + "end": "8092", + "id": "563", + "length": "4", + "line": "249", + "parentIndex": "560", + "start": "8089" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "83", + "end": "8092", + "id": "559", + "length": "4", + "line": "249", + "parentIndex": "544", + "start": "8089" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "8198", + "id": "545", + "length": "189", + "line": "249", + "parentIndex": "341", + "start": "8010" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "611", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "102", + "end": "8405", + "id": "612", + "length": "51", + "line": "258", + "parentIndex": "591", + "start": "8355" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "623", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "623", + "src": { + "column": "34", + "end": "8397", + "id": "624", + "length": "7", + "line": "259", + "parentIndex": "615", + "start": "8391" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "615", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "621", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "621", + "src": { + "column": "27", + "end": "8388", + "id": "622", + "length": "5", + "line": "259", + "parentIndex": "617", + "start": "8384" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "617", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "619", + "name": "_allowances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "364", + "src": { + "column": "15", + "end": "8382", + "id": "620", + "length": "11", + "line": "259", + "parentIndex": "617", + "start": "8372" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003emapping(address=\u003euint256))" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "15", + "end": "8389", + "id": "618", + "length": "18", + "line": "259", + "parentIndex": "615", + "start": "8372" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003emapping(address=\u003euint256)):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003emapping(address=\u003euint256))" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "15", + "end": "8398", + "id": "616", + "length": "27", + "line": "259", + "parentIndex": "611", + "start": "8372" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$", + "typeString": "index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003emapping(address=\u003euint256)):address]" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "functionReturnParameters": "591", + "id": "613", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "8399", + "id": "614", + "length": "35", + "line": "259", + "parentIndex": "591", + "start": "8365" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$", + "typeString": "index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]" + } + } + } + ] + }, + "id": "591", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "allowance", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "593", + "name": "allowance", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "144", + "src": { + "column": "75", + "end": "8335", + "id": "594", + "length": "8", + "line": "258", + "parentIndex": "591", + "start": "8328" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + } + } + ], + "parameters": { + "id": "595", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "597", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "597", + "src": { + "column": "23", + "end": "8288", + "id": "598", + "length": "13", + "line": "258", + "parentIndex": "595", + "start": "8276" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "599", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "8282", + "id": "600", + "length": "7", + "line": "258", + "parentIndex": "597", + "start": "8276" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "601", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "601", + "src": { + "column": "38", + "end": "8305", + "id": "602", + "length": "15", + "line": "258", + "parentIndex": "595", + "start": "8291" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "603", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "38", + "end": "8297", + "id": "604", + "length": "7", + "line": "258", + "parentIndex": "601", + "start": "8291" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "8305", + "id": "596", + "length": "30", + "line": "258", + "parentIndex": "591", + "start": "8276" + } + }, + "returnParameters": { + "id": "605", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "607", + "nodeType": "VARIABLE_DECLARATION", + "scope": "607", + "src": { + "column": "93", + "end": "8352", + "id": "608", + "length": "7", + "line": "258", + "parentIndex": "605", + "start": "8346" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "609", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "93", + "end": "8352", + "id": "610", + "length": "7", + "line": "258", + "parentIndex": "607", + "start": "8346" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "93", + "end": "8352", + "id": "606", + "length": "7", + "line": "258", + "parentIndex": "591", + "start": "8346" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "8405", + "id": "592", + "length": "149", + "line": "258", + "parentIndex": "341", + "start": "8257" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "646", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "93", + "end": "8910", + "id": "647", + "length": "108", + "line": "272", + "parentIndex": "626", + "start": "8803" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "650" + ], + "declarations": [ + { + "id": "650", + "mutability": "MUTABLE", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "646", + "src": { + "column": "8", + "end": "8825", + "id": "651", + "length": "13", + "line": "273", + "parentIndex": "648", + "start": "8813" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "652", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "8819", + "id": "653", + "length": "7", + "line": "273", + "parentIndex": "650", + "start": "8813" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "648", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "656", + "name": "_msgSender", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "8838", + "id": "657", + "length": "10", + "line": "273", + "parentIndex": "654", + "start": "8829" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "654", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "8840", + "id": "655", + "length": "12", + "line": "273", + "parentIndex": "648", + "start": "8829" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "8841", + "id": "649", + "length": "29", + "line": "273", + "parentIndex": "646", + "start": "8813" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "662", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "648", + "src": { + "column": "17", + "end": "8864", + "id": "663", + "length": "5", + "line": "274", + "parentIndex": "658", + "start": "8860" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "664", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "664", + "src": { + "column": "24", + "end": "8873", + "id": "665", + "length": "7", + "line": "274", + "parentIndex": "658", + "start": "8867" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "666", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "666", + "src": { + "column": "33", + "end": "8881", + "id": "667", + "length": "6", + "line": "274", + "parentIndex": "658", + "start": "8876" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "660", + "name": "_approve", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "8858", + "id": "661", + "length": "8", + "line": "274", + "parentIndex": "658", + "start": "8851" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "658", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "8882", + "id": "659", + "length": "32", + "line": "274", + "parentIndex": "646", + "start": "8851" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "670", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "15", + "end": "8903", + "id": "671", + "length": "4", + "line": "275", + "parentIndex": "646", + "start": "8900" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + "functionReturnParameters": "626", + "id": "668", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "8904", + "id": "669", + "length": "12", + "line": "275", + "parentIndex": "626", + "start": "8893" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ] + }, + "id": "626", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "approve", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "628", + "name": "approve", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "164", + "src": { + "column": "69", + "end": "8786", + "id": "629", + "length": "8", + "line": "272", + "parentIndex": "626", + "start": "8779" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + } + } + ], + "parameters": { + "id": "630", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "632", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "632", + "src": { + "column": "21", + "end": "8745", + "id": "633", + "length": "15", + "line": "272", + "parentIndex": "630", + "start": "8731" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "634", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "21", + "end": "8737", + "id": "635", + "length": "7", + "line": "272", + "parentIndex": "632", + "start": "8731" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "636", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "636", + "src": { + "column": "38", + "end": "8761", + "id": "637", + "length": "14", + "line": "272", + "parentIndex": "630", + "start": "8748" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "638", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "38", + "end": "8754", + "id": "639", + "length": "7", + "line": "272", + "parentIndex": "636", + "start": "8748" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "21", + "end": "8761", + "id": "631", + "length": "31", + "line": "272", + "parentIndex": "626", + "start": "8731" + } + }, + "returnParameters": { + "id": "640", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "642", + "nodeType": "VARIABLE_DECLARATION", + "scope": "642", + "src": { + "column": "87", + "end": "8800", + "id": "643", + "length": "4", + "line": "272", + "parentIndex": "640", + "start": "8797" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "644", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "87", + "end": "8800", + "id": "645", + "length": "4", + "line": "272", + "parentIndex": "642", + "start": "8797" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "87", + "end": "8800", + "id": "641", + "length": "4", + "line": "272", + "parentIndex": "626", + "start": "8797" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "8910", + "id": "627", + "length": "197", + "line": "272", + "parentIndex": "341", + "start": "8714" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "697", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "107", + "end": "9728", + "id": "698", + "length": "153", + "line": "294", + "parentIndex": "673", + "start": "9576" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "701" + ], + "declarations": [ + { + "id": "701", + "mutability": "MUTABLE", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "697", + "src": { + "column": "8", + "end": "9600", + "id": "702", + "length": "15", + "line": "295", + "parentIndex": "699", + "start": "9586" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "703", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "9592", + "id": "704", + "length": "7", + "line": "295", + "parentIndex": "701", + "start": "9586" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "699", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "707", + "name": "_msgSender", + "nodeType": "IDENTIFIER", + "src": { + "column": "26", + "end": "9613", + "id": "708", + "length": "10", + "line": "295", + "parentIndex": "705", + "start": "9604" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "705", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "26", + "end": "9615", + "id": "706", + "length": "12", + "line": "295", + "parentIndex": "699", + "start": "9604" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "9616", + "id": "700", + "length": "31", + "line": "295", + "parentIndex": "697", + "start": "9586" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "713", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "713", + "src": { + "column": "24", + "end": "9645", + "id": "714", + "length": "4", + "line": "296", + "parentIndex": "709", + "start": "9642" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "715", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "699", + "src": { + "column": "30", + "end": "9654", + "id": "716", + "length": "7", + "line": "296", + "parentIndex": "709", + "start": "9648" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "717", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "717", + "src": { + "column": "39", + "end": "9662", + "id": "718", + "length": "6", + "line": "296", + "parentIndex": "709", + "start": "9657" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "711", + "name": "_spendAllowance", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "9640", + "id": "712", + "length": "15", + "line": "296", + "parentIndex": "709", + "start": "9626" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "709", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "9663", + "id": "710", + "length": "38", + "line": "296", + "parentIndex": "697", + "start": "9626" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "723", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "723", + "src": { + "column": "18", + "end": "9687", + "id": "724", + "length": "4", + "line": "297", + "parentIndex": "719", + "start": "9684" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "725", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "725", + "src": { + "column": "24", + "end": "9691", + "id": "726", + "length": "2", + "line": "297", + "parentIndex": "719", + "start": "9690" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "727", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "727", + "src": { + "column": "28", + "end": "9699", + "id": "728", + "length": "6", + "line": "297", + "parentIndex": "719", + "start": "9694" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "721", + "name": "_transfer", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "9682", + "id": "722", + "length": "9", + "line": "297", + "parentIndex": "719", + "start": "9674" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "719", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "9700", + "id": "720", + "length": "27", + "line": "297", + "parentIndex": "697", + "start": "9674" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "731", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "15", + "end": "9721", + "id": "732", + "length": "4", + "line": "298", + "parentIndex": "697", + "start": "9718" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + "functionReturnParameters": "673", + "id": "729", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "9722", + "id": "730", + "length": "12", + "line": "298", + "parentIndex": "673", + "start": "9711" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ] + }, + "id": "673", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "transferFrom", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "675", + "name": "transferFrom", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "184", + "src": { + "column": "83", + "end": "9559", + "id": "676", + "length": "8", + "line": "294", + "parentIndex": "673", + "start": "9552" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + ], + "parameters": { + "id": "677", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "679", + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "679", + "src": { + "column": "26", + "end": "9506", + "id": "680", + "length": "12", + "line": "294", + "parentIndex": "677", + "start": "9495" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "681", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "26", + "end": "9501", + "id": "682", + "length": "7", + "line": "294", + "parentIndex": "679", + "start": "9495" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "683", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "683", + "src": { + "column": "40", + "end": "9518", + "id": "684", + "length": "10", + "line": "294", + "parentIndex": "677", + "start": "9509" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "685", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "40", + "end": "9515", + "id": "686", + "length": "7", + "line": "294", + "parentIndex": "683", + "start": "9509" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "687", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "687", + "src": { + "column": "52", + "end": "9534", + "id": "688", + "length": "14", + "line": "294", + "parentIndex": "677", + "start": "9521" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "689", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "52", + "end": "9527", + "id": "690", + "length": "7", + "line": "294", + "parentIndex": "687", + "start": "9521" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "26", + "end": "9534", + "id": "678", + "length": "40", + "line": "294", + "parentIndex": "673", + "start": "9495" + } + }, + "returnParameters": { + "id": "691", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "693", + "nodeType": "VARIABLE_DECLARATION", + "scope": "693", + "src": { + "column": "101", + "end": "9573", + "id": "694", + "length": "4", + "line": "294", + "parentIndex": "691", + "start": "9570" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "695", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "101", + "end": "9573", + "id": "696", + "length": "4", + "line": "294", + "parentIndex": "693", + "start": "9570" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "101", + "end": "9573", + "id": "692", + "length": "4", + "line": "294", + "parentIndex": "673", + "start": "9570" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "9728", + "id": "674", + "length": "256", + "line": "294", + "parentIndex": "341", + "start": "9473" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "752", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "98", + "end": "10357", + "id": "753", + "length": "140", + "line": "313", + "parentIndex": "734", + "start": "10218" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "756" + ], + "declarations": [ + { + "id": "756", + "mutability": "MUTABLE", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "752", + "src": { + "column": "8", + "end": "10240", + "id": "757", + "length": "13", + "line": "314", + "parentIndex": "754", + "start": "10228" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "758", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "10234", + "id": "759", + "length": "7", + "line": "314", + "parentIndex": "756", + "start": "10228" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "754", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "762", + "name": "_msgSender", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "10253", + "id": "763", + "length": "10", + "line": "314", + "parentIndex": "760", + "start": "10244" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "760", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "10255", + "id": "761", + "length": "12", + "line": "314", + "parentIndex": "754", + "start": "10244" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "10256", + "id": "755", + "length": "29", + "line": "314", + "parentIndex": "752", + "start": "10228" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "768", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "754", + "src": { + "column": "17", + "end": "10279", + "id": "769", + "length": "5", + "line": "315", + "parentIndex": "764", + "start": "10275" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "770", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "770", + "src": { + "column": "24", + "end": "10288", + "id": "771", + "length": "7", + "line": "315", + "parentIndex": "764", + "start": "10282" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "772", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "778", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "754", + "src": { + "column": "43", + "end": "10305", + "id": "779", + "length": "5", + "line": "315", + "parentIndex": "774", + "start": "10301" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "780", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "780", + "src": { + "column": "50", + "end": "10314", + "id": "781", + "length": "7", + "line": "315", + "parentIndex": "774", + "start": "10308" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "776", + "name": "allowance", + "nodeType": "IDENTIFIER", + "src": { + "column": "33", + "end": "10299", + "id": "777", + "length": "9", + "line": "315", + "parentIndex": "774", + "start": "10291" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "774", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "33", + "end": "10315", + "id": "775", + "length": "25", + "line": "315", + "parentIndex": "772", + "start": "10291" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "ADDITION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "782", + "name": "addedValue", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "782", + "src": { + "column": "61", + "end": "10328", + "id": "783", + "length": "10", + "line": "315", + "parentIndex": "772", + "start": "10319" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "33", + "end": "10328", + "id": "773", + "length": "38", + "line": "315", + "parentIndex": "764", + "start": "10291" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "766", + "name": "_approve", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "10273", + "id": "767", + "length": "8", + "line": "315", + "parentIndex": "764", + "start": "10266" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "764", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "10329", + "id": "765", + "length": "64", + "line": "315", + "parentIndex": "752", + "start": "10266" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_function_$_t_address$_t_address$", + "typeString": "function(address,address,function(address,address))" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "786", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "15", + "end": "10350", + "id": "787", + "length": "4", + "line": "316", + "parentIndex": "752", + "start": "10347" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + "functionReturnParameters": "734", + "id": "784", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "10351", + "id": "785", + "length": "12", + "line": "316", + "parentIndex": "734", + "start": "10340" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ] + }, + "id": "734", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "increaseAllowance", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "736", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "738", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "738", + "src": { + "column": "31", + "end": "10165", + "id": "739", + "length": "15", + "line": "313", + "parentIndex": "736", + "start": "10151" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "740", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "10157", + "id": "741", + "length": "7", + "line": "313", + "parentIndex": "738", + "start": "10151" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "742", + "name": "addedValue", + "nodeType": "VARIABLE_DECLARATION", + "scope": "742", + "src": { + "column": "48", + "end": "10185", + "id": "743", + "length": "18", + "line": "313", + "parentIndex": "736", + "start": "10168" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "744", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "48", + "end": "10174", + "id": "745", + "length": "7", + "line": "313", + "parentIndex": "742", + "start": "10168" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "31", + "end": "10185", + "id": "737", + "length": "35", + "line": "313", + "parentIndex": "734", + "start": "10151" + } + }, + "returnParameters": { + "id": "746", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "748", + "nodeType": "VARIABLE_DECLARATION", + "scope": "748", + "src": { + "column": "92", + "end": "10215", + "id": "749", + "length": "4", + "line": "313", + "parentIndex": "746", + "start": "10212" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "750", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "92", + "end": "10215", + "id": "751", + "length": "4", + "line": "313", + "parentIndex": "748", + "start": "10212" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "92", + "end": "10215", + "id": "747", + "length": "4", + "line": "313", + "parentIndex": "734", + "start": "10212" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "10357", + "id": "735", + "length": "234", + "line": "313", + "parentIndex": "341", + "start": "10124" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "807", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "103", + "end": "11271", + "id": "808", + "length": "328", + "line": "333", + "parentIndex": "789", + "start": "10944" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "811" + ], + "declarations": [ + { + "id": "811", + "mutability": "MUTABLE", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "807", + "src": { + "column": "8", + "end": "10966", + "id": "812", + "length": "13", + "line": "334", + "parentIndex": "809", + "start": "10954" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "813", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "10960", + "id": "814", + "length": "7", + "line": "334", + "parentIndex": "811", + "start": "10954" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "809", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "817", + "name": "_msgSender", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "10979", + "id": "818", + "length": "10", + "line": "334", + "parentIndex": "815", + "start": "10970" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "815", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "10981", + "id": "816", + "length": "12", + "line": "334", + "parentIndex": "809", + "start": "10970" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "10982", + "id": "810", + "length": "29", + "line": "334", + "parentIndex": "807", + "start": "10954" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "821" + ], + "declarations": [ + { + "id": "821", + "mutability": "MUTABLE", + "name": "currentAllowance", + "nodeType": "VARIABLE_DECLARATION", + "scope": "807", + "src": { + "column": "8", + "end": "11015", + "id": "822", + "length": "24", + "line": "335", + "parentIndex": "819", + "start": "10992" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "823", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "10998", + "id": "824", + "length": "7", + "line": "335", + "parentIndex": "821", + "start": "10992" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "819", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "829", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "809", + "src": { + "column": "45", + "end": "11033", + "id": "830", + "length": "5", + "line": "335", + "parentIndex": "825", + "start": "11029" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "831", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "831", + "src": { + "column": "52", + "end": "11042", + "id": "832", + "length": "7", + "line": "335", + "parentIndex": "825", + "start": "11036" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "827", + "name": "allowance", + "nodeType": "IDENTIFIER", + "src": { + "column": "35", + "end": "11027", + "id": "828", + "length": "9", + "line": "335", + "parentIndex": "825", + "start": "11019" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "825", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "35", + "end": "11043", + "id": "826", + "length": "25", + "line": "335", + "parentIndex": "819", + "start": "11019" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "11044", + "id": "820", + "length": "53", + "line": "335", + "parentIndex": "807", + "start": "10992" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "837", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "839", + "name": "currentAllowance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "819", + "src": { + "column": "16", + "end": "11077", + "id": "840", + "length": "16", + "line": "336", + "parentIndex": "837", + "start": "11062" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "841", + "name": "subtractedValue", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "841", + "src": { + "column": "36", + "end": "11096", + "id": "842", + "length": "15", + "line": "336", + "parentIndex": "837", + "start": "11082" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "11096", + "id": "838", + "length": "35", + "line": "336", + "parentIndex": "833", + "start": "11062" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "id": "843", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "53", + "end": "11137", + "id": "844", + "length": "39", + "line": "336", + "parentIndex": "833", + "start": "11099" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + }, + "value": "ERC20: decreased allowance below zero" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "835", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "11060", + "id": "836", + "length": "7", + "line": "336", + "parentIndex": "833", + "start": "11054" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "833", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "11138", + "id": "834", + "length": "85", + "line": "336", + "parentIndex": "807", + "start": "11054" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "847", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "15", + "end": "11264", + "id": "848", + "length": "4", + "line": "341", + "parentIndex": "807", + "start": "11261" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + "functionReturnParameters": "789", + "id": "845", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "11265", + "id": "846", + "length": "12", + "line": "341", + "parentIndex": "789", + "start": "11254" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "849", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "11243", + "id": "850", + "length": "95", + "line": "337", + "parentIndex": "341", + "start": "11149" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "855", + "name": "owner", + "nodeType": "IDENTIFIER", + "src": { + "column": "21", + "end": "11186", + "id": "856", + "length": "5", + "line": "338", + "parentIndex": "851", + "start": "11182" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "id": "857", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "857", + "src": { + "column": "28", + "end": "11195", + "id": "858", + "length": "7", + "line": "338", + "parentIndex": "851", + "start": "11189" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "859", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "861", + "name": "currentAllowance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "819", + "src": { + "column": "37", + "end": "11213", + "id": "862", + "length": "16", + "line": "338", + "parentIndex": "859", + "start": "11198" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "863", + "name": "subtractedValue", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "863", + "src": { + "column": "56", + "end": "11231", + "id": "864", + "length": "15", + "line": "338", + "parentIndex": "859", + "start": "11217" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "37", + "end": "11231", + "id": "860", + "length": "34", + "line": "338", + "parentIndex": "851", + "start": "11198" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "853", + "name": "_approve", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "11180", + "id": "854", + "length": "8", + "line": "338", + "parentIndex": "851", + "start": "11173" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "851", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "11232", + "id": "852", + "length": "60", + "line": "338", + "parentIndex": "849", + "start": "11173" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_uint256$", + "typeString": "function(function(),address,uint256)" + } + } + } + ] + } + } + ] + }, + "id": "789", + "kind": "KIND_FUNCTION", + "name": "decreaseAllowance", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "791", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "793", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "793", + "src": { + "column": "31", + "end": "10886", + "id": "794", + "length": "15", + "line": "333", + "parentIndex": "791", + "start": "10872" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "795", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "10878", + "id": "796", + "length": "7", + "line": "333", + "parentIndex": "793", + "start": "10872" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "797", + "name": "subtractedValue", + "nodeType": "VARIABLE_DECLARATION", + "scope": "797", + "src": { + "column": "48", + "end": "10911", + "id": "798", + "length": "23", + "line": "333", + "parentIndex": "791", + "start": "10889" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "799", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "48", + "end": "10895", + "id": "800", + "length": "7", + "line": "333", + "parentIndex": "797", + "start": "10889" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "31", + "end": "10911", + "id": "792", + "length": "40", + "line": "333", + "parentIndex": "789", + "start": "10872" + } + }, + "returnParameters": { + "id": "801", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "803", + "nodeType": "VARIABLE_DECLARATION", + "scope": "803", + "src": { + "column": "97", + "end": "10941", + "id": "804", + "length": "4", + "line": "333", + "parentIndex": "801", + "start": "10938" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "805", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "97", + "end": "10941", + "id": "806", + "length": "4", + "line": "333", + "parentIndex": "803", + "start": "10938" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "97", + "end": "10941", + "id": "802", + "length": "4", + "line": "333", + "parentIndex": "789", + "start": "10938" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "11271", + "id": "790", + "length": "427", + "line": "333", + "parentIndex": "341", + "start": "10845" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "883", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "82", + "end": "12513", + "id": "884", + "length": "710", + "line": "358", + "parentIndex": "866", + "start": "11804" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "889", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "891", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "891", + "src": { + "column": "16", + "end": "11825", + "id": "892", + "length": "4", + "line": "359", + "parentIndex": "889", + "start": "11822" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "899", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "32", + "end": "11838", + "id": "900", + "length": "1", + "line": "359", + "parentIndex": "893", + "start": "11838" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "895", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "11836", + "id": "896", + "length": "7", + "line": "359", + "parentIndex": "893", + "start": "11830" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "897", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "11836", + "id": "898", + "length": "7", + "line": "359", + "parentIndex": "895", + "start": "11830" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "893", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "11839", + "id": "894", + "length": "10", + "line": "359", + "parentIndex": "889", + "start": "11830" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "16", + "end": "11839", + "id": "890", + "length": "18", + "line": "359", + "parentIndex": "885", + "start": "11822" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", + "id": "901", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "11880", + "id": "902", + "length": "39", + "line": "359", + "parentIndex": "885", + "start": "11842" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + }, + "value": "ERC20: transfer from the zero address" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "887", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "11820", + "id": "888", + "length": "7", + "line": "359", + "parentIndex": "885", + "start": "11814" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "885", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "11881", + "id": "886", + "length": "68", + "line": "359", + "parentIndex": "883", + "start": "11814" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "907", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "909", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "909", + "src": { + "column": "16", + "end": "11901", + "id": "910", + "length": "2", + "line": "360", + "parentIndex": "907", + "start": "11900" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "917", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "30", + "end": "11914", + "id": "918", + "length": "1", + "line": "360", + "parentIndex": "911", + "start": "11914" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "913", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "22", + "end": "11912", + "id": "914", + "length": "7", + "line": "360", + "parentIndex": "911", + "start": "11906" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "915", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "11912", + "id": "916", + "length": "7", + "line": "360", + "parentIndex": "913", + "start": "11906" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "911", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "22", + "end": "11915", + "id": "912", + "length": "10", + "line": "360", + "parentIndex": "907", + "start": "11906" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "16", + "end": "11915", + "id": "908", + "length": "16", + "line": "360", + "parentIndex": "903", + "start": "11900" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": "919", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "34", + "end": "11954", + "id": "920", + "length": "37", + "line": "360", + "parentIndex": "903", + "start": "11918" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + }, + "value": "ERC20: transfer to the zero address" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "905", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "11898", + "id": "906", + "length": "7", + "line": "360", + "parentIndex": "903", + "start": "11892" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "903", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "11955", + "id": "904", + "length": "64", + "line": "360", + "parentIndex": "883", + "start": "11892" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "925", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "925", + "src": { + "column": "29", + "end": "11991", + "id": "926", + "length": "4", + "line": "362", + "parentIndex": "921", + "start": "11988" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "927", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "927", + "src": { + "column": "35", + "end": "11995", + "id": "928", + "length": "2", + "line": "362", + "parentIndex": "921", + "start": "11994" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "929", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "929", + "src": { + "column": "39", + "end": "12003", + "id": "930", + "length": "6", + "line": "362", + "parentIndex": "921", + "start": "11998" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "923", + "name": "_beforeTokenTransfer", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "11986", + "id": "924", + "length": "20", + "line": "362", + "parentIndex": "921", + "start": "11967" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "921", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "12004", + "id": "922", + "length": "38", + "line": "362", + "parentIndex": "883", + "start": "11967" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "933" + ], + "declarations": [ + { + "id": "933", + "mutability": "MUTABLE", + "name": "fromBalance", + "nodeType": "VARIABLE_DECLARATION", + "scope": "883", + "src": { + "column": "8", + "end": "12034", + "id": "934", + "length": "19", + "line": "364", + "parentIndex": "931", + "start": "12016" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "935", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "12022", + "id": "936", + "length": "7", + "line": "364", + "parentIndex": "933", + "start": "12016" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "931", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "941", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "941", + "src": { + "column": "40", + "end": "12051", + "id": "942", + "length": "4", + "line": "364", + "parentIndex": "937", + "start": "12048" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "937", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "939", + "name": "_balances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "355", + "src": { + "column": "30", + "end": "12046", + "id": "940", + "length": "9", + "line": "364", + "parentIndex": "937", + "start": "12038" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "30", + "end": "12052", + "id": "938", + "length": "15", + "line": "364", + "parentIndex": "931", + "start": "12038" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "12053", + "id": "932", + "length": "38", + "line": "364", + "parentIndex": "883", + "start": "12016" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "947", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "949", + "name": "fromBalance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "931", + "src": { + "column": "16", + "end": "12081", + "id": "950", + "length": "11", + "line": "365", + "parentIndex": "947", + "start": "12071" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "951", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "951", + "src": { + "column": "31", + "end": "12091", + "id": "952", + "length": "6", + "line": "365", + "parentIndex": "947", + "start": "12086" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "12091", + "id": "948", + "length": "21", + "line": "365", + "parentIndex": "943", + "start": "12071" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", + "id": "953", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "39", + "end": "12133", + "id": "954", + "length": "40", + "line": "365", + "parentIndex": "943", + "start": "12094" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + }, + "value": "ERC20: transfer amount exceeds balance" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "945", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "12069", + "id": "946", + "length": "7", + "line": "365", + "parentIndex": "943", + "start": "12063" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "943", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "12134", + "id": "944", + "length": "72", + "line": "365", + "parentIndex": "883", + "start": "12063" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "957", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "957", + "src": { + "column": "22", + "end": "12445", + "id": "958", + "length": "4", + "line": "373", + "parentIndex": "883", + "start": "12442" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "959", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "959", + "src": { + "column": "28", + "end": "12449", + "id": "960", + "length": "2", + "line": "373", + "parentIndex": "883", + "start": "12448" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "961", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "961", + "src": { + "column": "32", + "end": "12457", + "id": "962", + "length": "6", + "line": "373", + "parentIndex": "883", + "start": "12452" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "963", + "name": "Transfer", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "60", + "src": { + "column": "13", + "end": "12440", + "id": "964", + "length": "8", + "line": "373", + "parentIndex": "883", + "start": "12433" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u002660", + "typeString": "event IERC20.Transfer" + } + } + }, + "id": "955", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "12459", + "id": "956", + "length": "32", + "line": "373", + "parentIndex": "866", + "start": "12428" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "969", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "969", + "src": { + "column": "28", + "end": "12493", + "id": "970", + "length": "4", + "line": "375", + "parentIndex": "965", + "start": "12490" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "971", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "971", + "src": { + "column": "34", + "end": "12497", + "id": "972", + "length": "2", + "line": "375", + "parentIndex": "965", + "start": "12496" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "973", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "973", + "src": { + "column": "38", + "end": "12505", + "id": "974", + "length": "6", + "line": "375", + "parentIndex": "965", + "start": "12500" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "967", + "name": "_afterTokenTransfer", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "12488", + "id": "968", + "length": "19", + "line": "375", + "parentIndex": "965", + "start": "12470" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "965", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "12506", + "id": "966", + "length": "37", + "line": "375", + "parentIndex": "883", + "start": "12470" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "975", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "12417", + "id": "976", + "length": "273", + "line": "366", + "parentIndex": "341", + "start": "12145" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "979", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "985", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "985", + "src": { + "column": "22", + "end": "12182", + "id": "986", + "length": "4", + "line": "367", + "parentIndex": "981", + "start": "12179" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "981", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "983", + "name": "_balances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "355", + "src": { + "column": "12", + "end": "12177", + "id": "984", + "length": "9", + "line": "367", + "parentIndex": "981", + "start": "12169" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "12", + "end": "12183", + "id": "982", + "length": "15", + "line": "367", + "parentIndex": "979", + "start": "12169" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "987", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "989", + "name": "fromBalance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "931", + "src": { + "column": "30", + "end": "12197", + "id": "990", + "length": "11", + "line": "367", + "parentIndex": "987", + "start": "12187" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "991", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "991", + "src": { + "column": "44", + "end": "12206", + "id": "992", + "length": "6", + "line": "367", + "parentIndex": "987", + "start": "12201" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "30", + "end": "12206", + "id": "988", + "length": "20", + "line": "367", + "parentIndex": "979", + "start": "12187" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "12", + "end": "12206", + "id": "980", + "length": "38", + "line": "367", + "parentIndex": "975", + "start": "12169" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + }, + "id": "977", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "12207", + "id": "978", + "length": "39", + "line": "367", + "parentIndex": "975", + "start": "12169" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "995", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1001", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1001", + "src": { + "column": "22", + "end": "12395", + "id": "1002", + "length": "2", + "line": "370", + "parentIndex": "997", + "start": "12394" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "997", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "999", + "name": "_balances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "355", + "src": { + "column": "12", + "end": "12392", + "id": "1000", + "length": "9", + "line": "370", + "parentIndex": "997", + "start": "12384" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "12", + "end": "12396", + "id": "998", + "length": "13", + "line": "370", + "parentIndex": "995", + "start": "12384" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "ASSIGNMENT", + "operator": "PLUS_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1003", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1003", + "src": { + "column": "29", + "end": "12406", + "id": "1004", + "length": "6", + "line": "370", + "parentIndex": "995", + "start": "12401" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "12", + "end": "12406", + "id": "996", + "length": "23", + "line": "370", + "parentIndex": "975", + "start": "12384" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + }, + "id": "993", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "12407", + "id": "994", + "length": "24", + "line": "370", + "parentIndex": "975", + "start": "12384" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + } + ] + } + } + ] + }, + "id": "866", + "kind": "KIND_FUNCTION", + "name": "_transfer", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "868", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "870", + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "870", + "src": { + "column": "23", + "end": "11756", + "id": "871", + "length": "12", + "line": "358", + "parentIndex": "868", + "start": "11745" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "872", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "11751", + "id": "873", + "length": "7", + "line": "358", + "parentIndex": "870", + "start": "11745" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "874", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "874", + "src": { + "column": "37", + "end": "11768", + "id": "875", + "length": "10", + "line": "358", + "parentIndex": "868", + "start": "11759" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "876", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "37", + "end": "11765", + "id": "877", + "length": "7", + "line": "358", + "parentIndex": "874", + "start": "11759" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "878", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "878", + "src": { + "column": "49", + "end": "11784", + "id": "879", + "length": "14", + "line": "358", + "parentIndex": "868", + "start": "11771" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "880", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "49", + "end": "11777", + "id": "881", + "length": "7", + "line": "358", + "parentIndex": "878", + "start": "11771" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "11784", + "id": "869", + "length": "40", + "line": "358", + "parentIndex": "866", + "start": "11745" + } + }, + "returnParameters": { + "id": "882", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "12513", + "id": "867", + "length": "788", + "line": "358", + "parentIndex": "866", + "start": "11726" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "12513", + "id": "867", + "length": "788", + "line": "358", + "parentIndex": "341", + "start": "11726" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1019", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "69", + "end": "13324", + "id": "1020", + "length": "470", + "line": "387", + "parentIndex": "1006", + "start": "12855" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1025", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1027", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1027", + "src": { + "column": "16", + "end": "12879", + "id": "1028", + "length": "7", + "line": "388", + "parentIndex": "1025", + "start": "12873" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1035", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "35", + "end": "12892", + "id": "1036", + "length": "1", + "line": "388", + "parentIndex": "1029", + "start": "12892" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1031", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "27", + "end": "12890", + "id": "1032", + "length": "7", + "line": "388", + "parentIndex": "1029", + "start": "12884" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1033", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "27", + "end": "12890", + "id": "1034", + "length": "7", + "line": "388", + "parentIndex": "1031", + "start": "12884" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1029", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "27", + "end": "12893", + "id": "1030", + "length": "10", + "line": "388", + "parentIndex": "1025", + "start": "12884" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "16", + "end": "12893", + "id": "1026", + "length": "21", + "line": "388", + "parentIndex": "1021", + "start": "12873" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "id": "1037", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "39", + "end": "12928", + "id": "1038", + "length": "33", + "line": "388", + "parentIndex": "1021", + "start": "12896" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + }, + "value": "ERC20: mint to the zero address" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1023", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "12871", + "id": "1024", + "length": "7", + "line": "388", + "parentIndex": "1021", + "start": "12865" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1021", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "12929", + "id": "1022", + "length": "65", + "line": "388", + "parentIndex": "1019", + "start": "12865" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1049", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "37", + "end": "12970", + "id": "1050", + "length": "1", + "line": "390", + "parentIndex": "1043", + "start": "12970" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1045", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "29", + "end": "12968", + "id": "1046", + "length": "7", + "line": "390", + "parentIndex": "1043", + "start": "12962" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1047", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "12968", + "id": "1048", + "length": "7", + "line": "390", + "parentIndex": "1045", + "start": "12962" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1043", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "29", + "end": "12971", + "id": "1044", + "length": "10", + "line": "390", + "parentIndex": "1039", + "start": "12962" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + ], + "id": "1051", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1051", + "src": { + "column": "41", + "end": "12980", + "id": "1052", + "length": "7", + "line": "390", + "parentIndex": "1039", + "start": "12974" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1053", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1053", + "src": { + "column": "50", + "end": "12988", + "id": "1054", + "length": "6", + "line": "390", + "parentIndex": "1039", + "start": "12983" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1041", + "name": "_beforeTokenTransfer", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "12960", + "id": "1042", + "length": "20", + "line": "390", + "parentIndex": "1039", + "start": "12941" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1039", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "12989", + "id": "1040", + "length": "49", + "line": "390", + "parentIndex": "1019", + "start": "12941" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$_t_address$_t_uint256$", + "typeString": "function(function(int_const 0),address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1057", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1059", + "name": "_totalSupply", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "378", + "src": { + "column": "8", + "end": "13012", + "id": "1060", + "length": "12", + "line": "392", + "parentIndex": "1057", + "start": "13001" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "PLUS_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1061", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1061", + "src": { + "column": "24", + "end": "13022", + "id": "1062", + "length": "6", + "line": "392", + "parentIndex": "1057", + "start": "13017" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "8", + "end": "13022", + "id": "1058", + "length": "22", + "line": "392", + "parentIndex": "1019", + "start": "13001" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "1055", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "13023", + "id": "1056", + "length": "23", + "line": "392", + "parentIndex": "1019", + "start": "13001" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1071", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "30", + "end": "13239", + "id": "1072", + "length": "1", + "line": "397", + "parentIndex": "1065", + "start": "13239" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1067", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "22", + "end": "13237", + "id": "1068", + "length": "7", + "line": "397", + "parentIndex": "1065", + "start": "13231" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1069", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "13237", + "id": "1070", + "length": "7", + "line": "397", + "parentIndex": "1067", + "start": "13231" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1065", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "22", + "end": "13240", + "id": "1066", + "length": "10", + "line": "397", + "parentIndex": "1019", + "start": "13231" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1073", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1073", + "src": { + "column": "34", + "end": "13249", + "id": "1074", + "length": "7", + "line": "397", + "parentIndex": "1019", + "start": "13243" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1075", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1075", + "src": { + "column": "43", + "end": "13257", + "id": "1076", + "length": "6", + "line": "397", + "parentIndex": "1019", + "start": "13252" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1077", + "name": "Transfer", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "60", + "src": { + "column": "13", + "end": "13229", + "id": "1078", + "length": "8", + "line": "397", + "parentIndex": "1019", + "start": "13222" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u002660", + "typeString": "event IERC20.Transfer" + } + } + }, + "id": "1063", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "13259", + "id": "1064", + "length": "43", + "line": "397", + "parentIndex": "1006", + "start": "13217" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1089", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "13298", + "id": "1090", + "length": "1", + "line": "399", + "parentIndex": "1083", + "start": "13298" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1085", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "28", + "end": "13296", + "id": "1086", + "length": "7", + "line": "399", + "parentIndex": "1083", + "start": "13290" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1087", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "13296", + "id": "1088", + "length": "7", + "line": "399", + "parentIndex": "1085", + "start": "13290" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1083", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "28", + "end": "13299", + "id": "1084", + "length": "10", + "line": "399", + "parentIndex": "1079", + "start": "13290" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + ], + "id": "1091", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1091", + "src": { + "column": "40", + "end": "13308", + "id": "1092", + "length": "7", + "line": "399", + "parentIndex": "1079", + "start": "13302" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1093", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1093", + "src": { + "column": "49", + "end": "13316", + "id": "1094", + "length": "6", + "line": "399", + "parentIndex": "1079", + "start": "13311" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1081", + "name": "_afterTokenTransfer", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "13288", + "id": "1082", + "length": "19", + "line": "399", + "parentIndex": "1079", + "start": "13270" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1079", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "13317", + "id": "1080", + "length": "48", + "line": "399", + "parentIndex": "1019", + "start": "13270" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$_t_address$_t_uint256$", + "typeString": "function(function(int_const 0),address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "1095", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "13207", + "id": "1096", + "length": "175", + "line": "393", + "parentIndex": "341", + "start": "13033" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1099", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1105", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1105", + "src": { + "column": "22", + "end": "13185", + "id": "1106", + "length": "7", + "line": "395", + "parentIndex": "1101", + "start": "13179" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1101", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1103", + "name": "_balances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "355", + "src": { + "column": "12", + "end": "13177", + "id": "1104", + "length": "9", + "line": "395", + "parentIndex": "1101", + "start": "13169" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "12", + "end": "13186", + "id": "1102", + "length": "18", + "line": "395", + "parentIndex": "1099", + "start": "13169" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "ASSIGNMENT", + "operator": "PLUS_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1107", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1107", + "src": { + "column": "34", + "end": "13196", + "id": "1108", + "length": "6", + "line": "395", + "parentIndex": "1099", + "start": "13191" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "12", + "end": "13196", + "id": "1100", + "length": "28", + "line": "395", + "parentIndex": "1095", + "start": "13169" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + }, + "id": "1097", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "13197", + "id": "1098", + "length": "29", + "line": "395", + "parentIndex": "1095", + "start": "13169" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + } + ] + } + } + ] + }, + "id": "1006", + "kind": "KIND_FUNCTION", + "name": "_mint", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1008", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1010", + "name": "account", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1010", + "src": { + "column": "19", + "end": "12819", + "id": "1011", + "length": "15", + "line": "387", + "parentIndex": "1008", + "start": "12805" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1012", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "19", + "end": "12811", + "id": "1013", + "length": "7", + "line": "387", + "parentIndex": "1010", + "start": "12805" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1014", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1014", + "src": { + "column": "36", + "end": "12835", + "id": "1015", + "length": "14", + "line": "387", + "parentIndex": "1008", + "start": "12822" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1016", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "36", + "end": "12828", + "id": "1017", + "length": "7", + "line": "387", + "parentIndex": "1014", + "start": "12822" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "19", + "end": "12835", + "id": "1009", + "length": "31", + "line": "387", + "parentIndex": "1006", + "start": "12805" + } + }, + "returnParameters": { + "id": "1018", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "13324", + "id": "1007", + "length": "535", + "line": "387", + "parentIndex": "1006", + "start": "12790" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "13324", + "id": "1007", + "length": "535", + "line": "387", + "parentIndex": "341", + "start": "12790" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1123", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "69", + "end": "14303", + "id": "1124", + "length": "594", + "line": "413", + "parentIndex": "1110", + "start": "13710" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1129", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1131", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1131", + "src": { + "column": "16", + "end": "13734", + "id": "1132", + "length": "7", + "line": "414", + "parentIndex": "1129", + "start": "13728" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1139", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "35", + "end": "13747", + "id": "1140", + "length": "1", + "line": "414", + "parentIndex": "1133", + "start": "13747" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1135", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "27", + "end": "13745", + "id": "1136", + "length": "7", + "line": "414", + "parentIndex": "1133", + "start": "13739" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1137", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "27", + "end": "13745", + "id": "1138", + "length": "7", + "line": "414", + "parentIndex": "1135", + "start": "13739" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1133", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "27", + "end": "13748", + "id": "1134", + "length": "10", + "line": "414", + "parentIndex": "1129", + "start": "13739" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "16", + "end": "13748", + "id": "1130", + "length": "21", + "line": "414", + "parentIndex": "1125", + "start": "13728" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", + "id": "1141", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "39", + "end": "13785", + "id": "1142", + "length": "35", + "line": "414", + "parentIndex": "1125", + "start": "13751" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + }, + "value": "ERC20: burn from the zero address" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1127", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "13726", + "id": "1128", + "length": "7", + "line": "414", + "parentIndex": "1125", + "start": "13720" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1125", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "13786", + "id": "1126", + "length": "67", + "line": "414", + "parentIndex": "1123", + "start": "13720" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1147", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1147", + "src": { + "column": "29", + "end": "13825", + "id": "1148", + "length": "7", + "line": "416", + "parentIndex": "1143", + "start": "13819" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1155", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "46", + "end": "13836", + "id": "1156", + "length": "1", + "line": "416", + "parentIndex": "1149", + "start": "13836" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1151", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "38", + "end": "13834", + "id": "1152", + "length": "7", + "line": "416", + "parentIndex": "1149", + "start": "13828" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1153", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "38", + "end": "13834", + "id": "1154", + "length": "7", + "line": "416", + "parentIndex": "1151", + "start": "13828" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1149", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "38", + "end": "13837", + "id": "1150", + "length": "10", + "line": "416", + "parentIndex": "1143", + "start": "13828" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + ], + "id": "1157", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1157", + "src": { + "column": "50", + "end": "13845", + "id": "1158", + "length": "6", + "line": "416", + "parentIndex": "1143", + "start": "13840" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1145", + "name": "_beforeTokenTransfer", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "13817", + "id": "1146", + "length": "20", + "line": "416", + "parentIndex": "1143", + "start": "13798" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1143", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "13846", + "id": "1144", + "length": "49", + "line": "416", + "parentIndex": "1123", + "start": "13798" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_function_$_t_rational_0_by_1$_t_uint256$", + "typeString": "function(address,function(int_const 0),uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "1161" + ], + "declarations": [ + { + "id": "1161", + "mutability": "MUTABLE", + "name": "accountBalance", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1123", + "src": { + "column": "8", + "end": "13879", + "id": "1162", + "length": "22", + "line": "418", + "parentIndex": "1159", + "start": "13858" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1163", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "13864", + "id": "1164", + "length": "7", + "line": "418", + "parentIndex": "1161", + "start": "13858" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "1159", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1169", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1169", + "src": { + "column": "43", + "end": "13899", + "id": "1170", + "length": "7", + "line": "418", + "parentIndex": "1165", + "start": "13893" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1165", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1167", + "name": "_balances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "355", + "src": { + "column": "33", + "end": "13891", + "id": "1168", + "length": "9", + "line": "418", + "parentIndex": "1165", + "start": "13883" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "33", + "end": "13900", + "id": "1166", + "length": "18", + "line": "418", + "parentIndex": "1159", + "start": "13883" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "13901", + "id": "1160", + "length": "44", + "line": "418", + "parentIndex": "1123", + "start": "13858" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1175", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1177", + "name": "accountBalance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1159", + "src": { + "column": "16", + "end": "13932", + "id": "1178", + "length": "14", + "line": "419", + "parentIndex": "1175", + "start": "13919" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1179", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1179", + "src": { + "column": "34", + "end": "13942", + "id": "1180", + "length": "6", + "line": "419", + "parentIndex": "1175", + "start": "13937" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "13942", + "id": "1176", + "length": "24", + "line": "419", + "parentIndex": "1171", + "start": "13919" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", + "id": "1181", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "42", + "end": "13980", + "id": "1182", + "length": "36", + "line": "419", + "parentIndex": "1171", + "start": "13945" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + }, + "value": "ERC20: burn amount exceeds balance" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1173", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "13917", + "id": "1174", + "length": "7", + "line": "419", + "parentIndex": "1171", + "start": "13911" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1171", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "13981", + "id": "1172", + "length": "71", + "line": "419", + "parentIndex": "1123", + "start": "13911" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1185", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1185", + "src": { + "column": "22", + "end": "14216", + "id": "1186", + "length": "7", + "line": "426", + "parentIndex": "1123", + "start": "14210" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1193", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "39", + "end": "14227", + "id": "1194", + "length": "1", + "line": "426", + "parentIndex": "1187", + "start": "14227" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1189", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "31", + "end": "14225", + "id": "1190", + "length": "7", + "line": "426", + "parentIndex": "1187", + "start": "14219" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1191", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "14225", + "id": "1192", + "length": "7", + "line": "426", + "parentIndex": "1189", + "start": "14219" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1187", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "31", + "end": "14228", + "id": "1188", + "length": "10", + "line": "426", + "parentIndex": "1123", + "start": "14219" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1195", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1195", + "src": { + "column": "43", + "end": "14236", + "id": "1196", + "length": "6", + "line": "426", + "parentIndex": "1123", + "start": "14231" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1197", + "name": "Transfer", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "60", + "src": { + "column": "13", + "end": "14208", + "id": "1198", + "length": "8", + "line": "426", + "parentIndex": "1123", + "start": "14201" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u002660", + "typeString": "event IERC20.Transfer" + } + } + }, + "id": "1183", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "14238", + "id": "1184", + "length": "43", + "line": "426", + "parentIndex": "1110", + "start": "14196" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1203", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1203", + "src": { + "column": "28", + "end": "14275", + "id": "1204", + "length": "7", + "line": "428", + "parentIndex": "1199", + "start": "14269" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1211", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "45", + "end": "14286", + "id": "1212", + "length": "1", + "line": "428", + "parentIndex": "1205", + "start": "14286" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1207", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "37", + "end": "14284", + "id": "1208", + "length": "7", + "line": "428", + "parentIndex": "1205", + "start": "14278" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1209", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "37", + "end": "14284", + "id": "1210", + "length": "7", + "line": "428", + "parentIndex": "1207", + "start": "14278" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1205", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "37", + "end": "14287", + "id": "1206", + "length": "10", + "line": "428", + "parentIndex": "1199", + "start": "14278" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + ], + "id": "1213", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1213", + "src": { + "column": "49", + "end": "14295", + "id": "1214", + "length": "6", + "line": "428", + "parentIndex": "1199", + "start": "14290" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1201", + "name": "_afterTokenTransfer", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "14267", + "id": "1202", + "length": "19", + "line": "428", + "parentIndex": "1199", + "start": "14249" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1199", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "14296", + "id": "1200", + "length": "48", + "line": "428", + "parentIndex": "1123", + "start": "14249" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_function_$_t_rational_0_by_1$_t_uint256$", + "typeString": "function(address,function(int_const 0),uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "1215", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "14185", + "id": "1216", + "length": "194", + "line": "420", + "parentIndex": "341", + "start": "13992" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1219", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1225", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1225", + "src": { + "column": "22", + "end": "14032", + "id": "1226", + "length": "7", + "line": "421", + "parentIndex": "1221", + "start": "14026" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1221", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1223", + "name": "_balances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "355", + "src": { + "column": "12", + "end": "14024", + "id": "1224", + "length": "9", + "line": "421", + "parentIndex": "1221", + "start": "14016" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "12", + "end": "14033", + "id": "1222", + "length": "18", + "line": "421", + "parentIndex": "1219", + "start": "14016" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003euint256)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1227", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1229", + "name": "accountBalance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1159", + "src": { + "column": "33", + "end": "14050", + "id": "1230", + "length": "14", + "line": "421", + "parentIndex": "1227", + "start": "14037" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1231", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1231", + "src": { + "column": "50", + "end": "14059", + "id": "1232", + "length": "6", + "line": "421", + "parentIndex": "1227", + "start": "14054" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "33", + "end": "14059", + "id": "1228", + "length": "23", + "line": "421", + "parentIndex": "1219", + "start": "14037" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "12", + "end": "14059", + "id": "1220", + "length": "44", + "line": "421", + "parentIndex": "1215", + "start": "14016" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + }, + "id": "1217", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "14060", + "id": "1218", + "length": "45", + "line": "421", + "parentIndex": "1215", + "start": "14016" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003euint256):address]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1235", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1237", + "name": "_totalSupply", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "378", + "src": { + "column": "12", + "end": "14164", + "id": "1238", + "length": "12", + "line": "423", + "parentIndex": "1235", + "start": "14153" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "MINUS_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1239", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1239", + "src": { + "column": "28", + "end": "14174", + "id": "1240", + "length": "6", + "line": "423", + "parentIndex": "1235", + "start": "14169" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "12", + "end": "14174", + "id": "1236", + "length": "22", + "line": "423", + "parentIndex": "1215", + "start": "14153" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "1233", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "14175", + "id": "1234", + "length": "23", + "line": "423", + "parentIndex": "1215", + "start": "14153" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + } + } + ] + }, + "id": "1110", + "kind": "KIND_FUNCTION", + "name": "_burn", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1112", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1114", + "name": "account", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1114", + "src": { + "column": "19", + "end": "13674", + "id": "1115", + "length": "15", + "line": "413", + "parentIndex": "1112", + "start": "13660" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1116", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "19", + "end": "13666", + "id": "1117", + "length": "7", + "line": "413", + "parentIndex": "1114", + "start": "13660" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1118", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1118", + "src": { + "column": "36", + "end": "13690", + "id": "1119", + "length": "14", + "line": "413", + "parentIndex": "1112", + "start": "13677" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1120", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "36", + "end": "13683", + "id": "1121", + "length": "7", + "line": "413", + "parentIndex": "1118", + "start": "13677" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "19", + "end": "13690", + "id": "1113", + "length": "31", + "line": "413", + "parentIndex": "1110", + "start": "13660" + } + }, + "returnParameters": { + "id": "1122", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "14303", + "id": "1111", + "length": "659", + "line": "413", + "parentIndex": "1110", + "start": "13645" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "14303", + "id": "1111", + "length": "659", + "line": "413", + "parentIndex": "341", + "start": "13645" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1259", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "87", + "end": "15066", + "id": "1260", + "length": "257", + "line": "444", + "parentIndex": "1242", + "start": "14810" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1265", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1267", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1267", + "src": { + "column": "16", + "end": "14832", + "id": "1268", + "length": "5", + "line": "445", + "parentIndex": "1265", + "start": "14828" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1275", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "33", + "end": "14845", + "id": "1276", + "length": "1", + "line": "445", + "parentIndex": "1269", + "start": "14845" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1271", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "25", + "end": "14843", + "id": "1272", + "length": "7", + "line": "445", + "parentIndex": "1269", + "start": "14837" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1273", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "25", + "end": "14843", + "id": "1274", + "length": "7", + "line": "445", + "parentIndex": "1271", + "start": "14837" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1269", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "25", + "end": "14846", + "id": "1270", + "length": "10", + "line": "445", + "parentIndex": "1265", + "start": "14837" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "16", + "end": "14846", + "id": "1266", + "length": "19", + "line": "445", + "parentIndex": "1261", + "start": "14828" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", + "id": "1277", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "37", + "end": "14886", + "id": "1278", + "length": "38", + "line": "445", + "parentIndex": "1261", + "start": "14849" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + }, + "value": "ERC20: approve from the zero address" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1263", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "14826", + "id": "1264", + "length": "7", + "line": "445", + "parentIndex": "1261", + "start": "14820" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1261", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "14887", + "id": "1262", + "length": "68", + "line": "445", + "parentIndex": "1259", + "start": "14820" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1283", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1285", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1285", + "src": { + "column": "16", + "end": "14912", + "id": "1286", + "length": "7", + "line": "446", + "parentIndex": "1283", + "start": "14906" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1293", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "35", + "end": "14925", + "id": "1294", + "length": "1", + "line": "446", + "parentIndex": "1287", + "start": "14925" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1289", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "27", + "end": "14923", + "id": "1290", + "length": "7", + "line": "446", + "parentIndex": "1287", + "start": "14917" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1291", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "27", + "end": "14923", + "id": "1292", + "length": "7", + "line": "446", + "parentIndex": "1289", + "start": "14917" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1287", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "27", + "end": "14926", + "id": "1288", + "length": "10", + "line": "446", + "parentIndex": "1283", + "start": "14917" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "16", + "end": "14926", + "id": "1284", + "length": "21", + "line": "446", + "parentIndex": "1279", + "start": "14906" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", + "id": "1295", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "39", + "end": "14964", + "id": "1296", + "length": "36", + "line": "446", + "parentIndex": "1279", + "start": "14929" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + }, + "value": "ERC20: approve to the zero address" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1281", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "14904", + "id": "1282", + "length": "7", + "line": "446", + "parentIndex": "1279", + "start": "14898" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1279", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "14965", + "id": "1280", + "length": "68", + "line": "446", + "parentIndex": "1259", + "start": "14898" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1299", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1309", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1309", + "src": { + "column": "27", + "end": "15002", + "id": "1310", + "length": "7", + "line": "448", + "parentIndex": "1301", + "start": "14996" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1301", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1307", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1307", + "src": { + "column": "20", + "end": "14993", + "id": "1308", + "length": "5", + "line": "448", + "parentIndex": "1303", + "start": "14989" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1303", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1305", + "name": "_allowances", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "364", + "src": { + "column": "8", + "end": "14987", + "id": "1306", + "length": "11", + "line": "448", + "parentIndex": "1303", + "start": "14977" + }, + "typeDescription": { + "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003emapping(address=\u003euint256))" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "8", + "end": "14994", + "id": "1304", + "length": "18", + "line": "448", + "parentIndex": "1301", + "start": "14977" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003emapping(address=\u003euint256)):address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$", + "typeString": "mapping(address=\u003emapping(address=\u003euint256))" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "8", + "end": "15003", + "id": "1302", + "length": "27", + "line": "448", + "parentIndex": "1299", + "start": "14977" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$", + "typeString": "index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$", + "typeString": "index[mapping(address=\u003emapping(address=\u003euint256)):address]" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ] + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1311", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1311", + "src": { + "column": "38", + "end": "15012", + "id": "1312", + "length": "6", + "line": "448", + "parentIndex": "1299", + "start": "15007" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "8", + "end": "15012", + "id": "1300", + "length": "36", + "line": "448", + "parentIndex": "1259", + "start": "14977" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$", + "typeString": "index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]" + } + } + }, + "id": "1297", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "15013", + "id": "1298", + "length": "37", + "line": "448", + "parentIndex": "1259", + "start": "14977" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_[_[$_t_mapping_$t_address_$t_mapping_$t_address_$t_uint256$]$_t_address]$]$_t_address]$", + "typeString": "index[index[mapping(address=\u003emapping(address=\u003euint256)):address]:address]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1315", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1315", + "src": { + "column": "22", + "end": "15041", + "id": "1316", + "length": "5", + "line": "449", + "parentIndex": "1259", + "start": "15037" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1317", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1317", + "src": { + "column": "29", + "end": "15050", + "id": "1318", + "length": "7", + "line": "449", + "parentIndex": "1259", + "start": "15044" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1319", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1319", + "src": { + "column": "38", + "end": "15058", + "id": "1320", + "length": "6", + "line": "449", + "parentIndex": "1259", + "start": "15053" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1321", + "name": "Approval", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "76", + "src": { + "column": "13", + "end": "15035", + "id": "1322", + "length": "8", + "line": "449", + "parentIndex": "1259", + "start": "15028" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IERC20_Approval_\u002676", + "typeString": "event IERC20.Approval" + } + } + }, + "id": "1313", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "15060", + "id": "1314", + "length": "38", + "line": "449", + "parentIndex": "1242", + "start": "15023" + } + } + } + ] + }, + "id": "1242", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_approve", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1244", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1246", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1246", + "src": { + "column": "22", + "end": "14757", + "id": "1247", + "length": "13", + "line": "444", + "parentIndex": "1244", + "start": "14745" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1248", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "14751", + "id": "1249", + "length": "7", + "line": "444", + "parentIndex": "1246", + "start": "14745" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1250", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1250", + "src": { + "column": "37", + "end": "14774", + "id": "1251", + "length": "15", + "line": "444", + "parentIndex": "1244", + "start": "14760" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1252", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "37", + "end": "14766", + "id": "1253", + "length": "7", + "line": "444", + "parentIndex": "1250", + "start": "14760" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1254", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1254", + "src": { + "column": "54", + "end": "14790", + "id": "1255", + "length": "14", + "line": "444", + "parentIndex": "1244", + "start": "14777" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1256", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "54", + "end": "14783", + "id": "1257", + "length": "7", + "line": "444", + "parentIndex": "1254", + "start": "14777" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "22", + "end": "14790", + "id": "1245", + "length": "46", + "line": "444", + "parentIndex": "1242", + "start": "14745" + } + }, + "returnParameters": { + "id": "1258", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "15066", + "id": "1243", + "length": "340", + "line": "444", + "parentIndex": "1242", + "start": "14727" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "15066", + "id": "1243", + "length": "340", + "line": "444", + "parentIndex": "341", + "start": "14727" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1341", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "94", + "end": "15758", + "id": "1342", + "length": "321", + "line": "460", + "parentIndex": "1324", + "start": "15438" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "1345" + ], + "declarations": [ + { + "id": "1345", + "mutability": "MUTABLE", + "name": "currentAllowance", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1341", + "src": { + "column": "8", + "end": "15471", + "id": "1346", + "length": "24", + "line": "461", + "parentIndex": "1343", + "start": "15448" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1347", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "15454", + "id": "1348", + "length": "7", + "line": "461", + "parentIndex": "1345", + "start": "15448" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "1343", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1353", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1353", + "src": { + "column": "45", + "end": "15489", + "id": "1354", + "length": "5", + "line": "461", + "parentIndex": "1349", + "start": "15485" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1355", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1355", + "src": { + "column": "52", + "end": "15498", + "id": "1356", + "length": "7", + "line": "461", + "parentIndex": "1349", + "start": "15492" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1351", + "name": "allowance", + "nodeType": "IDENTIFIER", + "src": { + "column": "35", + "end": "15483", + "id": "1352", + "length": "9", + "line": "461", + "parentIndex": "1349", + "start": "15475" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1349", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "35", + "end": "15499", + "id": "1350", + "length": "25", + "line": "461", + "parentIndex": "1343", + "start": "15475" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "15500", + "id": "1344", + "length": "53", + "line": "461", + "parentIndex": "1341", + "start": "15448" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "1367", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "51", + "end": "15752", + "id": "1368", + "length": "200", + "line": "462", + "parentIndex": "1324", + "start": "15553" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: insufficient allowance\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1373", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1375", + "name": "currentAllowance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "819", + "src": { + "column": "20", + "end": "15590", + "id": "1376", + "length": "16", + "line": "463", + "parentIndex": "1373", + "start": "15575" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1377", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1377", + "src": { + "column": "40", + "end": "15600", + "id": "1378", + "length": "6", + "line": "463", + "parentIndex": "1373", + "start": "15595" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "20", + "end": "15600", + "id": "1374", + "length": "26", + "line": "463", + "parentIndex": "1369", + "start": "15575" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365", + "id": "1379", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "48", + "end": "15633", + "id": "1380", + "length": "31", + "line": "463", + "parentIndex": "1369", + "start": "15603" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC20: insufficient allowance\"" + }, + "value": "ERC20: insufficient allowance" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1371", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "15573", + "id": "1372", + "length": "7", + "line": "463", + "parentIndex": "1369", + "start": "15567" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1369", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "15634", + "id": "1370", + "length": "68", + "line": "463", + "parentIndex": "1367", + "start": "15567" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1359", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1361", + "name": "currentAllowance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1343", + "src": { + "column": "12", + "end": "15529", + "id": "1362", + "length": "16", + "line": "462", + "parentIndex": "1359", + "start": "15514" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MetaType", + "value": { + "id": "1365", + "name": "type", + "nodeType": "IDENTIFIER", + "src": { + "column": "32", + "end": "15546", + "id": "1366", + "length": "13", + "line": "462", + "parentIndex": "1363", + "start": "15534" + }, + "typeDescription": { + "typeString": "type" + } + } + }, + "id": "1363", + "memberName": "max", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "32", + "end": "15550", + "id": "1364", + "length": "17", + "line": "462", + "parentIndex": "1359", + "start": "15534" + }, + "typeDescription": { + "typeString": "type" + } + } + }, + "src": { + "column": "12", + "end": "15550", + "id": "1360", + "length": "37", + "line": "462", + "parentIndex": "1357", + "start": "15514" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "1357", + "nodeType": "IF_STATEMENT", + "src": { + "end": "15752", + "id": "1358", + "length": "243", + "line": "462", + "parentIndex": "1341", + "start": "15510" + } + } + } + ] + }, + "id": "1324", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_spendAllowance", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1326", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1328", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1328", + "src": { + "column": "29", + "end": "15385", + "id": "1329", + "length": "13", + "line": "460", + "parentIndex": "1326", + "start": "15373" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1330", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "15379", + "id": "1331", + "length": "7", + "line": "460", + "parentIndex": "1328", + "start": "15373" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1332", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1332", + "src": { + "column": "44", + "end": "15402", + "id": "1333", + "length": "15", + "line": "460", + "parentIndex": "1326", + "start": "15388" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1334", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "44", + "end": "15394", + "id": "1335", + "length": "7", + "line": "460", + "parentIndex": "1332", + "start": "15388" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1336", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1336", + "src": { + "column": "61", + "end": "15418", + "id": "1337", + "length": "14", + "line": "460", + "parentIndex": "1326", + "start": "15405" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1338", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "61", + "end": "15411", + "id": "1339", + "length": "7", + "line": "460", + "parentIndex": "1336", + "start": "15405" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "15418", + "id": "1327", + "length": "46", + "line": "460", + "parentIndex": "1324", + "start": "15373" + } + }, + "returnParameters": { + "id": "1340", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "15758", + "id": "1325", + "length": "411", + "line": "460", + "parentIndex": "1324", + "start": "15348" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "15758", + "id": "1325", + "length": "411", + "line": "460", + "parentIndex": "341", + "start": "15348" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1399", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "93", + "end": "16433", + "id": "1400", + "length": "2", + "line": "484", + "parentIndex": "1382", + "start": "16432" + } + }, + "id": "1382", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_beforeTokenTransfer", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1384", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1386", + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1386", + "src": { + "column": "34", + "end": "16384", + "id": "1387", + "length": "12", + "line": "484", + "parentIndex": "1384", + "start": "16373" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1388", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "34", + "end": "16379", + "id": "1389", + "length": "7", + "line": "484", + "parentIndex": "1386", + "start": "16373" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1390", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1390", + "src": { + "column": "48", + "end": "16396", + "id": "1391", + "length": "10", + "line": "484", + "parentIndex": "1384", + "start": "16387" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1392", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "48", + "end": "16393", + "id": "1393", + "length": "7", + "line": "484", + "parentIndex": "1390", + "start": "16387" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1394", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1394", + "src": { + "column": "60", + "end": "16412", + "id": "1395", + "length": "14", + "line": "484", + "parentIndex": "1384", + "start": "16399" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1396", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "60", + "end": "16405", + "id": "1397", + "length": "7", + "line": "484", + "parentIndex": "1394", + "start": "16399" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "34", + "end": "16412", + "id": "1385", + "length": "40", + "line": "484", + "parentIndex": "1382", + "start": "16373" + } + }, + "returnParameters": { + "id": "1398", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "16433", + "id": "1383", + "length": "91", + "line": "484", + "parentIndex": "1382", + "start": "16343" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "16433", + "id": "1383", + "length": "91", + "line": "484", + "parentIndex": "341", + "start": "16343" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1419", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "92", + "end": "17111", + "id": "1420", + "length": "2", + "line": "500", + "parentIndex": "1402", + "start": "17110" + } + }, + "id": "1402", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_afterTokenTransfer", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1404", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1406", + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1406", + "src": { + "column": "33", + "end": "17062", + "id": "1407", + "length": "12", + "line": "500", + "parentIndex": "1404", + "start": "17051" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1408", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "33", + "end": "17057", + "id": "1409", + "length": "7", + "line": "500", + "parentIndex": "1406", + "start": "17051" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1410", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1410", + "src": { + "column": "47", + "end": "17074", + "id": "1411", + "length": "10", + "line": "500", + "parentIndex": "1404", + "start": "17065" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1412", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "17071", + "id": "1413", + "length": "7", + "line": "500", + "parentIndex": "1410", + "start": "17065" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1414", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1414", + "src": { + "column": "59", + "end": "17090", + "id": "1415", + "length": "14", + "line": "500", + "parentIndex": "1404", + "start": "17077" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1416", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "59", + "end": "17083", + "id": "1417", + "length": "7", + "line": "500", + "parentIndex": "1414", + "start": "17077" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "33", + "end": "17090", + "id": "1405", + "length": "40", + "line": "500", + "parentIndex": "1402", + "start": "17051" + } + }, + "returnParameters": { + "id": "1418", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "17111", + "id": "1403", + "length": "90", + "line": "500", + "parentIndex": "1402", + "start": "17022" + } + }, + "scope": "341", + "src": { + "column": "4", + "end": "17111", + "id": "1403", + "length": "90", + "line": "500", + "parentIndex": "341", + "start": "17022" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "17113", + "length": "11312", + "line": "174", + "parentIndex": "327", + "start": "5802" + } + } + } + ] + }, + "src": { + "id": 328, + "line": 174, + "start": 5802, + "end": 17113, + "length": 11312, + "parent_index": 48 + } + }, + { + "id": 1421, + "license": "MIT", + "name": "Token", + "absolute_path": "Token.sol", + "exported_symbols": [ + { + "id": 1421, + "name": "Token", + "absolute_path": "Token.sol" + }, + { + "id": 327, + "name": "ERC20", + "absolute_path": "ERC20.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "1431", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "17171", + "id": "1432", + "length": "23", + "line": "505", + "parentIndex": "1421", + "start": "17149" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "id": "1437", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1421", + "sourceUnit": "327", + "src": { + "end": "17228", + "length": "55", + "line": "507", + "parentIndex": "1421", + "start": "17174" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "1441", + "name": "ERC20", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "327", + "src": { + "column": "18", + "end": "17253", + "id": "1442", + "length": "5", + "line": "509", + "parentIndex": "1438", + "start": "17249" + } + }, + "id": "1439", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "18", + "end": "17253", + "id": "1440", + "length": "5", + "line": "509", + "parentIndex": "1438", + "start": "17249" + } + } + ], + "contractDependencies": [ + "327", + "1437" + ], + "fullyImplemented": true, + "id": "1438", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "327", + "1438", + "1437" + ], + "name": "Token", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1456", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "42", + "end": "17358", + "id": "1457", + "length": "60", + "line": "510", + "parentIndex": "1444", + "start": "17299" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1464", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "14", + "end": "17317", + "id": "1465", + "length": "3", + "line": "511", + "parentIndex": "1462", + "start": "17315" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "1462", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "14", + "end": "17324", + "id": "1463", + "length": "10", + "line": "511", + "parentIndex": "1458", + "start": "17315" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1466", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31303030303030", + "id": "1468", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "26", + "end": "17333", + "id": "1469", + "length": "7", + "line": "511", + "parentIndex": "1466", + "start": "17327" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MULTIPLICATION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.ExprOperation", + "value": { + "id": "1471", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "3130", + "id": "1473", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "17338", + "id": "1474", + "length": "2", + "line": "511", + "parentIndex": "1471", + "start": "17337" + }, + "typeDescription": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + } + }, + "nodeType": "EXPRESSION_OPERATION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1477", + "name": "decimals", + "nodeType": "IDENTIFIER", + "src": { + "column": "40", + "end": "17348", + "id": "1478", + "length": "8", + "line": "511", + "parentIndex": "1475", + "start": "17341" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1475", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "40", + "end": "17350", + "id": "1476", + "length": "10", + "line": "511", + "parentIndex": "1471", + "start": "17341" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "src": { + "column": "36", + "end": "17350", + "id": "1472", + "length": "14", + "line": "511", + "parentIndex": "1466", + "start": "17337" + }, + "typeDescription": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + } + } + }, + "src": { + "column": "26", + "end": "17350", + "id": "1467", + "length": "24", + "line": "511", + "parentIndex": "1458", + "start": "17327" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1460", + "name": "_mint", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "17313", + "id": "1461", + "length": "5", + "line": "511", + "parentIndex": "1458", + "start": "17309" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1458", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "17351", + "id": "1459", + "length": "43", + "line": "511", + "parentIndex": "1456", + "start": "17309" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_rational_1000000_by_1$", + "typeString": "function(address,int_const 1000000)" + } + } + } + ] + }, + "id": "1444", + "implemented": true, + "kind": "CONSTRUCTOR", + "modifiers": [ + { + "argumentTypes": [ + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"MyToken\"" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"MTK\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "4d79546f6b656e", + "id": "1452", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "24", + "end": "17289", + "id": "1453", + "length": "9", + "line": "510", + "parentIndex": "1448", + "start": "17281" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"MyToken\"" + }, + "value": "MyToken" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "4d544b", + "id": "1454", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "35", + "end": "17296", + "id": "1455", + "length": "5", + "line": "510", + "parentIndex": "1448", + "start": "17292" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"MTK\"" + }, + "value": "MTK" + } + } + ], + "id": "1448", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "1450", + "name": "ERC20", + "src": { + "column": "18", + "end": "17279", + "id": "1451", + "length": "5", + "line": "510", + "parentIndex": "1448", + "start": "17275" + } + }, + "name": "ERC20", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "18", + "end": "17297", + "id": "1449", + "length": "23", + "line": "510", + "parentIndex": "1444", + "start": "17275" + } + } + ], + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1446", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "17358", + "id": "1445", + "length": "98", + "line": "510", + "parentIndex": "1444", + "start": "17261" + } + }, + "returnParameters": { + "id": "1447", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "17358", + "id": "1445", + "length": "98", + "line": "510", + "parentIndex": "1444", + "start": "17261" + } + }, + "scope": "1438", + "src": { + "column": "4", + "end": "17358", + "id": "1445", + "length": "98", + "line": "510", + "parentIndex": "1438", + "start": "17261" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "$_t_constructor", + "typeString": "constructor" + }, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "17360", + "length": "130", + "line": "509", + "parentIndex": "1421", + "start": "17231" + } + } + } + ] + }, + "src": { + "id": 1422, + "line": 509, + "start": 17231, + "end": 17360, + "length": 130, + "parent_index": 48 + } + } + ], + "comments": [ + { + "id": 1, + "node_type": 33, + "src": { + "line": 1, + "end": 30, + "length": 31, + "parent_index": 2 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 2, + "node_type": 31, + "src": { + "line": 2, + "start": 32, + "end": 103, + "length": 72, + "parent_index": 3 + }, + "text": "// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)" + }, + { + "id": 3, + "node_type": 32, + "src": { + "line": 6, + "start": 131, + "end": 200, + "length": 70, + "parent_index": 4 + }, + "text": "/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */" + }, + { + "id": 4, + "node_type": 32, + "src": { + "line": 10, + "column": 4, + "start": 225, + "end": 382, + "length": 158, + "parent_index": 5 + }, + "text": "/**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */" + }, + { + "id": 5, + "node_type": 32, + "src": { + "line": 18, + "column": 4, + "start": 466, + "end": 613, + "length": 148, + "parent_index": 6 + }, + "text": "/**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */" + }, + { + "id": 6, + "node_type": 32, + "src": { + "line": 24, + "column": 4, + "start": 703, + "end": 768, + "length": 66, + "parent_index": 7 + }, + "text": "/**\n * @dev Returns the amount of tokens in existence.\n */" + }, + { + "id": 7, + "node_type": 32, + "src": { + "line": 29, + "column": 4, + "start": 835, + "end": 906, + "length": 72, + "parent_index": 8 + }, + "text": "/**\n * @dev Returns the amount of tokens owned by `account`.\n */" + }, + { + "id": 8, + "node_type": 32, + "src": { + "line": 34, + "column": 4, + "start": 986, + "end": 1187, + "length": 202, + "parent_index": 9 + }, + "text": "/**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */" + }, + { + "id": 9, + "node_type": 32, + "src": { + "line": 43, + "column": 4, + "start": 1269, + "end": 1532, + "length": 264, + "parent_index": 10 + }, + "text": "/**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */" + }, + { + "id": 10, + "node_type": 32, + "src": { + "line": 52, + "column": 4, + "start": 1627, + "end": 2268, + "length": 642, + "parent_index": 11 + }, + "text": "/**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */" + }, + { + "id": 11, + "node_type": 32, + "src": { + "line": 68, + "column": 4, + "start": 2354, + "end": 2640, + "length": 287, + "parent_index": 12 + }, + "text": "/**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */" + }, + { + "id": 12, + "node_type": 33, + "src": { + "line": 81, + "start": 2739, + "end": 2769, + "length": 31, + "parent_index": 13 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 13, + "node_type": 31, + "src": { + "line": 82, + "start": 2771, + "end": 2846, + "length": 76, + "parent_index": 14 + }, + "text": "// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)" + }, + { + "id": 14, + "node_type": 32, + "src": { + "line": 88, + "start": 2899, + "end": 3014, + "length": 116, + "parent_index": 15 + }, + "text": "/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */" + }, + { + "id": 15, + "node_type": 32, + "src": { + "line": 94, + "column": 4, + "start": 3057, + "end": 3110, + "length": 54, + "parent_index": 16 + }, + "text": "/**\n * @dev Returns the name of the token.\n */" + }, + { + "id": 16, + "node_type": 32, + "src": { + "line": 99, + "column": 4, + "start": 3176, + "end": 3231, + "length": 56, + "parent_index": 17 + }, + "text": "/**\n * @dev Returns the symbol of the token.\n */" + }, + { + "id": 17, + "node_type": 32, + "src": { + "line": 104, + "column": 4, + "start": 3299, + "end": 3363, + "length": 65, + "parent_index": 18 + }, + "text": "/**\n * @dev Returns the decimals places of the token.\n */" + }, + { + "id": 18, + "node_type": 33, + "src": { + "line": 111, + "start": 3424, + "end": 3454, + "length": 31, + "parent_index": 19 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 19, + "node_type": 31, + "src": { + "line": 112, + "start": 3456, + "end": 3507, + "length": 52, + "parent_index": 20 + }, + "text": "// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)" + }, + { + "id": 20, + "node_type": 32, + "src": { + "line": 116, + "start": 3535, + "end": 4030, + "length": 496, + "parent_index": 21 + }, + "text": "/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */" + }, + { + "id": 21, + "node_type": 33, + "src": { + "line": 137, + "start": 4270, + "end": 4300, + "length": 31, + "parent_index": 22 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 22, + "node_type": 31, + "src": { + "line": 138, + "start": 4302, + "end": 4372, + "length": 71, + "parent_index": 23 + }, + "text": "// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)" + }, + { + "id": 23, + "node_type": 32, + "src": { + "line": 146, + "start": 4500, + "end": 5800, + "length": 1301, + "parent_index": 24 + }, + "text": "/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */" + }, + { + "id": 24, + "node_type": 32, + "src": { + "line": 184, + "column": 4, + "start": 6074, + "end": 6244, + "length": 171, + "parent_index": 25 + }, + "text": "/**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */" + }, + { + "id": 25, + "node_type": 32, + "src": { + "line": 195, + "column": 4, + "start": 6369, + "end": 6422, + "length": 54, + "parent_index": 26 + }, + "text": "/**\n * @dev Returns the name of the token.\n */" + }, + { + "id": 26, + "node_type": 32, + "src": { + "line": 202, + "column": 4, + "start": 6532, + "end": 6633, + "length": 102, + "parent_index": 27 + }, + "text": "/**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */" + }, + { + "id": 27, + "node_type": 32, + "src": { + "line": 210, + "column": 4, + "start": 6747, + "end": 7368, + "length": 622, + "parent_index": 28 + }, + "text": "/**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */" + }, + { + "id": 28, + "node_type": 32, + "src": { + "line": 227, + "column": 4, + "start": 7471, + "end": 7519, + "length": 49, + "parent_index": 29 + }, + "text": "/**\n * @dev See {IERC20-totalSupply}.\n */" + }, + { + "id": 29, + "node_type": 32, + "src": { + "line": 234, + "column": 4, + "start": 7637, + "end": 7683, + "length": 47, + "parent_index": 30 + }, + "text": "/**\n * @dev See {IERC20-balanceOf}.\n */" + }, + { + "id": 30, + "node_type": 32, + "src": { + "line": 241, + "column": 4, + "start": 7820, + "end": 8004, + "length": 185, + "parent_index": 31 + }, + "text": "/**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */" + }, + { + "id": 31, + "node_type": 32, + "src": { + "line": 255, + "column": 4, + "start": 8205, + "end": 8251, + "length": 47, + "parent_index": 32 + }, + "text": "/**\n * @dev See {IERC20-allowance}.\n */" + }, + { + "id": 32, + "node_type": 32, + "src": { + "line": 262, + "column": 4, + "start": 8412, + "end": 8708, + "length": 297, + "parent_index": 33 + }, + "text": "/**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */" + }, + { + "id": 33, + "node_type": 32, + "src": { + "line": 278, + "column": 4, + "start": 8917, + "end": 9467, + "length": 551, + "parent_index": 34 + }, + "text": "/**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */" + }, + { + "id": 34, + "node_type": 32, + "src": { + "line": 301, + "column": 4, + "start": 9735, + "end": 10118, + "length": 384, + "parent_index": 35 + }, + "text": "/**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */" + }, + { + "id": 35, + "node_type": 32, + "src": { + "line": 319, + "column": 4, + "start": 10364, + "end": 10839, + "length": 476, + "parent_index": 36 + }, + "text": "/**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */" + }, + { + "id": 36, + "node_type": 32, + "src": { + "line": 344, + "column": 4, + "start": 11278, + "end": 11720, + "length": 443, + "parent_index": 37 + }, + "text": "/**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */" + }, + { + "id": 37, + "node_type": 31, + "src": { + "line": 368, + "column": 12, + "start": 12221, + "end": 12323, + "length": 103, + "parent_index": 38 + }, + "text": "// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by" + }, + { + "id": 38, + "node_type": 31, + "src": { + "line": 369, + "column": 12, + "start": 12337, + "end": 12370, + "length": 34, + "parent_index": 39 + }, + "text": "// decrementing then incrementing." + }, + { + "id": 39, + "node_type": 32, + "src": { + "line": 378, + "column": 4, + "start": 12520, + "end": 12784, + "length": 265, + "parent_index": 40 + }, + "text": "/** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */" + }, + { + "id": 40, + "node_type": 31, + "src": { + "line": 394, + "column": 12, + "start": 13057, + "end": 13155, + "length": 99, + "parent_index": 41 + }, + "text": "// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above." + }, + { + "id": 41, + "node_type": 32, + "src": { + "line": 402, + "column": 4, + "start": 13331, + "end": 13639, + "length": 309, + "parent_index": 42 + }, + "text": "/**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */" + }, + { + "id": 42, + "node_type": 31, + "src": { + "line": 422, + "column": 12, + "start": 14074, + "end": 14139, + "length": 66, + "parent_index": 43 + }, + "text": "// Overflow not possible: amount \u003c= accountBalance \u003c= totalSupply." + }, + { + "id": 43, + "node_type": 32, + "src": { + "line": 431, + "column": 4, + "start": 14310, + "end": 14721, + "length": 412, + "parent_index": 44 + }, + "text": "/**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */" + }, + { + "id": 44, + "node_type": 32, + "src": { + "line": 452, + "column": 4, + "start": 15073, + "end": 15342, + "length": 270, + "parent_index": 45 + }, + "text": "/**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */" + }, + { + "id": 45, + "node_type": 32, + "src": { + "line": 470, + "column": 4, + "start": 15765, + "end": 16337, + "length": 573, + "parent_index": 46 + }, + "text": "/**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */" + }, + { + "id": 46, + "node_type": 32, + "src": { + "line": 486, + "column": 4, + "start": 16440, + "end": 17016, + "length": 577, + "parent_index": 47 + }, + "text": "/**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */" + }, + { + "id": 47, + "node_type": 33, + "src": { + "line": 504, + "start": 17117, + "end": 17147, + "length": 31, + "parent_index": 48 + }, + "text": "// SPDX-License-Identifier: MIT" + } + ] } \ No newline at end of file diff --git a/data/tests/ast/TokenSale.solgo.ast.json b/data/tests/ast/TokenSale.solgo.ast.json index 723a39e5..1aa31926 100644 --- a/data/tests/ast/TokenSale.solgo.ast.json +++ b/data/tests/ast/TokenSale.solgo.ast.json @@ -1 +1 @@ -{"id":30,"node_type":80,"entry_source_unit":748,"root":[{"id":31,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":31,"name":"IERC20","absolute_path":"IERC20.sol"}],"absolute_path":"IERC20.sol","name":"IERC20","node_type":1,"nodes":[{"id":33,"node_type":10,"src":{"id":34,"line":3,"column":0,"start":33,"end":55,"length":23,"parent_index":31},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":37,"name":"IERC20","node_type":35,"src":{"id":0,"line":8,"column":0,"start":129,"end":2724,"length":2596,"parent_index":31},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":39,"name":"totalSupply","node_type":42,"kind":41,"src":{"id":40,"line":12,"column":4,"start":223,"end":277,"length":55,"parent_index":37},"body":{"id":53,"node_type":46,"kind":0,"src":{"id":40,"line":12,"column":4,"start":223,"end":277,"length":55,"parent_index":39},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":41,"node_type":43,"src":{"id":42,"line":12,"column":50,"start":269,"end":275,"length":7,"parent_index":39},"parameters":[{"id":43,"node_type":44,"src":{"id":44,"line":12,"column":50,"start":269,"end":275,"length":7,"parent_index":41},"scope":39,"name":"","type_name":{"id":45,"node_type":30,"src":{"id":46,"line":12,"column":50,"start":269,"end":275,"length":7,"parent_index":43},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":47,"node_type":43,"src":{"id":48,"line":12,"column":50,"start":269,"end":275,"length":7,"parent_index":39},"parameters":[{"id":49,"node_type":44,"src":{"id":50,"line":12,"column":50,"start":269,"end":275,"length":7,"parent_index":47},"scope":39,"name":"","type_name":{"id":51,"node_type":30,"src":{"id":52,"line":12,"column":50,"start":269,"end":275,"length":7,"parent_index":49},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":37,"type_description":{"type_identifier":"t_function_$_t_uint256","type_string":"function(uint256)"}},{"id":55,"name":"balanceOf","node_type":42,"kind":41,"src":{"id":56,"line":17,"column":4,"start":361,"end":428,"length":68,"parent_index":37},"body":{"id":69,"node_type":46,"kind":0,"src":{"id":56,"line":17,"column":4,"start":361,"end":428,"length":68,"parent_index":55},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":57,"node_type":43,"src":{"id":58,"line":17,"column":23,"start":380,"end":394,"length":15,"parent_index":55},"parameters":[{"id":59,"node_type":44,"src":{"id":60,"line":17,"column":23,"start":380,"end":394,"length":15,"parent_index":57},"scope":55,"name":"account","type_name":{"id":61,"node_type":30,"src":{"id":62,"line":17,"column":23,"start":380,"end":386,"length":7,"parent_index":59},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":63,"node_type":43,"src":{"id":64,"line":17,"column":63,"start":420,"end":426,"length":7,"parent_index":55},"parameters":[{"id":65,"node_type":44,"src":{"id":66,"line":17,"column":63,"start":420,"end":426,"length":7,"parent_index":63},"scope":55,"name":"","type_name":{"id":67,"node_type":30,"src":{"id":68,"line":17,"column":63,"start":420,"end":426,"length":7,"parent_index":65},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":37,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":71,"name":"transfer","node_type":42,"kind":41,"src":{"id":72,"line":26,"column":4,"start":649,"end":725,"length":77,"parent_index":37},"body":{"id":89,"node_type":46,"kind":0,"src":{"id":72,"line":26,"column":4,"start":649,"end":725,"length":77,"parent_index":71},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":73,"node_type":43,"src":{"id":74,"line":26,"column":22,"start":667,"end":699,"length":33,"parent_index":71},"parameters":[{"id":75,"node_type":44,"src":{"id":76,"line":26,"column":22,"start":667,"end":683,"length":17,"parent_index":73},"scope":71,"name":"recipient","type_name":{"id":77,"node_type":30,"src":{"id":78,"line":26,"column":22,"start":667,"end":673,"length":7,"parent_index":75},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":79,"node_type":44,"src":{"id":80,"line":26,"column":41,"start":686,"end":699,"length":14,"parent_index":73},"scope":71,"name":"amount","type_name":{"id":81,"node_type":30,"src":{"id":82,"line":26,"column":41,"start":686,"end":692,"length":7,"parent_index":79},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":83,"node_type":43,"src":{"id":84,"line":26,"column":75,"start":720,"end":723,"length":4,"parent_index":71},"parameters":[{"id":85,"node_type":44,"src":{"id":86,"line":26,"column":75,"start":720,"end":723,"length":4,"parent_index":83},"scope":71,"name":"","type_name":{"id":87,"node_type":30,"src":{"id":88,"line":26,"column":75,"start":720,"end":723,"length":4,"parent_index":85},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":37,"type_description":{"type_identifier":"t_function_$_t_address$$_t_uint256","type_string":"function(address,uint256)"}},{"id":91,"name":"allowance","node_type":42,"kind":41,"src":{"id":92,"line":35,"column":4,"start":1001,"end":1083,"length":83,"parent_index":37},"body":{"id":109,"node_type":46,"kind":0,"src":{"id":92,"line":35,"column":4,"start":1001,"end":1083,"length":83,"parent_index":91},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":93,"node_type":43,"src":{"id":94,"line":35,"column":23,"start":1020,"end":1049,"length":30,"parent_index":91},"parameters":[{"id":95,"node_type":44,"src":{"id":96,"line":35,"column":23,"start":1020,"end":1032,"length":13,"parent_index":93},"scope":91,"name":"owner","type_name":{"id":97,"node_type":30,"src":{"id":98,"line":35,"column":23,"start":1020,"end":1026,"length":7,"parent_index":95},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":99,"node_type":44,"src":{"id":100,"line":35,"column":38,"start":1035,"end":1049,"length":15,"parent_index":93},"scope":91,"name":"spender","type_name":{"id":101,"node_type":30,"src":{"id":102,"line":35,"column":38,"start":1035,"end":1041,"length":7,"parent_index":99},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":103,"node_type":43,"src":{"id":104,"line":35,"column":78,"start":1075,"end":1081,"length":7,"parent_index":91},"parameters":[{"id":105,"node_type":44,"src":{"id":106,"line":35,"column":78,"start":1075,"end":1081,"length":7,"parent_index":103},"scope":91,"name":"","type_name":{"id":107,"node_type":30,"src":{"id":108,"line":35,"column":78,"start":1075,"end":1081,"length":7,"parent_index":105},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":37,"type_description":{"type_identifier":"t_function_$_t_address$$_t_address","type_string":"function(address,address)"}},{"id":111,"name":"approve","node_type":42,"kind":41,"src":{"id":112,"line":51,"column":4,"start":1737,"end":1810,"length":74,"parent_index":37},"body":{"id":129,"node_type":46,"kind":0,"src":{"id":112,"line":51,"column":4,"start":1737,"end":1810,"length":74,"parent_index":111},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":113,"node_type":43,"src":{"id":114,"line":51,"column":21,"start":1754,"end":1784,"length":31,"parent_index":111},"parameters":[{"id":115,"node_type":44,"src":{"id":116,"line":51,"column":21,"start":1754,"end":1768,"length":15,"parent_index":113},"scope":111,"name":"spender","type_name":{"id":117,"node_type":30,"src":{"id":118,"line":51,"column":21,"start":1754,"end":1760,"length":7,"parent_index":115},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":119,"node_type":44,"src":{"id":120,"line":51,"column":38,"start":1771,"end":1784,"length":14,"parent_index":113},"scope":111,"name":"amount","type_name":{"id":121,"node_type":30,"src":{"id":122,"line":51,"column":38,"start":1771,"end":1777,"length":7,"parent_index":119},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":123,"node_type":43,"src":{"id":124,"line":51,"column":72,"start":1805,"end":1808,"length":4,"parent_index":111},"parameters":[{"id":125,"node_type":44,"src":{"id":126,"line":51,"column":72,"start":1805,"end":1808,"length":4,"parent_index":123},"scope":111,"name":"","type_name":{"id":127,"node_type":30,"src":{"id":128,"line":51,"column":72,"start":1805,"end":1808,"length":4,"parent_index":125},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":37,"type_description":{"type_identifier":"t_function_$_t_address$$_t_uint256","type_string":"function(address,uint256)"}},{"id":131,"name":"transferFrom","node_type":42,"kind":41,"src":{"id":132,"line":62,"column":4,"start":2118,"end":2244,"length":127,"parent_index":37},"body":{"id":153,"node_type":46,"kind":0,"src":{"id":132,"line":62,"column":4,"start":2118,"end":2244,"length":127,"parent_index":131},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":133,"node_type":43,"src":{"id":134,"line":63,"column":8,"start":2149,"end":2213,"length":65,"parent_index":131},"parameters":[{"id":135,"node_type":44,"src":{"id":136,"line":63,"column":8,"start":2149,"end":2162,"length":14,"parent_index":133},"scope":131,"name":"sender","type_name":{"id":137,"node_type":30,"src":{"id":138,"line":63,"column":8,"start":2149,"end":2155,"length":7,"parent_index":135},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":139,"node_type":44,"src":{"id":140,"line":64,"column":8,"start":2173,"end":2189,"length":17,"parent_index":133},"scope":131,"name":"recipient","type_name":{"id":141,"node_type":30,"src":{"id":142,"line":64,"column":8,"start":2173,"end":2179,"length":7,"parent_index":139},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":143,"node_type":44,"src":{"id":144,"line":65,"column":8,"start":2200,"end":2213,"length":14,"parent_index":133},"scope":131,"name":"amount","type_name":{"id":145,"node_type":30,"src":{"id":146,"line":65,"column":8,"start":2200,"end":2206,"length":7,"parent_index":143},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":147,"node_type":43,"src":{"id":148,"line":66,"column":24,"start":2239,"end":2242,"length":4,"parent_index":131},"parameters":[{"id":149,"node_type":44,"src":{"id":150,"line":66,"column":24,"start":2239,"end":2242,"length":4,"parent_index":147},"scope":131,"name":"","type_name":{"id":151,"node_type":30,"src":{"id":152,"line":66,"column":24,"start":2239,"end":2242,"length":4,"parent_index":149},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":37,"type_description":{"type_identifier":"t_function_$_t_address$$_t_address$$_t_uint256","type_string":"function(address,address,uint256)"}},{"id":155,"node_type":57,"src":{"id":156,"line":74,"column":4,"start":2414,"end":2485,"length":72,"parent_index":37},"parameters":{"id":157,"node_type":43,"src":{"id":156,"line":74,"column":4,"start":2414,"end":2485,"length":72,"parent_index":155},"parameters":[{"id":158,"node_type":44,"src":{"id":159,"line":74,"column":19,"start":2429,"end":2448,"length":20,"parent_index":157},"scope":155,"name":"from","type_name":{"id":160,"node_type":30,"src":{"id":161,"line":74,"column":19,"start":2429,"end":2435,"length":7,"parent_index":158},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":162,"node_type":44,"src":{"id":163,"line":74,"column":41,"start":2451,"end":2468,"length":18,"parent_index":157},"scope":155,"name":"to","type_name":{"id":164,"node_type":30,"src":{"id":165,"line":74,"column":41,"start":2451,"end":2457,"length":7,"parent_index":162},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":166,"node_type":44,"src":{"id":167,"line":74,"column":61,"start":2471,"end":2483,"length":13,"parent_index":157},"scope":155,"name":"value","type_name":{"id":168,"node_type":30,"src":{"id":169,"line":74,"column":61,"start":2471,"end":2477,"length":7,"parent_index":166},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"name":"Transfer","anonymous":false},{"id":171,"node_type":57,"src":{"id":172,"line":80,"column":4,"start":2645,"end":2722,"length":78,"parent_index":37},"parameters":{"id":173,"node_type":43,"src":{"id":172,"line":80,"column":4,"start":2645,"end":2722,"length":78,"parent_index":171},"parameters":[{"id":174,"node_type":44,"src":{"id":175,"line":80,"column":19,"start":2660,"end":2680,"length":21,"parent_index":173},"scope":171,"name":"owner","type_name":{"id":176,"node_type":30,"src":{"id":177,"line":80,"column":19,"start":2660,"end":2666,"length":7,"parent_index":174},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":178,"node_type":44,"src":{"id":179,"line":80,"column":42,"start":2683,"end":2705,"length":23,"parent_index":173},"scope":171,"name":"spender","type_name":{"id":180,"node_type":30,"src":{"id":181,"line":80,"column":42,"start":2683,"end":2689,"length":7,"parent_index":178},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":182,"node_type":44,"src":{"id":183,"line":80,"column":67,"start":2708,"end":2720,"length":13,"parent_index":173},"scope":171,"name":"value","type_name":{"id":184,"node_type":30,"src":{"id":185,"line":80,"column":67,"start":2708,"end":2714,"length":7,"parent_index":182},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"name":"Approval","anonymous":false}],"linearized_base_contracts":[37],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":32,"line":8,"column":0,"start":129,"end":2724,"length":2596,"parent_index":30}},{"id":186,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":186,"name":"SafeMath","absolute_path":"SafeMath.sol"}],"absolute_path":"SafeMath.sol","name":"SafeMath","node_type":1,"nodes":[{"id":190,"node_type":10,"src":{"id":191,"line":85,"column":0,"start":2760,"end":2782,"length":23,"parent_index":186},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":192,"name":"SafeMath","node_type":35,"src":{"id":0,"line":100,"column":0,"start":3349,"end":9824,"length":6476,"parent_index":186},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":194,"name":"tryAdd","node_type":42,"kind":41,"src":{"id":195,"line":106,"column":4,"start":3508,"end":3723,"length":216,"parent_index":192},"body":{"id":216,"node_type":46,"kind":0,"src":{"id":217,"line":106,"column":80,"start":3584,"end":3723,"length":140,"parent_index":194},"implemented":true,"statements":[{"id":218,"node_type":59,"kind":0,"src":{"id":219,"line":107,"column":8,"start":3594,"end":3717,"length":124,"parent_index":192},"implemented":false,"statements":[{"id":220,"node_type":44,"src":{"id":221,"line":108,"column":12,"start":3618,"end":3635,"length":18,"parent_index":218},"assignments":[222],"declarations":[{"is_constant":false,"id":222,"state_mutability":1,"name":"c","node_type":44,"scope":218,"src":{"id":223,"line":108,"column":12,"start":3618,"end":3626,"length":9,"parent_index":220},"is_state_variable":false,"storage_location":1,"type_name":{"id":224,"node_type":30,"src":{"id":225,"line":108,"column":12,"start":3618,"end":3624,"length":7,"parent_index":222},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":226,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":227,"line":108,"column":24,"start":3630,"end":3634,"length":5,"parent_index":220},"operator":1,"left_expression":{"id":228,"node_type":16,"src":{"id":229,"line":108,"column":24,"start":3630,"end":3630,"length":1,"parent_index":226},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":228,"is_pure":false},"right_expression":{"id":230,"node_type":16,"src":{"id":231,"line":108,"column":28,"start":3634,"end":3634,"length":1,"parent_index":226},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":230,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":232,"node_type":48,"src":{"id":233,"line":109,"column":0,"start":3649,"end":3677,"length":29,"parent_index":218},"condition":{"id":234,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":235,"line":109,"column":16,"start":3653,"end":3657,"length":5,"parent_index":232},"operator":9,"left_expression":{"id":236,"node_type":16,"src":{"id":237,"line":109,"column":16,"start":3653,"end":3653,"length":1,"parent_index":234},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":220,"is_pure":false},"right_expression":{"id":238,"node_type":16,"src":{"id":239,"line":109,"column":20,"start":3657,"end":3657,"length":1,"parent_index":234},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":238,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":240,"node_type":46,"kind":0,"src":{"id":0,"line":0,"column":0,"start":0,"end":0,"length":0,"parent_index":0},"implemented":false,"statements":[]}},{"id":241,"node_type":47,"src":{"id":242,"line":110,"column":12,"start":3691,"end":3707,"length":17,"parent_index":194},"function_return_parameters":194,"expression":{"id":243,"node_type":60,"src":{"id":244,"line":110,"column":19,"start":3698,"end":3706,"length":9,"parent_index":194},"is_constant":false,"is_pure":true,"components":[{"id":245,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":246,"line":110,"column":20,"start":3699,"end":3702,"length":4,"parent_index":243},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},{"id":247,"node_type":16,"src":{"id":248,"line":110,"column":26,"start":3705,"end":3705,"length":1,"parent_index":243},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":220,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_bool_$_t_uint256$","type_string":"tuple(bool,uint256)"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":196,"node_type":43,"src":{"id":197,"line":106,"column":20,"start":3524,"end":3543,"length":20,"parent_index":194},"parameters":[{"id":198,"node_type":44,"src":{"id":199,"line":106,"column":20,"start":3524,"end":3532,"length":9,"parent_index":196},"scope":194,"name":"a","type_name":{"id":200,"node_type":30,"src":{"id":201,"line":106,"column":20,"start":3524,"end":3530,"length":7,"parent_index":198},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":202,"node_type":44,"src":{"id":203,"line":106,"column":31,"start":3535,"end":3543,"length":9,"parent_index":196},"scope":194,"name":"b","type_name":{"id":204,"node_type":30,"src":{"id":205,"line":106,"column":31,"start":3535,"end":3541,"length":7,"parent_index":202},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":206,"node_type":43,"src":{"id":207,"line":106,"column":65,"start":3569,"end":3581,"length":13,"parent_index":194},"parameters":[{"id":208,"node_type":44,"src":{"id":209,"line":106,"column":65,"start":3569,"end":3572,"length":4,"parent_index":206},"scope":194,"name":"","type_name":{"id":210,"node_type":30,"src":{"id":211,"line":106,"column":65,"start":3569,"end":3572,"length":4,"parent_index":208},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":212,"node_type":44,"src":{"id":213,"line":106,"column":71,"start":3575,"end":3581,"length":7,"parent_index":206},"scope":194,"name":"","type_name":{"id":214,"node_type":30,"src":{"id":215,"line":106,"column":71,"start":3575,"end":3581,"length":7,"parent_index":212},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256","type_string":"function(uint256,uint256)"}},{"id":250,"name":"trySub","node_type":42,"kind":41,"src":{"id":251,"line":119,"column":4,"start":3870,"end":4058,"length":189,"parent_index":192},"body":{"id":272,"node_type":46,"kind":0,"src":{"id":273,"line":119,"column":80,"start":3946,"end":4058,"length":113,"parent_index":250},"implemented":true,"statements":[{"id":274,"node_type":59,"kind":0,"src":{"id":275,"line":120,"column":8,"start":3956,"end":4052,"length":97,"parent_index":192},"implemented":false,"statements":[{"id":276,"node_type":48,"src":{"id":277,"line":121,"column":0,"start":3980,"end":4008,"length":29,"parent_index":274},"condition":{"id":278,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":279,"line":121,"column":16,"start":3984,"end":3988,"length":5,"parent_index":276},"operator":7,"left_expression":{"id":280,"node_type":16,"src":{"id":281,"line":121,"column":16,"start":3984,"end":3984,"length":1,"parent_index":278},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":280,"is_pure":false},"right_expression":{"id":282,"node_type":16,"src":{"id":283,"line":121,"column":20,"start":3988,"end":3988,"length":1,"parent_index":278},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":282,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":284,"node_type":46,"kind":0,"src":{"id":0,"line":0,"column":0,"start":0,"end":0,"length":0,"parent_index":0},"implemented":false,"statements":[]}},{"id":285,"node_type":47,"src":{"id":286,"line":122,"column":12,"start":4022,"end":4042,"length":21,"parent_index":250},"function_return_parameters":250,"expression":{"id":287,"node_type":60,"src":{"id":288,"line":122,"column":19,"start":4029,"end":4041,"length":13,"parent_index":250},"is_constant":false,"is_pure":true,"components":[{"id":289,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":290,"line":122,"column":20,"start":4030,"end":4033,"length":4,"parent_index":287},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},{"id":291,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":292,"line":122,"column":26,"start":4036,"end":4040,"length":5,"parent_index":287},"operator":2,"left_expression":{"id":293,"node_type":16,"src":{"id":294,"line":122,"column":26,"start":4036,"end":4036,"length":1,"parent_index":291},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":293,"is_pure":false},"right_expression":{"id":295,"node_type":16,"src":{"id":296,"line":122,"column":30,"start":4040,"end":4040,"length":1,"parent_index":291},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":295,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}],"type_description":{"type_identifier":"t_tuple_$_t_bool_$_t_uint256$","type_string":"tuple(bool,uint256)"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":252,"node_type":43,"src":{"id":253,"line":119,"column":20,"start":3886,"end":3905,"length":20,"parent_index":250},"parameters":[{"id":254,"node_type":44,"src":{"id":255,"line":119,"column":20,"start":3886,"end":3894,"length":9,"parent_index":252},"scope":250,"name":"a","type_name":{"id":256,"node_type":30,"src":{"id":257,"line":119,"column":20,"start":3886,"end":3892,"length":7,"parent_index":254},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":258,"node_type":44,"src":{"id":259,"line":119,"column":31,"start":3897,"end":3905,"length":9,"parent_index":252},"scope":250,"name":"b","type_name":{"id":260,"node_type":30,"src":{"id":261,"line":119,"column":31,"start":3897,"end":3903,"length":7,"parent_index":258},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":262,"node_type":43,"src":{"id":263,"line":119,"column":65,"start":3931,"end":3943,"length":13,"parent_index":250},"parameters":[{"id":264,"node_type":44,"src":{"id":265,"line":119,"column":65,"start":3931,"end":3934,"length":4,"parent_index":262},"scope":250,"name":"","type_name":{"id":266,"node_type":30,"src":{"id":267,"line":119,"column":65,"start":3931,"end":3934,"length":4,"parent_index":264},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":268,"node_type":44,"src":{"id":269,"line":119,"column":71,"start":3937,"end":3943,"length":7,"parent_index":262},"scope":250,"name":"","type_name":{"id":270,"node_type":30,"src":{"id":271,"line":119,"column":71,"start":3937,"end":3943,"length":7,"parent_index":268},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256","type_string":"function(uint256,uint256)"}},{"id":298,"name":"tryMul","node_type":42,"kind":41,"src":{"id":299,"line":131,"column":4,"start":4207,"end":4699,"length":493,"parent_index":192},"body":{"id":320,"node_type":46,"kind":0,"src":{"id":321,"line":131,"column":80,"start":4283,"end":4699,"length":417,"parent_index":298},"implemented":true,"statements":[{"id":322,"node_type":59,"kind":0,"src":{"id":323,"line":132,"column":8,"start":4293,"end":4693,"length":401,"parent_index":192},"implemented":false,"statements":[{"id":324,"node_type":48,"src":{"id":325,"line":136,"column":0,"start":4547,"end":4575,"length":29,"parent_index":322},"condition":{"id":326,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":327,"line":136,"column":16,"start":4551,"end":4556,"length":6,"parent_index":324},"operator":11,"left_expression":{"id":328,"node_type":16,"src":{"id":329,"line":136,"column":16,"start":4551,"end":4551,"length":1,"parent_index":326},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":328,"is_pure":false},"right_expression":{"id":330,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":331,"line":136,"column":21,"start":4556,"end":4556,"length":1,"parent_index":326},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":332,"node_type":46,"kind":0,"src":{"id":0,"line":0,"column":0,"start":0,"end":0,"length":0,"parent_index":0},"implemented":false,"statements":[]}},{"id":333,"node_type":44,"src":{"id":334,"line":137,"column":12,"start":4589,"end":4606,"length":18,"parent_index":322},"assignments":[335],"declarations":[{"is_constant":false,"id":335,"state_mutability":1,"name":"c","node_type":44,"scope":322,"src":{"id":336,"line":137,"column":12,"start":4589,"end":4597,"length":9,"parent_index":333},"is_state_variable":false,"storage_location":1,"type_name":{"id":337,"node_type":30,"src":{"id":338,"line":137,"column":12,"start":4589,"end":4595,"length":7,"parent_index":335},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":339,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":340,"line":137,"column":24,"start":4601,"end":4605,"length":5,"parent_index":333},"operator":3,"left_expression":{"id":341,"node_type":16,"src":{"id":342,"line":137,"column":24,"start":4601,"end":4601,"length":1,"parent_index":339},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":341,"is_pure":false},"right_expression":{"id":343,"node_type":16,"src":{"id":344,"line":137,"column":28,"start":4605,"end":4605,"length":1,"parent_index":339},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":343,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":345,"node_type":48,"src":{"id":346,"line":138,"column":0,"start":4620,"end":4653,"length":34,"parent_index":322},"condition":{"id":347,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":348,"line":138,"column":16,"start":4624,"end":4633,"length":10,"parent_index":345},"operator":12,"left_expression":{"id":349,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":350,"line":138,"column":16,"start":4624,"end":4628,"length":5,"parent_index":347},"operator":4,"left_expression":{"id":351,"node_type":16,"src":{"id":352,"line":138,"column":16,"start":4624,"end":4624,"length":1,"parent_index":349},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":333,"is_pure":false},"right_expression":{"id":353,"node_type":16,"src":{"id":354,"line":138,"column":20,"start":4628,"end":4628,"length":1,"parent_index":349},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":353,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"right_expression":{"id":355,"node_type":16,"src":{"id":356,"line":138,"column":25,"start":4633,"end":4633,"length":1,"parent_index":347},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":355,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":357,"node_type":46,"kind":0,"src":{"id":0,"line":0,"column":0,"start":0,"end":0,"length":0,"parent_index":0},"implemented":false,"statements":[]}},{"id":358,"node_type":47,"src":{"id":359,"line":139,"column":12,"start":4667,"end":4683,"length":17,"parent_index":298},"function_return_parameters":298,"expression":{"id":360,"node_type":60,"src":{"id":361,"line":139,"column":19,"start":4674,"end":4682,"length":9,"parent_index":298},"is_constant":false,"is_pure":true,"components":[{"id":362,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":363,"line":139,"column":20,"start":4675,"end":4678,"length":4,"parent_index":360},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},{"id":364,"node_type":16,"src":{"id":365,"line":139,"column":26,"start":4681,"end":4681,"length":1,"parent_index":360},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":333,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_bool_$_t_uint256$","type_string":"tuple(bool,uint256)"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":300,"node_type":43,"src":{"id":301,"line":131,"column":20,"start":4223,"end":4242,"length":20,"parent_index":298},"parameters":[{"id":302,"node_type":44,"src":{"id":303,"line":131,"column":20,"start":4223,"end":4231,"length":9,"parent_index":300},"scope":298,"name":"a","type_name":{"id":304,"node_type":30,"src":{"id":305,"line":131,"column":20,"start":4223,"end":4229,"length":7,"parent_index":302},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":306,"node_type":44,"src":{"id":307,"line":131,"column":31,"start":4234,"end":4242,"length":9,"parent_index":300},"scope":298,"name":"b","type_name":{"id":308,"node_type":30,"src":{"id":309,"line":131,"column":31,"start":4234,"end":4240,"length":7,"parent_index":306},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":310,"node_type":43,"src":{"id":311,"line":131,"column":65,"start":4268,"end":4280,"length":13,"parent_index":298},"parameters":[{"id":312,"node_type":44,"src":{"id":313,"line":131,"column":65,"start":4268,"end":4271,"length":4,"parent_index":310},"scope":298,"name":"","type_name":{"id":314,"node_type":30,"src":{"id":315,"line":131,"column":65,"start":4268,"end":4271,"length":4,"parent_index":312},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":316,"node_type":44,"src":{"id":317,"line":131,"column":71,"start":4274,"end":4280,"length":7,"parent_index":310},"scope":298,"name":"","type_name":{"id":318,"node_type":30,"src":{"id":319,"line":131,"column":71,"start":4274,"end":4280,"length":7,"parent_index":316},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256","type_string":"function(uint256,uint256)"}},{"id":367,"name":"tryDiv","node_type":42,"kind":41,"src":{"id":368,"line":148,"column":4,"start":4849,"end":5038,"length":190,"parent_index":192},"body":{"id":389,"node_type":46,"kind":0,"src":{"id":390,"line":148,"column":80,"start":4925,"end":5038,"length":114,"parent_index":367},"implemented":true,"statements":[{"id":391,"node_type":59,"kind":0,"src":{"id":392,"line":149,"column":8,"start":4935,"end":5032,"length":98,"parent_index":192},"implemented":false,"statements":[{"id":393,"node_type":48,"src":{"id":394,"line":150,"column":0,"start":4959,"end":4988,"length":30,"parent_index":391},"condition":{"id":395,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":396,"line":150,"column":16,"start":4963,"end":4968,"length":6,"parent_index":393},"operator":11,"left_expression":{"id":397,"node_type":16,"src":{"id":398,"line":150,"column":16,"start":4963,"end":4963,"length":1,"parent_index":395},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":397,"is_pure":false},"right_expression":{"id":399,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":400,"line":150,"column":21,"start":4968,"end":4968,"length":1,"parent_index":395},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":401,"node_type":46,"kind":0,"src":{"id":0,"line":0,"column":0,"start":0,"end":0,"length":0,"parent_index":0},"implemented":false,"statements":[]}},{"id":402,"node_type":47,"src":{"id":403,"line":151,"column":12,"start":5002,"end":5022,"length":21,"parent_index":367},"function_return_parameters":367,"expression":{"id":404,"node_type":60,"src":{"id":405,"line":151,"column":19,"start":5009,"end":5021,"length":13,"parent_index":367},"is_constant":false,"is_pure":true,"components":[{"id":406,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":407,"line":151,"column":20,"start":5010,"end":5013,"length":4,"parent_index":404},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},{"id":408,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":409,"line":151,"column":26,"start":5016,"end":5020,"length":5,"parent_index":404},"operator":4,"left_expression":{"id":410,"node_type":16,"src":{"id":411,"line":151,"column":26,"start":5016,"end":5016,"length":1,"parent_index":408},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":410,"is_pure":false},"right_expression":{"id":412,"node_type":16,"src":{"id":413,"line":151,"column":30,"start":5020,"end":5020,"length":1,"parent_index":408},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":412,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}],"type_description":{"type_identifier":"t_tuple_$_t_bool_$_t_uint256$","type_string":"tuple(bool,uint256)"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":369,"node_type":43,"src":{"id":370,"line":148,"column":20,"start":4865,"end":4884,"length":20,"parent_index":367},"parameters":[{"id":371,"node_type":44,"src":{"id":372,"line":148,"column":20,"start":4865,"end":4873,"length":9,"parent_index":369},"scope":367,"name":"a","type_name":{"id":373,"node_type":30,"src":{"id":374,"line":148,"column":20,"start":4865,"end":4871,"length":7,"parent_index":371},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":375,"node_type":44,"src":{"id":376,"line":148,"column":31,"start":4876,"end":4884,"length":9,"parent_index":369},"scope":367,"name":"b","type_name":{"id":377,"node_type":30,"src":{"id":378,"line":148,"column":31,"start":4876,"end":4882,"length":7,"parent_index":375},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":379,"node_type":43,"src":{"id":380,"line":148,"column":65,"start":4910,"end":4922,"length":13,"parent_index":367},"parameters":[{"id":381,"node_type":44,"src":{"id":382,"line":148,"column":65,"start":4910,"end":4913,"length":4,"parent_index":379},"scope":367,"name":"","type_name":{"id":383,"node_type":30,"src":{"id":384,"line":148,"column":65,"start":4910,"end":4913,"length":4,"parent_index":381},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":385,"node_type":44,"src":{"id":386,"line":148,"column":71,"start":4916,"end":4922,"length":7,"parent_index":379},"scope":367,"name":"","type_name":{"id":387,"node_type":30,"src":{"id":388,"line":148,"column":71,"start":4916,"end":4922,"length":7,"parent_index":385},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256","type_string":"function(uint256,uint256)"}},{"id":415,"name":"tryMod","node_type":42,"kind":41,"src":{"id":416,"line":160,"column":4,"start":5198,"end":5387,"length":190,"parent_index":192},"body":{"id":437,"node_type":46,"kind":0,"src":{"id":438,"line":160,"column":80,"start":5274,"end":5387,"length":114,"parent_index":415},"implemented":true,"statements":[{"id":439,"node_type":59,"kind":0,"src":{"id":440,"line":161,"column":8,"start":5284,"end":5381,"length":98,"parent_index":192},"implemented":false,"statements":[{"id":441,"node_type":48,"src":{"id":442,"line":162,"column":0,"start":5308,"end":5337,"length":30,"parent_index":439},"condition":{"id":443,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":444,"line":162,"column":16,"start":5312,"end":5317,"length":6,"parent_index":441},"operator":11,"left_expression":{"id":445,"node_type":16,"src":{"id":446,"line":162,"column":16,"start":5312,"end":5312,"length":1,"parent_index":443},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":445,"is_pure":false},"right_expression":{"id":447,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":448,"line":162,"column":21,"start":5317,"end":5317,"length":1,"parent_index":443},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":449,"node_type":46,"kind":0,"src":{"id":0,"line":0,"column":0,"start":0,"end":0,"length":0,"parent_index":0},"implemented":false,"statements":[]}},{"id":450,"node_type":47,"src":{"id":451,"line":163,"column":12,"start":5351,"end":5371,"length":21,"parent_index":415},"function_return_parameters":415,"expression":{"id":452,"node_type":60,"src":{"id":453,"line":163,"column":19,"start":5358,"end":5370,"length":13,"parent_index":415},"is_constant":false,"is_pure":true,"components":[{"id":454,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":455,"line":163,"column":20,"start":5359,"end":5362,"length":4,"parent_index":452},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},{"id":456,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":457,"line":163,"column":26,"start":5365,"end":5369,"length":5,"parent_index":452},"operator":5,"left_expression":{"id":458,"node_type":16,"src":{"id":459,"line":163,"column":26,"start":5365,"end":5365,"length":1,"parent_index":456},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":458,"is_pure":false},"right_expression":{"id":460,"node_type":16,"src":{"id":461,"line":163,"column":30,"start":5369,"end":5369,"length":1,"parent_index":456},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":460,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}],"type_description":{"type_identifier":"t_tuple_$_t_bool_$_t_uint256$","type_string":"tuple(bool,uint256)"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":417,"node_type":43,"src":{"id":418,"line":160,"column":20,"start":5214,"end":5233,"length":20,"parent_index":415},"parameters":[{"id":419,"node_type":44,"src":{"id":420,"line":160,"column":20,"start":5214,"end":5222,"length":9,"parent_index":417},"scope":415,"name":"a","type_name":{"id":421,"node_type":30,"src":{"id":422,"line":160,"column":20,"start":5214,"end":5220,"length":7,"parent_index":419},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":423,"node_type":44,"src":{"id":424,"line":160,"column":31,"start":5225,"end":5233,"length":9,"parent_index":417},"scope":415,"name":"b","type_name":{"id":425,"node_type":30,"src":{"id":426,"line":160,"column":31,"start":5225,"end":5231,"length":7,"parent_index":423},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":427,"node_type":43,"src":{"id":428,"line":160,"column":65,"start":5259,"end":5271,"length":13,"parent_index":415},"parameters":[{"id":429,"node_type":44,"src":{"id":430,"line":160,"column":65,"start":5259,"end":5262,"length":4,"parent_index":427},"scope":415,"name":"","type_name":{"id":431,"node_type":30,"src":{"id":432,"line":160,"column":65,"start":5259,"end":5262,"length":4,"parent_index":429},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":433,"node_type":44,"src":{"id":434,"line":160,"column":71,"start":5265,"end":5271,"length":7,"parent_index":427},"scope":415,"name":"","type_name":{"id":435,"node_type":30,"src":{"id":436,"line":160,"column":71,"start":5265,"end":5271,"length":7,"parent_index":433},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256","type_string":"function(uint256,uint256)"}},{"id":463,"name":"add","node_type":42,"kind":41,"src":{"id":464,"line":177,"column":4,"start":5623,"end":5718,"length":96,"parent_index":192},"body":{"id":481,"node_type":46,"kind":0,"src":{"id":482,"line":177,"column":71,"start":5690,"end":5718,"length":29,"parent_index":463},"implemented":true,"statements":[{"id":483,"node_type":47,"src":{"id":484,"line":178,"column":8,"start":5700,"end":5712,"length":13,"parent_index":463},"function_return_parameters":463,"expression":{"id":485,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":486,"line":178,"column":15,"start":5707,"end":5711,"length":5,"parent_index":481},"operator":1,"left_expression":{"id":487,"node_type":16,"src":{"id":488,"line":178,"column":15,"start":5707,"end":5707,"length":1,"parent_index":485},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":487,"is_pure":false},"right_expression":{"id":489,"node_type":16,"src":{"id":490,"line":178,"column":19,"start":5711,"end":5711,"length":1,"parent_index":485},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":489,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":465,"node_type":43,"src":{"id":466,"line":177,"column":17,"start":5636,"end":5655,"length":20,"parent_index":463},"parameters":[{"id":467,"node_type":44,"src":{"id":468,"line":177,"column":17,"start":5636,"end":5644,"length":9,"parent_index":465},"scope":463,"name":"a","type_name":{"id":469,"node_type":30,"src":{"id":470,"line":177,"column":17,"start":5636,"end":5642,"length":7,"parent_index":467},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":471,"node_type":44,"src":{"id":472,"line":177,"column":28,"start":5647,"end":5655,"length":9,"parent_index":465},"scope":463,"name":"b","type_name":{"id":473,"node_type":30,"src":{"id":474,"line":177,"column":28,"start":5647,"end":5653,"length":7,"parent_index":471},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":475,"node_type":43,"src":{"id":476,"line":177,"column":62,"start":5681,"end":5687,"length":7,"parent_index":463},"parameters":[{"id":477,"node_type":44,"src":{"id":478,"line":177,"column":62,"start":5681,"end":5687,"length":7,"parent_index":475},"scope":463,"name":"","type_name":{"id":479,"node_type":30,"src":{"id":480,"line":177,"column":62,"start":5681,"end":5687,"length":7,"parent_index":477},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256","type_string":"function(uint256,uint256)"}},{"id":492,"name":"sub","node_type":42,"kind":41,"src":{"id":493,"line":191,"column":4,"start":5990,"end":6085,"length":96,"parent_index":192},"body":{"id":510,"node_type":46,"kind":0,"src":{"id":511,"line":191,"column":71,"start":6057,"end":6085,"length":29,"parent_index":492},"implemented":true,"statements":[{"id":512,"node_type":47,"src":{"id":513,"line":192,"column":8,"start":6067,"end":6079,"length":13,"parent_index":492},"function_return_parameters":492,"expression":{"id":514,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":515,"line":192,"column":15,"start":6074,"end":6078,"length":5,"parent_index":510},"operator":2,"left_expression":{"id":516,"node_type":16,"src":{"id":517,"line":192,"column":15,"start":6074,"end":6074,"length":1,"parent_index":514},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":516,"is_pure":false},"right_expression":{"id":518,"node_type":16,"src":{"id":519,"line":192,"column":19,"start":6078,"end":6078,"length":1,"parent_index":514},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":518,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":494,"node_type":43,"src":{"id":495,"line":191,"column":17,"start":6003,"end":6022,"length":20,"parent_index":492},"parameters":[{"id":496,"node_type":44,"src":{"id":497,"line":191,"column":17,"start":6003,"end":6011,"length":9,"parent_index":494},"scope":492,"name":"a","type_name":{"id":498,"node_type":30,"src":{"id":499,"line":191,"column":17,"start":6003,"end":6009,"length":7,"parent_index":496},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":500,"node_type":44,"src":{"id":501,"line":191,"column":28,"start":6014,"end":6022,"length":9,"parent_index":494},"scope":492,"name":"b","type_name":{"id":502,"node_type":30,"src":{"id":503,"line":191,"column":28,"start":6014,"end":6020,"length":7,"parent_index":500},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":504,"node_type":43,"src":{"id":505,"line":191,"column":62,"start":6048,"end":6054,"length":7,"parent_index":492},"parameters":[{"id":506,"node_type":44,"src":{"id":507,"line":191,"column":62,"start":6048,"end":6054,"length":7,"parent_index":504},"scope":492,"name":"","type_name":{"id":508,"node_type":30,"src":{"id":509,"line":191,"column":62,"start":6048,"end":6054,"length":7,"parent_index":506},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256","type_string":"function(uint256,uint256)"}},{"id":521,"name":"mul","node_type":42,"kind":41,"src":{"id":522,"line":205,"column":4,"start":6333,"end":6428,"length":96,"parent_index":192},"body":{"id":539,"node_type":46,"kind":0,"src":{"id":540,"line":205,"column":71,"start":6400,"end":6428,"length":29,"parent_index":521},"implemented":true,"statements":[{"id":541,"node_type":47,"src":{"id":542,"line":206,"column":8,"start":6410,"end":6422,"length":13,"parent_index":521},"function_return_parameters":521,"expression":{"id":543,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":544,"line":206,"column":15,"start":6417,"end":6421,"length":5,"parent_index":539},"operator":3,"left_expression":{"id":545,"node_type":16,"src":{"id":546,"line":206,"column":15,"start":6417,"end":6417,"length":1,"parent_index":543},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":545,"is_pure":false},"right_expression":{"id":547,"node_type":16,"src":{"id":548,"line":206,"column":19,"start":6421,"end":6421,"length":1,"parent_index":543},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":547,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":523,"node_type":43,"src":{"id":524,"line":205,"column":17,"start":6346,"end":6365,"length":20,"parent_index":521},"parameters":[{"id":525,"node_type":44,"src":{"id":526,"line":205,"column":17,"start":6346,"end":6354,"length":9,"parent_index":523},"scope":521,"name":"a","type_name":{"id":527,"node_type":30,"src":{"id":528,"line":205,"column":17,"start":6346,"end":6352,"length":7,"parent_index":525},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":529,"node_type":44,"src":{"id":530,"line":205,"column":28,"start":6357,"end":6365,"length":9,"parent_index":523},"scope":521,"name":"b","type_name":{"id":531,"node_type":30,"src":{"id":532,"line":205,"column":28,"start":6357,"end":6363,"length":7,"parent_index":529},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":533,"node_type":43,"src":{"id":534,"line":205,"column":62,"start":6391,"end":6397,"length":7,"parent_index":521},"parameters":[{"id":535,"node_type":44,"src":{"id":536,"line":205,"column":62,"start":6391,"end":6397,"length":7,"parent_index":533},"scope":521,"name":"","type_name":{"id":537,"node_type":30,"src":{"id":538,"line":205,"column":62,"start":6391,"end":6397,"length":7,"parent_index":535},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256","type_string":"function(uint256,uint256)"}},{"id":550,"name":"div","node_type":42,"kind":41,"src":{"id":551,"line":221,"column":4,"start":6893,"end":6988,"length":96,"parent_index":192},"body":{"id":568,"node_type":46,"kind":0,"src":{"id":569,"line":221,"column":71,"start":6960,"end":6988,"length":29,"parent_index":550},"implemented":true,"statements":[{"id":570,"node_type":47,"src":{"id":571,"line":222,"column":8,"start":6970,"end":6982,"length":13,"parent_index":550},"function_return_parameters":550,"expression":{"id":572,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":573,"line":222,"column":15,"start":6977,"end":6981,"length":5,"parent_index":568},"operator":4,"left_expression":{"id":574,"node_type":16,"src":{"id":575,"line":222,"column":15,"start":6977,"end":6977,"length":1,"parent_index":572},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":574,"is_pure":false},"right_expression":{"id":576,"node_type":16,"src":{"id":577,"line":222,"column":19,"start":6981,"end":6981,"length":1,"parent_index":572},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":576,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":552,"node_type":43,"src":{"id":553,"line":221,"column":17,"start":6906,"end":6925,"length":20,"parent_index":550},"parameters":[{"id":554,"node_type":44,"src":{"id":555,"line":221,"column":17,"start":6906,"end":6914,"length":9,"parent_index":552},"scope":550,"name":"a","type_name":{"id":556,"node_type":30,"src":{"id":557,"line":221,"column":17,"start":6906,"end":6912,"length":7,"parent_index":554},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":558,"node_type":44,"src":{"id":559,"line":221,"column":28,"start":6917,"end":6925,"length":9,"parent_index":552},"scope":550,"name":"b","type_name":{"id":560,"node_type":30,"src":{"id":561,"line":221,"column":28,"start":6917,"end":6923,"length":7,"parent_index":558},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":562,"node_type":43,"src":{"id":563,"line":221,"column":62,"start":6951,"end":6957,"length":7,"parent_index":550},"parameters":[{"id":564,"node_type":44,"src":{"id":565,"line":221,"column":62,"start":6951,"end":6957,"length":7,"parent_index":562},"scope":550,"name":"","type_name":{"id":566,"node_type":30,"src":{"id":567,"line":221,"column":62,"start":6951,"end":6957,"length":7,"parent_index":564},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256","type_string":"function(uint256,uint256)"}},{"id":579,"name":"mod","node_type":42,"kind":41,"src":{"id":580,"line":237,"column":4,"start":7442,"end":7537,"length":96,"parent_index":192},"body":{"id":597,"node_type":46,"kind":0,"src":{"id":598,"line":237,"column":71,"start":7509,"end":7537,"length":29,"parent_index":579},"implemented":true,"statements":[{"id":599,"node_type":47,"src":{"id":600,"line":238,"column":8,"start":7519,"end":7531,"length":13,"parent_index":579},"function_return_parameters":579,"expression":{"id":601,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":602,"line":238,"column":15,"start":7526,"end":7530,"length":5,"parent_index":597},"operator":5,"left_expression":{"id":603,"node_type":16,"src":{"id":604,"line":238,"column":15,"start":7526,"end":7526,"length":1,"parent_index":601},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":603,"is_pure":false},"right_expression":{"id":605,"node_type":16,"src":{"id":606,"line":238,"column":19,"start":7530,"end":7530,"length":1,"parent_index":601},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":605,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":581,"node_type":43,"src":{"id":582,"line":237,"column":17,"start":7455,"end":7474,"length":20,"parent_index":579},"parameters":[{"id":583,"node_type":44,"src":{"id":584,"line":237,"column":17,"start":7455,"end":7463,"length":9,"parent_index":581},"scope":579,"name":"a","type_name":{"id":585,"node_type":30,"src":{"id":586,"line":237,"column":17,"start":7455,"end":7461,"length":7,"parent_index":583},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":587,"node_type":44,"src":{"id":588,"line":237,"column":28,"start":7466,"end":7474,"length":9,"parent_index":581},"scope":579,"name":"b","type_name":{"id":589,"node_type":30,"src":{"id":590,"line":237,"column":28,"start":7466,"end":7472,"length":7,"parent_index":587},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":591,"node_type":43,"src":{"id":592,"line":237,"column":62,"start":7500,"end":7506,"length":7,"parent_index":579},"parameters":[{"id":593,"node_type":44,"src":{"id":594,"line":237,"column":62,"start":7500,"end":7506,"length":7,"parent_index":591},"scope":579,"name":"","type_name":{"id":595,"node_type":30,"src":{"id":596,"line":237,"column":62,"start":7500,"end":7506,"length":7,"parent_index":593},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256","type_string":"function(uint256,uint256)"}},{"id":608,"name":"sub","node_type":42,"kind":41,"src":{"id":609,"line":254,"column":4,"start":8002,"end":8232,"length":231,"parent_index":192},"body":{"id":630,"node_type":46,"kind":0,"src":{"id":631,"line":258,"column":38,"start":8127,"end":8232,"length":106,"parent_index":608},"implemented":true,"statements":[{"id":632,"node_type":59,"kind":0,"src":{"id":633,"line":259,"column":8,"start":8137,"end":8226,"length":90,"parent_index":192},"implemented":false,"statements":[{"id":634,"node_type":24,"kind":24,"src":{"id":635,"line":260,"column":12,"start":8161,"end":8189,"length":29,"parent_index":632},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":636,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":637,"line":260,"column":20,"start":8169,"end":8174,"length":6,"parent_index":634},"operator":10,"left_expression":{"id":638,"node_type":16,"src":{"id":639,"line":260,"column":20,"start":8169,"end":8169,"length":1,"parent_index":636},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":638,"is_pure":false},"right_expression":{"id":640,"node_type":16,"src":{"id":641,"line":260,"column":25,"start":8174,"end":8174,"length":1,"parent_index":636},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":640,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":642,"node_type":16,"src":{"id":643,"line":260,"column":28,"start":8177,"end":8188,"length":12,"parent_index":634},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":642,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":644,"node_type":16,"src":{"id":645,"line":260,"column":12,"start":8161,"end":8167,"length":7,"parent_index":634},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string","type_string":"function(bool,string)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string","type_string":"string"}]},"type_description":{"type_identifier":"t_function_$_t_bool$$_t_string$","type_string":"function(bool,string)"}},{"id":646,"node_type":47,"src":{"id":647,"line":261,"column":12,"start":8204,"end":8216,"length":13,"parent_index":608},"function_return_parameters":608,"expression":{"id":648,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":649,"line":261,"column":19,"start":8211,"end":8215,"length":5,"parent_index":632},"operator":2,"left_expression":{"id":650,"node_type":16,"src":{"id":651,"line":261,"column":19,"start":8211,"end":8211,"length":1,"parent_index":648},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":650,"is_pure":false},"right_expression":{"id":652,"node_type":16,"src":{"id":653,"line":261,"column":23,"start":8215,"end":8215,"length":1,"parent_index":648},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":652,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":610,"node_type":43,"src":{"id":611,"line":255,"column":8,"start":8024,"end":8087,"length":64,"parent_index":608},"parameters":[{"id":612,"node_type":44,"src":{"id":613,"line":255,"column":8,"start":8024,"end":8032,"length":9,"parent_index":610},"scope":608,"name":"a","type_name":{"id":614,"node_type":30,"src":{"id":615,"line":255,"column":8,"start":8024,"end":8030,"length":7,"parent_index":612},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":616,"node_type":44,"src":{"id":617,"line":256,"column":8,"start":8043,"end":8051,"length":9,"parent_index":610},"scope":608,"name":"b","type_name":{"id":618,"node_type":30,"src":{"id":619,"line":256,"column":8,"start":8043,"end":8049,"length":7,"parent_index":616},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":620,"node_type":44,"src":{"id":621,"line":257,"column":8,"start":8062,"end":8087,"length":26,"parent_index":610},"scope":608,"name":"errorMessage","type_name":{"id":622,"node_type":30,"src":{"id":623,"line":257,"column":8,"start":8062,"end":8067,"length":6,"parent_index":620},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":624,"node_type":43,"src":{"id":625,"line":258,"column":29,"start":8118,"end":8124,"length":7,"parent_index":608},"parameters":[{"id":626,"node_type":44,"src":{"id":627,"line":258,"column":29,"start":8118,"end":8124,"length":7,"parent_index":624},"scope":608,"name":"","type_name":{"id":628,"node_type":30,"src":{"id":629,"line":258,"column":29,"start":8118,"end":8124,"length":7,"parent_index":626},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256$$_t_string","type_string":"function(uint256,uint256,string)"}},{"id":655,"name":"div","node_type":42,"kind":41,"src":{"id":656,"line":277,"column":4,"start":8717,"end":8946,"length":230,"parent_index":192},"body":{"id":677,"node_type":46,"kind":0,"src":{"id":678,"line":281,"column":38,"start":8842,"end":8946,"length":105,"parent_index":655},"implemented":true,"statements":[{"id":679,"node_type":59,"kind":0,"src":{"id":680,"line":282,"column":8,"start":8852,"end":8940,"length":89,"parent_index":192},"implemented":false,"statements":[{"id":681,"node_type":24,"kind":24,"src":{"id":682,"line":283,"column":12,"start":8876,"end":8903,"length":28,"parent_index":679},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":683,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":684,"line":283,"column":20,"start":8884,"end":8888,"length":5,"parent_index":681},"operator":7,"left_expression":{"id":685,"node_type":16,"src":{"id":686,"line":283,"column":20,"start":8884,"end":8884,"length":1,"parent_index":683},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":685,"is_pure":false},"right_expression":{"id":687,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":688,"line":283,"column":24,"start":8888,"end":8888,"length":1,"parent_index":683},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":689,"node_type":16,"src":{"id":690,"line":283,"column":27,"start":8891,"end":8902,"length":12,"parent_index":681},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":689,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":691,"node_type":16,"src":{"id":692,"line":283,"column":12,"start":8876,"end":8882,"length":7,"parent_index":681},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string","type_string":"function(bool,string)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string","type_string":"string"}]},"type_description":{"type_identifier":"t_function_$_t_bool$$_t_string$","type_string":"function(bool,string)"}},{"id":693,"node_type":47,"src":{"id":694,"line":284,"column":12,"start":8918,"end":8930,"length":13,"parent_index":655},"function_return_parameters":655,"expression":{"id":695,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":696,"line":284,"column":19,"start":8925,"end":8929,"length":5,"parent_index":679},"operator":4,"left_expression":{"id":697,"node_type":16,"src":{"id":698,"line":284,"column":19,"start":8925,"end":8925,"length":1,"parent_index":695},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":697,"is_pure":false},"right_expression":{"id":699,"node_type":16,"src":{"id":700,"line":284,"column":23,"start":8929,"end":8929,"length":1,"parent_index":695},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":699,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":657,"node_type":43,"src":{"id":658,"line":278,"column":8,"start":8739,"end":8802,"length":64,"parent_index":655},"parameters":[{"id":659,"node_type":44,"src":{"id":660,"line":278,"column":8,"start":8739,"end":8747,"length":9,"parent_index":657},"scope":655,"name":"a","type_name":{"id":661,"node_type":30,"src":{"id":662,"line":278,"column":8,"start":8739,"end":8745,"length":7,"parent_index":659},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":663,"node_type":44,"src":{"id":664,"line":279,"column":8,"start":8758,"end":8766,"length":9,"parent_index":657},"scope":655,"name":"b","type_name":{"id":665,"node_type":30,"src":{"id":666,"line":279,"column":8,"start":8758,"end":8764,"length":7,"parent_index":663},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":667,"node_type":44,"src":{"id":668,"line":280,"column":8,"start":8777,"end":8802,"length":26,"parent_index":657},"scope":655,"name":"errorMessage","type_name":{"id":669,"node_type":30,"src":{"id":670,"line":280,"column":8,"start":8777,"end":8782,"length":6,"parent_index":667},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":671,"node_type":43,"src":{"id":672,"line":281,"column":29,"start":8833,"end":8839,"length":7,"parent_index":655},"parameters":[{"id":673,"node_type":44,"src":{"id":674,"line":281,"column":29,"start":8833,"end":8839,"length":7,"parent_index":671},"scope":655,"name":"","type_name":{"id":675,"node_type":30,"src":{"id":676,"line":281,"column":29,"start":8833,"end":8839,"length":7,"parent_index":673},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256$$_t_string","type_string":"function(uint256,uint256,string)"}},{"id":702,"name":"mod","node_type":42,"kind":41,"src":{"id":703,"line":303,"column":4,"start":9593,"end":9822,"length":230,"parent_index":192},"body":{"id":724,"node_type":46,"kind":0,"src":{"id":725,"line":307,"column":38,"start":9718,"end":9822,"length":105,"parent_index":702},"implemented":true,"statements":[{"id":726,"node_type":59,"kind":0,"src":{"id":727,"line":308,"column":8,"start":9728,"end":9816,"length":89,"parent_index":192},"implemented":false,"statements":[{"id":728,"node_type":24,"kind":24,"src":{"id":729,"line":309,"column":12,"start":9752,"end":9779,"length":28,"parent_index":726},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":730,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":731,"line":309,"column":20,"start":9760,"end":9764,"length":5,"parent_index":728},"operator":7,"left_expression":{"id":732,"node_type":16,"src":{"id":733,"line":309,"column":20,"start":9760,"end":9760,"length":1,"parent_index":730},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":732,"is_pure":false},"right_expression":{"id":734,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":735,"line":309,"column":24,"start":9764,"end":9764,"length":1,"parent_index":730},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":736,"node_type":16,"src":{"id":737,"line":309,"column":27,"start":9767,"end":9778,"length":12,"parent_index":728},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":736,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":738,"node_type":16,"src":{"id":739,"line":309,"column":12,"start":9752,"end":9758,"length":7,"parent_index":728},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string","type_string":"function(bool,string)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string","type_string":"string"}]},"type_description":{"type_identifier":"t_function_$_t_bool$$_t_string$","type_string":"function(bool,string)"}},{"id":740,"node_type":47,"src":{"id":741,"line":310,"column":12,"start":9794,"end":9806,"length":13,"parent_index":702},"function_return_parameters":702,"expression":{"id":742,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":743,"line":310,"column":19,"start":9801,"end":9805,"length":5,"parent_index":726},"operator":5,"left_expression":{"id":744,"node_type":16,"src":{"id":745,"line":310,"column":19,"start":9801,"end":9801,"length":1,"parent_index":742},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":744,"is_pure":false},"right_expression":{"id":746,"node_type":16,"src":{"id":747,"line":310,"column":23,"start":9805,"end":9805,"length":1,"parent_index":742},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":746,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":704,"node_type":43,"src":{"id":705,"line":304,"column":8,"start":9615,"end":9678,"length":64,"parent_index":702},"parameters":[{"id":706,"node_type":44,"src":{"id":707,"line":304,"column":8,"start":9615,"end":9623,"length":9,"parent_index":704},"scope":702,"name":"a","type_name":{"id":708,"node_type":30,"src":{"id":709,"line":304,"column":8,"start":9615,"end":9621,"length":7,"parent_index":706},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":710,"node_type":44,"src":{"id":711,"line":305,"column":8,"start":9634,"end":9642,"length":9,"parent_index":704},"scope":702,"name":"b","type_name":{"id":712,"node_type":30,"src":{"id":713,"line":305,"column":8,"start":9634,"end":9640,"length":7,"parent_index":710},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":714,"node_type":44,"src":{"id":715,"line":306,"column":8,"start":9653,"end":9678,"length":26,"parent_index":704},"scope":702,"name":"errorMessage","type_name":{"id":716,"node_type":30,"src":{"id":717,"line":306,"column":8,"start":9653,"end":9658,"length":6,"parent_index":714},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":718,"node_type":43,"src":{"id":719,"line":307,"column":29,"start":9709,"end":9715,"length":7,"parent_index":702},"parameters":[{"id":720,"node_type":44,"src":{"id":721,"line":307,"column":29,"start":9709,"end":9715,"length":7,"parent_index":718},"scope":702,"name":"","type_name":{"id":722,"node_type":30,"src":{"id":723,"line":307,"column":29,"start":9709,"end":9715,"length":7,"parent_index":720},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256$$_t_string","type_string":"function(uint256,uint256,string)"}}],"linearized_base_contracts":[192],"base_contracts":[],"contract_dependencies":[],"scope":186}],"src":{"id":187,"line":100,"column":0,"start":3349,"end":9824,"length":6476,"parent_index":30}},{"id":748,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":748,"name":"TokenSale","absolute_path":"TokenSale.sol"},{"id":186,"name":"SafeMath","absolute_path":"SafeMath.sol"},{"id":31,"name":"IERC20","absolute_path":"IERC20.sol"}],"absolute_path":"TokenSale.sol","name":"TokenSale","node_type":1,"nodes":[{"id":754,"node_type":10,"src":{"id":755,"line":316,"column":0,"start":9859,"end":9881,"length":23,"parent_index":748},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":756,"node_type":29,"src":{"id":0,"line":318,"column":0,"start":9884,"end":9905,"length":22,"parent_index":748},"absolute_path":"IERC20.sol","file":"./IERC20.sol","scope":748,"unit_alias":"","source_unit":186},{"id":757,"node_type":29,"src":{"id":0,"line":319,"column":0,"start":9907,"end":9930,"length":24,"parent_index":748},"absolute_path":"SafeMath.sol","file":"./SafeMath.sol","scope":748,"unit_alias":"","source_unit":186},{"id":758,"name":"TokenSale","node_type":35,"src":{"id":0,"line":321,"column":0,"start":9933,"end":10520,"length":588,"parent_index":748},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":760,"node_type":51,"src":{"id":761,"line":322,"column":0,"start":9958,"end":9984,"length":27,"parent_index":758},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"type_name":{"id":762,"node_type":30,"src":{"id":763,"line":322,"column":23,"start":9977,"end":9983,"length":7,"parent_index":760},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"library_name":{"id":764,"node_type":52,"src":{"id":765,"line":322,"column":0,"start":9964,"end":9971,"length":8,"parent_index":760},"name":"SafeMath","referenced_declaration":186}},{"id":767,"name":"token","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":768,"line":324,"column":4,"start":9991,"end":10011,"length":21,"parent_index":758},"scope":758,"type_description":{"type_identifier":"t_contract$_IERC20_$31","type_string":"contract IERC20"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":769,"node_type":69,"src":{"id":770,"line":324,"column":4,"start":9991,"end":9996,"length":6,"parent_index":767},"type_description":{"type_identifier":"t_contract$_IERC20_$31","type_string":"contract IERC20"},"path_node":{"id":771,"name":"IERC20","node_type":52,"referenced_declaration":31,"src":{"id":772,"line":324,"column":4,"start":9991,"end":9996,"length":6,"parent_index":769}},"referenced_declaration":31}},{"id":774,"name":"owner","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":775,"line":325,"column":4,"start":10017,"end":10038,"length":22,"parent_index":758},"scope":758,"type_description":{"type_identifier":"t_address","type_string":"address"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":776,"node_type":30,"src":{"id":777,"line":325,"column":4,"start":10017,"end":10023,"length":7,"parent_index":774},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0}},{"id":779,"name":"tokenPrice","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":780,"line":326,"column":4,"start":10044,"end":10070,"length":27,"parent_index":758},"scope":758,"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":781,"node_type":30,"src":{"id":782,"line":326,"column":4,"start":10044,"end":10050,"length":7,"parent_index":779},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0}},{"id":784,"node_type":57,"src":{"id":785,"line":328,"column":4,"start":10077,"end":10129,"length":53,"parent_index":758},"parameters":{"id":786,"node_type":43,"src":{"id":785,"line":328,"column":4,"start":10077,"end":10129,"length":53,"parent_index":784},"parameters":[{"id":787,"node_type":44,"src":{"id":788,"line":328,"column":26,"start":10099,"end":10111,"length":13,"parent_index":786},"scope":784,"name":"buyer","type_name":{"id":789,"node_type":30,"src":{"id":790,"line":328,"column":26,"start":10099,"end":10105,"length":7,"parent_index":787},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":791,"node_type":44,"src":{"id":792,"line":328,"column":41,"start":10114,"end":10127,"length":14,"parent_index":786},"scope":784,"name":"amount","type_name":{"id":793,"node_type":30,"src":{"id":794,"line":328,"column":41,"start":10114,"end":10120,"length":7,"parent_index":791},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"name":"TokensPurchased","anonymous":false},{"id":796,"node_type":42,"src":{"id":797,"line":330,"column":4,"start":10136,"end":10299,"length":164,"parent_index":758},"kind":11,"state_mutability":4,"visibility":1,"implemented":true,"modifiers":[],"parameters":{"id":798,"node_type":43,"src":{"id":799,"line":330,"column":16,"start":10148,"end":10189,"length":42,"parent_index":796},"parameters":[{"id":800,"node_type":44,"src":{"id":801,"line":330,"column":16,"start":10148,"end":10168,"length":21,"parent_index":798},"scope":796,"name":"_tokenAddress","type_name":{"id":802,"node_type":30,"src":{"id":803,"line":330,"column":16,"start":10148,"end":10154,"length":7,"parent_index":800},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":804,"node_type":44,"src":{"id":805,"line":330,"column":39,"start":10171,"end":10189,"length":19,"parent_index":798},"scope":796,"name":"_tokenPrice","type_name":{"id":806,"node_type":30,"src":{"id":807,"line":330,"column":39,"start":10171,"end":10177,"length":7,"parent_index":804},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":808,"node_type":43,"src":{"id":797,"line":330,"column":4,"start":10136,"end":10299,"length":164,"parent_index":796},"parameters":[],"parameter_types":[]},"scope":758,"body":{"id":809,"node_type":46,"kind":0,"src":{"id":810,"line":330,"column":60,"start":10192,"end":10299,"length":108,"parent_index":796},"implemented":true,"statements":[{"id":811,"node_type":81,"src":{"id":812,"line":331,"column":8,"start":10202,"end":10231,"length":30,"parent_index":809},"expression":{"id":813,"node_type":27,"src":{"id":814,"line":331,"column":8,"start":10202,"end":10230,"length":29,"parent_index":809},"operator":11,"left_expression":{"id":815,"node_type":16,"src":{"id":816,"line":331,"column":8,"start":10202,"end":10206,"length":5,"parent_index":813},"name":"token","type_description":{"type_identifier":"t_contract$_IERC20_$31","type_string":"contract IERC20"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"right_expression":{"id":817,"node_type":24,"kind":24,"src":{"id":818,"line":331,"column":16,"start":10210,"end":10230,"length":21,"parent_index":813},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":819,"node_type":16,"src":{"id":820,"line":331,"column":23,"start":10217,"end":10229,"length":13,"parent_index":817},"name":"_tokenAddress","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":819,"is_pure":false}],"expression":{"id":821,"node_type":16,"src":{"id":822,"line":331,"column":16,"start":10210,"end":10215,"length":6,"parent_index":817},"name":"IERC20","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"type_description":{"type_identifier":"t_contract$_IERC20_$31","type_string":"contract IERC20"}}},{"id":823,"node_type":81,"src":{"id":824,"line":332,"column":8,"start":10241,"end":10259,"length":19,"parent_index":809},"expression":{"id":825,"node_type":27,"src":{"id":826,"line":332,"column":8,"start":10241,"end":10258,"length":18,"parent_index":809},"operator":11,"left_expression":{"id":827,"node_type":16,"src":{"id":828,"line":332,"column":8,"start":10241,"end":10245,"length":5,"parent_index":825},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":774,"is_pure":false},"right_expression":{"id":829,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":830,"line":332,"column":16,"start":10249,"end":10258,"length":10,"parent_index":825},"expression":{"id":831,"node_type":16,"src":{"id":832,"line":332,"column":16,"start":10249,"end":10251,"length":3,"parent_index":829},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_address","type_string":"address"}}},{"id":833,"node_type":81,"src":{"id":834,"line":333,"column":8,"start":10269,"end":10293,"length":25,"parent_index":809},"expression":{"id":835,"node_type":27,"src":{"id":836,"line":333,"column":8,"start":10269,"end":10292,"length":24,"parent_index":809},"operator":11,"left_expression":{"id":837,"node_type":16,"src":{"id":838,"line":333,"column":8,"start":10269,"end":10278,"length":10,"parent_index":835},"name":"tokenPrice","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":779,"is_pure":false},"right_expression":{"id":839,"node_type":16,"src":{"id":840,"line":333,"column":21,"start":10282,"end":10292,"length":11,"parent_index":835},"name":"_tokenPrice","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":839,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]}},{"id":842,"name":"buyTokens","node_type":42,"kind":41,"src":{"id":843,"line":336,"column":4,"start":10306,"end":10518,"length":213,"parent_index":758},"body":{"id":851,"node_type":46,"kind":0,"src":{"id":852,"line":336,"column":49,"start":10351,"end":10518,"length":168,"parent_index":842},"implemented":true,"statements":[{"id":853,"node_type":44,"src":{"id":854,"line":337,"column":8,"start":10361,"end":10405,"length":45,"parent_index":851},"assignments":[855],"declarations":[{"is_constant":false,"id":855,"state_mutability":1,"name":"totalPrice","node_type":44,"scope":851,"src":{"id":856,"line":337,"column":8,"start":10361,"end":10378,"length":18,"parent_index":853},"is_state_variable":false,"storage_location":1,"type_name":{"id":857,"node_type":30,"src":{"id":858,"line":337,"column":8,"start":10361,"end":10367,"length":7,"parent_index":855},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":859,"node_type":24,"kind":24,"src":{"id":860,"line":337,"column":29,"start":10382,"end":10404,"length":23,"parent_index":853},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"arguments":[{"id":861,"node_type":16,"src":{"id":862,"line":337,"column":41,"start":10394,"end":10403,"length":10,"parent_index":859},"name":"tokenPrice","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":863,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":864,"line":337,"column":29,"start":10382,"end":10392,"length":11,"parent_index":859},"expression":{"id":865,"node_type":16,"src":{"id":866,"line":337,"column":29,"start":10382,"end":10388,"length":7,"parent_index":863},"name":"_amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":865,"is_pure":false},"member_name":"mul","argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}},{"id":867,"node_type":24,"kind":24,"src":{"id":868,"line":338,"column":8,"start":10415,"end":10460,"length":46,"parent_index":851},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":869,"node_type":16,"src":{"id":870,"line":338,"column":27,"start":10434,"end":10438,"length":5,"parent_index":867},"name":"owner","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":871,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":872,"line":338,"column":34,"start":10441,"end":10450,"length":10,"parent_index":867},"expression":{"id":873,"node_type":16,"src":{"id":874,"line":338,"column":34,"start":10441,"end":10443,"length":3,"parent_index":871},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"type_description":{"type_identifier":"t_address","type_string":"address"}},{"id":875,"node_type":16,"src":{"id":876,"line":338,"column":46,"start":10453,"end":10459,"length":7,"parent_index":867},"name":"_amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":875,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":877,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":878,"line":338,"column":8,"start":10415,"end":10432,"length":18,"parent_index":867},"expression":{"id":879,"node_type":16,"src":{"id":880,"line":338,"column":8,"start":10415,"end":10419,"length":5,"parent_index":877},"name":"token","type_description":{"type_identifier":"t_contract$_IERC20_$31","type_string":"contract IERC20"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"member_name":"transferFrom","argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_contract$_IERC20_$31","type_string":"contract IERC20"}},"type_description":{"type_identifier":"t_function_$_t_function_$$_t_address$$_t_uint256$","type_string":"function(function(),address,uint256)"}},{"id":881,"node_type":64,"src":{"id":882,"line":339,"column":8,"start":10471,"end":10512,"length":42,"parent_index":842},"arguments":[{"id":883,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":884,"line":339,"column":29,"start":10492,"end":10501,"length":10,"parent_index":851},"expression":{"id":885,"node_type":16,"src":{"id":886,"line":339,"column":29,"start":10492,"end":10494,"length":3,"parent_index":883},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},{"id":887,"node_type":16,"src":{"id":888,"line":339,"column":41,"start":10504,"end":10510,"length":7,"parent_index":851},"name":"_amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":887,"is_pure":false}],"expression":{"id":889,"node_type":16,"src":{"id":890,"line":339,"column":13,"start":10476,"end":10490,"length":15,"parent_index":851},"name":"TokensPurchased","type_description":{"type_identifier":"t_event\u0026_TokenSale_TokensPurchased_\u0026784","type_string":"event TokenSale.TokensPurchased"},"overloaded_declarations":[],"referenced_declaration":784,"is_pure":false}}]},"implemented":true,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":844,"node_type":43,"src":{"id":845,"line":336,"column":23,"start":10325,"end":10339,"length":15,"parent_index":842},"parameters":[{"id":846,"node_type":44,"src":{"id":847,"line":336,"column":23,"start":10325,"end":10339,"length":15,"parent_index":844},"scope":842,"name":"_amount","type_name":{"id":848,"node_type":30,"src":{"id":849,"line":336,"column":23,"start":10325,"end":10331,"length":7,"parent_index":846},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":850,"node_type":43,"src":{"id":843,"line":336,"column":4,"start":10306,"end":10518,"length":213,"parent_index":842},"parameters":[],"parameter_types":[]},"scope":758,"type_description":{"type_identifier":"t_function_$_t_uint256","type_string":"function(uint256)"}}],"linearized_base_contracts":[758,756,757],"base_contracts":[],"contract_dependencies":[756,757]}],"src":{"id":749,"line":321,"column":0,"start":9933,"end":10520,"length":588,"parent_index":30}}],"comments":[{"id":1,"src":{"id":0,"line":1,"column":0,"start":0,"end":30,"length":31,"parent_index":2},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":2,"src":{"id":0,"line":5,"column":0,"start":58,"end":127,"length":70,"parent_index":3},"node_type":32,"text":"/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */"},{"id":3,"src":{"id":0,"line":9,"column":4,"start":152,"end":217,"length":66,"parent_index":4},"node_type":32,"text":"/**\n * @dev Returns the amount of tokens in existence.\n */"},{"id":4,"src":{"id":0,"line":14,"column":4,"start":284,"end":355,"length":72,"parent_index":5},"node_type":32,"text":"/**\n * @dev Returns the amount of tokens owned by `account`.\n */"},{"id":5,"src":{"id":0,"line":19,"column":4,"start":435,"end":643,"length":209,"parent_index":6},"node_type":32,"text":"/**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */"},{"id":6,"src":{"id":0,"line":28,"column":4,"start":732,"end":995,"length":264,"parent_index":7},"node_type":32,"text":"/**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */"},{"id":7,"src":{"id":0,"line":37,"column":4,"start":1090,"end":1731,"length":642,"parent_index":8},"node_type":32,"text":"/**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race condition\n * is to first reduce the spender's allowance to 0 and set the desired value\n * afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */"},{"id":8,"src":{"id":0,"line":53,"column":4,"start":1817,"end":2112,"length":296,"parent_index":9},"node_type":32,"text":"/**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */"},{"id":9,"src":{"id":0,"line":68,"column":4,"start":2251,"end":2408,"length":158,"parent_index":10},"node_type":32,"text":"/**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */"},{"id":10,"src":{"id":0,"line":76,"column":4,"start":2492,"end":2639,"length":148,"parent_index":11},"node_type":32,"text":"/**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */"},{"id":11,"src":{"id":0,"line":83,"column":0,"start":2727,"end":2757,"length":31,"parent_index":12},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":12,"src":{"id":0,"line":87,"column":0,"start":2785,"end":3347,"length":563,"parent_index":13},"node_type":32,"text":"/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */"},{"id":13,"src":{"id":0,"line":101,"column":4,"start":3372,"end":3502,"length":131,"parent_index":14},"node_type":32,"text":"/**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */"},{"id":14,"src":{"id":0,"line":114,"column":4,"start":3730,"end":3864,"length":135,"parent_index":15},"node_type":32,"text":"/**\n * @dev Returns the substraction of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */"},{"id":15,"src":{"id":0,"line":126,"column":4,"start":4065,"end":4201,"length":137,"parent_index":16},"node_type":32,"text":"/**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */"},{"id":16,"src":{"id":0,"line":133,"column":12,"start":4317,"end":4395,"length":79,"parent_index":17},"node_type":31,"text":"// Gas optimization: this is cheaper than requiring 'a' not being zero, but the"},{"id":17,"src":{"id":0,"line":134,"column":12,"start":4409,"end":4449,"length":41,"parent_index":18},"node_type":31,"text":"// benefit is lost if 'b' is also tested."},{"id":18,"src":{"id":0,"line":135,"column":12,"start":4463,"end":4533,"length":71,"parent_index":19},"node_type":31,"text":"// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522"},{"id":19,"src":{"id":0,"line":143,"column":4,"start":4706,"end":4843,"length":138,"parent_index":20},"node_type":32,"text":"/**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */"},{"id":20,"src":{"id":0,"line":155,"column":4,"start":5045,"end":5192,"length":148,"parent_index":21},"node_type":32,"text":"/**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */"},{"id":21,"src":{"id":0,"line":167,"column":4,"start":5394,"end":5617,"length":224,"parent_index":22},"node_type":32,"text":"/**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */"},{"id":22,"src":{"id":0,"line":181,"column":4,"start":5725,"end":5984,"length":260,"parent_index":23},"node_type":32,"text":"/**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */"},{"id":23,"src":{"id":0,"line":195,"column":4,"start":6092,"end":6327,"length":236,"parent_index":24},"node_type":32,"text":"/**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */"},{"id":24,"src":{"id":0,"line":209,"column":4,"start":6435,"end":6887,"length":453,"parent_index":25},"node_type":32,"text":"/**\n * @dev Returns the integer division of two unsigned integers, reverting on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */"},{"id":25,"src":{"id":0,"line":225,"column":4,"start":6995,"end":7436,"length":442,"parent_index":26},"node_type":32,"text":"/**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */"},{"id":26,"src":{"id":0,"line":241,"column":4,"start":7544,"end":7996,"length":453,"parent_index":27},"node_type":32,"text":"/**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {trySub}.\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */"},{"id":27,"src":{"id":0,"line":265,"column":4,"start":8239,"end":8711,"length":473,"parent_index":28},"node_type":32,"text":"/**\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */"},{"id":28,"src":{"id":0,"line":288,"column":4,"start":8953,"end":9587,"length":635,"parent_index":29},"node_type":32,"text":"/**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting with custom message when dividing by zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryMod}.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */"},{"id":29,"src":{"id":0,"line":315,"column":0,"start":9827,"end":9857,"length":31,"parent_index":30},"node_type":33,"text":"// SPDX-License-Identifier: MIT"}]} \ No newline at end of file +{"id":30,"node_type":80,"entry_source_unit":748,"root":[{"id":31,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":31,"name":"IERC20","absolute_path":"IERC20.sol"}],"absolute_path":"IERC20.sol","name":"IERC20","node_type":1,"nodes":[{"id":33,"node_type":10,"src":{"id":34,"line":3,"column":0,"start":33,"end":55,"length":23,"parent_index":31},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":37,"name":"IERC20","node_type":35,"src":{"id":0,"line":8,"column":0,"start":129,"end":2724,"length":2596,"parent_index":31},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":39,"name":"totalSupply","node_type":42,"kind":41,"src":{"id":40,"line":12,"column":4,"start":223,"end":277,"length":55,"parent_index":37},"body":{"id":53,"node_type":46,"kind":0,"src":{"id":40,"line":12,"column":4,"start":223,"end":277,"length":55,"parent_index":39},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":41,"node_type":43,"src":{"id":42,"line":12,"column":50,"start":269,"end":275,"length":7,"parent_index":39},"parameters":[{"id":43,"node_type":44,"src":{"id":44,"line":12,"column":50,"start":269,"end":275,"length":7,"parent_index":41},"scope":39,"name":"","type_name":{"id":45,"node_type":30,"src":{"id":46,"line":12,"column":50,"start":269,"end":275,"length":7,"parent_index":43},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":47,"node_type":43,"src":{"id":48,"line":12,"column":50,"start":269,"end":275,"length":7,"parent_index":39},"parameters":[{"id":49,"node_type":44,"src":{"id":50,"line":12,"column":50,"start":269,"end":275,"length":7,"parent_index":47},"scope":39,"name":"","type_name":{"id":51,"node_type":30,"src":{"id":52,"line":12,"column":50,"start":269,"end":275,"length":7,"parent_index":49},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":37,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},{"id":55,"name":"balanceOf","node_type":42,"kind":41,"src":{"id":56,"line":17,"column":4,"start":361,"end":428,"length":68,"parent_index":37},"body":{"id":69,"node_type":46,"kind":0,"src":{"id":56,"line":17,"column":4,"start":361,"end":428,"length":68,"parent_index":55},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":57,"node_type":43,"src":{"id":58,"line":17,"column":23,"start":380,"end":394,"length":15,"parent_index":55},"parameters":[{"id":59,"node_type":44,"src":{"id":60,"line":17,"column":23,"start":380,"end":394,"length":15,"parent_index":57},"scope":55,"name":"account","type_name":{"id":61,"node_type":30,"src":{"id":62,"line":17,"column":23,"start":380,"end":386,"length":7,"parent_index":59},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":63,"node_type":43,"src":{"id":64,"line":17,"column":63,"start":420,"end":426,"length":7,"parent_index":55},"parameters":[{"id":65,"node_type":44,"src":{"id":66,"line":17,"column":63,"start":420,"end":426,"length":7,"parent_index":63},"scope":55,"name":"","type_name":{"id":67,"node_type":30,"src":{"id":68,"line":17,"column":63,"start":420,"end":426,"length":7,"parent_index":65},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":37,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":71,"name":"transfer","node_type":42,"kind":41,"src":{"id":72,"line":26,"column":4,"start":649,"end":725,"length":77,"parent_index":37},"body":{"id":89,"node_type":46,"kind":0,"src":{"id":72,"line":26,"column":4,"start":649,"end":725,"length":77,"parent_index":71},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":73,"node_type":43,"src":{"id":74,"line":26,"column":22,"start":667,"end":699,"length":33,"parent_index":71},"parameters":[{"id":75,"node_type":44,"src":{"id":76,"line":26,"column":22,"start":667,"end":683,"length":17,"parent_index":73},"scope":71,"name":"recipient","type_name":{"id":77,"node_type":30,"src":{"id":78,"line":26,"column":22,"start":667,"end":673,"length":7,"parent_index":75},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":79,"node_type":44,"src":{"id":80,"line":26,"column":41,"start":686,"end":699,"length":14,"parent_index":73},"scope":71,"name":"amount","type_name":{"id":81,"node_type":30,"src":{"id":82,"line":26,"column":41,"start":686,"end":692,"length":7,"parent_index":79},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":83,"node_type":43,"src":{"id":84,"line":26,"column":75,"start":720,"end":723,"length":4,"parent_index":71},"parameters":[{"id":85,"node_type":44,"src":{"id":86,"line":26,"column":75,"start":720,"end":723,"length":4,"parent_index":83},"scope":71,"name":"","type_name":{"id":87,"node_type":30,"src":{"id":88,"line":26,"column":75,"start":720,"end":723,"length":4,"parent_index":85},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":37,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}},{"id":91,"name":"allowance","node_type":42,"kind":41,"src":{"id":92,"line":35,"column":4,"start":1001,"end":1083,"length":83,"parent_index":37},"body":{"id":109,"node_type":46,"kind":0,"src":{"id":92,"line":35,"column":4,"start":1001,"end":1083,"length":83,"parent_index":91},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":93,"node_type":43,"src":{"id":94,"line":35,"column":23,"start":1020,"end":1049,"length":30,"parent_index":91},"parameters":[{"id":95,"node_type":44,"src":{"id":96,"line":35,"column":23,"start":1020,"end":1032,"length":13,"parent_index":93},"scope":91,"name":"owner","type_name":{"id":97,"node_type":30,"src":{"id":98,"line":35,"column":23,"start":1020,"end":1026,"length":7,"parent_index":95},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":99,"node_type":44,"src":{"id":100,"line":35,"column":38,"start":1035,"end":1049,"length":15,"parent_index":93},"scope":91,"name":"spender","type_name":{"id":101,"node_type":30,"src":{"id":102,"line":35,"column":38,"start":1035,"end":1041,"length":7,"parent_index":99},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":103,"node_type":43,"src":{"id":104,"line":35,"column":78,"start":1075,"end":1081,"length":7,"parent_index":91},"parameters":[{"id":105,"node_type":44,"src":{"id":106,"line":35,"column":78,"start":1075,"end":1081,"length":7,"parent_index":103},"scope":91,"name":"","type_name":{"id":107,"node_type":30,"src":{"id":108,"line":35,"column":78,"start":1075,"end":1081,"length":7,"parent_index":105},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":37,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$","type_string":"function(address,address)"}},{"id":111,"name":"approve","node_type":42,"kind":41,"src":{"id":112,"line":51,"column":4,"start":1737,"end":1810,"length":74,"parent_index":37},"body":{"id":129,"node_type":46,"kind":0,"src":{"id":112,"line":51,"column":4,"start":1737,"end":1810,"length":74,"parent_index":111},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":113,"node_type":43,"src":{"id":114,"line":51,"column":21,"start":1754,"end":1784,"length":31,"parent_index":111},"parameters":[{"id":115,"node_type":44,"src":{"id":116,"line":51,"column":21,"start":1754,"end":1768,"length":15,"parent_index":113},"scope":111,"name":"spender","type_name":{"id":117,"node_type":30,"src":{"id":118,"line":51,"column":21,"start":1754,"end":1760,"length":7,"parent_index":115},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":119,"node_type":44,"src":{"id":120,"line":51,"column":38,"start":1771,"end":1784,"length":14,"parent_index":113},"scope":111,"name":"amount","type_name":{"id":121,"node_type":30,"src":{"id":122,"line":51,"column":38,"start":1771,"end":1777,"length":7,"parent_index":119},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":123,"node_type":43,"src":{"id":124,"line":51,"column":72,"start":1805,"end":1808,"length":4,"parent_index":111},"parameters":[{"id":125,"node_type":44,"src":{"id":126,"line":51,"column":72,"start":1805,"end":1808,"length":4,"parent_index":123},"scope":111,"name":"","type_name":{"id":127,"node_type":30,"src":{"id":128,"line":51,"column":72,"start":1805,"end":1808,"length":4,"parent_index":125},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":37,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}},{"id":131,"name":"transferFrom","node_type":42,"kind":41,"src":{"id":132,"line":62,"column":4,"start":2118,"end":2244,"length":127,"parent_index":37},"body":{"id":153,"node_type":46,"kind":0,"src":{"id":132,"line":62,"column":4,"start":2118,"end":2244,"length":127,"parent_index":131},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":133,"node_type":43,"src":{"id":134,"line":63,"column":8,"start":2149,"end":2213,"length":65,"parent_index":131},"parameters":[{"id":135,"node_type":44,"src":{"id":136,"line":63,"column":8,"start":2149,"end":2162,"length":14,"parent_index":133},"scope":131,"name":"sender","type_name":{"id":137,"node_type":30,"src":{"id":138,"line":63,"column":8,"start":2149,"end":2155,"length":7,"parent_index":135},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":139,"node_type":44,"src":{"id":140,"line":64,"column":8,"start":2173,"end":2189,"length":17,"parent_index":133},"scope":131,"name":"recipient","type_name":{"id":141,"node_type":30,"src":{"id":142,"line":64,"column":8,"start":2173,"end":2179,"length":7,"parent_index":139},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":143,"node_type":44,"src":{"id":144,"line":65,"column":8,"start":2200,"end":2213,"length":14,"parent_index":133},"scope":131,"name":"amount","type_name":{"id":145,"node_type":30,"src":{"id":146,"line":65,"column":8,"start":2200,"end":2206,"length":7,"parent_index":143},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":147,"node_type":43,"src":{"id":148,"line":66,"column":24,"start":2239,"end":2242,"length":4,"parent_index":131},"parameters":[{"id":149,"node_type":44,"src":{"id":150,"line":66,"column":24,"start":2239,"end":2242,"length":4,"parent_index":147},"scope":131,"name":"","type_name":{"id":151,"node_type":30,"src":{"id":152,"line":66,"column":24,"start":2239,"end":2242,"length":4,"parent_index":149},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":37,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":155,"node_type":57,"src":{"id":156,"line":74,"column":4,"start":2414,"end":2485,"length":72,"parent_index":37},"parameters":{"id":157,"node_type":43,"src":{"id":156,"line":74,"column":4,"start":2414,"end":2485,"length":72,"parent_index":155},"parameters":[{"id":158,"node_type":44,"src":{"id":159,"line":74,"column":19,"start":2429,"end":2448,"length":20,"parent_index":157},"scope":155,"name":"from","type_name":{"id":160,"node_type":30,"src":{"id":161,"line":74,"column":19,"start":2429,"end":2435,"length":7,"parent_index":158},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":162,"node_type":44,"src":{"id":163,"line":74,"column":41,"start":2451,"end":2468,"length":18,"parent_index":157},"scope":155,"name":"to","type_name":{"id":164,"node_type":30,"src":{"id":165,"line":74,"column":41,"start":2451,"end":2457,"length":7,"parent_index":162},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":166,"node_type":44,"src":{"id":167,"line":74,"column":61,"start":2471,"end":2483,"length":13,"parent_index":157},"scope":155,"name":"value","type_name":{"id":168,"node_type":30,"src":{"id":169,"line":74,"column":61,"start":2471,"end":2477,"length":7,"parent_index":166},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"name":"Transfer","anonymous":false},{"id":171,"node_type":57,"src":{"id":172,"line":80,"column":4,"start":2645,"end":2722,"length":78,"parent_index":37},"parameters":{"id":173,"node_type":43,"src":{"id":172,"line":80,"column":4,"start":2645,"end":2722,"length":78,"parent_index":171},"parameters":[{"id":174,"node_type":44,"src":{"id":175,"line":80,"column":19,"start":2660,"end":2680,"length":21,"parent_index":173},"scope":171,"name":"owner","type_name":{"id":176,"node_type":30,"src":{"id":177,"line":80,"column":19,"start":2660,"end":2666,"length":7,"parent_index":174},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":178,"node_type":44,"src":{"id":179,"line":80,"column":42,"start":2683,"end":2705,"length":23,"parent_index":173},"scope":171,"name":"spender","type_name":{"id":180,"node_type":30,"src":{"id":181,"line":80,"column":42,"start":2683,"end":2689,"length":7,"parent_index":178},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":182,"node_type":44,"src":{"id":183,"line":80,"column":67,"start":2708,"end":2720,"length":13,"parent_index":173},"scope":171,"name":"value","type_name":{"id":184,"node_type":30,"src":{"id":185,"line":80,"column":67,"start":2708,"end":2714,"length":7,"parent_index":182},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"name":"Approval","anonymous":false}],"linearized_base_contracts":[37],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":32,"line":8,"column":0,"start":129,"end":2724,"length":2596,"parent_index":30}},{"id":186,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":186,"name":"SafeMath","absolute_path":"SafeMath.sol"}],"absolute_path":"SafeMath.sol","name":"SafeMath","node_type":1,"nodes":[{"id":190,"node_type":10,"src":{"id":191,"line":85,"column":0,"start":2760,"end":2782,"length":23,"parent_index":186},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":192,"name":"SafeMath","node_type":35,"src":{"id":0,"line":100,"column":0,"start":3349,"end":9824,"length":6476,"parent_index":186},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":194,"name":"tryAdd","node_type":42,"kind":41,"src":{"id":195,"line":106,"column":4,"start":3508,"end":3723,"length":216,"parent_index":192},"body":{"id":216,"node_type":46,"kind":0,"src":{"id":217,"line":106,"column":80,"start":3584,"end":3723,"length":140,"parent_index":194},"implemented":true,"statements":[{"id":218,"node_type":59,"kind":0,"src":{"id":219,"line":107,"column":8,"start":3594,"end":3717,"length":124,"parent_index":192},"implemented":false,"statements":[{"id":220,"node_type":44,"src":{"id":221,"line":108,"column":12,"start":3618,"end":3635,"length":18,"parent_index":218},"assignments":[222],"declarations":[{"is_constant":false,"id":222,"state_mutability":1,"name":"c","node_type":44,"scope":218,"src":{"id":223,"line":108,"column":12,"start":3618,"end":3626,"length":9,"parent_index":220},"is_state_variable":false,"storage_location":1,"type_name":{"id":224,"node_type":30,"src":{"id":225,"line":108,"column":12,"start":3618,"end":3624,"length":7,"parent_index":222},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":226,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":227,"line":108,"column":24,"start":3630,"end":3634,"length":5,"parent_index":220},"operator":1,"left_expression":{"id":228,"node_type":16,"src":{"id":229,"line":108,"column":24,"start":3630,"end":3630,"length":1,"parent_index":226},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":228,"is_pure":false},"right_expression":{"id":230,"node_type":16,"src":{"id":231,"line":108,"column":28,"start":3634,"end":3634,"length":1,"parent_index":226},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":230,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":232,"node_type":48,"src":{"id":233,"line":109,"column":0,"start":3649,"end":3677,"length":29,"parent_index":218},"condition":{"id":234,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":235,"line":109,"column":16,"start":3653,"end":3657,"length":5,"parent_index":232},"operator":9,"left_expression":{"id":236,"node_type":16,"src":{"id":237,"line":109,"column":16,"start":3653,"end":3653,"length":1,"parent_index":234},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":220,"is_pure":false},"right_expression":{"id":238,"node_type":16,"src":{"id":239,"line":109,"column":20,"start":3657,"end":3657,"length":1,"parent_index":234},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":238,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":240,"node_type":46,"kind":0,"src":{"id":0,"line":0,"column":0,"start":0,"end":0,"length":0,"parent_index":0},"implemented":false,"statements":[]}},{"id":241,"node_type":47,"src":{"id":242,"line":110,"column":12,"start":3691,"end":3707,"length":17,"parent_index":194},"function_return_parameters":194,"expression":{"id":243,"node_type":60,"src":{"id":244,"line":110,"column":19,"start":3698,"end":3706,"length":9,"parent_index":194},"is_constant":false,"is_pure":true,"components":[{"id":245,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":246,"line":110,"column":20,"start":3699,"end":3702,"length":4,"parent_index":243},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},{"id":247,"node_type":16,"src":{"id":248,"line":110,"column":26,"start":3705,"end":3705,"length":1,"parent_index":243},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":220,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_bool_$_t_uint256$","type_string":"tuple(bool,uint256)"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":196,"node_type":43,"src":{"id":197,"line":106,"column":20,"start":3524,"end":3543,"length":20,"parent_index":194},"parameters":[{"id":198,"node_type":44,"src":{"id":199,"line":106,"column":20,"start":3524,"end":3532,"length":9,"parent_index":196},"scope":194,"name":"a","type_name":{"id":200,"node_type":30,"src":{"id":201,"line":106,"column":20,"start":3524,"end":3530,"length":7,"parent_index":198},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":202,"node_type":44,"src":{"id":203,"line":106,"column":31,"start":3535,"end":3543,"length":9,"parent_index":196},"scope":194,"name":"b","type_name":{"id":204,"node_type":30,"src":{"id":205,"line":106,"column":31,"start":3535,"end":3541,"length":7,"parent_index":202},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":206,"node_type":43,"src":{"id":207,"line":106,"column":65,"start":3569,"end":3581,"length":13,"parent_index":194},"parameters":[{"id":208,"node_type":44,"src":{"id":209,"line":106,"column":65,"start":3569,"end":3572,"length":4,"parent_index":206},"scope":194,"name":"","type_name":{"id":210,"node_type":30,"src":{"id":211,"line":106,"column":65,"start":3569,"end":3572,"length":4,"parent_index":208},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":212,"node_type":44,"src":{"id":213,"line":106,"column":71,"start":3575,"end":3581,"length":7,"parent_index":206},"scope":194,"name":"","type_name":{"id":214,"node_type":30,"src":{"id":215,"line":106,"column":71,"start":3575,"end":3581,"length":7,"parent_index":212},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}},{"id":250,"name":"trySub","node_type":42,"kind":41,"src":{"id":251,"line":119,"column":4,"start":3870,"end":4058,"length":189,"parent_index":192},"body":{"id":272,"node_type":46,"kind":0,"src":{"id":273,"line":119,"column":80,"start":3946,"end":4058,"length":113,"parent_index":250},"implemented":true,"statements":[{"id":274,"node_type":59,"kind":0,"src":{"id":275,"line":120,"column":8,"start":3956,"end":4052,"length":97,"parent_index":192},"implemented":false,"statements":[{"id":276,"node_type":48,"src":{"id":277,"line":121,"column":0,"start":3980,"end":4008,"length":29,"parent_index":274},"condition":{"id":278,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":279,"line":121,"column":16,"start":3984,"end":3988,"length":5,"parent_index":276},"operator":7,"left_expression":{"id":280,"node_type":16,"src":{"id":281,"line":121,"column":16,"start":3984,"end":3984,"length":1,"parent_index":278},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":280,"is_pure":false},"right_expression":{"id":282,"node_type":16,"src":{"id":283,"line":121,"column":20,"start":3988,"end":3988,"length":1,"parent_index":278},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":282,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":284,"node_type":46,"kind":0,"src":{"id":0,"line":0,"column":0,"start":0,"end":0,"length":0,"parent_index":0},"implemented":false,"statements":[]}},{"id":285,"node_type":47,"src":{"id":286,"line":122,"column":12,"start":4022,"end":4042,"length":21,"parent_index":250},"function_return_parameters":250,"expression":{"id":287,"node_type":60,"src":{"id":288,"line":122,"column":19,"start":4029,"end":4041,"length":13,"parent_index":250},"is_constant":false,"is_pure":true,"components":[{"id":289,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":290,"line":122,"column":20,"start":4030,"end":4033,"length":4,"parent_index":287},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},{"id":291,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":292,"line":122,"column":26,"start":4036,"end":4040,"length":5,"parent_index":287},"operator":2,"left_expression":{"id":293,"node_type":16,"src":{"id":294,"line":122,"column":26,"start":4036,"end":4036,"length":1,"parent_index":291},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":293,"is_pure":false},"right_expression":{"id":295,"node_type":16,"src":{"id":296,"line":122,"column":30,"start":4040,"end":4040,"length":1,"parent_index":291},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":295,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}],"type_description":{"type_identifier":"t_tuple_$_t_bool_$_t_uint256$","type_string":"tuple(bool,uint256)"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":252,"node_type":43,"src":{"id":253,"line":119,"column":20,"start":3886,"end":3905,"length":20,"parent_index":250},"parameters":[{"id":254,"node_type":44,"src":{"id":255,"line":119,"column":20,"start":3886,"end":3894,"length":9,"parent_index":252},"scope":250,"name":"a","type_name":{"id":256,"node_type":30,"src":{"id":257,"line":119,"column":20,"start":3886,"end":3892,"length":7,"parent_index":254},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":258,"node_type":44,"src":{"id":259,"line":119,"column":31,"start":3897,"end":3905,"length":9,"parent_index":252},"scope":250,"name":"b","type_name":{"id":260,"node_type":30,"src":{"id":261,"line":119,"column":31,"start":3897,"end":3903,"length":7,"parent_index":258},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":262,"node_type":43,"src":{"id":263,"line":119,"column":65,"start":3931,"end":3943,"length":13,"parent_index":250},"parameters":[{"id":264,"node_type":44,"src":{"id":265,"line":119,"column":65,"start":3931,"end":3934,"length":4,"parent_index":262},"scope":250,"name":"","type_name":{"id":266,"node_type":30,"src":{"id":267,"line":119,"column":65,"start":3931,"end":3934,"length":4,"parent_index":264},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":268,"node_type":44,"src":{"id":269,"line":119,"column":71,"start":3937,"end":3943,"length":7,"parent_index":262},"scope":250,"name":"","type_name":{"id":270,"node_type":30,"src":{"id":271,"line":119,"column":71,"start":3937,"end":3943,"length":7,"parent_index":268},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}},{"id":298,"name":"tryMul","node_type":42,"kind":41,"src":{"id":299,"line":131,"column":4,"start":4207,"end":4699,"length":493,"parent_index":192},"body":{"id":320,"node_type":46,"kind":0,"src":{"id":321,"line":131,"column":80,"start":4283,"end":4699,"length":417,"parent_index":298},"implemented":true,"statements":[{"id":322,"node_type":59,"kind":0,"src":{"id":323,"line":132,"column":8,"start":4293,"end":4693,"length":401,"parent_index":192},"implemented":false,"statements":[{"id":324,"node_type":48,"src":{"id":325,"line":136,"column":0,"start":4547,"end":4575,"length":29,"parent_index":322},"condition":{"id":326,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":327,"line":136,"column":16,"start":4551,"end":4556,"length":6,"parent_index":324},"operator":11,"left_expression":{"id":328,"node_type":16,"src":{"id":329,"line":136,"column":16,"start":4551,"end":4551,"length":1,"parent_index":326},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":328,"is_pure":false},"right_expression":{"id":330,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":331,"line":136,"column":21,"start":4556,"end":4556,"length":1,"parent_index":326},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":332,"node_type":46,"kind":0,"src":{"id":0,"line":0,"column":0,"start":0,"end":0,"length":0,"parent_index":0},"implemented":false,"statements":[]}},{"id":333,"node_type":44,"src":{"id":334,"line":137,"column":12,"start":4589,"end":4606,"length":18,"parent_index":322},"assignments":[335],"declarations":[{"is_constant":false,"id":335,"state_mutability":1,"name":"c","node_type":44,"scope":322,"src":{"id":336,"line":137,"column":12,"start":4589,"end":4597,"length":9,"parent_index":333},"is_state_variable":false,"storage_location":1,"type_name":{"id":337,"node_type":30,"src":{"id":338,"line":137,"column":12,"start":4589,"end":4595,"length":7,"parent_index":335},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":339,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":340,"line":137,"column":24,"start":4601,"end":4605,"length":5,"parent_index":333},"operator":3,"left_expression":{"id":341,"node_type":16,"src":{"id":342,"line":137,"column":24,"start":4601,"end":4601,"length":1,"parent_index":339},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":341,"is_pure":false},"right_expression":{"id":343,"node_type":16,"src":{"id":344,"line":137,"column":28,"start":4605,"end":4605,"length":1,"parent_index":339},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":343,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":345,"node_type":48,"src":{"id":346,"line":138,"column":0,"start":4620,"end":4653,"length":34,"parent_index":322},"condition":{"id":347,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":348,"line":138,"column":16,"start":4624,"end":4633,"length":10,"parent_index":345},"operator":12,"left_expression":{"id":349,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":350,"line":138,"column":16,"start":4624,"end":4628,"length":5,"parent_index":347},"operator":4,"left_expression":{"id":351,"node_type":16,"src":{"id":352,"line":138,"column":16,"start":4624,"end":4624,"length":1,"parent_index":349},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":333,"is_pure":false},"right_expression":{"id":353,"node_type":16,"src":{"id":354,"line":138,"column":20,"start":4628,"end":4628,"length":1,"parent_index":349},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":353,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"right_expression":{"id":355,"node_type":16,"src":{"id":356,"line":138,"column":25,"start":4633,"end":4633,"length":1,"parent_index":347},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":355,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":357,"node_type":46,"kind":0,"src":{"id":0,"line":0,"column":0,"start":0,"end":0,"length":0,"parent_index":0},"implemented":false,"statements":[]}},{"id":358,"node_type":47,"src":{"id":359,"line":139,"column":12,"start":4667,"end":4683,"length":17,"parent_index":298},"function_return_parameters":298,"expression":{"id":360,"node_type":60,"src":{"id":361,"line":139,"column":19,"start":4674,"end":4682,"length":9,"parent_index":298},"is_constant":false,"is_pure":true,"components":[{"id":362,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":363,"line":139,"column":20,"start":4675,"end":4678,"length":4,"parent_index":360},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},{"id":364,"node_type":16,"src":{"id":365,"line":139,"column":26,"start":4681,"end":4681,"length":1,"parent_index":360},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":333,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_bool_$_t_uint256$","type_string":"tuple(bool,uint256)"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":300,"node_type":43,"src":{"id":301,"line":131,"column":20,"start":4223,"end":4242,"length":20,"parent_index":298},"parameters":[{"id":302,"node_type":44,"src":{"id":303,"line":131,"column":20,"start":4223,"end":4231,"length":9,"parent_index":300},"scope":298,"name":"a","type_name":{"id":304,"node_type":30,"src":{"id":305,"line":131,"column":20,"start":4223,"end":4229,"length":7,"parent_index":302},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":306,"node_type":44,"src":{"id":307,"line":131,"column":31,"start":4234,"end":4242,"length":9,"parent_index":300},"scope":298,"name":"b","type_name":{"id":308,"node_type":30,"src":{"id":309,"line":131,"column":31,"start":4234,"end":4240,"length":7,"parent_index":306},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":310,"node_type":43,"src":{"id":311,"line":131,"column":65,"start":4268,"end":4280,"length":13,"parent_index":298},"parameters":[{"id":312,"node_type":44,"src":{"id":313,"line":131,"column":65,"start":4268,"end":4271,"length":4,"parent_index":310},"scope":298,"name":"","type_name":{"id":314,"node_type":30,"src":{"id":315,"line":131,"column":65,"start":4268,"end":4271,"length":4,"parent_index":312},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":316,"node_type":44,"src":{"id":317,"line":131,"column":71,"start":4274,"end":4280,"length":7,"parent_index":310},"scope":298,"name":"","type_name":{"id":318,"node_type":30,"src":{"id":319,"line":131,"column":71,"start":4274,"end":4280,"length":7,"parent_index":316},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}},{"id":367,"name":"tryDiv","node_type":42,"kind":41,"src":{"id":368,"line":148,"column":4,"start":4849,"end":5038,"length":190,"parent_index":192},"body":{"id":389,"node_type":46,"kind":0,"src":{"id":390,"line":148,"column":80,"start":4925,"end":5038,"length":114,"parent_index":367},"implemented":true,"statements":[{"id":391,"node_type":59,"kind":0,"src":{"id":392,"line":149,"column":8,"start":4935,"end":5032,"length":98,"parent_index":192},"implemented":false,"statements":[{"id":393,"node_type":48,"src":{"id":394,"line":150,"column":0,"start":4959,"end":4988,"length":30,"parent_index":391},"condition":{"id":395,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":396,"line":150,"column":16,"start":4963,"end":4968,"length":6,"parent_index":393},"operator":11,"left_expression":{"id":397,"node_type":16,"src":{"id":398,"line":150,"column":16,"start":4963,"end":4963,"length":1,"parent_index":395},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":397,"is_pure":false},"right_expression":{"id":399,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":400,"line":150,"column":21,"start":4968,"end":4968,"length":1,"parent_index":395},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":401,"node_type":46,"kind":0,"src":{"id":0,"line":0,"column":0,"start":0,"end":0,"length":0,"parent_index":0},"implemented":false,"statements":[]}},{"id":402,"node_type":47,"src":{"id":403,"line":151,"column":12,"start":5002,"end":5022,"length":21,"parent_index":367},"function_return_parameters":367,"expression":{"id":404,"node_type":60,"src":{"id":405,"line":151,"column":19,"start":5009,"end":5021,"length":13,"parent_index":367},"is_constant":false,"is_pure":true,"components":[{"id":406,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":407,"line":151,"column":20,"start":5010,"end":5013,"length":4,"parent_index":404},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},{"id":408,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":409,"line":151,"column":26,"start":5016,"end":5020,"length":5,"parent_index":404},"operator":4,"left_expression":{"id":410,"node_type":16,"src":{"id":411,"line":151,"column":26,"start":5016,"end":5016,"length":1,"parent_index":408},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":410,"is_pure":false},"right_expression":{"id":412,"node_type":16,"src":{"id":413,"line":151,"column":30,"start":5020,"end":5020,"length":1,"parent_index":408},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":412,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}],"type_description":{"type_identifier":"t_tuple_$_t_bool_$_t_uint256$","type_string":"tuple(bool,uint256)"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":369,"node_type":43,"src":{"id":370,"line":148,"column":20,"start":4865,"end":4884,"length":20,"parent_index":367},"parameters":[{"id":371,"node_type":44,"src":{"id":372,"line":148,"column":20,"start":4865,"end":4873,"length":9,"parent_index":369},"scope":367,"name":"a","type_name":{"id":373,"node_type":30,"src":{"id":374,"line":148,"column":20,"start":4865,"end":4871,"length":7,"parent_index":371},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":375,"node_type":44,"src":{"id":376,"line":148,"column":31,"start":4876,"end":4884,"length":9,"parent_index":369},"scope":367,"name":"b","type_name":{"id":377,"node_type":30,"src":{"id":378,"line":148,"column":31,"start":4876,"end":4882,"length":7,"parent_index":375},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":379,"node_type":43,"src":{"id":380,"line":148,"column":65,"start":4910,"end":4922,"length":13,"parent_index":367},"parameters":[{"id":381,"node_type":44,"src":{"id":382,"line":148,"column":65,"start":4910,"end":4913,"length":4,"parent_index":379},"scope":367,"name":"","type_name":{"id":383,"node_type":30,"src":{"id":384,"line":148,"column":65,"start":4910,"end":4913,"length":4,"parent_index":381},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":385,"node_type":44,"src":{"id":386,"line":148,"column":71,"start":4916,"end":4922,"length":7,"parent_index":379},"scope":367,"name":"","type_name":{"id":387,"node_type":30,"src":{"id":388,"line":148,"column":71,"start":4916,"end":4922,"length":7,"parent_index":385},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}},{"id":415,"name":"tryMod","node_type":42,"kind":41,"src":{"id":416,"line":160,"column":4,"start":5198,"end":5387,"length":190,"parent_index":192},"body":{"id":437,"node_type":46,"kind":0,"src":{"id":438,"line":160,"column":80,"start":5274,"end":5387,"length":114,"parent_index":415},"implemented":true,"statements":[{"id":439,"node_type":59,"kind":0,"src":{"id":440,"line":161,"column":8,"start":5284,"end":5381,"length":98,"parent_index":192},"implemented":false,"statements":[{"id":441,"node_type":48,"src":{"id":442,"line":162,"column":0,"start":5308,"end":5337,"length":30,"parent_index":439},"condition":{"id":443,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":444,"line":162,"column":16,"start":5312,"end":5317,"length":6,"parent_index":441},"operator":11,"left_expression":{"id":445,"node_type":16,"src":{"id":446,"line":162,"column":16,"start":5312,"end":5312,"length":1,"parent_index":443},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":445,"is_pure":false},"right_expression":{"id":447,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":448,"line":162,"column":21,"start":5317,"end":5317,"length":1,"parent_index":443},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":449,"node_type":46,"kind":0,"src":{"id":0,"line":0,"column":0,"start":0,"end":0,"length":0,"parent_index":0},"implemented":false,"statements":[]}},{"id":450,"node_type":47,"src":{"id":451,"line":163,"column":12,"start":5351,"end":5371,"length":21,"parent_index":415},"function_return_parameters":415,"expression":{"id":452,"node_type":60,"src":{"id":453,"line":163,"column":19,"start":5358,"end":5370,"length":13,"parent_index":415},"is_constant":false,"is_pure":true,"components":[{"id":454,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":455,"line":163,"column":20,"start":5359,"end":5362,"length":4,"parent_index":452},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},{"id":456,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":457,"line":163,"column":26,"start":5365,"end":5369,"length":5,"parent_index":452},"operator":5,"left_expression":{"id":458,"node_type":16,"src":{"id":459,"line":163,"column":26,"start":5365,"end":5365,"length":1,"parent_index":456},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":458,"is_pure":false},"right_expression":{"id":460,"node_type":16,"src":{"id":461,"line":163,"column":30,"start":5369,"end":5369,"length":1,"parent_index":456},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":460,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}],"type_description":{"type_identifier":"t_tuple_$_t_bool_$_t_uint256$","type_string":"tuple(bool,uint256)"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":417,"node_type":43,"src":{"id":418,"line":160,"column":20,"start":5214,"end":5233,"length":20,"parent_index":415},"parameters":[{"id":419,"node_type":44,"src":{"id":420,"line":160,"column":20,"start":5214,"end":5222,"length":9,"parent_index":417},"scope":415,"name":"a","type_name":{"id":421,"node_type":30,"src":{"id":422,"line":160,"column":20,"start":5214,"end":5220,"length":7,"parent_index":419},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":423,"node_type":44,"src":{"id":424,"line":160,"column":31,"start":5225,"end":5233,"length":9,"parent_index":417},"scope":415,"name":"b","type_name":{"id":425,"node_type":30,"src":{"id":426,"line":160,"column":31,"start":5225,"end":5231,"length":7,"parent_index":423},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":427,"node_type":43,"src":{"id":428,"line":160,"column":65,"start":5259,"end":5271,"length":13,"parent_index":415},"parameters":[{"id":429,"node_type":44,"src":{"id":430,"line":160,"column":65,"start":5259,"end":5262,"length":4,"parent_index":427},"scope":415,"name":"","type_name":{"id":431,"node_type":30,"src":{"id":432,"line":160,"column":65,"start":5259,"end":5262,"length":4,"parent_index":429},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":433,"node_type":44,"src":{"id":434,"line":160,"column":71,"start":5265,"end":5271,"length":7,"parent_index":427},"scope":415,"name":"","type_name":{"id":435,"node_type":30,"src":{"id":436,"line":160,"column":71,"start":5265,"end":5271,"length":7,"parent_index":433},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}},{"id":463,"name":"add","node_type":42,"kind":41,"src":{"id":464,"line":177,"column":4,"start":5623,"end":5718,"length":96,"parent_index":192},"body":{"id":481,"node_type":46,"kind":0,"src":{"id":482,"line":177,"column":71,"start":5690,"end":5718,"length":29,"parent_index":463},"implemented":true,"statements":[{"id":483,"node_type":47,"src":{"id":484,"line":178,"column":8,"start":5700,"end":5712,"length":13,"parent_index":463},"function_return_parameters":463,"expression":{"id":485,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":486,"line":178,"column":15,"start":5707,"end":5711,"length":5,"parent_index":481},"operator":1,"left_expression":{"id":487,"node_type":16,"src":{"id":488,"line":178,"column":15,"start":5707,"end":5707,"length":1,"parent_index":485},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":487,"is_pure":false},"right_expression":{"id":489,"node_type":16,"src":{"id":490,"line":178,"column":19,"start":5711,"end":5711,"length":1,"parent_index":485},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":489,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":465,"node_type":43,"src":{"id":466,"line":177,"column":17,"start":5636,"end":5655,"length":20,"parent_index":463},"parameters":[{"id":467,"node_type":44,"src":{"id":468,"line":177,"column":17,"start":5636,"end":5644,"length":9,"parent_index":465},"scope":463,"name":"a","type_name":{"id":469,"node_type":30,"src":{"id":470,"line":177,"column":17,"start":5636,"end":5642,"length":7,"parent_index":467},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":471,"node_type":44,"src":{"id":472,"line":177,"column":28,"start":5647,"end":5655,"length":9,"parent_index":465},"scope":463,"name":"b","type_name":{"id":473,"node_type":30,"src":{"id":474,"line":177,"column":28,"start":5647,"end":5653,"length":7,"parent_index":471},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":475,"node_type":43,"src":{"id":476,"line":177,"column":62,"start":5681,"end":5687,"length":7,"parent_index":463},"parameters":[{"id":477,"node_type":44,"src":{"id":478,"line":177,"column":62,"start":5681,"end":5687,"length":7,"parent_index":475},"scope":463,"name":"","type_name":{"id":479,"node_type":30,"src":{"id":480,"line":177,"column":62,"start":5681,"end":5687,"length":7,"parent_index":477},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}},{"id":492,"name":"sub","node_type":42,"kind":41,"src":{"id":493,"line":191,"column":4,"start":5990,"end":6085,"length":96,"parent_index":192},"body":{"id":510,"node_type":46,"kind":0,"src":{"id":511,"line":191,"column":71,"start":6057,"end":6085,"length":29,"parent_index":492},"implemented":true,"statements":[{"id":512,"node_type":47,"src":{"id":513,"line":192,"column":8,"start":6067,"end":6079,"length":13,"parent_index":492},"function_return_parameters":492,"expression":{"id":514,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":515,"line":192,"column":15,"start":6074,"end":6078,"length":5,"parent_index":510},"operator":2,"left_expression":{"id":516,"node_type":16,"src":{"id":517,"line":192,"column":15,"start":6074,"end":6074,"length":1,"parent_index":514},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":516,"is_pure":false},"right_expression":{"id":518,"node_type":16,"src":{"id":519,"line":192,"column":19,"start":6078,"end":6078,"length":1,"parent_index":514},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":518,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":494,"node_type":43,"src":{"id":495,"line":191,"column":17,"start":6003,"end":6022,"length":20,"parent_index":492},"parameters":[{"id":496,"node_type":44,"src":{"id":497,"line":191,"column":17,"start":6003,"end":6011,"length":9,"parent_index":494},"scope":492,"name":"a","type_name":{"id":498,"node_type":30,"src":{"id":499,"line":191,"column":17,"start":6003,"end":6009,"length":7,"parent_index":496},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":500,"node_type":44,"src":{"id":501,"line":191,"column":28,"start":6014,"end":6022,"length":9,"parent_index":494},"scope":492,"name":"b","type_name":{"id":502,"node_type":30,"src":{"id":503,"line":191,"column":28,"start":6014,"end":6020,"length":7,"parent_index":500},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":504,"node_type":43,"src":{"id":505,"line":191,"column":62,"start":6048,"end":6054,"length":7,"parent_index":492},"parameters":[{"id":506,"node_type":44,"src":{"id":507,"line":191,"column":62,"start":6048,"end":6054,"length":7,"parent_index":504},"scope":492,"name":"","type_name":{"id":508,"node_type":30,"src":{"id":509,"line":191,"column":62,"start":6048,"end":6054,"length":7,"parent_index":506},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}},{"id":521,"name":"mul","node_type":42,"kind":41,"src":{"id":522,"line":205,"column":4,"start":6333,"end":6428,"length":96,"parent_index":192},"body":{"id":539,"node_type":46,"kind":0,"src":{"id":540,"line":205,"column":71,"start":6400,"end":6428,"length":29,"parent_index":521},"implemented":true,"statements":[{"id":541,"node_type":47,"src":{"id":542,"line":206,"column":8,"start":6410,"end":6422,"length":13,"parent_index":521},"function_return_parameters":521,"expression":{"id":543,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":544,"line":206,"column":15,"start":6417,"end":6421,"length":5,"parent_index":539},"operator":3,"left_expression":{"id":545,"node_type":16,"src":{"id":546,"line":206,"column":15,"start":6417,"end":6417,"length":1,"parent_index":543},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":545,"is_pure":false},"right_expression":{"id":547,"node_type":16,"src":{"id":548,"line":206,"column":19,"start":6421,"end":6421,"length":1,"parent_index":543},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":547,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":523,"node_type":43,"src":{"id":524,"line":205,"column":17,"start":6346,"end":6365,"length":20,"parent_index":521},"parameters":[{"id":525,"node_type":44,"src":{"id":526,"line":205,"column":17,"start":6346,"end":6354,"length":9,"parent_index":523},"scope":521,"name":"a","type_name":{"id":527,"node_type":30,"src":{"id":528,"line":205,"column":17,"start":6346,"end":6352,"length":7,"parent_index":525},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":529,"node_type":44,"src":{"id":530,"line":205,"column":28,"start":6357,"end":6365,"length":9,"parent_index":523},"scope":521,"name":"b","type_name":{"id":531,"node_type":30,"src":{"id":532,"line":205,"column":28,"start":6357,"end":6363,"length":7,"parent_index":529},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":533,"node_type":43,"src":{"id":534,"line":205,"column":62,"start":6391,"end":6397,"length":7,"parent_index":521},"parameters":[{"id":535,"node_type":44,"src":{"id":536,"line":205,"column":62,"start":6391,"end":6397,"length":7,"parent_index":533},"scope":521,"name":"","type_name":{"id":537,"node_type":30,"src":{"id":538,"line":205,"column":62,"start":6391,"end":6397,"length":7,"parent_index":535},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}},{"id":550,"name":"div","node_type":42,"kind":41,"src":{"id":551,"line":221,"column":4,"start":6893,"end":6988,"length":96,"parent_index":192},"body":{"id":568,"node_type":46,"kind":0,"src":{"id":569,"line":221,"column":71,"start":6960,"end":6988,"length":29,"parent_index":550},"implemented":true,"statements":[{"id":570,"node_type":47,"src":{"id":571,"line":222,"column":8,"start":6970,"end":6982,"length":13,"parent_index":550},"function_return_parameters":550,"expression":{"id":572,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":573,"line":222,"column":15,"start":6977,"end":6981,"length":5,"parent_index":568},"operator":4,"left_expression":{"id":574,"node_type":16,"src":{"id":575,"line":222,"column":15,"start":6977,"end":6977,"length":1,"parent_index":572},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":574,"is_pure":false},"right_expression":{"id":576,"node_type":16,"src":{"id":577,"line":222,"column":19,"start":6981,"end":6981,"length":1,"parent_index":572},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":576,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":552,"node_type":43,"src":{"id":553,"line":221,"column":17,"start":6906,"end":6925,"length":20,"parent_index":550},"parameters":[{"id":554,"node_type":44,"src":{"id":555,"line":221,"column":17,"start":6906,"end":6914,"length":9,"parent_index":552},"scope":550,"name":"a","type_name":{"id":556,"node_type":30,"src":{"id":557,"line":221,"column":17,"start":6906,"end":6912,"length":7,"parent_index":554},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":558,"node_type":44,"src":{"id":559,"line":221,"column":28,"start":6917,"end":6925,"length":9,"parent_index":552},"scope":550,"name":"b","type_name":{"id":560,"node_type":30,"src":{"id":561,"line":221,"column":28,"start":6917,"end":6923,"length":7,"parent_index":558},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":562,"node_type":43,"src":{"id":563,"line":221,"column":62,"start":6951,"end":6957,"length":7,"parent_index":550},"parameters":[{"id":564,"node_type":44,"src":{"id":565,"line":221,"column":62,"start":6951,"end":6957,"length":7,"parent_index":562},"scope":550,"name":"","type_name":{"id":566,"node_type":30,"src":{"id":567,"line":221,"column":62,"start":6951,"end":6957,"length":7,"parent_index":564},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}},{"id":579,"name":"mod","node_type":42,"kind":41,"src":{"id":580,"line":237,"column":4,"start":7442,"end":7537,"length":96,"parent_index":192},"body":{"id":597,"node_type":46,"kind":0,"src":{"id":598,"line":237,"column":71,"start":7509,"end":7537,"length":29,"parent_index":579},"implemented":true,"statements":[{"id":599,"node_type":47,"src":{"id":600,"line":238,"column":8,"start":7519,"end":7531,"length":13,"parent_index":579},"function_return_parameters":579,"expression":{"id":601,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":602,"line":238,"column":15,"start":7526,"end":7530,"length":5,"parent_index":597},"operator":5,"left_expression":{"id":603,"node_type":16,"src":{"id":604,"line":238,"column":15,"start":7526,"end":7526,"length":1,"parent_index":601},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":603,"is_pure":false},"right_expression":{"id":605,"node_type":16,"src":{"id":606,"line":238,"column":19,"start":7530,"end":7530,"length":1,"parent_index":601},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":605,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":581,"node_type":43,"src":{"id":582,"line":237,"column":17,"start":7455,"end":7474,"length":20,"parent_index":579},"parameters":[{"id":583,"node_type":44,"src":{"id":584,"line":237,"column":17,"start":7455,"end":7463,"length":9,"parent_index":581},"scope":579,"name":"a","type_name":{"id":585,"node_type":30,"src":{"id":586,"line":237,"column":17,"start":7455,"end":7461,"length":7,"parent_index":583},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":587,"node_type":44,"src":{"id":588,"line":237,"column":28,"start":7466,"end":7474,"length":9,"parent_index":581},"scope":579,"name":"b","type_name":{"id":589,"node_type":30,"src":{"id":590,"line":237,"column":28,"start":7466,"end":7472,"length":7,"parent_index":587},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":591,"node_type":43,"src":{"id":592,"line":237,"column":62,"start":7500,"end":7506,"length":7,"parent_index":579},"parameters":[{"id":593,"node_type":44,"src":{"id":594,"line":237,"column":62,"start":7500,"end":7506,"length":7,"parent_index":591},"scope":579,"name":"","type_name":{"id":595,"node_type":30,"src":{"id":596,"line":237,"column":62,"start":7500,"end":7506,"length":7,"parent_index":593},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}},{"id":608,"name":"sub","node_type":42,"kind":41,"src":{"id":609,"line":254,"column":4,"start":8002,"end":8232,"length":231,"parent_index":192},"body":{"id":630,"node_type":46,"kind":0,"src":{"id":631,"line":258,"column":38,"start":8127,"end":8232,"length":106,"parent_index":608},"implemented":true,"statements":[{"id":632,"node_type":59,"kind":0,"src":{"id":633,"line":259,"column":8,"start":8137,"end":8226,"length":90,"parent_index":192},"implemented":false,"statements":[{"id":634,"node_type":24,"kind":24,"src":{"id":635,"line":260,"column":12,"start":8161,"end":8189,"length":29,"parent_index":632},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":638,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":639,"line":260,"column":20,"start":8169,"end":8174,"length":6,"parent_index":634},"operator":10,"left_expression":{"id":640,"node_type":16,"src":{"id":641,"line":260,"column":20,"start":8169,"end":8169,"length":1,"parent_index":638},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":640,"is_pure":false},"right_expression":{"id":642,"node_type":16,"src":{"id":643,"line":260,"column":25,"start":8174,"end":8174,"length":1,"parent_index":638},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":642,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":644,"node_type":16,"src":{"id":645,"line":260,"column":28,"start":8177,"end":8188,"length":12,"parent_index":634},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":644,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":636,"node_type":16,"src":{"id":637,"line":260,"column":12,"start":8161,"end":8167,"length":7,"parent_index":634},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string$","type_string":"function(bool,string)"}},{"id":646,"node_type":47,"src":{"id":647,"line":261,"column":12,"start":8204,"end":8216,"length":13,"parent_index":608},"function_return_parameters":608,"expression":{"id":648,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":649,"line":261,"column":19,"start":8211,"end":8215,"length":5,"parent_index":632},"operator":2,"left_expression":{"id":650,"node_type":16,"src":{"id":651,"line":261,"column":19,"start":8211,"end":8211,"length":1,"parent_index":648},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":650,"is_pure":false},"right_expression":{"id":652,"node_type":16,"src":{"id":653,"line":261,"column":23,"start":8215,"end":8215,"length":1,"parent_index":648},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":652,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":610,"node_type":43,"src":{"id":611,"line":255,"column":8,"start":8024,"end":8087,"length":64,"parent_index":608},"parameters":[{"id":612,"node_type":44,"src":{"id":613,"line":255,"column":8,"start":8024,"end":8032,"length":9,"parent_index":610},"scope":608,"name":"a","type_name":{"id":614,"node_type":30,"src":{"id":615,"line":255,"column":8,"start":8024,"end":8030,"length":7,"parent_index":612},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":616,"node_type":44,"src":{"id":617,"line":256,"column":8,"start":8043,"end":8051,"length":9,"parent_index":610},"scope":608,"name":"b","type_name":{"id":618,"node_type":30,"src":{"id":619,"line":256,"column":8,"start":8043,"end":8049,"length":7,"parent_index":616},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":620,"node_type":44,"src":{"id":621,"line":257,"column":8,"start":8062,"end":8087,"length":26,"parent_index":610},"scope":608,"name":"errorMessage","type_name":{"id":622,"node_type":30,"src":{"id":623,"line":257,"column":8,"start":8062,"end":8067,"length":6,"parent_index":620},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":624,"node_type":43,"src":{"id":625,"line":258,"column":29,"start":8118,"end":8124,"length":7,"parent_index":608},"parameters":[{"id":626,"node_type":44,"src":{"id":627,"line":258,"column":29,"start":8118,"end":8124,"length":7,"parent_index":624},"scope":608,"name":"","type_name":{"id":628,"node_type":30,"src":{"id":629,"line":258,"column":29,"start":8118,"end":8124,"length":7,"parent_index":626},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$_t_string$","type_string":"function(uint256,uint256,string)"}},{"id":655,"name":"div","node_type":42,"kind":41,"src":{"id":656,"line":277,"column":4,"start":8717,"end":8946,"length":230,"parent_index":192},"body":{"id":677,"node_type":46,"kind":0,"src":{"id":678,"line":281,"column":38,"start":8842,"end":8946,"length":105,"parent_index":655},"implemented":true,"statements":[{"id":679,"node_type":59,"kind":0,"src":{"id":680,"line":282,"column":8,"start":8852,"end":8940,"length":89,"parent_index":192},"implemented":false,"statements":[{"id":681,"node_type":24,"kind":24,"src":{"id":682,"line":283,"column":12,"start":8876,"end":8903,"length":28,"parent_index":679},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":685,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":686,"line":283,"column":20,"start":8884,"end":8888,"length":5,"parent_index":681},"operator":7,"left_expression":{"id":687,"node_type":16,"src":{"id":688,"line":283,"column":20,"start":8884,"end":8884,"length":1,"parent_index":685},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":687,"is_pure":false},"right_expression":{"id":689,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":690,"line":283,"column":24,"start":8888,"end":8888,"length":1,"parent_index":685},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":691,"node_type":16,"src":{"id":692,"line":283,"column":27,"start":8891,"end":8902,"length":12,"parent_index":681},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":691,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":683,"node_type":16,"src":{"id":684,"line":283,"column":12,"start":8876,"end":8882,"length":7,"parent_index":681},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string$","type_string":"function(bool,string)"}},{"id":693,"node_type":47,"src":{"id":694,"line":284,"column":12,"start":8918,"end":8930,"length":13,"parent_index":655},"function_return_parameters":655,"expression":{"id":695,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":696,"line":284,"column":19,"start":8925,"end":8929,"length":5,"parent_index":679},"operator":4,"left_expression":{"id":697,"node_type":16,"src":{"id":698,"line":284,"column":19,"start":8925,"end":8925,"length":1,"parent_index":695},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":697,"is_pure":false},"right_expression":{"id":699,"node_type":16,"src":{"id":700,"line":284,"column":23,"start":8929,"end":8929,"length":1,"parent_index":695},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":699,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":657,"node_type":43,"src":{"id":658,"line":278,"column":8,"start":8739,"end":8802,"length":64,"parent_index":655},"parameters":[{"id":659,"node_type":44,"src":{"id":660,"line":278,"column":8,"start":8739,"end":8747,"length":9,"parent_index":657},"scope":655,"name":"a","type_name":{"id":661,"node_type":30,"src":{"id":662,"line":278,"column":8,"start":8739,"end":8745,"length":7,"parent_index":659},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":663,"node_type":44,"src":{"id":664,"line":279,"column":8,"start":8758,"end":8766,"length":9,"parent_index":657},"scope":655,"name":"b","type_name":{"id":665,"node_type":30,"src":{"id":666,"line":279,"column":8,"start":8758,"end":8764,"length":7,"parent_index":663},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":667,"node_type":44,"src":{"id":668,"line":280,"column":8,"start":8777,"end":8802,"length":26,"parent_index":657},"scope":655,"name":"errorMessage","type_name":{"id":669,"node_type":30,"src":{"id":670,"line":280,"column":8,"start":8777,"end":8782,"length":6,"parent_index":667},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":671,"node_type":43,"src":{"id":672,"line":281,"column":29,"start":8833,"end":8839,"length":7,"parent_index":655},"parameters":[{"id":673,"node_type":44,"src":{"id":674,"line":281,"column":29,"start":8833,"end":8839,"length":7,"parent_index":671},"scope":655,"name":"","type_name":{"id":675,"node_type":30,"src":{"id":676,"line":281,"column":29,"start":8833,"end":8839,"length":7,"parent_index":673},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$_t_string$","type_string":"function(uint256,uint256,string)"}},{"id":702,"name":"mod","node_type":42,"kind":41,"src":{"id":703,"line":303,"column":4,"start":9593,"end":9822,"length":230,"parent_index":192},"body":{"id":724,"node_type":46,"kind":0,"src":{"id":725,"line":307,"column":38,"start":9718,"end":9822,"length":105,"parent_index":702},"implemented":true,"statements":[{"id":726,"node_type":59,"kind":0,"src":{"id":727,"line":308,"column":8,"start":9728,"end":9816,"length":89,"parent_index":192},"implemented":false,"statements":[{"id":728,"node_type":24,"kind":24,"src":{"id":729,"line":309,"column":12,"start":9752,"end":9779,"length":28,"parent_index":726},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":732,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":733,"line":309,"column":20,"start":9760,"end":9764,"length":5,"parent_index":728},"operator":7,"left_expression":{"id":734,"node_type":16,"src":{"id":735,"line":309,"column":20,"start":9760,"end":9760,"length":1,"parent_index":732},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":734,"is_pure":false},"right_expression":{"id":736,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":737,"line":309,"column":24,"start":9764,"end":9764,"length":1,"parent_index":732},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":738,"node_type":16,"src":{"id":739,"line":309,"column":27,"start":9767,"end":9778,"length":12,"parent_index":728},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":738,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":730,"node_type":16,"src":{"id":731,"line":309,"column":12,"start":9752,"end":9758,"length":7,"parent_index":728},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string$","type_string":"function(bool,string)"}},{"id":740,"node_type":47,"src":{"id":741,"line":310,"column":12,"start":9794,"end":9806,"length":13,"parent_index":702},"function_return_parameters":702,"expression":{"id":742,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":743,"line":310,"column":19,"start":9801,"end":9805,"length":5,"parent_index":726},"operator":5,"left_expression":{"id":744,"node_type":16,"src":{"id":745,"line":310,"column":19,"start":9801,"end":9801,"length":1,"parent_index":742},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":744,"is_pure":false},"right_expression":{"id":746,"node_type":16,"src":{"id":747,"line":310,"column":23,"start":9805,"end":9805,"length":1,"parent_index":742},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":746,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":704,"node_type":43,"src":{"id":705,"line":304,"column":8,"start":9615,"end":9678,"length":64,"parent_index":702},"parameters":[{"id":706,"node_type":44,"src":{"id":707,"line":304,"column":8,"start":9615,"end":9623,"length":9,"parent_index":704},"scope":702,"name":"a","type_name":{"id":708,"node_type":30,"src":{"id":709,"line":304,"column":8,"start":9615,"end":9621,"length":7,"parent_index":706},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":710,"node_type":44,"src":{"id":711,"line":305,"column":8,"start":9634,"end":9642,"length":9,"parent_index":704},"scope":702,"name":"b","type_name":{"id":712,"node_type":30,"src":{"id":713,"line":305,"column":8,"start":9634,"end":9640,"length":7,"parent_index":710},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":714,"node_type":44,"src":{"id":715,"line":306,"column":8,"start":9653,"end":9678,"length":26,"parent_index":704},"scope":702,"name":"errorMessage","type_name":{"id":716,"node_type":30,"src":{"id":717,"line":306,"column":8,"start":9653,"end":9658,"length":6,"parent_index":714},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":718,"node_type":43,"src":{"id":719,"line":307,"column":29,"start":9709,"end":9715,"length":7,"parent_index":702},"parameters":[{"id":720,"node_type":44,"src":{"id":721,"line":307,"column":29,"start":9709,"end":9715,"length":7,"parent_index":718},"scope":702,"name":"","type_name":{"id":722,"node_type":30,"src":{"id":723,"line":307,"column":29,"start":9709,"end":9715,"length":7,"parent_index":720},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":192,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$_t_string$","type_string":"function(uint256,uint256,string)"}}],"linearized_base_contracts":[192],"base_contracts":[],"contract_dependencies":[],"scope":186}],"src":{"id":187,"line":100,"column":0,"start":3349,"end":9824,"length":6476,"parent_index":30}},{"id":748,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":748,"name":"TokenSale","absolute_path":"TokenSale.sol"},{"id":186,"name":"SafeMath","absolute_path":"SafeMath.sol"},{"id":31,"name":"IERC20","absolute_path":"IERC20.sol"}],"absolute_path":"TokenSale.sol","name":"TokenSale","node_type":1,"nodes":[{"id":754,"node_type":10,"src":{"id":755,"line":316,"column":0,"start":9859,"end":9881,"length":23,"parent_index":748},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":756,"node_type":29,"src":{"id":0,"line":318,"column":0,"start":9884,"end":9905,"length":22,"parent_index":748},"absolute_path":"IERC20.sol","file":"./IERC20.sol","scope":748,"unit_alias":"","source_unit":186},{"id":757,"node_type":29,"src":{"id":0,"line":319,"column":0,"start":9907,"end":9930,"length":24,"parent_index":748},"absolute_path":"SafeMath.sol","file":"./SafeMath.sol","scope":748,"unit_alias":"","source_unit":186},{"id":758,"name":"TokenSale","node_type":35,"src":{"id":0,"line":321,"column":0,"start":9933,"end":10520,"length":588,"parent_index":748},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":760,"node_type":51,"src":{"id":761,"line":322,"column":0,"start":9958,"end":9984,"length":27,"parent_index":758},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"type_name":{"id":762,"node_type":30,"src":{"id":763,"line":322,"column":23,"start":9977,"end":9983,"length":7,"parent_index":760},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"library_name":{"id":764,"node_type":52,"src":{"id":765,"line":322,"column":0,"start":9964,"end":9971,"length":8,"parent_index":760},"name":"SafeMath","referenced_declaration":186}},{"id":767,"name":"token","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":768,"line":324,"column":4,"start":9991,"end":10011,"length":21,"parent_index":758},"scope":758,"type_description":{"type_identifier":"t_contract$_IERC20_$31","type_string":"contract IERC20"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":769,"node_type":69,"src":{"id":770,"line":324,"column":4,"start":9991,"end":9996,"length":6,"parent_index":767},"type_description":{"type_identifier":"t_contract$_IERC20_$31","type_string":"contract IERC20"},"path_node":{"id":771,"name":"IERC20","node_type":52,"referenced_declaration":31,"src":{"id":772,"line":324,"column":4,"start":9991,"end":9996,"length":6,"parent_index":769}},"referenced_declaration":31}},{"id":774,"name":"owner","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":775,"line":325,"column":4,"start":10017,"end":10038,"length":22,"parent_index":758},"scope":758,"type_description":{"type_identifier":"t_address","type_string":"address"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":776,"node_type":30,"src":{"id":777,"line":325,"column":4,"start":10017,"end":10023,"length":7,"parent_index":774},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0}},{"id":779,"name":"tokenPrice","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":780,"line":326,"column":4,"start":10044,"end":10070,"length":27,"parent_index":758},"scope":758,"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":781,"node_type":30,"src":{"id":782,"line":326,"column":4,"start":10044,"end":10050,"length":7,"parent_index":779},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0}},{"id":784,"node_type":57,"src":{"id":785,"line":328,"column":4,"start":10077,"end":10129,"length":53,"parent_index":758},"parameters":{"id":786,"node_type":43,"src":{"id":785,"line":328,"column":4,"start":10077,"end":10129,"length":53,"parent_index":784},"parameters":[{"id":787,"node_type":44,"src":{"id":788,"line":328,"column":26,"start":10099,"end":10111,"length":13,"parent_index":786},"scope":784,"name":"buyer","type_name":{"id":789,"node_type":30,"src":{"id":790,"line":328,"column":26,"start":10099,"end":10105,"length":7,"parent_index":787},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":791,"node_type":44,"src":{"id":792,"line":328,"column":41,"start":10114,"end":10127,"length":14,"parent_index":786},"scope":784,"name":"amount","type_name":{"id":793,"node_type":30,"src":{"id":794,"line":328,"column":41,"start":10114,"end":10120,"length":7,"parent_index":791},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"name":"TokensPurchased","anonymous":false},{"id":796,"node_type":42,"src":{"id":797,"line":330,"column":4,"start":10136,"end":10299,"length":164,"parent_index":758},"kind":11,"state_mutability":4,"visibility":1,"implemented":true,"modifiers":[],"parameters":{"id":798,"node_type":43,"src":{"id":799,"line":330,"column":16,"start":10148,"end":10189,"length":42,"parent_index":796},"parameters":[{"id":800,"node_type":44,"src":{"id":801,"line":330,"column":16,"start":10148,"end":10168,"length":21,"parent_index":798},"scope":796,"name":"_tokenAddress","type_name":{"id":802,"node_type":30,"src":{"id":803,"line":330,"column":16,"start":10148,"end":10154,"length":7,"parent_index":800},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":804,"node_type":44,"src":{"id":805,"line":330,"column":39,"start":10171,"end":10189,"length":19,"parent_index":798},"scope":796,"name":"_tokenPrice","type_name":{"id":806,"node_type":30,"src":{"id":807,"line":330,"column":39,"start":10171,"end":10177,"length":7,"parent_index":804},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":808,"node_type":43,"src":{"id":797,"line":330,"column":4,"start":10136,"end":10299,"length":164,"parent_index":796},"parameters":[],"parameter_types":[]},"scope":758,"body":{"id":809,"node_type":46,"kind":0,"src":{"id":810,"line":330,"column":60,"start":10192,"end":10299,"length":108,"parent_index":796},"implemented":true,"statements":[{"id":811,"node_type":81,"src":{"id":812,"line":331,"column":8,"start":10202,"end":10231,"length":30,"parent_index":809},"expression":{"id":813,"node_type":27,"src":{"id":814,"line":331,"column":8,"start":10202,"end":10230,"length":29,"parent_index":809},"operator":11,"left_expression":{"id":815,"node_type":16,"src":{"id":816,"line":331,"column":8,"start":10202,"end":10206,"length":5,"parent_index":813},"name":"token","type_description":{"type_identifier":"t_contract$_IERC20_$31","type_string":"contract IERC20"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"right_expression":{"id":817,"node_type":24,"kind":24,"src":{"id":818,"line":331,"column":16,"start":10210,"end":10230,"length":21,"parent_index":813},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":821,"node_type":16,"src":{"id":822,"line":331,"column":23,"start":10217,"end":10229,"length":13,"parent_index":817},"name":"_tokenAddress","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":821,"is_pure":false}],"expression":{"id":819,"node_type":16,"src":{"id":820,"line":331,"column":16,"start":10210,"end":10215,"length":6,"parent_index":817},"name":"IERC20","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"type_description":{"type_identifier":"t_contract$_IERC20_$31","type_string":"contract IERC20"}},"type_description":{"type_identifier":"t_contract$_IERC20_$31","type_string":"contract IERC20"}},{"id":823,"node_type":81,"src":{"id":824,"line":332,"column":8,"start":10241,"end":10259,"length":19,"parent_index":809},"expression":{"id":825,"node_type":27,"src":{"id":826,"line":332,"column":8,"start":10241,"end":10258,"length":18,"parent_index":809},"operator":11,"left_expression":{"id":827,"node_type":16,"src":{"id":828,"line":332,"column":8,"start":10241,"end":10245,"length":5,"parent_index":825},"name":"owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":774,"is_pure":false},"right_expression":{"id":829,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":830,"line":332,"column":16,"start":10249,"end":10258,"length":10,"parent_index":825},"expression":{"id":831,"node_type":16,"src":{"id":832,"line":332,"column":16,"start":10249,"end":10251,"length":3,"parent_index":829},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_address","type_string":"address"}},{"id":833,"node_type":81,"src":{"id":834,"line":333,"column":8,"start":10269,"end":10293,"length":25,"parent_index":809},"expression":{"id":835,"node_type":27,"src":{"id":836,"line":333,"column":8,"start":10269,"end":10292,"length":24,"parent_index":809},"operator":11,"left_expression":{"id":837,"node_type":16,"src":{"id":838,"line":333,"column":8,"start":10269,"end":10278,"length":10,"parent_index":835},"name":"tokenPrice","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":779,"is_pure":false},"right_expression":{"id":839,"node_type":16,"src":{"id":840,"line":333,"column":21,"start":10282,"end":10292,"length":11,"parent_index":835},"name":"_tokenPrice","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":839,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}]}},{"id":842,"name":"buyTokens","node_type":42,"kind":41,"src":{"id":843,"line":336,"column":4,"start":10306,"end":10518,"length":213,"parent_index":758},"body":{"id":851,"node_type":46,"kind":0,"src":{"id":852,"line":336,"column":49,"start":10351,"end":10518,"length":168,"parent_index":842},"implemented":true,"statements":[{"id":853,"node_type":44,"src":{"id":854,"line":337,"column":8,"start":10361,"end":10405,"length":45,"parent_index":851},"assignments":[855],"declarations":[{"is_constant":false,"id":855,"state_mutability":1,"name":"totalPrice","node_type":44,"scope":851,"src":{"id":856,"line":337,"column":8,"start":10361,"end":10378,"length":18,"parent_index":853},"is_state_variable":false,"storage_location":1,"type_name":{"id":857,"node_type":30,"src":{"id":858,"line":337,"column":8,"start":10361,"end":10367,"length":7,"parent_index":855},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":859,"node_type":24,"kind":24,"src":{"id":860,"line":337,"column":29,"start":10382,"end":10404,"length":23,"parent_index":853},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":865,"node_type":16,"src":{"id":866,"line":337,"column":41,"start":10394,"end":10403,"length":10,"parent_index":859},"name":"tokenPrice","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":861,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":862,"line":337,"column":29,"start":10382,"end":10392,"length":11,"parent_index":859},"expression":{"id":863,"node_type":16,"src":{"id":864,"line":337,"column":29,"start":10382,"end":10388,"length":7,"parent_index":861},"name":"_amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":863,"is_pure":false},"member_name":"mul","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}},{"id":867,"node_type":24,"kind":24,"src":{"id":868,"line":338,"column":8,"start":10415,"end":10460,"length":46,"parent_index":851},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":873,"node_type":16,"src":{"id":874,"line":338,"column":27,"start":10434,"end":10438,"length":5,"parent_index":867},"name":"owner","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":875,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":876,"line":338,"column":34,"start":10441,"end":10450,"length":10,"parent_index":867},"expression":{"id":877,"node_type":16,"src":{"id":878,"line":338,"column":34,"start":10441,"end":10443,"length":3,"parent_index":875},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"type_description":{"type_identifier":"t_address","type_string":"address"}},{"id":879,"node_type":16,"src":{"id":880,"line":338,"column":46,"start":10453,"end":10459,"length":7,"parent_index":867},"name":"_amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":879,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":869,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":870,"line":338,"column":8,"start":10415,"end":10432,"length":18,"parent_index":867},"expression":{"id":871,"node_type":16,"src":{"id":872,"line":338,"column":8,"start":10415,"end":10419,"length":5,"parent_index":869},"name":"token","type_description":{"type_identifier":"t_contract$_IERC20_$31","type_string":"contract IERC20"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"member_name":"transferFrom","argument_types":[],"type_description":{"type_identifier":"t_contract$_IERC20_$31","type_string":"contract IERC20"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_uint256$","type_string":"function(function(),address,uint256)"}},{"id":881,"node_type":64,"src":{"id":882,"line":339,"column":8,"start":10471,"end":10512,"length":42,"parent_index":842},"arguments":[{"id":883,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":884,"line":339,"column":29,"start":10492,"end":10501,"length":10,"parent_index":851},"expression":{"id":885,"node_type":16,"src":{"id":886,"line":339,"column":29,"start":10492,"end":10494,"length":3,"parent_index":883},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},{"id":887,"node_type":16,"src":{"id":888,"line":339,"column":41,"start":10504,"end":10510,"length":7,"parent_index":851},"name":"_amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":887,"is_pure":false}],"expression":{"id":889,"node_type":16,"src":{"id":890,"line":339,"column":13,"start":10476,"end":10490,"length":15,"parent_index":851},"name":"TokensPurchased","type_description":{"type_identifier":"t_event\u0026_TokenSale_TokensPurchased_\u0026784","type_string":"event TokenSale.TokensPurchased"},"overloaded_declarations":[],"referenced_declaration":784,"is_pure":false}}]},"implemented":true,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":844,"node_type":43,"src":{"id":845,"line":336,"column":23,"start":10325,"end":10339,"length":15,"parent_index":842},"parameters":[{"id":846,"node_type":44,"src":{"id":847,"line":336,"column":23,"start":10325,"end":10339,"length":15,"parent_index":844},"scope":842,"name":"_amount","type_name":{"id":848,"node_type":30,"src":{"id":849,"line":336,"column":23,"start":10325,"end":10331,"length":7,"parent_index":846},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":850,"node_type":43,"src":{"id":843,"line":336,"column":4,"start":10306,"end":10518,"length":213,"parent_index":842},"parameters":[],"parameter_types":[]},"scope":758,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}}],"linearized_base_contracts":[758,756,757],"base_contracts":[],"contract_dependencies":[756,757]}],"src":{"id":749,"line":321,"column":0,"start":9933,"end":10520,"length":588,"parent_index":30}}],"comments":[{"id":1,"src":{"id":0,"line":1,"column":0,"start":0,"end":30,"length":31,"parent_index":2},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":2,"src":{"id":0,"line":5,"column":0,"start":58,"end":127,"length":70,"parent_index":3},"node_type":32,"text":"/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */"},{"id":3,"src":{"id":0,"line":9,"column":4,"start":152,"end":217,"length":66,"parent_index":4},"node_type":32,"text":"/**\n * @dev Returns the amount of tokens in existence.\n */"},{"id":4,"src":{"id":0,"line":14,"column":4,"start":284,"end":355,"length":72,"parent_index":5},"node_type":32,"text":"/**\n * @dev Returns the amount of tokens owned by `account`.\n */"},{"id":5,"src":{"id":0,"line":19,"column":4,"start":435,"end":643,"length":209,"parent_index":6},"node_type":32,"text":"/**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */"},{"id":6,"src":{"id":0,"line":28,"column":4,"start":732,"end":995,"length":264,"parent_index":7},"node_type":32,"text":"/**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */"},{"id":7,"src":{"id":0,"line":37,"column":4,"start":1090,"end":1731,"length":642,"parent_index":8},"node_type":32,"text":"/**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race condition\n * is to first reduce the spender's allowance to 0 and set the desired value\n * afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */"},{"id":8,"src":{"id":0,"line":53,"column":4,"start":1817,"end":2112,"length":296,"parent_index":9},"node_type":32,"text":"/**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */"},{"id":9,"src":{"id":0,"line":68,"column":4,"start":2251,"end":2408,"length":158,"parent_index":10},"node_type":32,"text":"/**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */"},{"id":10,"src":{"id":0,"line":76,"column":4,"start":2492,"end":2639,"length":148,"parent_index":11},"node_type":32,"text":"/**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */"},{"id":11,"src":{"id":0,"line":83,"column":0,"start":2727,"end":2757,"length":31,"parent_index":12},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":12,"src":{"id":0,"line":87,"column":0,"start":2785,"end":3347,"length":563,"parent_index":13},"node_type":32,"text":"/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */"},{"id":13,"src":{"id":0,"line":101,"column":4,"start":3372,"end":3502,"length":131,"parent_index":14},"node_type":32,"text":"/**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */"},{"id":14,"src":{"id":0,"line":114,"column":4,"start":3730,"end":3864,"length":135,"parent_index":15},"node_type":32,"text":"/**\n * @dev Returns the substraction of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */"},{"id":15,"src":{"id":0,"line":126,"column":4,"start":4065,"end":4201,"length":137,"parent_index":16},"node_type":32,"text":"/**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */"},{"id":16,"src":{"id":0,"line":133,"column":12,"start":4317,"end":4395,"length":79,"parent_index":17},"node_type":31,"text":"// Gas optimization: this is cheaper than requiring 'a' not being zero, but the"},{"id":17,"src":{"id":0,"line":134,"column":12,"start":4409,"end":4449,"length":41,"parent_index":18},"node_type":31,"text":"// benefit is lost if 'b' is also tested."},{"id":18,"src":{"id":0,"line":135,"column":12,"start":4463,"end":4533,"length":71,"parent_index":19},"node_type":31,"text":"// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522"},{"id":19,"src":{"id":0,"line":143,"column":4,"start":4706,"end":4843,"length":138,"parent_index":20},"node_type":32,"text":"/**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */"},{"id":20,"src":{"id":0,"line":155,"column":4,"start":5045,"end":5192,"length":148,"parent_index":21},"node_type":32,"text":"/**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */"},{"id":21,"src":{"id":0,"line":167,"column":4,"start":5394,"end":5617,"length":224,"parent_index":22},"node_type":32,"text":"/**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */"},{"id":22,"src":{"id":0,"line":181,"column":4,"start":5725,"end":5984,"length":260,"parent_index":23},"node_type":32,"text":"/**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */"},{"id":23,"src":{"id":0,"line":195,"column":4,"start":6092,"end":6327,"length":236,"parent_index":24},"node_type":32,"text":"/**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */"},{"id":24,"src":{"id":0,"line":209,"column":4,"start":6435,"end":6887,"length":453,"parent_index":25},"node_type":32,"text":"/**\n * @dev Returns the integer division of two unsigned integers, reverting on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */"},{"id":25,"src":{"id":0,"line":225,"column":4,"start":6995,"end":7436,"length":442,"parent_index":26},"node_type":32,"text":"/**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */"},{"id":26,"src":{"id":0,"line":241,"column":4,"start":7544,"end":7996,"length":453,"parent_index":27},"node_type":32,"text":"/**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {trySub}.\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */"},{"id":27,"src":{"id":0,"line":265,"column":4,"start":8239,"end":8711,"length":473,"parent_index":28},"node_type":32,"text":"/**\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */"},{"id":28,"src":{"id":0,"line":288,"column":4,"start":8953,"end":9587,"length":635,"parent_index":29},"node_type":32,"text":"/**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting with custom message when dividing by zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryMod}.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */"},{"id":29,"src":{"id":0,"line":315,"column":0,"start":9827,"end":9857,"length":31,"parent_index":30},"node_type":33,"text":"// SPDX-License-Identifier: MIT"}]} \ No newline at end of file diff --git a/data/tests/ast/TokenSale.solgo.ast.proto.json b/data/tests/ast/TokenSale.solgo.ast.proto.json index 580eb333..8d6bf582 100644 --- a/data/tests/ast/TokenSale.solgo.ast.proto.json +++ b/data/tests/ast/TokenSale.solgo.ast.proto.json @@ -1,8896 +1,8859 @@ { - "id": 30, - "entry_source_unit": 748, - "node_type": 80, - "source_units": [ - { - "id": 31, - "license": "MIT", - "name": "IERC20", - "absolute_path": "IERC20.sol", - "exported_symbols": [ - { - "id": 31, - "name": "IERC20", - "absolute_path": "IERC20.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "33", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "55", - "id": "34", - "length": "23", - "line": "3", - "parentIndex": "31", - "start": "33" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "fullyImplemented": true, - "id": "37", - "kind": "KIND_LIBRARY", - "linearizedBaseContracts": [ - "37" - ], - "name": "IERC20", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "53", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "277", - "id": "40", - "length": "55", - "line": "12", - "parentIndex": "39", - "start": "223" - } - }, - "id": "39", - "kind": "KIND_FUNCTION", - "name": "totalSupply", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "41", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "43", - "nodeType": "VARIABLE_DECLARATION", - "scope": "43", - "src": { - "column": "50", - "end": "275", - "id": "44", - "length": "7", - "line": "12", - "parentIndex": "41", - "start": "269" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "45", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "50", - "end": "275", - "id": "46", - "length": "7", - "line": "12", - "parentIndex": "43", - "start": "269" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "50", - "end": "275", - "id": "42", - "length": "7", - "line": "12", - "parentIndex": "39", - "start": "269" - } - }, - "returnParameters": { - "id": "47", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "49", - "nodeType": "VARIABLE_DECLARATION", - "scope": "49", - "src": { - "column": "50", - "end": "275", - "id": "50", - "length": "7", - "line": "12", - "parentIndex": "47", - "start": "269" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "51", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "50", - "end": "275", - "id": "52", - "length": "7", - "line": "12", - "parentIndex": "49", - "start": "269" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "50", - "end": "275", - "id": "48", - "length": "7", - "line": "12", - "parentIndex": "39", - "start": "269" - } - }, - "scope": "37", - "src": { - "column": "4", - "end": "277", - "id": "40", - "length": "55", - "line": "12", - "parentIndex": "37", - "start": "223" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256", - "typeString": "function(uint256)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "69", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "428", - "id": "56", - "length": "68", - "line": "17", - "parentIndex": "55", - "start": "361" - } - }, - "id": "55", - "kind": "KIND_FUNCTION", - "name": "balanceOf", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "57", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "59", - "name": "account", - "nodeType": "VARIABLE_DECLARATION", - "scope": "59", - "src": { - "column": "23", - "end": "394", - "id": "60", - "length": "15", - "line": "17", - "parentIndex": "57", - "start": "380" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "61", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "386", - "id": "62", - "length": "7", - "line": "17", - "parentIndex": "59", - "start": "380" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "394", - "id": "58", - "length": "15", - "line": "17", - "parentIndex": "55", - "start": "380" - } - }, - "returnParameters": { - "id": "63", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "65", - "nodeType": "VARIABLE_DECLARATION", - "scope": "65", - "src": { - "column": "63", - "end": "426", - "id": "66", - "length": "7", - "line": "17", - "parentIndex": "63", - "start": "420" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "67", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "63", - "end": "426", - "id": "68", - "length": "7", - "line": "17", - "parentIndex": "65", - "start": "420" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "63", - "end": "426", - "id": "64", - "length": "7", - "line": "17", - "parentIndex": "55", - "start": "420" - } - }, - "scope": "37", - "src": { - "column": "4", - "end": "428", - "id": "56", - "length": "68", - "line": "17", - "parentIndex": "37", - "start": "361" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "89", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "725", - "id": "72", - "length": "77", - "line": "26", - "parentIndex": "71", - "start": "649" - } - }, - "id": "71", - "kind": "KIND_FUNCTION", - "name": "transfer", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "73", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "75", - "name": "recipient", - "nodeType": "VARIABLE_DECLARATION", - "scope": "75", - "src": { - "column": "22", - "end": "683", - "id": "76", - "length": "17", - "line": "26", - "parentIndex": "73", - "start": "667" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "77", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "22", - "end": "673", - "id": "78", - "length": "7", - "line": "26", - "parentIndex": "75", - "start": "667" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "79", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "79", - "src": { - "column": "41", - "end": "699", - "id": "80", - "length": "14", - "line": "26", - "parentIndex": "73", - "start": "686" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "81", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "41", - "end": "692", - "id": "82", - "length": "7", - "line": "26", - "parentIndex": "79", - "start": "686" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "22", - "end": "699", - "id": "74", - "length": "33", - "line": "26", - "parentIndex": "71", - "start": "667" - } - }, - "returnParameters": { - "id": "83", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "85", - "nodeType": "VARIABLE_DECLARATION", - "scope": "85", - "src": { - "column": "75", - "end": "723", - "id": "86", - "length": "4", - "line": "26", - "parentIndex": "83", - "start": "720" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "87", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "75", - "end": "723", - "id": "88", - "length": "4", - "line": "26", - "parentIndex": "85", - "start": "720" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "75", - "end": "723", - "id": "84", - "length": "4", - "line": "26", - "parentIndex": "71", - "start": "720" - } - }, - "scope": "37", - "src": { - "column": "4", - "end": "725", - "id": "72", - "length": "77", - "line": "26", - "parentIndex": "37", - "start": "649" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "109", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "1083", - "id": "92", - "length": "83", - "line": "35", - "parentIndex": "91", - "start": "1001" - } - }, - "id": "91", - "kind": "KIND_FUNCTION", - "name": "allowance", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "93", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "95", - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "95", - "src": { - "column": "23", - "end": "1032", - "id": "96", - "length": "13", - "line": "35", - "parentIndex": "93", - "start": "1020" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "97", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "1026", - "id": "98", - "length": "7", - "line": "35", - "parentIndex": "95", - "start": "1020" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "99", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "99", - "src": { - "column": "38", - "end": "1049", - "id": "100", - "length": "15", - "line": "35", - "parentIndex": "93", - "start": "1035" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "101", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "38", - "end": "1041", - "id": "102", - "length": "7", - "line": "35", - "parentIndex": "99", - "start": "1035" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "1049", - "id": "94", - "length": "30", - "line": "35", - "parentIndex": "91", - "start": "1020" - } - }, - "returnParameters": { - "id": "103", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "105", - "nodeType": "VARIABLE_DECLARATION", - "scope": "105", - "src": { - "column": "78", - "end": "1081", - "id": "106", - "length": "7", - "line": "35", - "parentIndex": "103", - "start": "1075" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "107", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "78", - "end": "1081", - "id": "108", - "length": "7", - "line": "35", - "parentIndex": "105", - "start": "1075" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "78", - "end": "1081", - "id": "104", - "length": "7", - "line": "35", - "parentIndex": "91", - "start": "1075" - } - }, - "scope": "37", - "src": { - "column": "4", - "end": "1083", - "id": "92", - "length": "83", - "line": "35", - "parentIndex": "37", - "start": "1001" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address", - "typeString": "function(address,address)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "129", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "1810", - "id": "112", - "length": "74", - "line": "51", - "parentIndex": "111", - "start": "1737" - } - }, - "id": "111", - "kind": "KIND_FUNCTION", - "name": "approve", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "113", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "115", - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "115", - "src": { - "column": "21", - "end": "1768", - "id": "116", - "length": "15", - "line": "51", - "parentIndex": "113", - "start": "1754" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "117", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "21", - "end": "1760", - "id": "118", - "length": "7", - "line": "51", - "parentIndex": "115", - "start": "1754" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "119", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "119", - "src": { - "column": "38", - "end": "1784", - "id": "120", - "length": "14", - "line": "51", - "parentIndex": "113", - "start": "1771" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "121", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "38", - "end": "1777", - "id": "122", - "length": "7", - "line": "51", - "parentIndex": "119", - "start": "1771" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "21", - "end": "1784", - "id": "114", - "length": "31", - "line": "51", - "parentIndex": "111", - "start": "1754" - } - }, - "returnParameters": { - "id": "123", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "125", - "nodeType": "VARIABLE_DECLARATION", - "scope": "125", - "src": { - "column": "72", - "end": "1808", - "id": "126", - "length": "4", - "line": "51", - "parentIndex": "123", - "start": "1805" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "127", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "72", - "end": "1808", - "id": "128", - "length": "4", - "line": "51", - "parentIndex": "125", - "start": "1805" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "72", - "end": "1808", - "id": "124", - "length": "4", - "line": "51", - "parentIndex": "111", - "start": "1805" - } - }, - "scope": "37", - "src": { - "column": "4", - "end": "1810", - "id": "112", - "length": "74", - "line": "51", - "parentIndex": "37", - "start": "1737" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "153", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "2244", - "id": "132", - "length": "127", - "line": "62", - "parentIndex": "131", - "start": "2118" - } - }, - "id": "131", - "kind": "KIND_FUNCTION", - "name": "transferFrom", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "133", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "135", - "name": "sender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "135", - "src": { - "column": "8", - "end": "2162", - "id": "136", - "length": "14", - "line": "63", - "parentIndex": "133", - "start": "2149" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "137", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "2155", - "id": "138", - "length": "7", - "line": "63", - "parentIndex": "135", - "start": "2149" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "139", - "name": "recipient", - "nodeType": "VARIABLE_DECLARATION", - "scope": "139", - "src": { - "column": "8", - "end": "2189", - "id": "140", - "length": "17", - "line": "64", - "parentIndex": "133", - "start": "2173" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "141", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "2179", - "id": "142", - "length": "7", - "line": "64", - "parentIndex": "139", - "start": "2173" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "143", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "143", - "src": { - "column": "8", - "end": "2213", - "id": "144", - "length": "14", - "line": "65", - "parentIndex": "133", - "start": "2200" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "145", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "2206", - "id": "146", - "length": "7", - "line": "65", - "parentIndex": "143", - "start": "2200" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "8", - "end": "2213", - "id": "134", - "length": "65", - "line": "63", - "parentIndex": "131", - "start": "2149" - } - }, - "returnParameters": { - "id": "147", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "149", - "nodeType": "VARIABLE_DECLARATION", - "scope": "149", - "src": { - "column": "24", - "end": "2242", - "id": "150", - "length": "4", - "line": "66", - "parentIndex": "147", - "start": "2239" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "151", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "24", - "end": "2242", - "id": "152", - "length": "4", - "line": "66", - "parentIndex": "149", - "start": "2239" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "24", - "end": "2242", - "id": "148", - "length": "4", - "line": "66", - "parentIndex": "131", - "start": "2239" - } - }, - "scope": "37", - "src": { - "column": "4", - "end": "2244", - "id": "132", - "length": "127", - "line": "62", - "parentIndex": "37", - "start": "2118" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256", - "typeString": "function(address,address,uint256)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", - "value": { - "id": "155", - "name": "Transfer", - "nodeType": "EVENT_DEFINITION", - "parameters": { - "id": "157", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "158", - "indexed": true, - "name": "from", - "nodeType": "VARIABLE_DECLARATION", - "scope": "158", - "src": { - "column": "19", - "end": "2448", - "id": "159", - "length": "20", - "line": "74", - "parentIndex": "157", - "start": "2429" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "160", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "19", - "end": "2435", - "id": "161", - "length": "7", - "line": "74", - "parentIndex": "158", - "start": "2429" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "162", - "indexed": true, - "name": "to", - "nodeType": "VARIABLE_DECLARATION", - "scope": "162", - "src": { - "column": "41", - "end": "2468", - "id": "163", - "length": "18", - "line": "74", - "parentIndex": "157", - "start": "2451" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "164", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "41", - "end": "2457", - "id": "165", - "length": "7", - "line": "74", - "parentIndex": "162", - "start": "2451" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "166", - "name": "value", - "nodeType": "VARIABLE_DECLARATION", - "scope": "166", - "src": { - "column": "61", - "end": "2483", - "id": "167", - "length": "13", - "line": "74", - "parentIndex": "157", - "start": "2471" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "168", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "61", - "end": "2477", - "id": "169", - "length": "7", - "line": "74", - "parentIndex": "166", - "start": "2471" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "4", - "end": "2485", - "id": "156", - "length": "72", - "line": "74", - "parentIndex": "155", - "start": "2414" - } - }, - "src": { - "column": "4", - "end": "2485", - "id": "156", - "length": "72", - "line": "74", - "parentIndex": "37", - "start": "2414" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u0026155", - "typeString": "event IERC20.Transfer" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", - "value": { - "id": "171", - "name": "Approval", - "nodeType": "EVENT_DEFINITION", - "parameters": { - "id": "173", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "174", - "indexed": true, - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "174", - "src": { - "column": "19", - "end": "2680", - "id": "175", - "length": "21", - "line": "80", - "parentIndex": "173", - "start": "2660" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "176", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "19", - "end": "2666", - "id": "177", - "length": "7", - "line": "80", - "parentIndex": "174", - "start": "2660" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "178", - "indexed": true, - "name": "spender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "178", - "src": { - "column": "42", - "end": "2705", - "id": "179", - "length": "23", - "line": "80", - "parentIndex": "173", - "start": "2683" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "180", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "42", - "end": "2689", - "id": "181", - "length": "7", - "line": "80", - "parentIndex": "178", - "start": "2683" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "182", - "name": "value", - "nodeType": "VARIABLE_DECLARATION", - "scope": "182", - "src": { - "column": "67", - "end": "2720", - "id": "183", - "length": "13", - "line": "80", - "parentIndex": "173", - "start": "2708" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "184", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "67", - "end": "2714", - "id": "185", - "length": "7", - "line": "80", - "parentIndex": "182", - "start": "2708" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "4", - "end": "2722", - "id": "172", - "length": "78", - "line": "80", - "parentIndex": "171", - "start": "2645" - } - }, - "src": { - "column": "4", - "end": "2722", - "id": "172", - "length": "78", - "line": "80", - "parentIndex": "37", - "start": "2645" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_IERC20_Approval_\u0026171", - "typeString": "event IERC20.Approval" - } - } - } - ], - "src": { - "end": "2724", - "length": "2596", - "line": "8", - "parentIndex": "31", - "start": "129" - } - } - } - ] - }, - "src": { - "id": 32, - "line": 8, - "start": 129, - "end": 2724, - "length": 2596, - "parent_index": 30 - } - }, - { - "id": 186, - "license": "MIT", - "name": "SafeMath", - "absolute_path": "SafeMath.sol", - "exported_symbols": [ - { - "id": 186, - "name": "SafeMath", - "absolute_path": "SafeMath.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "190", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "2782", - "id": "191", - "length": "23", - "line": "85", - "parentIndex": "186", - "start": "2760" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "fullyImplemented": true, - "id": "192", - "kind": "KIND_LIBRARY", - "linearizedBaseContracts": [ - "192" - ], - "name": "SafeMath", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "216", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "80", - "end": "3723", - "id": "217", - "length": "140", - "line": "106", - "parentIndex": "194", - "start": "3584" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "218", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "3717", - "id": "219", - "length": "124", - "line": "107", - "parentIndex": "192", - "start": "3594" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "222" - ], - "declarations": [ - { - "id": "222", - "mutability": "MUTABLE", - "name": "c", - "nodeType": "VARIABLE_DECLARATION", - "scope": "218", - "src": { - "column": "12", - "end": "3626", - "id": "223", - "length": "9", - "line": "108", - "parentIndex": "220", - "start": "3618" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "224", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "12", - "end": "3624", - "id": "225", - "length": "7", - "line": "108", - "parentIndex": "222", - "start": "3618" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "220", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "226", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "228", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "228", - "src": { - "column": "24", - "end": "3630", - "id": "229", - "length": "1", - "line": "108", - "parentIndex": "226", - "start": "3630" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "ADDITION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "230", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "230", - "src": { - "column": "28", - "end": "3634", - "id": "231", - "length": "1", - "line": "108", - "parentIndex": "226", - "start": "3634" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "24", - "end": "3634", - "id": "227", - "length": "5", - "line": "108", - "parentIndex": "220", - "start": "3630" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "12", - "end": "3635", - "id": "221", - "length": "18", - "line": "108", - "parentIndex": "218", - "start": "3618" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "240", - "nodeType": "BLOCK", - "src": {} - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "234", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "236", - "name": "c", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "220", - "src": { - "column": "16", - "end": "3653", - "id": "237", - "length": "1", - "line": "109", - "parentIndex": "234", - "start": "3653" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "LESS_THAN", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "238", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "238", - "src": { - "column": "20", - "end": "3657", - "id": "239", - "length": "1", - "line": "109", - "parentIndex": "234", - "start": "3657" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "3657", - "id": "235", - "length": "5", - "line": "109", - "parentIndex": "232", - "start": "3653" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "232", - "nodeType": "IF_STATEMENT", - "src": { - "end": "3677", - "id": "233", - "length": "29", - "line": "109", - "parentIndex": "218", - "start": "3649" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", - "value": { - "components": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "245", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "20", - "end": "3702", - "id": "246", - "length": "4", - "line": "110", - "parentIndex": "243", - "start": "3699" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "247", - "name": "c", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "220", - "src": { - "column": "26", - "end": "3705", - "id": "248", - "length": "1", - "line": "110", - "parentIndex": "243", - "start": "3705" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "id": "243", - "isPure": true, - "nodeType": "TUPLE_EXPRESSION", - "src": { - "column": "19", - "end": "3706", - "id": "244", - "length": "9", - "line": "110", - "parentIndex": "194", - "start": "3698" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - }, - "functionReturnParameters": "194", - "id": "241", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "3707", - "id": "242", - "length": "17", - "line": "110", - "parentIndex": "194", - "start": "3691" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - } - ] - } - } - ] - }, - "id": "194", - "kind": "KIND_FUNCTION", - "name": "tryAdd", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "196", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "198", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "198", - "src": { - "column": "20", - "end": "3532", - "id": "199", - "length": "9", - "line": "106", - "parentIndex": "196", - "start": "3524" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "200", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "20", - "end": "3530", - "id": "201", - "length": "7", - "line": "106", - "parentIndex": "198", - "start": "3524" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "202", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "202", - "src": { - "column": "31", - "end": "3543", - "id": "203", - "length": "9", - "line": "106", - "parentIndex": "196", - "start": "3535" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "204", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "3541", - "id": "205", - "length": "7", - "line": "106", - "parentIndex": "202", - "start": "3535" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "20", - "end": "3543", - "id": "197", - "length": "20", - "line": "106", - "parentIndex": "194", - "start": "3524" - } - }, - "returnParameters": { - "id": "206", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "208", - "nodeType": "VARIABLE_DECLARATION", - "scope": "208", - "src": { - "column": "65", - "end": "3572", - "id": "209", - "length": "4", - "line": "106", - "parentIndex": "206", - "start": "3569" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "210", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "65", - "end": "3572", - "id": "211", - "length": "4", - "line": "106", - "parentIndex": "208", - "start": "3569" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "212", - "nodeType": "VARIABLE_DECLARATION", - "scope": "212", - "src": { - "column": "71", - "end": "3581", - "id": "213", - "length": "7", - "line": "106", - "parentIndex": "206", - "start": "3575" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "214", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "71", - "end": "3581", - "id": "215", - "length": "7", - "line": "106", - "parentIndex": "212", - "start": "3575" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "3581", - "id": "207", - "length": "13", - "line": "106", - "parentIndex": "194", - "start": "3569" - } - }, - "scope": "192", - "src": { - "column": "4", - "end": "3723", - "id": "195", - "length": "216", - "line": "106", - "parentIndex": "192", - "start": "3508" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "272", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "80", - "end": "4058", - "id": "273", - "length": "113", - "line": "119", - "parentIndex": "250", - "start": "3946" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "274", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "4052", - "id": "275", - "length": "97", - "line": "120", - "parentIndex": "192", - "start": "3956" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "284", - "nodeType": "BLOCK", - "src": {} - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "278", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "280", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "280", - "src": { - "column": "16", - "end": "3984", - "id": "281", - "length": "1", - "line": "121", - "parentIndex": "278", - "start": "3984" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "282", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "282", - "src": { - "column": "20", - "end": "3988", - "id": "283", - "length": "1", - "line": "121", - "parentIndex": "278", - "start": "3988" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "3988", - "id": "279", - "length": "5", - "line": "121", - "parentIndex": "276", - "start": "3984" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "276", - "nodeType": "IF_STATEMENT", - "src": { - "end": "4008", - "id": "277", - "length": "29", - "line": "121", - "parentIndex": "274", - "start": "3980" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", - "value": { - "components": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "289", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "20", - "end": "4033", - "id": "290", - "length": "4", - "line": "122", - "parentIndex": "287", - "start": "4030" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "291", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "293", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "293", - "src": { - "column": "26", - "end": "4036", - "id": "294", - "length": "1", - "line": "122", - "parentIndex": "291", - "start": "4036" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "295", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "295", - "src": { - "column": "30", - "end": "4040", - "id": "296", - "length": "1", - "line": "122", - "parentIndex": "291", - "start": "4040" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "26", - "end": "4040", - "id": "292", - "length": "5", - "line": "122", - "parentIndex": "287", - "start": "4036" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "id": "287", - "isPure": true, - "nodeType": "TUPLE_EXPRESSION", - "src": { - "column": "19", - "end": "4041", - "id": "288", - "length": "13", - "line": "122", - "parentIndex": "250", - "start": "4029" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - }, - "functionReturnParameters": "250", - "id": "285", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "4042", - "id": "286", - "length": "21", - "line": "122", - "parentIndex": "250", - "start": "4022" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - } - ] - } - } - ] - }, - "id": "250", - "kind": "KIND_FUNCTION", - "name": "trySub", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "252", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "254", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "254", - "src": { - "column": "20", - "end": "3894", - "id": "255", - "length": "9", - "line": "119", - "parentIndex": "252", - "start": "3886" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "256", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "20", - "end": "3892", - "id": "257", - "length": "7", - "line": "119", - "parentIndex": "254", - "start": "3886" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "258", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "258", - "src": { - "column": "31", - "end": "3905", - "id": "259", - "length": "9", - "line": "119", - "parentIndex": "252", - "start": "3897" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "260", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "3903", - "id": "261", - "length": "7", - "line": "119", - "parentIndex": "258", - "start": "3897" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "20", - "end": "3905", - "id": "253", - "length": "20", - "line": "119", - "parentIndex": "250", - "start": "3886" - } - }, - "returnParameters": { - "id": "262", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "264", - "nodeType": "VARIABLE_DECLARATION", - "scope": "264", - "src": { - "column": "65", - "end": "3934", - "id": "265", - "length": "4", - "line": "119", - "parentIndex": "262", - "start": "3931" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "266", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "65", - "end": "3934", - "id": "267", - "length": "4", - "line": "119", - "parentIndex": "264", - "start": "3931" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "268", - "nodeType": "VARIABLE_DECLARATION", - "scope": "268", - "src": { - "column": "71", - "end": "3943", - "id": "269", - "length": "7", - "line": "119", - "parentIndex": "262", - "start": "3937" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "270", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "71", - "end": "3943", - "id": "271", - "length": "7", - "line": "119", - "parentIndex": "268", - "start": "3937" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "3943", - "id": "263", - "length": "13", - "line": "119", - "parentIndex": "250", - "start": "3931" - } - }, - "scope": "192", - "src": { - "column": "4", - "end": "4058", - "id": "251", - "length": "189", - "line": "119", - "parentIndex": "192", - "start": "3870" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "320", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "80", - "end": "4699", - "id": "321", - "length": "417", - "line": "131", - "parentIndex": "298", - "start": "4283" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "322", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "4693", - "id": "323", - "length": "401", - "line": "132", - "parentIndex": "192", - "start": "4293" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "332", - "nodeType": "BLOCK", - "src": {} - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "326", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "328", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "328", - "src": { - "column": "16", - "end": "4551", - "id": "329", - "length": "1", - "line": "136", - "parentIndex": "326", - "start": "4551" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "330", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "21", - "end": "4556", - "id": "331", - "length": "1", - "line": "136", - "parentIndex": "326", - "start": "4556" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "16", - "end": "4556", - "id": "327", - "length": "6", - "line": "136", - "parentIndex": "324", - "start": "4551" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "324", - "nodeType": "IF_STATEMENT", - "src": { - "end": "4575", - "id": "325", - "length": "29", - "line": "136", - "parentIndex": "322", - "start": "4547" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "335" - ], - "declarations": [ - { - "id": "335", - "mutability": "MUTABLE", - "name": "c", - "nodeType": "VARIABLE_DECLARATION", - "scope": "322", - "src": { - "column": "12", - "end": "4597", - "id": "336", - "length": "9", - "line": "137", - "parentIndex": "333", - "start": "4589" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "337", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "12", - "end": "4595", - "id": "338", - "length": "7", - "line": "137", - "parentIndex": "335", - "start": "4589" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "333", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "339", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "341", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "341", - "src": { - "column": "24", - "end": "4601", - "id": "342", - "length": "1", - "line": "137", - "parentIndex": "339", - "start": "4601" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "MULTIPLICATION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "343", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "343", - "src": { - "column": "28", - "end": "4605", - "id": "344", - "length": "1", - "line": "137", - "parentIndex": "339", - "start": "4605" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "24", - "end": "4605", - "id": "340", - "length": "5", - "line": "137", - "parentIndex": "333", - "start": "4601" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "12", - "end": "4606", - "id": "334", - "length": "18", - "line": "137", - "parentIndex": "322", - "start": "4589" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "357", - "nodeType": "BLOCK", - "src": {} - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "347", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "349", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "351", - "name": "c", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "333", - "src": { - "column": "16", - "end": "4624", - "id": "352", - "length": "1", - "line": "138", - "parentIndex": "349", - "start": "4624" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "DIVISION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "353", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "353", - "src": { - "column": "20", - "end": "4628", - "id": "354", - "length": "1", - "line": "138", - "parentIndex": "349", - "start": "4628" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "4628", - "id": "350", - "length": "5", - "line": "138", - "parentIndex": "347", - "start": "4624" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "355", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "355", - "src": { - "column": "25", - "end": "4633", - "id": "356", - "length": "1", - "line": "138", - "parentIndex": "347", - "start": "4633" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "4633", - "id": "348", - "length": "10", - "line": "138", - "parentIndex": "345", - "start": "4624" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "345", - "nodeType": "IF_STATEMENT", - "src": { - "end": "4653", - "id": "346", - "length": "34", - "line": "138", - "parentIndex": "322", - "start": "4620" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", - "value": { - "components": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "362", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "20", - "end": "4678", - "id": "363", - "length": "4", - "line": "139", - "parentIndex": "360", - "start": "4675" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "364", - "name": "c", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "333", - "src": { - "column": "26", - "end": "4681", - "id": "365", - "length": "1", - "line": "139", - "parentIndex": "360", - "start": "4681" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "id": "360", - "isPure": true, - "nodeType": "TUPLE_EXPRESSION", - "src": { - "column": "19", - "end": "4682", - "id": "361", - "length": "9", - "line": "139", - "parentIndex": "298", - "start": "4674" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - }, - "functionReturnParameters": "298", - "id": "358", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "4683", - "id": "359", - "length": "17", - "line": "139", - "parentIndex": "298", - "start": "4667" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - } - ] - } - } - ] - }, - "id": "298", - "kind": "KIND_FUNCTION", - "name": "tryMul", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "300", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "302", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "302", - "src": { - "column": "20", - "end": "4231", - "id": "303", - "length": "9", - "line": "131", - "parentIndex": "300", - "start": "4223" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "304", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "20", - "end": "4229", - "id": "305", - "length": "7", - "line": "131", - "parentIndex": "302", - "start": "4223" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "306", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "306", - "src": { - "column": "31", - "end": "4242", - "id": "307", - "length": "9", - "line": "131", - "parentIndex": "300", - "start": "4234" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "308", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "4240", - "id": "309", - "length": "7", - "line": "131", - "parentIndex": "306", - "start": "4234" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "20", - "end": "4242", - "id": "301", - "length": "20", - "line": "131", - "parentIndex": "298", - "start": "4223" - } - }, - "returnParameters": { - "id": "310", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "312", - "nodeType": "VARIABLE_DECLARATION", - "scope": "312", - "src": { - "column": "65", - "end": "4271", - "id": "313", - "length": "4", - "line": "131", - "parentIndex": "310", - "start": "4268" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "314", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "65", - "end": "4271", - "id": "315", - "length": "4", - "line": "131", - "parentIndex": "312", - "start": "4268" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "316", - "nodeType": "VARIABLE_DECLARATION", - "scope": "316", - "src": { - "column": "71", - "end": "4280", - "id": "317", - "length": "7", - "line": "131", - "parentIndex": "310", - "start": "4274" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "318", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "71", - "end": "4280", - "id": "319", - "length": "7", - "line": "131", - "parentIndex": "316", - "start": "4274" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "4280", - "id": "311", - "length": "13", - "line": "131", - "parentIndex": "298", - "start": "4268" - } - }, - "scope": "192", - "src": { - "column": "4", - "end": "4699", - "id": "299", - "length": "493", - "line": "131", - "parentIndex": "192", - "start": "4207" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "389", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "80", - "end": "5038", - "id": "390", - "length": "114", - "line": "148", - "parentIndex": "367", - "start": "4925" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "391", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "5032", - "id": "392", - "length": "98", - "line": "149", - "parentIndex": "192", - "start": "4935" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "401", - "nodeType": "BLOCK", - "src": {} - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "395", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "397", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "397", - "src": { - "column": "16", - "end": "4963", - "id": "398", - "length": "1", - "line": "150", - "parentIndex": "395", - "start": "4963" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "399", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "21", - "end": "4968", - "id": "400", - "length": "1", - "line": "150", - "parentIndex": "395", - "start": "4968" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "16", - "end": "4968", - "id": "396", - "length": "6", - "line": "150", - "parentIndex": "393", - "start": "4963" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "393", - "nodeType": "IF_STATEMENT", - "src": { - "end": "4988", - "id": "394", - "length": "30", - "line": "150", - "parentIndex": "391", - "start": "4959" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", - "value": { - "components": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "406", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "20", - "end": "5013", - "id": "407", - "length": "4", - "line": "151", - "parentIndex": "404", - "start": "5010" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "408", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "410", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "410", - "src": { - "column": "26", - "end": "5016", - "id": "411", - "length": "1", - "line": "151", - "parentIndex": "408", - "start": "5016" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "DIVISION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "412", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "412", - "src": { - "column": "30", - "end": "5020", - "id": "413", - "length": "1", - "line": "151", - "parentIndex": "408", - "start": "5020" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "26", - "end": "5020", - "id": "409", - "length": "5", - "line": "151", - "parentIndex": "404", - "start": "5016" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "id": "404", - "isPure": true, - "nodeType": "TUPLE_EXPRESSION", - "src": { - "column": "19", - "end": "5021", - "id": "405", - "length": "13", - "line": "151", - "parentIndex": "367", - "start": "5009" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - }, - "functionReturnParameters": "367", - "id": "402", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "5022", - "id": "403", - "length": "21", - "line": "151", - "parentIndex": "367", - "start": "5002" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - } - ] - } - } - ] - }, - "id": "367", - "kind": "KIND_FUNCTION", - "name": "tryDiv", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "369", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "371", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "371", - "src": { - "column": "20", - "end": "4873", - "id": "372", - "length": "9", - "line": "148", - "parentIndex": "369", - "start": "4865" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "373", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "20", - "end": "4871", - "id": "374", - "length": "7", - "line": "148", - "parentIndex": "371", - "start": "4865" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "375", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "375", - "src": { - "column": "31", - "end": "4884", - "id": "376", - "length": "9", - "line": "148", - "parentIndex": "369", - "start": "4876" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "377", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "4882", - "id": "378", - "length": "7", - "line": "148", - "parentIndex": "375", - "start": "4876" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "20", - "end": "4884", - "id": "370", - "length": "20", - "line": "148", - "parentIndex": "367", - "start": "4865" - } - }, - "returnParameters": { - "id": "379", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "381", - "nodeType": "VARIABLE_DECLARATION", - "scope": "381", - "src": { - "column": "65", - "end": "4913", - "id": "382", - "length": "4", - "line": "148", - "parentIndex": "379", - "start": "4910" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "383", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "65", - "end": "4913", - "id": "384", - "length": "4", - "line": "148", - "parentIndex": "381", - "start": "4910" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "385", - "nodeType": "VARIABLE_DECLARATION", - "scope": "385", - "src": { - "column": "71", - "end": "4922", - "id": "386", - "length": "7", - "line": "148", - "parentIndex": "379", - "start": "4916" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "387", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "71", - "end": "4922", - "id": "388", - "length": "7", - "line": "148", - "parentIndex": "385", - "start": "4916" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "4922", - "id": "380", - "length": "13", - "line": "148", - "parentIndex": "367", - "start": "4910" - } - }, - "scope": "192", - "src": { - "column": "4", - "end": "5038", - "id": "368", - "length": "190", - "line": "148", - "parentIndex": "192", - "start": "4849" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "437", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "80", - "end": "5387", - "id": "438", - "length": "114", - "line": "160", - "parentIndex": "415", - "start": "5274" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "439", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "5381", - "id": "440", - "length": "98", - "line": "161", - "parentIndex": "192", - "start": "5284" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "449", - "nodeType": "BLOCK", - "src": {} - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "443", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "445", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "445", - "src": { - "column": "16", - "end": "5312", - "id": "446", - "length": "1", - "line": "162", - "parentIndex": "443", - "start": "5312" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "447", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "21", - "end": "5317", - "id": "448", - "length": "1", - "line": "162", - "parentIndex": "443", - "start": "5317" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "16", - "end": "5317", - "id": "444", - "length": "6", - "line": "162", - "parentIndex": "441", - "start": "5312" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "441", - "nodeType": "IF_STATEMENT", - "src": { - "end": "5337", - "id": "442", - "length": "30", - "line": "162", - "parentIndex": "439", - "start": "5308" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", - "value": { - "components": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "454", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "20", - "end": "5362", - "id": "455", - "length": "4", - "line": "163", - "parentIndex": "452", - "start": "5359" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "456", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "458", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "458", - "src": { - "column": "26", - "end": "5365", - "id": "459", - "length": "1", - "line": "163", - "parentIndex": "456", - "start": "5365" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "MODULO", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "460", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "460", - "src": { - "column": "30", - "end": "5369", - "id": "461", - "length": "1", - "line": "163", - "parentIndex": "456", - "start": "5369" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "26", - "end": "5369", - "id": "457", - "length": "5", - "line": "163", - "parentIndex": "452", - "start": "5365" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "id": "452", - "isPure": true, - "nodeType": "TUPLE_EXPRESSION", - "src": { - "column": "19", - "end": "5370", - "id": "453", - "length": "13", - "line": "163", - "parentIndex": "415", - "start": "5358" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - }, - "functionReturnParameters": "415", - "id": "450", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "5371", - "id": "451", - "length": "21", - "line": "163", - "parentIndex": "415", - "start": "5351" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", - "typeString": "tuple(bool,uint256)" - } - } - } - ] - } - } - ] - }, - "id": "415", - "kind": "KIND_FUNCTION", - "name": "tryMod", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "417", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "419", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "419", - "src": { - "column": "20", - "end": "5222", - "id": "420", - "length": "9", - "line": "160", - "parentIndex": "417", - "start": "5214" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "421", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "20", - "end": "5220", - "id": "422", - "length": "7", - "line": "160", - "parentIndex": "419", - "start": "5214" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "423", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "423", - "src": { - "column": "31", - "end": "5233", - "id": "424", - "length": "9", - "line": "160", - "parentIndex": "417", - "start": "5225" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "425", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "5231", - "id": "426", - "length": "7", - "line": "160", - "parentIndex": "423", - "start": "5225" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "20", - "end": "5233", - "id": "418", - "length": "20", - "line": "160", - "parentIndex": "415", - "start": "5214" - } - }, - "returnParameters": { - "id": "427", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "429", - "nodeType": "VARIABLE_DECLARATION", - "scope": "429", - "src": { - "column": "65", - "end": "5262", - "id": "430", - "length": "4", - "line": "160", - "parentIndex": "427", - "start": "5259" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "431", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "65", - "end": "5262", - "id": "432", - "length": "4", - "line": "160", - "parentIndex": "429", - "start": "5259" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "433", - "nodeType": "VARIABLE_DECLARATION", - "scope": "433", - "src": { - "column": "71", - "end": "5271", - "id": "434", - "length": "7", - "line": "160", - "parentIndex": "427", - "start": "5265" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "435", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "71", - "end": "5271", - "id": "436", - "length": "7", - "line": "160", - "parentIndex": "433", - "start": "5265" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "5271", - "id": "428", - "length": "13", - "line": "160", - "parentIndex": "415", - "start": "5259" - } - }, - "scope": "192", - "src": { - "column": "4", - "end": "5387", - "id": "416", - "length": "190", - "line": "160", - "parentIndex": "192", - "start": "5198" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "481", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "71", - "end": "5718", - "id": "482", - "length": "29", - "line": "177", - "parentIndex": "463", - "start": "5690" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "485", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "487", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "487", - "src": { - "column": "15", - "end": "5707", - "id": "488", - "length": "1", - "line": "178", - "parentIndex": "485", - "start": "5707" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "ADDITION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "489", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "489", - "src": { - "column": "19", - "end": "5711", - "id": "490", - "length": "1", - "line": "178", - "parentIndex": "485", - "start": "5711" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "15", - "end": "5711", - "id": "486", - "length": "5", - "line": "178", - "parentIndex": "481", - "start": "5707" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "463", - "id": "483", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "5712", - "id": "484", - "length": "13", - "line": "178", - "parentIndex": "463", - "start": "5700" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "463", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "add", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "465", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "467", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "467", - "src": { - "column": "17", - "end": "5644", - "id": "468", - "length": "9", - "line": "177", - "parentIndex": "465", - "start": "5636" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "469", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "5642", - "id": "470", - "length": "7", - "line": "177", - "parentIndex": "467", - "start": "5636" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "471", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "471", - "src": { - "column": "28", - "end": "5655", - "id": "472", - "length": "9", - "line": "177", - "parentIndex": "465", - "start": "5647" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "473", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "5653", - "id": "474", - "length": "7", - "line": "177", - "parentIndex": "471", - "start": "5647" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "17", - "end": "5655", - "id": "466", - "length": "20", - "line": "177", - "parentIndex": "463", - "start": "5636" - } - }, - "returnParameters": { - "id": "475", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "477", - "nodeType": "VARIABLE_DECLARATION", - "scope": "477", - "src": { - "column": "62", - "end": "5687", - "id": "478", - "length": "7", - "line": "177", - "parentIndex": "475", - "start": "5681" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "479", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "5687", - "id": "480", - "length": "7", - "line": "177", - "parentIndex": "477", - "start": "5681" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "62", - "end": "5687", - "id": "476", - "length": "7", - "line": "177", - "parentIndex": "463", - "start": "5681" - } - }, - "scope": "192", - "src": { - "column": "4", - "end": "5718", - "id": "464", - "length": "96", - "line": "177", - "parentIndex": "192", - "start": "5623" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "510", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "71", - "end": "6085", - "id": "511", - "length": "29", - "line": "191", - "parentIndex": "492", - "start": "6057" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "514", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "516", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "516", - "src": { - "column": "15", - "end": "6074", - "id": "517", - "length": "1", - "line": "192", - "parentIndex": "514", - "start": "6074" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "518", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "518", - "src": { - "column": "19", - "end": "6078", - "id": "519", - "length": "1", - "line": "192", - "parentIndex": "514", - "start": "6078" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "15", - "end": "6078", - "id": "515", - "length": "5", - "line": "192", - "parentIndex": "510", - "start": "6074" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "492", - "id": "512", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "6079", - "id": "513", - "length": "13", - "line": "192", - "parentIndex": "492", - "start": "6067" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "492", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "sub", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "494", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "496", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "496", - "src": { - "column": "17", - "end": "6011", - "id": "497", - "length": "9", - "line": "191", - "parentIndex": "494", - "start": "6003" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "498", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "6009", - "id": "499", - "length": "7", - "line": "191", - "parentIndex": "496", - "start": "6003" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "500", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "500", - "src": { - "column": "28", - "end": "6022", - "id": "501", - "length": "9", - "line": "191", - "parentIndex": "494", - "start": "6014" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "502", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "6020", - "id": "503", - "length": "7", - "line": "191", - "parentIndex": "500", - "start": "6014" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "17", - "end": "6022", - "id": "495", - "length": "20", - "line": "191", - "parentIndex": "492", - "start": "6003" - } - }, - "returnParameters": { - "id": "504", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "506", - "nodeType": "VARIABLE_DECLARATION", - "scope": "506", - "src": { - "column": "62", - "end": "6054", - "id": "507", - "length": "7", - "line": "191", - "parentIndex": "504", - "start": "6048" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "508", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "6054", - "id": "509", - "length": "7", - "line": "191", - "parentIndex": "506", - "start": "6048" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "62", - "end": "6054", - "id": "505", - "length": "7", - "line": "191", - "parentIndex": "492", - "start": "6048" - } - }, - "scope": "192", - "src": { - "column": "4", - "end": "6085", - "id": "493", - "length": "96", - "line": "191", - "parentIndex": "192", - "start": "5990" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "539", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "71", - "end": "6428", - "id": "540", - "length": "29", - "line": "205", - "parentIndex": "521", - "start": "6400" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "543", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "545", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "545", - "src": { - "column": "15", - "end": "6417", - "id": "546", - "length": "1", - "line": "206", - "parentIndex": "543", - "start": "6417" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "MULTIPLICATION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "547", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "547", - "src": { - "column": "19", - "end": "6421", - "id": "548", - "length": "1", - "line": "206", - "parentIndex": "543", - "start": "6421" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "15", - "end": "6421", - "id": "544", - "length": "5", - "line": "206", - "parentIndex": "539", - "start": "6417" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "521", - "id": "541", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "6422", - "id": "542", - "length": "13", - "line": "206", - "parentIndex": "521", - "start": "6410" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "521", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "mul", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "523", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "525", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "525", - "src": { - "column": "17", - "end": "6354", - "id": "526", - "length": "9", - "line": "205", - "parentIndex": "523", - "start": "6346" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "527", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "6352", - "id": "528", - "length": "7", - "line": "205", - "parentIndex": "525", - "start": "6346" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "529", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "529", - "src": { - "column": "28", - "end": "6365", - "id": "530", - "length": "9", - "line": "205", - "parentIndex": "523", - "start": "6357" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "531", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "6363", - "id": "532", - "length": "7", - "line": "205", - "parentIndex": "529", - "start": "6357" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "17", - "end": "6365", - "id": "524", - "length": "20", - "line": "205", - "parentIndex": "521", - "start": "6346" - } - }, - "returnParameters": { - "id": "533", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "535", - "nodeType": "VARIABLE_DECLARATION", - "scope": "535", - "src": { - "column": "62", - "end": "6397", - "id": "536", - "length": "7", - "line": "205", - "parentIndex": "533", - "start": "6391" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "537", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "6397", - "id": "538", - "length": "7", - "line": "205", - "parentIndex": "535", - "start": "6391" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "62", - "end": "6397", - "id": "534", - "length": "7", - "line": "205", - "parentIndex": "521", - "start": "6391" - } - }, - "scope": "192", - "src": { - "column": "4", - "end": "6428", - "id": "522", - "length": "96", - "line": "205", - "parentIndex": "192", - "start": "6333" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "568", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "71", - "end": "6988", - "id": "569", - "length": "29", - "line": "221", - "parentIndex": "550", - "start": "6960" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "572", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "574", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "574", - "src": { - "column": "15", - "end": "6977", - "id": "575", - "length": "1", - "line": "222", - "parentIndex": "572", - "start": "6977" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "DIVISION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "576", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "576", - "src": { - "column": "19", - "end": "6981", - "id": "577", - "length": "1", - "line": "222", - "parentIndex": "572", - "start": "6981" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "15", - "end": "6981", - "id": "573", - "length": "5", - "line": "222", - "parentIndex": "568", - "start": "6977" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "550", - "id": "570", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "6982", - "id": "571", - "length": "13", - "line": "222", - "parentIndex": "550", - "start": "6970" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "550", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "div", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "552", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "554", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "554", - "src": { - "column": "17", - "end": "6914", - "id": "555", - "length": "9", - "line": "221", - "parentIndex": "552", - "start": "6906" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "556", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "6912", - "id": "557", - "length": "7", - "line": "221", - "parentIndex": "554", - "start": "6906" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "558", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "558", - "src": { - "column": "28", - "end": "6925", - "id": "559", - "length": "9", - "line": "221", - "parentIndex": "552", - "start": "6917" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "560", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "6923", - "id": "561", - "length": "7", - "line": "221", - "parentIndex": "558", - "start": "6917" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "17", - "end": "6925", - "id": "553", - "length": "20", - "line": "221", - "parentIndex": "550", - "start": "6906" - } - }, - "returnParameters": { - "id": "562", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "564", - "nodeType": "VARIABLE_DECLARATION", - "scope": "564", - "src": { - "column": "62", - "end": "6957", - "id": "565", - "length": "7", - "line": "221", - "parentIndex": "562", - "start": "6951" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "566", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "6957", - "id": "567", - "length": "7", - "line": "221", - "parentIndex": "564", - "start": "6951" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "62", - "end": "6957", - "id": "563", - "length": "7", - "line": "221", - "parentIndex": "550", - "start": "6951" - } - }, - "scope": "192", - "src": { - "column": "4", - "end": "6988", - "id": "551", - "length": "96", - "line": "221", - "parentIndex": "192", - "start": "6893" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "597", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "71", - "end": "7537", - "id": "598", - "length": "29", - "line": "237", - "parentIndex": "579", - "start": "7509" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "601", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "603", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "603", - "src": { - "column": "15", - "end": "7526", - "id": "604", - "length": "1", - "line": "238", - "parentIndex": "601", - "start": "7526" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "MODULO", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "605", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "605", - "src": { - "column": "19", - "end": "7530", - "id": "606", - "length": "1", - "line": "238", - "parentIndex": "601", - "start": "7530" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "15", - "end": "7530", - "id": "602", - "length": "5", - "line": "238", - "parentIndex": "597", - "start": "7526" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "579", - "id": "599", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "7531", - "id": "600", - "length": "13", - "line": "238", - "parentIndex": "579", - "start": "7519" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - }, - "id": "579", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "mod", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "581", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "583", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "583", - "src": { - "column": "17", - "end": "7463", - "id": "584", - "length": "9", - "line": "237", - "parentIndex": "581", - "start": "7455" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "585", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "7461", - "id": "586", - "length": "7", - "line": "237", - "parentIndex": "583", - "start": "7455" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "587", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "587", - "src": { - "column": "28", - "end": "7474", - "id": "588", - "length": "9", - "line": "237", - "parentIndex": "581", - "start": "7466" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "589", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "7472", - "id": "590", - "length": "7", - "line": "237", - "parentIndex": "587", - "start": "7466" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "17", - "end": "7474", - "id": "582", - "length": "20", - "line": "237", - "parentIndex": "579", - "start": "7455" - } - }, - "returnParameters": { - "id": "591", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "593", - "nodeType": "VARIABLE_DECLARATION", - "scope": "593", - "src": { - "column": "62", - "end": "7506", - "id": "594", - "length": "7", - "line": "237", - "parentIndex": "591", - "start": "7500" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "595", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "7506", - "id": "596", - "length": "7", - "line": "237", - "parentIndex": "593", - "start": "7500" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "62", - "end": "7506", - "id": "592", - "length": "7", - "line": "237", - "parentIndex": "579", - "start": "7500" - } - }, - "scope": "192", - "src": { - "column": "4", - "end": "7537", - "id": "580", - "length": "96", - "line": "237", - "parentIndex": "192", - "start": "7442" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256", - "typeString": "function(uint256,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "630", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "38", - "end": "8232", - "id": "631", - "length": "106", - "line": "258", - "parentIndex": "608", - "start": "8127" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "632", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "8226", - "id": "633", - "length": "90", - "line": "259", - "parentIndex": "192", - "start": "8137" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "636", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "638", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "638", - "src": { - "column": "20", - "end": "8169", - "id": "639", - "length": "1", - "line": "260", - "parentIndex": "636", - "start": "8169" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "LESS_THAN_OR_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "640", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "640", - "src": { - "column": "25", - "end": "8174", - "id": "641", - "length": "1", - "line": "260", - "parentIndex": "636", - "start": "8174" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "20", - "end": "8174", - "id": "637", - "length": "6", - "line": "260", - "parentIndex": "634", - "start": "8169" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": "642", - "name": "errorMessage", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "642", - "src": { - "column": "28", - "end": "8188", - "id": "643", - "length": "12", - "line": "260", - "parentIndex": "634", - "start": "8177" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "id": "644", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "12", - "end": "8167", - "id": "645", - "length": "7", - "line": "260", - "parentIndex": "634", - "start": "8161" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string", - "typeString": "function(bool,string)" - } - } - }, - "id": "634", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "8189", - "id": "635", - "length": "29", - "line": "260", - "parentIndex": "632", - "start": "8161" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string$", - "typeString": "function(bool,string)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "648", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "650", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "650", - "src": { - "column": "19", - "end": "8211", - "id": "651", - "length": "1", - "line": "261", - "parentIndex": "648", - "start": "8211" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "652", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "652", - "src": { - "column": "23", - "end": "8215", - "id": "653", - "length": "1", - "line": "261", - "parentIndex": "648", - "start": "8215" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "19", - "end": "8215", - "id": "649", - "length": "5", - "line": "261", - "parentIndex": "632", - "start": "8211" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "608", - "id": "646", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "8216", - "id": "647", - "length": "13", - "line": "261", - "parentIndex": "608", - "start": "8204" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - } - } - ] - }, - "id": "608", - "kind": "KIND_FUNCTION", - "name": "sub", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "610", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "612", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "612", - "src": { - "column": "8", - "end": "8032", - "id": "613", - "length": "9", - "line": "255", - "parentIndex": "610", - "start": "8024" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "614", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "8030", - "id": "615", - "length": "7", - "line": "255", - "parentIndex": "612", - "start": "8024" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "616", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "616", - "src": { - "column": "8", - "end": "8051", - "id": "617", - "length": "9", - "line": "256", - "parentIndex": "610", - "start": "8043" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "618", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "8049", - "id": "619", - "length": "7", - "line": "256", - "parentIndex": "616", - "start": "8043" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "620", - "name": "errorMessage", - "nodeType": "VARIABLE_DECLARATION", - "scope": "620", - "src": { - "column": "8", - "end": "8087", - "id": "621", - "length": "26", - "line": "257", - "parentIndex": "610", - "start": "8062" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "622", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "8067", - "id": "623", - "length": "6", - "line": "257", - "parentIndex": "620", - "start": "8062" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "8", - "end": "8087", - "id": "611", - "length": "64", - "line": "255", - "parentIndex": "608", - "start": "8024" - } - }, - "returnParameters": { - "id": "624", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "626", - "nodeType": "VARIABLE_DECLARATION", - "scope": "626", - "src": { - "column": "29", - "end": "8124", - "id": "627", - "length": "7", - "line": "258", - "parentIndex": "624", - "start": "8118" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "628", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "29", - "end": "8124", - "id": "629", - "length": "7", - "line": "258", - "parentIndex": "626", - "start": "8118" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "29", - "end": "8124", - "id": "625", - "length": "7", - "line": "258", - "parentIndex": "608", - "start": "8118" - } - }, - "scope": "192", - "src": { - "column": "4", - "end": "8232", - "id": "609", - "length": "231", - "line": "254", - "parentIndex": "192", - "start": "8002" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256$$_t_string", - "typeString": "function(uint256,uint256,string)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "677", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "38", - "end": "8946", - "id": "678", - "length": "105", - "line": "281", - "parentIndex": "655", - "start": "8842" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "679", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "8940", - "id": "680", - "length": "89", - "line": "282", - "parentIndex": "192", - "start": "8852" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "683", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "685", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "685", - "src": { - "column": "20", - "end": "8884", - "id": "686", - "length": "1", - "line": "283", - "parentIndex": "683", - "start": "8884" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "687", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "24", - "end": "8888", - "id": "688", - "length": "1", - "line": "283", - "parentIndex": "683", - "start": "8888" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "20", - "end": "8888", - "id": "684", - "length": "5", - "line": "283", - "parentIndex": "681", - "start": "8884" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": "689", - "name": "errorMessage", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "689", - "src": { - "column": "27", - "end": "8902", - "id": "690", - "length": "12", - "line": "283", - "parentIndex": "681", - "start": "8891" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "id": "691", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "12", - "end": "8882", - "id": "692", - "length": "7", - "line": "283", - "parentIndex": "681", - "start": "8876" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string", - "typeString": "function(bool,string)" - } - } - }, - "id": "681", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "8903", - "id": "682", - "length": "28", - "line": "283", - "parentIndex": "679", - "start": "8876" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string$", - "typeString": "function(bool,string)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "695", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "697", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "697", - "src": { - "column": "19", - "end": "8925", - "id": "698", - "length": "1", - "line": "284", - "parentIndex": "695", - "start": "8925" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "DIVISION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "699", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "699", - "src": { - "column": "23", - "end": "8929", - "id": "700", - "length": "1", - "line": "284", - "parentIndex": "695", - "start": "8929" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "19", - "end": "8929", - "id": "696", - "length": "5", - "line": "284", - "parentIndex": "679", - "start": "8925" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "655", - "id": "693", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "8930", - "id": "694", - "length": "13", - "line": "284", - "parentIndex": "655", - "start": "8918" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - } - } - ] - }, - "id": "655", - "kind": "KIND_FUNCTION", - "name": "div", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "657", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "659", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "659", - "src": { - "column": "8", - "end": "8747", - "id": "660", - "length": "9", - "line": "278", - "parentIndex": "657", - "start": "8739" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "661", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "8745", - "id": "662", - "length": "7", - "line": "278", - "parentIndex": "659", - "start": "8739" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "663", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "663", - "src": { - "column": "8", - "end": "8766", - "id": "664", - "length": "9", - "line": "279", - "parentIndex": "657", - "start": "8758" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "665", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "8764", - "id": "666", - "length": "7", - "line": "279", - "parentIndex": "663", - "start": "8758" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "667", - "name": "errorMessage", - "nodeType": "VARIABLE_DECLARATION", - "scope": "667", - "src": { - "column": "8", - "end": "8802", - "id": "668", - "length": "26", - "line": "280", - "parentIndex": "657", - "start": "8777" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "669", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "8782", - "id": "670", - "length": "6", - "line": "280", - "parentIndex": "667", - "start": "8777" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "8", - "end": "8802", - "id": "658", - "length": "64", - "line": "278", - "parentIndex": "655", - "start": "8739" - } - }, - "returnParameters": { - "id": "671", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "673", - "nodeType": "VARIABLE_DECLARATION", - "scope": "673", - "src": { - "column": "29", - "end": "8839", - "id": "674", - "length": "7", - "line": "281", - "parentIndex": "671", - "start": "8833" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "675", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "29", - "end": "8839", - "id": "676", - "length": "7", - "line": "281", - "parentIndex": "673", - "start": "8833" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "29", - "end": "8839", - "id": "672", - "length": "7", - "line": "281", - "parentIndex": "655", - "start": "8833" - } - }, - "scope": "192", - "src": { - "column": "4", - "end": "8946", - "id": "656", - "length": "230", - "line": "277", - "parentIndex": "192", - "start": "8717" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256$$_t_string", - "typeString": "function(uint256,uint256,string)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "724", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "38", - "end": "9822", - "id": "725", - "length": "105", - "line": "307", - "parentIndex": "702", - "start": "9718" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", - "value": { - "id": "726", - "nodeType": "UNCHECKED_BLOCK", - "src": { - "column": "8", - "end": "9816", - "id": "727", - "length": "89", - "line": "308", - "parentIndex": "192", - "start": "9728" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "730", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "732", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "732", - "src": { - "column": "20", - "end": "9760", - "id": "733", - "length": "1", - "line": "309", - "parentIndex": "730", - "start": "9760" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "734", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "24", - "end": "9764", - "id": "735", - "length": "1", - "line": "309", - "parentIndex": "730", - "start": "9764" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "20", - "end": "9764", - "id": "731", - "length": "5", - "line": "309", - "parentIndex": "728", - "start": "9760" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": "736", - "name": "errorMessage", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "736", - "src": { - "column": "27", - "end": "9778", - "id": "737", - "length": "12", - "line": "309", - "parentIndex": "728", - "start": "9767" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "id": "738", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "12", - "end": "9758", - "id": "739", - "length": "7", - "line": "309", - "parentIndex": "728", - "start": "9752" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string", - "typeString": "function(bool,string)" - } - } - }, - "id": "728", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "9779", - "id": "729", - "length": "28", - "line": "309", - "parentIndex": "726", - "start": "9752" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string$", - "typeString": "function(bool,string)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "742", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "744", - "name": "a", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "744", - "src": { - "column": "19", - "end": "9801", - "id": "745", - "length": "1", - "line": "310", - "parentIndex": "742", - "start": "9801" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "MODULO", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "746", - "name": "b", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "746", - "src": { - "column": "23", - "end": "9805", - "id": "747", - "length": "1", - "line": "310", - "parentIndex": "742", - "start": "9805" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "19", - "end": "9805", - "id": "743", - "length": "5", - "line": "310", - "parentIndex": "726", - "start": "9801" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "functionReturnParameters": "702", - "id": "740", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "9806", - "id": "741", - "length": "13", - "line": "310", - "parentIndex": "702", - "start": "9794" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ] - } - } - ] - }, - "id": "702", - "kind": "KIND_FUNCTION", - "name": "mod", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "704", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "706", - "name": "a", - "nodeType": "VARIABLE_DECLARATION", - "scope": "706", - "src": { - "column": "8", - "end": "9623", - "id": "707", - "length": "9", - "line": "304", - "parentIndex": "704", - "start": "9615" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "708", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "9621", - "id": "709", - "length": "7", - "line": "304", - "parentIndex": "706", - "start": "9615" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "710", - "name": "b", - "nodeType": "VARIABLE_DECLARATION", - "scope": "710", - "src": { - "column": "8", - "end": "9642", - "id": "711", - "length": "9", - "line": "305", - "parentIndex": "704", - "start": "9634" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "712", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "9640", - "id": "713", - "length": "7", - "line": "305", - "parentIndex": "710", - "start": "9634" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "714", - "name": "errorMessage", - "nodeType": "VARIABLE_DECLARATION", - "scope": "714", - "src": { - "column": "8", - "end": "9678", - "id": "715", - "length": "26", - "line": "306", - "parentIndex": "704", - "start": "9653" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "716", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "9658", - "id": "717", - "length": "6", - "line": "306", - "parentIndex": "714", - "start": "9653" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "8", - "end": "9678", - "id": "705", - "length": "64", - "line": "304", - "parentIndex": "702", - "start": "9615" - } - }, - "returnParameters": { - "id": "718", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "720", - "nodeType": "VARIABLE_DECLARATION", - "scope": "720", - "src": { - "column": "29", - "end": "9715", - "id": "721", - "length": "7", - "line": "307", - "parentIndex": "718", - "start": "9709" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "722", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "29", - "end": "9715", - "id": "723", - "length": "7", - "line": "307", - "parentIndex": "720", - "start": "9709" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "29", - "end": "9715", - "id": "719", - "length": "7", - "line": "307", - "parentIndex": "702", - "start": "9709" - } - }, - "scope": "192", - "src": { - "column": "4", - "end": "9822", - "id": "703", - "length": "230", - "line": "303", - "parentIndex": "192", - "start": "9593" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256$$_t_uint256$$_t_string", - "typeString": "function(uint256,uint256,string)" - }, - "visibility": "INTERNAL" - } - } - ], - "src": { - "end": "9824", - "length": "6476", - "line": "100", - "parentIndex": "186", - "start": "3349" - } - } - } - ] - }, - "src": { - "id": 187, - "line": 100, - "start": 3349, - "end": 9824, - "length": 6476, - "parent_index": 30 - } - }, - { - "id": 748, - "license": "MIT", - "name": "TokenSale", - "absolute_path": "TokenSale.sol", - "exported_symbols": [ - { - "id": 748, - "name": "TokenSale", - "absolute_path": "TokenSale.sol" - }, - { - "id": 186, - "name": "SafeMath", - "absolute_path": "SafeMath.sol" - }, - { - "id": 31, - "name": "IERC20", - "absolute_path": "IERC20.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "754", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "9881", - "id": "755", - "length": "23", - "line": "316", - "parentIndex": "748", - "start": "9859" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "IERC20.sol", - "file": "./IERC20.sol", - "id": "756", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "748", - "sourceUnit": "186", - "src": { - "end": "9905", - "length": "22", - "line": "318", - "parentIndex": "748", - "start": "9884" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "SafeMath.sol", - "file": "./SafeMath.sol", - "id": "757", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "748", - "sourceUnit": "186", - "src": { - "end": "9930", - "length": "24", - "line": "319", - "parentIndex": "748", - "start": "9907" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "contractDependencies": [ - "756", - "757" - ], - "fullyImplemented": true, - "id": "758", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "758", - "756", - "757" - ], - "name": "TokenSale", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Using", - "value": { - "id": "760", - "libraryName": { - "id": "764", - "name": "SafeMath", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "186", - "src": { - "end": "9971", - "id": "765", - "length": "8", - "line": "322", - "parentIndex": "760", - "start": "9964" - } - }, - "name": "SafeMath", - "nodeType": "USING_FOR_DIRECTIVE", - "src": { - "end": "9984", - "id": "761", - "length": "27", - "line": "322", - "parentIndex": "758", - "start": "9958" - }, - "typeName": { - "id": "762", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "9983", - "id": "763", - "length": "7", - "line": "322", - "parentIndex": "760", - "start": "9977" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "767", - "isStateVariable": true, - "name": "token", - "nodeType": "VARIABLE_DECLARATION", - "scope": "758", - "src": { - "column": "4", - "end": "10011", - "id": "768", - "length": "21", - "line": "324", - "parentIndex": "758", - "start": "9991" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_contract$_IERC20_$31", - "typeString": "contract IERC20" - }, - "typeName": { - "id": "769", - "nodeType": "USER_DEFINED_PATH_NAME", - "pathNode": { - "id": "771", - "name": "IERC20", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "31", - "src": { - "column": "4", - "end": "9996", - "id": "772", - "length": "6", - "line": "324", - "parentIndex": "769", - "start": "9991" - } - }, - "referencedDeclaration": "31", - "src": { - "column": "4", - "end": "9996", - "id": "770", - "length": "6", - "line": "324", - "parentIndex": "767", - "start": "9991" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_IERC20_$31", - "typeString": "contract IERC20" - } - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "774", - "isStateVariable": true, - "name": "owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "758", - "src": { - "column": "4", - "end": "10038", - "id": "775", - "length": "22", - "line": "325", - "parentIndex": "758", - "start": "10017" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "776", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "4", - "end": "10023", - "id": "777", - "length": "7", - "line": "325", - "parentIndex": "774", - "start": "10017" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "779", - "isStateVariable": true, - "name": "tokenPrice", - "nodeType": "VARIABLE_DECLARATION", - "scope": "758", - "src": { - "column": "4", - "end": "10070", - "id": "780", - "length": "27", - "line": "326", - "parentIndex": "758", - "start": "10044" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "781", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "4", - "end": "10050", - "id": "782", - "length": "7", - "line": "326", - "parentIndex": "779", - "start": "10044" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", - "value": { - "id": "784", - "name": "TokensPurchased", - "nodeType": "EVENT_DEFINITION", - "parameters": { - "id": "786", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "787", - "name": "buyer", - "nodeType": "VARIABLE_DECLARATION", - "scope": "787", - "src": { - "column": "26", - "end": "10111", - "id": "788", - "length": "13", - "line": "328", - "parentIndex": "786", - "start": "10099" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "789", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "26", - "end": "10105", - "id": "790", - "length": "7", - "line": "328", - "parentIndex": "787", - "start": "10099" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "791", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "791", - "src": { - "column": "41", - "end": "10127", - "id": "792", - "length": "14", - "line": "328", - "parentIndex": "786", - "start": "10114" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "793", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "41", - "end": "10120", - "id": "794", - "length": "7", - "line": "328", - "parentIndex": "791", - "start": "10114" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "4", - "end": "10129", - "id": "785", - "length": "53", - "line": "328", - "parentIndex": "784", - "start": "10077" - } - }, - "src": { - "column": "4", - "end": "10129", - "id": "785", - "length": "53", - "line": "328", - "parentIndex": "758", - "start": "10077" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_TokenSale_TokensPurchased_\u0026784", - "typeString": "event TokenSale.TokensPurchased" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "809", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "60", - "end": "10299", - "id": "810", - "length": "108", - "line": "330", - "parentIndex": "796", - "start": "10192" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "813", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "815", - "name": "token", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "767", - "src": { - "column": "8", - "end": "10206", - "id": "816", - "length": "5", - "line": "331", - "parentIndex": "813", - "start": "10202" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_IERC20_$31", - "typeString": "contract IERC20" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "819", - "name": "_tokenAddress", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "819", - "src": { - "column": "23", - "end": "10229", - "id": "820", - "length": "13", - "line": "331", - "parentIndex": "817", - "start": "10217" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "821", - "name": "IERC20", - "nodeType": "IDENTIFIER", - "src": { - "column": "16", - "end": "10215", - "id": "822", - "length": "6", - "line": "331", - "parentIndex": "817", - "start": "10210" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "817", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "16", - "end": "10230", - "id": "818", - "length": "21", - "line": "331", - "parentIndex": "813", - "start": "10210" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - "src": { - "column": "8", - "end": "10230", - "id": "814", - "length": "29", - "line": "331", - "parentIndex": "809", - "start": "10202" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_IERC20_$31", - "typeString": "contract IERC20" - } - } - }, - "id": "811", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "10231", - "id": "812", - "length": "30", - "line": "331", - "parentIndex": "809", - "start": "10202" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "825", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "827", - "name": "owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "774", - "src": { - "column": "8", - "end": "10245", - "id": "828", - "length": "5", - "line": "332", - "parentIndex": "825", - "start": "10241" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "831", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "16", - "end": "10251", - "id": "832", - "length": "3", - "line": "332", - "parentIndex": "829", - "start": "10249" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "829", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "16", - "end": "10258", - "id": "830", - "length": "10", - "line": "332", - "parentIndex": "825", - "start": "10249" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "src": { - "column": "8", - "end": "10258", - "id": "826", - "length": "18", - "line": "332", - "parentIndex": "809", - "start": "10241" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "823", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "10259", - "id": "824", - "length": "19", - "line": "332", - "parentIndex": "809", - "start": "10241" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "835", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "837", - "name": "tokenPrice", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "779", - "src": { - "column": "8", - "end": "10278", - "id": "838", - "length": "10", - "line": "333", - "parentIndex": "835", - "start": "10269" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "839", - "name": "_tokenPrice", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "839", - "src": { - "column": "21", - "end": "10292", - "id": "840", - "length": "11", - "line": "333", - "parentIndex": "835", - "start": "10282" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "8", - "end": "10292", - "id": "836", - "length": "24", - "line": "333", - "parentIndex": "809", - "start": "10269" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "833", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "10293", - "id": "834", - "length": "25", - "line": "333", - "parentIndex": "809", - "start": "10269" - } - } - } - ] - }, - "id": "796", - "implemented": true, - "kind": "CONSTRUCTOR", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "798", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "800", - "name": "_tokenAddress", - "nodeType": "VARIABLE_DECLARATION", - "scope": "800", - "src": { - "column": "16", - "end": "10168", - "id": "801", - "length": "21", - "line": "330", - "parentIndex": "798", - "start": "10148" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "802", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "16", - "end": "10154", - "id": "803", - "length": "7", - "line": "330", - "parentIndex": "800", - "start": "10148" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "804", - "name": "_tokenPrice", - "nodeType": "VARIABLE_DECLARATION", - "scope": "804", - "src": { - "column": "39", - "end": "10189", - "id": "805", - "length": "19", - "line": "330", - "parentIndex": "798", - "start": "10171" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "806", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "39", - "end": "10177", - "id": "807", - "length": "7", - "line": "330", - "parentIndex": "804", - "start": "10171" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "16", - "end": "10189", - "id": "799", - "length": "42", - "line": "330", - "parentIndex": "796", - "start": "10148" - } - }, - "returnParameters": { - "id": "808", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "10299", - "id": "797", - "length": "164", - "line": "330", - "parentIndex": "796", - "start": "10136" - } - }, - "scope": "758", - "src": { - "column": "4", - "end": "10299", - "id": "797", - "length": "164", - "line": "330", - "parentIndex": "758", - "start": "10136" - }, - "stateMutability": "NONPAYABLE", - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "851", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "49", - "end": "10518", - "id": "852", - "length": "168", - "line": "336", - "parentIndex": "842", - "start": "10351" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "855" - ], - "declarations": [ - { - "id": "855", - "mutability": "MUTABLE", - "name": "totalPrice", - "nodeType": "VARIABLE_DECLARATION", - "scope": "851", - "src": { - "column": "8", - "end": "10378", - "id": "856", - "length": "18", - "line": "337", - "parentIndex": "853", - "start": "10361" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "857", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "10367", - "id": "858", - "length": "7", - "line": "337", - "parentIndex": "855", - "start": "10361" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "853", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "861", - "name": "tokenPrice", - "nodeType": "IDENTIFIER", - "src": { - "column": "41", - "end": "10403", - "id": "862", - "length": "10", - "line": "337", - "parentIndex": "859", - "start": "10394" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "865", - "name": "_amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "865", - "src": { - "column": "29", - "end": "10388", - "id": "866", - "length": "7", - "line": "337", - "parentIndex": "863", - "start": "10382" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "863", - "memberName": "mul", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "29", - "end": "10392", - "id": "864", - "length": "11", - "line": "337", - "parentIndex": "859", - "start": "10382" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "id": "859", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "29", - "end": "10404", - "id": "860", - "length": "23", - "line": "337", - "parentIndex": "853", - "start": "10382" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "10405", - "id": "854", - "length": "45", - "line": "337", - "parentIndex": "851", - "start": "10361" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "869", - "name": "owner", - "nodeType": "IDENTIFIER", - "src": { - "column": "27", - "end": "10438", - "id": "870", - "length": "5", - "line": "338", - "parentIndex": "867", - "start": "10434" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "873", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "34", - "end": "10443", - "id": "874", - "length": "3", - "line": "338", - "parentIndex": "871", - "start": "10441" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "871", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "34", - "end": "10450", - "id": "872", - "length": "10", - "line": "338", - "parentIndex": "867", - "start": "10441" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "875", - "name": "_amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "875", - "src": { - "column": "46", - "end": "10459", - "id": "876", - "length": "7", - "line": "338", - "parentIndex": "867", - "start": "10453" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "879", - "name": "token", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "767", - "src": { - "column": "8", - "end": "10419", - "id": "880", - "length": "5", - "line": "338", - "parentIndex": "877", - "start": "10415" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_IERC20_$31", - "typeString": "contract IERC20" - } - } - }, - "id": "877", - "memberName": "transferFrom", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "8", - "end": "10432", - "id": "878", - "length": "18", - "line": "338", - "parentIndex": "867", - "start": "10415" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_IERC20_$31", - "typeString": "contract IERC20" - } - } - }, - "id": "867", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "10460", - "id": "868", - "length": "46", - "line": "338", - "parentIndex": "851", - "start": "10415" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_address$$_t_uint256$", - "typeString": "function(function(),address,uint256)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "885", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "29", - "end": "10494", - "id": "886", - "length": "3", - "line": "339", - "parentIndex": "883", - "start": "10492" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "883", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "29", - "end": "10501", - "id": "884", - "length": "10", - "line": "339", - "parentIndex": "851", - "start": "10492" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "887", - "name": "_amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "887", - "src": { - "column": "41", - "end": "10510", - "id": "888", - "length": "7", - "line": "339", - "parentIndex": "851", - "start": "10504" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "889", - "name": "TokensPurchased", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "784", - "src": { - "column": "13", - "end": "10490", - "id": "890", - "length": "15", - "line": "339", - "parentIndex": "851", - "start": "10476" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_TokenSale_TokensPurchased_\u0026784", - "typeString": "event TokenSale.TokensPurchased" - } - } - }, - "id": "881", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "10512", - "id": "882", - "length": "42", - "line": "339", - "parentIndex": "842", - "start": "10471" - } - } - } - ] - }, - "id": "842", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "buyTokens", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "844", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "846", - "name": "_amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "846", - "src": { - "column": "23", - "end": "10339", - "id": "847", - "length": "15", - "line": "336", - "parentIndex": "844", - "start": "10325" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "848", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "10331", - "id": "849", - "length": "7", - "line": "336", - "parentIndex": "846", - "start": "10325" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "10339", - "id": "845", - "length": "15", - "line": "336", - "parentIndex": "842", - "start": "10325" - } - }, - "returnParameters": { - "id": "850", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "10518", - "id": "843", - "length": "213", - "line": "336", - "parentIndex": "842", - "start": "10306" - } - }, - "scope": "758", - "src": { - "column": "4", - "end": "10518", - "id": "843", - "length": "213", - "line": "336", - "parentIndex": "758", - "start": "10306" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_uint256", - "typeString": "function(uint256)" - }, - "visibility": "EXTERNAL" - } - } - ], - "src": { - "end": "10520", - "length": "588", - "line": "321", - "parentIndex": "748", - "start": "9933" - } - } - } - ] - }, - "src": { - "id": 749, - "line": 321, - "start": 9933, - "end": 10520, - "length": 588, - "parent_index": 30 - } - } - ], - "comments": [ - { - "id": 1, - "node_type": 33, - "src": { - "line": 1, - "end": 30, - "length": 31, - "parent_index": 2 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 2, - "node_type": 32, - "src": { - "line": 5, - "start": 58, - "end": 127, - "length": 70, - "parent_index": 3 - }, - "text": "/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */" - }, - { - "id": 3, - "node_type": 32, - "src": { - "line": 9, - "column": 4, - "start": 152, - "end": 217, - "length": 66, - "parent_index": 4 - }, - "text": "/**\n * @dev Returns the amount of tokens in existence.\n */" - }, - { - "id": 4, - "node_type": 32, - "src": { - "line": 14, - "column": 4, - "start": 284, - "end": 355, - "length": 72, - "parent_index": 5 - }, - "text": "/**\n * @dev Returns the amount of tokens owned by `account`.\n */" - }, - { - "id": 5, - "node_type": 32, - "src": { - "line": 19, - "column": 4, - "start": 435, - "end": 643, - "length": 209, - "parent_index": 6 - }, - "text": "/**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */" - }, - { - "id": 6, - "node_type": 32, - "src": { - "line": 28, - "column": 4, - "start": 732, - "end": 995, - "length": 264, - "parent_index": 7 - }, - "text": "/**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */" - }, - { - "id": 7, - "node_type": 32, - "src": { - "line": 37, - "column": 4, - "start": 1090, - "end": 1731, - "length": 642, - "parent_index": 8 - }, - "text": "/**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race condition\n * is to first reduce the spender's allowance to 0 and set the desired value\n * afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */" - }, - { - "id": 8, - "node_type": 32, - "src": { - "line": 53, - "column": 4, - "start": 1817, - "end": 2112, - "length": 296, - "parent_index": 9 - }, - "text": "/**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */" - }, - { - "id": 9, - "node_type": 32, - "src": { - "line": 68, - "column": 4, - "start": 2251, - "end": 2408, - "length": 158, - "parent_index": 10 - }, - "text": "/**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */" - }, - { - "id": 10, - "node_type": 32, - "src": { - "line": 76, - "column": 4, - "start": 2492, - "end": 2639, - "length": 148, - "parent_index": 11 - }, - "text": "/**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */" - }, - { - "id": 11, - "node_type": 33, - "src": { - "line": 83, - "start": 2727, - "end": 2757, - "length": 31, - "parent_index": 12 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 12, - "node_type": 32, - "src": { - "line": 87, - "start": 2785, - "end": 3347, - "length": 563, - "parent_index": 13 - }, - "text": "/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */" - }, - { - "id": 13, - "node_type": 32, - "src": { - "line": 101, - "column": 4, - "start": 3372, - "end": 3502, - "length": 131, - "parent_index": 14 - }, - "text": "/**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */" - }, - { - "id": 14, - "node_type": 32, - "src": { - "line": 114, - "column": 4, - "start": 3730, - "end": 3864, - "length": 135, - "parent_index": 15 - }, - "text": "/**\n * @dev Returns the substraction of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */" - }, - { - "id": 15, - "node_type": 32, - "src": { - "line": 126, - "column": 4, - "start": 4065, - "end": 4201, - "length": 137, - "parent_index": 16 - }, - "text": "/**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */" - }, - { - "id": 16, - "node_type": 31, - "src": { - "line": 133, - "column": 12, - "start": 4317, - "end": 4395, - "length": 79, - "parent_index": 17 - }, - "text": "// Gas optimization: this is cheaper than requiring 'a' not being zero, but the" - }, - { - "id": 17, - "node_type": 31, - "src": { - "line": 134, - "column": 12, - "start": 4409, - "end": 4449, - "length": 41, - "parent_index": 18 - }, - "text": "// benefit is lost if 'b' is also tested." - }, - { - "id": 18, - "node_type": 31, - "src": { - "line": 135, - "column": 12, - "start": 4463, - "end": 4533, - "length": 71, - "parent_index": 19 - }, - "text": "// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522" - }, - { - "id": 19, - "node_type": 32, - "src": { - "line": 143, - "column": 4, - "start": 4706, - "end": 4843, - "length": 138, - "parent_index": 20 - }, - "text": "/**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */" - }, - { - "id": 20, - "node_type": 32, - "src": { - "line": 155, - "column": 4, - "start": 5045, - "end": 5192, - "length": 148, - "parent_index": 21 - }, - "text": "/**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */" - }, - { - "id": 21, - "node_type": 32, - "src": { - "line": 167, - "column": 4, - "start": 5394, - "end": 5617, - "length": 224, - "parent_index": 22 - }, - "text": "/**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */" - }, - { - "id": 22, - "node_type": 32, - "src": { - "line": 181, - "column": 4, - "start": 5725, - "end": 5984, - "length": 260, - "parent_index": 23 - }, - "text": "/**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */" - }, - { - "id": 23, - "node_type": 32, - "src": { - "line": 195, - "column": 4, - "start": 6092, - "end": 6327, - "length": 236, - "parent_index": 24 - }, - "text": "/**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */" - }, - { - "id": 24, - "node_type": 32, - "src": { - "line": 209, - "column": 4, - "start": 6435, - "end": 6887, - "length": 453, - "parent_index": 25 - }, - "text": "/**\n * @dev Returns the integer division of two unsigned integers, reverting on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */" - }, - { - "id": 25, - "node_type": 32, - "src": { - "line": 225, - "column": 4, - "start": 6995, - "end": 7436, - "length": 442, - "parent_index": 26 - }, - "text": "/**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */" - }, - { - "id": 26, - "node_type": 32, - "src": { - "line": 241, - "column": 4, - "start": 7544, - "end": 7996, - "length": 453, - "parent_index": 27 - }, - "text": "/**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {trySub}.\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */" - }, - { - "id": 27, - "node_type": 32, - "src": { - "line": 265, - "column": 4, - "start": 8239, - "end": 8711, - "length": 473, - "parent_index": 28 - }, - "text": "/**\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */" - }, - { - "id": 28, - "node_type": 32, - "src": { - "line": 288, - "column": 4, - "start": 8953, - "end": 9587, - "length": 635, - "parent_index": 29 - }, - "text": "/**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting with custom message when dividing by zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryMod}.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */" - }, - { - "id": 29, - "node_type": 33, - "src": { - "line": 315, - "start": 9827, - "end": 9857, - "length": 31, - "parent_index": 30 - }, - "text": "// SPDX-License-Identifier: MIT" - } - ] + "id": 30, + "entry_source_unit": 748, + "node_type": 80, + "source_units": [ + { + "id": 31, + "license": "MIT", + "name": "IERC20", + "absolute_path": "IERC20.sol", + "exported_symbols": [ + { + "id": 31, + "name": "IERC20", + "absolute_path": "IERC20.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "33", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "55", + "id": "34", + "length": "23", + "line": "3", + "parentIndex": "31", + "start": "33" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "37", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "37" + ], + "name": "IERC20", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "53", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "277", + "id": "40", + "length": "55", + "line": "12", + "parentIndex": "39", + "start": "223" + } + }, + "id": "39", + "kind": "KIND_FUNCTION", + "name": "totalSupply", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "41", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "43", + "nodeType": "VARIABLE_DECLARATION", + "scope": "43", + "src": { + "column": "50", + "end": "275", + "id": "44", + "length": "7", + "line": "12", + "parentIndex": "41", + "start": "269" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "45", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "275", + "id": "46", + "length": "7", + "line": "12", + "parentIndex": "43", + "start": "269" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "50", + "end": "275", + "id": "42", + "length": "7", + "line": "12", + "parentIndex": "39", + "start": "269" + } + }, + "returnParameters": { + "id": "47", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "49", + "nodeType": "VARIABLE_DECLARATION", + "scope": "49", + "src": { + "column": "50", + "end": "275", + "id": "50", + "length": "7", + "line": "12", + "parentIndex": "47", + "start": "269" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "51", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "275", + "id": "52", + "length": "7", + "line": "12", + "parentIndex": "49", + "start": "269" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "50", + "end": "275", + "id": "48", + "length": "7", + "line": "12", + "parentIndex": "39", + "start": "269" + } + }, + "scope": "37", + "src": { + "column": "4", + "end": "277", + "id": "40", + "length": "55", + "line": "12", + "parentIndex": "37", + "start": "223" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "69", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "428", + "id": "56", + "length": "68", + "line": "17", + "parentIndex": "55", + "start": "361" + } + }, + "id": "55", + "kind": "KIND_FUNCTION", + "name": "balanceOf", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "57", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "59", + "name": "account", + "nodeType": "VARIABLE_DECLARATION", + "scope": "59", + "src": { + "column": "23", + "end": "394", + "id": "60", + "length": "15", + "line": "17", + "parentIndex": "57", + "start": "380" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "61", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "386", + "id": "62", + "length": "7", + "line": "17", + "parentIndex": "59", + "start": "380" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "394", + "id": "58", + "length": "15", + "line": "17", + "parentIndex": "55", + "start": "380" + } + }, + "returnParameters": { + "id": "63", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "65", + "nodeType": "VARIABLE_DECLARATION", + "scope": "65", + "src": { + "column": "63", + "end": "426", + "id": "66", + "length": "7", + "line": "17", + "parentIndex": "63", + "start": "420" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "67", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "63", + "end": "426", + "id": "68", + "length": "7", + "line": "17", + "parentIndex": "65", + "start": "420" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "63", + "end": "426", + "id": "64", + "length": "7", + "line": "17", + "parentIndex": "55", + "start": "420" + } + }, + "scope": "37", + "src": { + "column": "4", + "end": "428", + "id": "56", + "length": "68", + "line": "17", + "parentIndex": "37", + "start": "361" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "89", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "725", + "id": "72", + "length": "77", + "line": "26", + "parentIndex": "71", + "start": "649" + } + }, + "id": "71", + "kind": "KIND_FUNCTION", + "name": "transfer", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "73", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "75", + "name": "recipient", + "nodeType": "VARIABLE_DECLARATION", + "scope": "75", + "src": { + "column": "22", + "end": "683", + "id": "76", + "length": "17", + "line": "26", + "parentIndex": "73", + "start": "667" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "77", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "673", + "id": "78", + "length": "7", + "line": "26", + "parentIndex": "75", + "start": "667" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "79", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "79", + "src": { + "column": "41", + "end": "699", + "id": "80", + "length": "14", + "line": "26", + "parentIndex": "73", + "start": "686" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "81", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "41", + "end": "692", + "id": "82", + "length": "7", + "line": "26", + "parentIndex": "79", + "start": "686" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "22", + "end": "699", + "id": "74", + "length": "33", + "line": "26", + "parentIndex": "71", + "start": "667" + } + }, + "returnParameters": { + "id": "83", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "85", + "nodeType": "VARIABLE_DECLARATION", + "scope": "85", + "src": { + "column": "75", + "end": "723", + "id": "86", + "length": "4", + "line": "26", + "parentIndex": "83", + "start": "720" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "87", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "75", + "end": "723", + "id": "88", + "length": "4", + "line": "26", + "parentIndex": "85", + "start": "720" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "75", + "end": "723", + "id": "84", + "length": "4", + "line": "26", + "parentIndex": "71", + "start": "720" + } + }, + "scope": "37", + "src": { + "column": "4", + "end": "725", + "id": "72", + "length": "77", + "line": "26", + "parentIndex": "37", + "start": "649" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "109", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "1083", + "id": "92", + "length": "83", + "line": "35", + "parentIndex": "91", + "start": "1001" + } + }, + "id": "91", + "kind": "KIND_FUNCTION", + "name": "allowance", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "93", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "95", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "95", + "src": { + "column": "23", + "end": "1032", + "id": "96", + "length": "13", + "line": "35", + "parentIndex": "93", + "start": "1020" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "97", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "1026", + "id": "98", + "length": "7", + "line": "35", + "parentIndex": "95", + "start": "1020" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "99", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "99", + "src": { + "column": "38", + "end": "1049", + "id": "100", + "length": "15", + "line": "35", + "parentIndex": "93", + "start": "1035" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "101", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "38", + "end": "1041", + "id": "102", + "length": "7", + "line": "35", + "parentIndex": "99", + "start": "1035" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "1049", + "id": "94", + "length": "30", + "line": "35", + "parentIndex": "91", + "start": "1020" + } + }, + "returnParameters": { + "id": "103", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "105", + "nodeType": "VARIABLE_DECLARATION", + "scope": "105", + "src": { + "column": "78", + "end": "1081", + "id": "106", + "length": "7", + "line": "35", + "parentIndex": "103", + "start": "1075" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "107", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "78", + "end": "1081", + "id": "108", + "length": "7", + "line": "35", + "parentIndex": "105", + "start": "1075" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "78", + "end": "1081", + "id": "104", + "length": "7", + "line": "35", + "parentIndex": "91", + "start": "1075" + } + }, + "scope": "37", + "src": { + "column": "4", + "end": "1083", + "id": "92", + "length": "83", + "line": "35", + "parentIndex": "37", + "start": "1001" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "129", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "1810", + "id": "112", + "length": "74", + "line": "51", + "parentIndex": "111", + "start": "1737" + } + }, + "id": "111", + "kind": "KIND_FUNCTION", + "name": "approve", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "113", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "115", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "115", + "src": { + "column": "21", + "end": "1768", + "id": "116", + "length": "15", + "line": "51", + "parentIndex": "113", + "start": "1754" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "117", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "21", + "end": "1760", + "id": "118", + "length": "7", + "line": "51", + "parentIndex": "115", + "start": "1754" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "119", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "119", + "src": { + "column": "38", + "end": "1784", + "id": "120", + "length": "14", + "line": "51", + "parentIndex": "113", + "start": "1771" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "121", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "38", + "end": "1777", + "id": "122", + "length": "7", + "line": "51", + "parentIndex": "119", + "start": "1771" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "21", + "end": "1784", + "id": "114", + "length": "31", + "line": "51", + "parentIndex": "111", + "start": "1754" + } + }, + "returnParameters": { + "id": "123", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "125", + "nodeType": "VARIABLE_DECLARATION", + "scope": "125", + "src": { + "column": "72", + "end": "1808", + "id": "126", + "length": "4", + "line": "51", + "parentIndex": "123", + "start": "1805" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "127", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "72", + "end": "1808", + "id": "128", + "length": "4", + "line": "51", + "parentIndex": "125", + "start": "1805" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "72", + "end": "1808", + "id": "124", + "length": "4", + "line": "51", + "parentIndex": "111", + "start": "1805" + } + }, + "scope": "37", + "src": { + "column": "4", + "end": "1810", + "id": "112", + "length": "74", + "line": "51", + "parentIndex": "37", + "start": "1737" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "153", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "2244", + "id": "132", + "length": "127", + "line": "62", + "parentIndex": "131", + "start": "2118" + } + }, + "id": "131", + "kind": "KIND_FUNCTION", + "name": "transferFrom", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "133", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "135", + "name": "sender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "135", + "src": { + "column": "8", + "end": "2162", + "id": "136", + "length": "14", + "line": "63", + "parentIndex": "133", + "start": "2149" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "137", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "2155", + "id": "138", + "length": "7", + "line": "63", + "parentIndex": "135", + "start": "2149" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "139", + "name": "recipient", + "nodeType": "VARIABLE_DECLARATION", + "scope": "139", + "src": { + "column": "8", + "end": "2189", + "id": "140", + "length": "17", + "line": "64", + "parentIndex": "133", + "start": "2173" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "141", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "2179", + "id": "142", + "length": "7", + "line": "64", + "parentIndex": "139", + "start": "2173" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "143", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "143", + "src": { + "column": "8", + "end": "2213", + "id": "144", + "length": "14", + "line": "65", + "parentIndex": "133", + "start": "2200" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "145", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "2206", + "id": "146", + "length": "7", + "line": "65", + "parentIndex": "143", + "start": "2200" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "2213", + "id": "134", + "length": "65", + "line": "63", + "parentIndex": "131", + "start": "2149" + } + }, + "returnParameters": { + "id": "147", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "149", + "nodeType": "VARIABLE_DECLARATION", + "scope": "149", + "src": { + "column": "24", + "end": "2242", + "id": "150", + "length": "4", + "line": "66", + "parentIndex": "147", + "start": "2239" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "151", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "2242", + "id": "152", + "length": "4", + "line": "66", + "parentIndex": "149", + "start": "2239" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "2242", + "id": "148", + "length": "4", + "line": "66", + "parentIndex": "131", + "start": "2239" + } + }, + "scope": "37", + "src": { + "column": "4", + "end": "2244", + "id": "132", + "length": "127", + "line": "62", + "parentIndex": "37", + "start": "2118" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "155", + "name": "Transfer", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "157", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "158", + "indexed": true, + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "158", + "src": { + "column": "19", + "end": "2448", + "id": "159", + "length": "20", + "line": "74", + "parentIndex": "157", + "start": "2429" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "160", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "19", + "end": "2435", + "id": "161", + "length": "7", + "line": "74", + "parentIndex": "158", + "start": "2429" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "162", + "indexed": true, + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "162", + "src": { + "column": "41", + "end": "2468", + "id": "163", + "length": "18", + "line": "74", + "parentIndex": "157", + "start": "2451" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "164", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "41", + "end": "2457", + "id": "165", + "length": "7", + "line": "74", + "parentIndex": "162", + "start": "2451" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "166", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "166", + "src": { + "column": "61", + "end": "2483", + "id": "167", + "length": "13", + "line": "74", + "parentIndex": "157", + "start": "2471" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "168", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "61", + "end": "2477", + "id": "169", + "length": "7", + "line": "74", + "parentIndex": "166", + "start": "2471" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "2485", + "id": "156", + "length": "72", + "line": "74", + "parentIndex": "155", + "start": "2414" + } + }, + "src": { + "column": "4", + "end": "2485", + "id": "156", + "length": "72", + "line": "74", + "parentIndex": "37", + "start": "2414" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IERC20_Transfer_\u0026155", + "typeString": "event IERC20.Transfer" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "171", + "name": "Approval", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "173", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "174", + "indexed": true, + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "174", + "src": { + "column": "19", + "end": "2680", + "id": "175", + "length": "21", + "line": "80", + "parentIndex": "173", + "start": "2660" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "176", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "19", + "end": "2666", + "id": "177", + "length": "7", + "line": "80", + "parentIndex": "174", + "start": "2660" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "178", + "indexed": true, + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "178", + "src": { + "column": "42", + "end": "2705", + "id": "179", + "length": "23", + "line": "80", + "parentIndex": "173", + "start": "2683" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "180", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "42", + "end": "2689", + "id": "181", + "length": "7", + "line": "80", + "parentIndex": "178", + "start": "2683" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "182", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "182", + "src": { + "column": "67", + "end": "2720", + "id": "183", + "length": "13", + "line": "80", + "parentIndex": "173", + "start": "2708" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "184", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "67", + "end": "2714", + "id": "185", + "length": "7", + "line": "80", + "parentIndex": "182", + "start": "2708" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "2722", + "id": "172", + "length": "78", + "line": "80", + "parentIndex": "171", + "start": "2645" + } + }, + "src": { + "column": "4", + "end": "2722", + "id": "172", + "length": "78", + "line": "80", + "parentIndex": "37", + "start": "2645" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IERC20_Approval_\u0026171", + "typeString": "event IERC20.Approval" + } + } + } + ], + "src": { + "end": "2724", + "length": "2596", + "line": "8", + "parentIndex": "31", + "start": "129" + } + } + } + ] + }, + "src": { + "id": 32, + "line": 8, + "start": 129, + "end": 2724, + "length": 2596, + "parent_index": 30 + } + }, + { + "id": 186, + "license": "MIT", + "name": "SafeMath", + "absolute_path": "SafeMath.sol", + "exported_symbols": [ + { + "id": 186, + "name": "SafeMath", + "absolute_path": "SafeMath.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "190", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "2782", + "id": "191", + "length": "23", + "line": "85", + "parentIndex": "186", + "start": "2760" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "192", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "192" + ], + "name": "SafeMath", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "216", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "80", + "end": "3723", + "id": "217", + "length": "140", + "line": "106", + "parentIndex": "194", + "start": "3584" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "218", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "3717", + "id": "219", + "length": "124", + "line": "107", + "parentIndex": "192", + "start": "3594" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "222" + ], + "declarations": [ + { + "id": "222", + "mutability": "MUTABLE", + "name": "c", + "nodeType": "VARIABLE_DECLARATION", + "scope": "218", + "src": { + "column": "12", + "end": "3626", + "id": "223", + "length": "9", + "line": "108", + "parentIndex": "220", + "start": "3618" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "224", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "3624", + "id": "225", + "length": "7", + "line": "108", + "parentIndex": "222", + "start": "3618" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "220", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "226", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "228", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "228", + "src": { + "column": "24", + "end": "3630", + "id": "229", + "length": "1", + "line": "108", + "parentIndex": "226", + "start": "3630" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "ADDITION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "230", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "230", + "src": { + "column": "28", + "end": "3634", + "id": "231", + "length": "1", + "line": "108", + "parentIndex": "226", + "start": "3634" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "24", + "end": "3634", + "id": "227", + "length": "5", + "line": "108", + "parentIndex": "220", + "start": "3630" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "3635", + "id": "221", + "length": "18", + "line": "108", + "parentIndex": "218", + "start": "3618" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "240", + "nodeType": "BLOCK", + "src": {} + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "234", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "236", + "name": "c", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "220", + "src": { + "column": "16", + "end": "3653", + "id": "237", + "length": "1", + "line": "109", + "parentIndex": "234", + "start": "3653" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "238", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "238", + "src": { + "column": "20", + "end": "3657", + "id": "239", + "length": "1", + "line": "109", + "parentIndex": "234", + "start": "3657" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "3657", + "id": "235", + "length": "5", + "line": "109", + "parentIndex": "232", + "start": "3653" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "232", + "nodeType": "IF_STATEMENT", + "src": { + "end": "3677", + "id": "233", + "length": "29", + "line": "109", + "parentIndex": "218", + "start": "3649" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "245", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "20", + "end": "3702", + "id": "246", + "length": "4", + "line": "110", + "parentIndex": "243", + "start": "3699" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "247", + "name": "c", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "220", + "src": { + "column": "26", + "end": "3705", + "id": "248", + "length": "1", + "line": "110", + "parentIndex": "243", + "start": "3705" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "243", + "isPure": true, + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "19", + "end": "3706", + "id": "244", + "length": "9", + "line": "110", + "parentIndex": "194", + "start": "3698" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + }, + "functionReturnParameters": "194", + "id": "241", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "3707", + "id": "242", + "length": "17", + "line": "110", + "parentIndex": "194", + "start": "3691" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + } + ] + } + } + ] + }, + "id": "194", + "kind": "KIND_FUNCTION", + "name": "tryAdd", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "196", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "198", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "198", + "src": { + "column": "20", + "end": "3532", + "id": "199", + "length": "9", + "line": "106", + "parentIndex": "196", + "start": "3524" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "200", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "20", + "end": "3530", + "id": "201", + "length": "7", + "line": "106", + "parentIndex": "198", + "start": "3524" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "202", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "202", + "src": { + "column": "31", + "end": "3543", + "id": "203", + "length": "9", + "line": "106", + "parentIndex": "196", + "start": "3535" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "204", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "3541", + "id": "205", + "length": "7", + "line": "106", + "parentIndex": "202", + "start": "3535" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "20", + "end": "3543", + "id": "197", + "length": "20", + "line": "106", + "parentIndex": "194", + "start": "3524" + } + }, + "returnParameters": { + "id": "206", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "208", + "nodeType": "VARIABLE_DECLARATION", + "scope": "208", + "src": { + "column": "65", + "end": "3572", + "id": "209", + "length": "4", + "line": "106", + "parentIndex": "206", + "start": "3569" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "210", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "65", + "end": "3572", + "id": "211", + "length": "4", + "line": "106", + "parentIndex": "208", + "start": "3569" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "212", + "nodeType": "VARIABLE_DECLARATION", + "scope": "212", + "src": { + "column": "71", + "end": "3581", + "id": "213", + "length": "7", + "line": "106", + "parentIndex": "206", + "start": "3575" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "214", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "71", + "end": "3581", + "id": "215", + "length": "7", + "line": "106", + "parentIndex": "212", + "start": "3575" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "3581", + "id": "207", + "length": "13", + "line": "106", + "parentIndex": "194", + "start": "3569" + } + }, + "scope": "192", + "src": { + "column": "4", + "end": "3723", + "id": "195", + "length": "216", + "line": "106", + "parentIndex": "192", + "start": "3508" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "272", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "80", + "end": "4058", + "id": "273", + "length": "113", + "line": "119", + "parentIndex": "250", + "start": "3946" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "274", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "4052", + "id": "275", + "length": "97", + "line": "120", + "parentIndex": "192", + "start": "3956" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "284", + "nodeType": "BLOCK", + "src": {} + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "278", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "280", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "280", + "src": { + "column": "16", + "end": "3984", + "id": "281", + "length": "1", + "line": "121", + "parentIndex": "278", + "start": "3984" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "282", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "282", + "src": { + "column": "20", + "end": "3988", + "id": "283", + "length": "1", + "line": "121", + "parentIndex": "278", + "start": "3988" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "3988", + "id": "279", + "length": "5", + "line": "121", + "parentIndex": "276", + "start": "3984" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "276", + "nodeType": "IF_STATEMENT", + "src": { + "end": "4008", + "id": "277", + "length": "29", + "line": "121", + "parentIndex": "274", + "start": "3980" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "289", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "20", + "end": "4033", + "id": "290", + "length": "4", + "line": "122", + "parentIndex": "287", + "start": "4030" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "291", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "293", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "293", + "src": { + "column": "26", + "end": "4036", + "id": "294", + "length": "1", + "line": "122", + "parentIndex": "291", + "start": "4036" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "295", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "295", + "src": { + "column": "30", + "end": "4040", + "id": "296", + "length": "1", + "line": "122", + "parentIndex": "291", + "start": "4040" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "26", + "end": "4040", + "id": "292", + "length": "5", + "line": "122", + "parentIndex": "287", + "start": "4036" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "287", + "isPure": true, + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "19", + "end": "4041", + "id": "288", + "length": "13", + "line": "122", + "parentIndex": "250", + "start": "4029" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + }, + "functionReturnParameters": "250", + "id": "285", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "4042", + "id": "286", + "length": "21", + "line": "122", + "parentIndex": "250", + "start": "4022" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + } + ] + } + } + ] + }, + "id": "250", + "kind": "KIND_FUNCTION", + "name": "trySub", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "252", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "254", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "254", + "src": { + "column": "20", + "end": "3894", + "id": "255", + "length": "9", + "line": "119", + "parentIndex": "252", + "start": "3886" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "256", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "20", + "end": "3892", + "id": "257", + "length": "7", + "line": "119", + "parentIndex": "254", + "start": "3886" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "258", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "258", + "src": { + "column": "31", + "end": "3905", + "id": "259", + "length": "9", + "line": "119", + "parentIndex": "252", + "start": "3897" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "260", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "3903", + "id": "261", + "length": "7", + "line": "119", + "parentIndex": "258", + "start": "3897" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "20", + "end": "3905", + "id": "253", + "length": "20", + "line": "119", + "parentIndex": "250", + "start": "3886" + } + }, + "returnParameters": { + "id": "262", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "264", + "nodeType": "VARIABLE_DECLARATION", + "scope": "264", + "src": { + "column": "65", + "end": "3934", + "id": "265", + "length": "4", + "line": "119", + "parentIndex": "262", + "start": "3931" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "266", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "65", + "end": "3934", + "id": "267", + "length": "4", + "line": "119", + "parentIndex": "264", + "start": "3931" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "268", + "nodeType": "VARIABLE_DECLARATION", + "scope": "268", + "src": { + "column": "71", + "end": "3943", + "id": "269", + "length": "7", + "line": "119", + "parentIndex": "262", + "start": "3937" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "270", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "71", + "end": "3943", + "id": "271", + "length": "7", + "line": "119", + "parentIndex": "268", + "start": "3937" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "3943", + "id": "263", + "length": "13", + "line": "119", + "parentIndex": "250", + "start": "3931" + } + }, + "scope": "192", + "src": { + "column": "4", + "end": "4058", + "id": "251", + "length": "189", + "line": "119", + "parentIndex": "192", + "start": "3870" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "320", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "80", + "end": "4699", + "id": "321", + "length": "417", + "line": "131", + "parentIndex": "298", + "start": "4283" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "322", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "4693", + "id": "323", + "length": "401", + "line": "132", + "parentIndex": "192", + "start": "4293" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "332", + "nodeType": "BLOCK", + "src": {} + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "326", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "328", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "328", + "src": { + "column": "16", + "end": "4551", + "id": "329", + "length": "1", + "line": "136", + "parentIndex": "326", + "start": "4551" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "330", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "21", + "end": "4556", + "id": "331", + "length": "1", + "line": "136", + "parentIndex": "326", + "start": "4556" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "16", + "end": "4556", + "id": "327", + "length": "6", + "line": "136", + "parentIndex": "324", + "start": "4551" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "324", + "nodeType": "IF_STATEMENT", + "src": { + "end": "4575", + "id": "325", + "length": "29", + "line": "136", + "parentIndex": "322", + "start": "4547" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "335" + ], + "declarations": [ + { + "id": "335", + "mutability": "MUTABLE", + "name": "c", + "nodeType": "VARIABLE_DECLARATION", + "scope": "322", + "src": { + "column": "12", + "end": "4597", + "id": "336", + "length": "9", + "line": "137", + "parentIndex": "333", + "start": "4589" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "337", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "4595", + "id": "338", + "length": "7", + "line": "137", + "parentIndex": "335", + "start": "4589" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "333", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "339", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "341", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "341", + "src": { + "column": "24", + "end": "4601", + "id": "342", + "length": "1", + "line": "137", + "parentIndex": "339", + "start": "4601" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MULTIPLICATION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "343", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "343", + "src": { + "column": "28", + "end": "4605", + "id": "344", + "length": "1", + "line": "137", + "parentIndex": "339", + "start": "4605" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "24", + "end": "4605", + "id": "340", + "length": "5", + "line": "137", + "parentIndex": "333", + "start": "4601" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "4606", + "id": "334", + "length": "18", + "line": "137", + "parentIndex": "322", + "start": "4589" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "357", + "nodeType": "BLOCK", + "src": {} + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "347", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "349", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "351", + "name": "c", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "333", + "src": { + "column": "16", + "end": "4624", + "id": "352", + "length": "1", + "line": "138", + "parentIndex": "349", + "start": "4624" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "353", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "353", + "src": { + "column": "20", + "end": "4628", + "id": "354", + "length": "1", + "line": "138", + "parentIndex": "349", + "start": "4628" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "4628", + "id": "350", + "length": "5", + "line": "138", + "parentIndex": "347", + "start": "4624" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "355", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "355", + "src": { + "column": "25", + "end": "4633", + "id": "356", + "length": "1", + "line": "138", + "parentIndex": "347", + "start": "4633" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "4633", + "id": "348", + "length": "10", + "line": "138", + "parentIndex": "345", + "start": "4624" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "345", + "nodeType": "IF_STATEMENT", + "src": { + "end": "4653", + "id": "346", + "length": "34", + "line": "138", + "parentIndex": "322", + "start": "4620" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "362", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "20", + "end": "4678", + "id": "363", + "length": "4", + "line": "139", + "parentIndex": "360", + "start": "4675" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "364", + "name": "c", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "333", + "src": { + "column": "26", + "end": "4681", + "id": "365", + "length": "1", + "line": "139", + "parentIndex": "360", + "start": "4681" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "360", + "isPure": true, + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "19", + "end": "4682", + "id": "361", + "length": "9", + "line": "139", + "parentIndex": "298", + "start": "4674" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + }, + "functionReturnParameters": "298", + "id": "358", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "4683", + "id": "359", + "length": "17", + "line": "139", + "parentIndex": "298", + "start": "4667" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + } + ] + } + } + ] + }, + "id": "298", + "kind": "KIND_FUNCTION", + "name": "tryMul", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "300", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "302", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "302", + "src": { + "column": "20", + "end": "4231", + "id": "303", + "length": "9", + "line": "131", + "parentIndex": "300", + "start": "4223" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "304", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "20", + "end": "4229", + "id": "305", + "length": "7", + "line": "131", + "parentIndex": "302", + "start": "4223" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "306", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "306", + "src": { + "column": "31", + "end": "4242", + "id": "307", + "length": "9", + "line": "131", + "parentIndex": "300", + "start": "4234" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "308", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "4240", + "id": "309", + "length": "7", + "line": "131", + "parentIndex": "306", + "start": "4234" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "20", + "end": "4242", + "id": "301", + "length": "20", + "line": "131", + "parentIndex": "298", + "start": "4223" + } + }, + "returnParameters": { + "id": "310", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "312", + "nodeType": "VARIABLE_DECLARATION", + "scope": "312", + "src": { + "column": "65", + "end": "4271", + "id": "313", + "length": "4", + "line": "131", + "parentIndex": "310", + "start": "4268" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "314", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "65", + "end": "4271", + "id": "315", + "length": "4", + "line": "131", + "parentIndex": "312", + "start": "4268" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "316", + "nodeType": "VARIABLE_DECLARATION", + "scope": "316", + "src": { + "column": "71", + "end": "4280", + "id": "317", + "length": "7", + "line": "131", + "parentIndex": "310", + "start": "4274" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "318", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "71", + "end": "4280", + "id": "319", + "length": "7", + "line": "131", + "parentIndex": "316", + "start": "4274" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "4280", + "id": "311", + "length": "13", + "line": "131", + "parentIndex": "298", + "start": "4268" + } + }, + "scope": "192", + "src": { + "column": "4", + "end": "4699", + "id": "299", + "length": "493", + "line": "131", + "parentIndex": "192", + "start": "4207" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "389", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "80", + "end": "5038", + "id": "390", + "length": "114", + "line": "148", + "parentIndex": "367", + "start": "4925" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "391", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "5032", + "id": "392", + "length": "98", + "line": "149", + "parentIndex": "192", + "start": "4935" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "401", + "nodeType": "BLOCK", + "src": {} + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "395", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "397", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "397", + "src": { + "column": "16", + "end": "4963", + "id": "398", + "length": "1", + "line": "150", + "parentIndex": "395", + "start": "4963" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "399", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "21", + "end": "4968", + "id": "400", + "length": "1", + "line": "150", + "parentIndex": "395", + "start": "4968" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "16", + "end": "4968", + "id": "396", + "length": "6", + "line": "150", + "parentIndex": "393", + "start": "4963" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "393", + "nodeType": "IF_STATEMENT", + "src": { + "end": "4988", + "id": "394", + "length": "30", + "line": "150", + "parentIndex": "391", + "start": "4959" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "406", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "20", + "end": "5013", + "id": "407", + "length": "4", + "line": "151", + "parentIndex": "404", + "start": "5010" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "408", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "410", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "410", + "src": { + "column": "26", + "end": "5016", + "id": "411", + "length": "1", + "line": "151", + "parentIndex": "408", + "start": "5016" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "412", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "412", + "src": { + "column": "30", + "end": "5020", + "id": "413", + "length": "1", + "line": "151", + "parentIndex": "408", + "start": "5020" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "26", + "end": "5020", + "id": "409", + "length": "5", + "line": "151", + "parentIndex": "404", + "start": "5016" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "404", + "isPure": true, + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "19", + "end": "5021", + "id": "405", + "length": "13", + "line": "151", + "parentIndex": "367", + "start": "5009" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + }, + "functionReturnParameters": "367", + "id": "402", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "5022", + "id": "403", + "length": "21", + "line": "151", + "parentIndex": "367", + "start": "5002" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + } + ] + } + } + ] + }, + "id": "367", + "kind": "KIND_FUNCTION", + "name": "tryDiv", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "369", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "371", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "371", + "src": { + "column": "20", + "end": "4873", + "id": "372", + "length": "9", + "line": "148", + "parentIndex": "369", + "start": "4865" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "373", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "20", + "end": "4871", + "id": "374", + "length": "7", + "line": "148", + "parentIndex": "371", + "start": "4865" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "375", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "375", + "src": { + "column": "31", + "end": "4884", + "id": "376", + "length": "9", + "line": "148", + "parentIndex": "369", + "start": "4876" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "377", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "4882", + "id": "378", + "length": "7", + "line": "148", + "parentIndex": "375", + "start": "4876" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "20", + "end": "4884", + "id": "370", + "length": "20", + "line": "148", + "parentIndex": "367", + "start": "4865" + } + }, + "returnParameters": { + "id": "379", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "381", + "nodeType": "VARIABLE_DECLARATION", + "scope": "381", + "src": { + "column": "65", + "end": "4913", + "id": "382", + "length": "4", + "line": "148", + "parentIndex": "379", + "start": "4910" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "383", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "65", + "end": "4913", + "id": "384", + "length": "4", + "line": "148", + "parentIndex": "381", + "start": "4910" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "385", + "nodeType": "VARIABLE_DECLARATION", + "scope": "385", + "src": { + "column": "71", + "end": "4922", + "id": "386", + "length": "7", + "line": "148", + "parentIndex": "379", + "start": "4916" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "387", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "71", + "end": "4922", + "id": "388", + "length": "7", + "line": "148", + "parentIndex": "385", + "start": "4916" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "4922", + "id": "380", + "length": "13", + "line": "148", + "parentIndex": "367", + "start": "4910" + } + }, + "scope": "192", + "src": { + "column": "4", + "end": "5038", + "id": "368", + "length": "190", + "line": "148", + "parentIndex": "192", + "start": "4849" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "437", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "80", + "end": "5387", + "id": "438", + "length": "114", + "line": "160", + "parentIndex": "415", + "start": "5274" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "439", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "5381", + "id": "440", + "length": "98", + "line": "161", + "parentIndex": "192", + "start": "5284" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "449", + "nodeType": "BLOCK", + "src": {} + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "443", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "445", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "445", + "src": { + "column": "16", + "end": "5312", + "id": "446", + "length": "1", + "line": "162", + "parentIndex": "443", + "start": "5312" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "447", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "21", + "end": "5317", + "id": "448", + "length": "1", + "line": "162", + "parentIndex": "443", + "start": "5317" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "16", + "end": "5317", + "id": "444", + "length": "6", + "line": "162", + "parentIndex": "441", + "start": "5312" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "441", + "nodeType": "IF_STATEMENT", + "src": { + "end": "5337", + "id": "442", + "length": "30", + "line": "162", + "parentIndex": "439", + "start": "5308" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "454", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "20", + "end": "5362", + "id": "455", + "length": "4", + "line": "163", + "parentIndex": "452", + "start": "5359" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "456", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "458", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "458", + "src": { + "column": "26", + "end": "5365", + "id": "459", + "length": "1", + "line": "163", + "parentIndex": "456", + "start": "5365" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MODULO", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "460", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "460", + "src": { + "column": "30", + "end": "5369", + "id": "461", + "length": "1", + "line": "163", + "parentIndex": "456", + "start": "5369" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "26", + "end": "5369", + "id": "457", + "length": "5", + "line": "163", + "parentIndex": "452", + "start": "5365" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "452", + "isPure": true, + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "19", + "end": "5370", + "id": "453", + "length": "13", + "line": "163", + "parentIndex": "415", + "start": "5358" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + }, + "functionReturnParameters": "415", + "id": "450", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "5371", + "id": "451", + "length": "21", + "line": "163", + "parentIndex": "415", + "start": "5351" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool_$_t_uint256$", + "typeString": "tuple(bool,uint256)" + } + } + } + ] + } + } + ] + }, + "id": "415", + "kind": "KIND_FUNCTION", + "name": "tryMod", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "417", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "419", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "419", + "src": { + "column": "20", + "end": "5222", + "id": "420", + "length": "9", + "line": "160", + "parentIndex": "417", + "start": "5214" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "421", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "20", + "end": "5220", + "id": "422", + "length": "7", + "line": "160", + "parentIndex": "419", + "start": "5214" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "423", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "423", + "src": { + "column": "31", + "end": "5233", + "id": "424", + "length": "9", + "line": "160", + "parentIndex": "417", + "start": "5225" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "425", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "5231", + "id": "426", + "length": "7", + "line": "160", + "parentIndex": "423", + "start": "5225" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "20", + "end": "5233", + "id": "418", + "length": "20", + "line": "160", + "parentIndex": "415", + "start": "5214" + } + }, + "returnParameters": { + "id": "427", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "429", + "nodeType": "VARIABLE_DECLARATION", + "scope": "429", + "src": { + "column": "65", + "end": "5262", + "id": "430", + "length": "4", + "line": "160", + "parentIndex": "427", + "start": "5259" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "431", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "65", + "end": "5262", + "id": "432", + "length": "4", + "line": "160", + "parentIndex": "429", + "start": "5259" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "433", + "nodeType": "VARIABLE_DECLARATION", + "scope": "433", + "src": { + "column": "71", + "end": "5271", + "id": "434", + "length": "7", + "line": "160", + "parentIndex": "427", + "start": "5265" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "435", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "71", + "end": "5271", + "id": "436", + "length": "7", + "line": "160", + "parentIndex": "433", + "start": "5265" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "5271", + "id": "428", + "length": "13", + "line": "160", + "parentIndex": "415", + "start": "5259" + } + }, + "scope": "192", + "src": { + "column": "4", + "end": "5387", + "id": "416", + "length": "190", + "line": "160", + "parentIndex": "192", + "start": "5198" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "481", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "71", + "end": "5718", + "id": "482", + "length": "29", + "line": "177", + "parentIndex": "463", + "start": "5690" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "485", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "487", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "487", + "src": { + "column": "15", + "end": "5707", + "id": "488", + "length": "1", + "line": "178", + "parentIndex": "485", + "start": "5707" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "ADDITION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "489", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "489", + "src": { + "column": "19", + "end": "5711", + "id": "490", + "length": "1", + "line": "178", + "parentIndex": "485", + "start": "5711" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "15", + "end": "5711", + "id": "486", + "length": "5", + "line": "178", + "parentIndex": "481", + "start": "5707" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "463", + "id": "483", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "5712", + "id": "484", + "length": "13", + "line": "178", + "parentIndex": "463", + "start": "5700" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "463", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "add", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "465", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "467", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "467", + "src": { + "column": "17", + "end": "5644", + "id": "468", + "length": "9", + "line": "177", + "parentIndex": "465", + "start": "5636" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "469", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "5642", + "id": "470", + "length": "7", + "line": "177", + "parentIndex": "467", + "start": "5636" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "471", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "471", + "src": { + "column": "28", + "end": "5655", + "id": "472", + "length": "9", + "line": "177", + "parentIndex": "465", + "start": "5647" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "473", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "5653", + "id": "474", + "length": "7", + "line": "177", + "parentIndex": "471", + "start": "5647" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "5655", + "id": "466", + "length": "20", + "line": "177", + "parentIndex": "463", + "start": "5636" + } + }, + "returnParameters": { + "id": "475", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "477", + "nodeType": "VARIABLE_DECLARATION", + "scope": "477", + "src": { + "column": "62", + "end": "5687", + "id": "478", + "length": "7", + "line": "177", + "parentIndex": "475", + "start": "5681" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "479", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "5687", + "id": "480", + "length": "7", + "line": "177", + "parentIndex": "477", + "start": "5681" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "5687", + "id": "476", + "length": "7", + "line": "177", + "parentIndex": "463", + "start": "5681" + } + }, + "scope": "192", + "src": { + "column": "4", + "end": "5718", + "id": "464", + "length": "96", + "line": "177", + "parentIndex": "192", + "start": "5623" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "510", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "71", + "end": "6085", + "id": "511", + "length": "29", + "line": "191", + "parentIndex": "492", + "start": "6057" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "514", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "516", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "516", + "src": { + "column": "15", + "end": "6074", + "id": "517", + "length": "1", + "line": "192", + "parentIndex": "514", + "start": "6074" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "518", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "518", + "src": { + "column": "19", + "end": "6078", + "id": "519", + "length": "1", + "line": "192", + "parentIndex": "514", + "start": "6078" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "15", + "end": "6078", + "id": "515", + "length": "5", + "line": "192", + "parentIndex": "510", + "start": "6074" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "492", + "id": "512", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "6079", + "id": "513", + "length": "13", + "line": "192", + "parentIndex": "492", + "start": "6067" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "492", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "sub", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "494", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "496", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "496", + "src": { + "column": "17", + "end": "6011", + "id": "497", + "length": "9", + "line": "191", + "parentIndex": "494", + "start": "6003" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "498", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "6009", + "id": "499", + "length": "7", + "line": "191", + "parentIndex": "496", + "start": "6003" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "500", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "500", + "src": { + "column": "28", + "end": "6022", + "id": "501", + "length": "9", + "line": "191", + "parentIndex": "494", + "start": "6014" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "502", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "6020", + "id": "503", + "length": "7", + "line": "191", + "parentIndex": "500", + "start": "6014" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "6022", + "id": "495", + "length": "20", + "line": "191", + "parentIndex": "492", + "start": "6003" + } + }, + "returnParameters": { + "id": "504", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "506", + "nodeType": "VARIABLE_DECLARATION", + "scope": "506", + "src": { + "column": "62", + "end": "6054", + "id": "507", + "length": "7", + "line": "191", + "parentIndex": "504", + "start": "6048" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "508", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "6054", + "id": "509", + "length": "7", + "line": "191", + "parentIndex": "506", + "start": "6048" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "6054", + "id": "505", + "length": "7", + "line": "191", + "parentIndex": "492", + "start": "6048" + } + }, + "scope": "192", + "src": { + "column": "4", + "end": "6085", + "id": "493", + "length": "96", + "line": "191", + "parentIndex": "192", + "start": "5990" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "539", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "71", + "end": "6428", + "id": "540", + "length": "29", + "line": "205", + "parentIndex": "521", + "start": "6400" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "543", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "545", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "545", + "src": { + "column": "15", + "end": "6417", + "id": "546", + "length": "1", + "line": "206", + "parentIndex": "543", + "start": "6417" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MULTIPLICATION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "547", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "547", + "src": { + "column": "19", + "end": "6421", + "id": "548", + "length": "1", + "line": "206", + "parentIndex": "543", + "start": "6421" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "15", + "end": "6421", + "id": "544", + "length": "5", + "line": "206", + "parentIndex": "539", + "start": "6417" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "521", + "id": "541", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "6422", + "id": "542", + "length": "13", + "line": "206", + "parentIndex": "521", + "start": "6410" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "521", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "mul", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "523", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "525", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "525", + "src": { + "column": "17", + "end": "6354", + "id": "526", + "length": "9", + "line": "205", + "parentIndex": "523", + "start": "6346" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "527", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "6352", + "id": "528", + "length": "7", + "line": "205", + "parentIndex": "525", + "start": "6346" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "529", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "529", + "src": { + "column": "28", + "end": "6365", + "id": "530", + "length": "9", + "line": "205", + "parentIndex": "523", + "start": "6357" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "531", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "6363", + "id": "532", + "length": "7", + "line": "205", + "parentIndex": "529", + "start": "6357" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "6365", + "id": "524", + "length": "20", + "line": "205", + "parentIndex": "521", + "start": "6346" + } + }, + "returnParameters": { + "id": "533", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "535", + "nodeType": "VARIABLE_DECLARATION", + "scope": "535", + "src": { + "column": "62", + "end": "6397", + "id": "536", + "length": "7", + "line": "205", + "parentIndex": "533", + "start": "6391" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "537", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "6397", + "id": "538", + "length": "7", + "line": "205", + "parentIndex": "535", + "start": "6391" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "6397", + "id": "534", + "length": "7", + "line": "205", + "parentIndex": "521", + "start": "6391" + } + }, + "scope": "192", + "src": { + "column": "4", + "end": "6428", + "id": "522", + "length": "96", + "line": "205", + "parentIndex": "192", + "start": "6333" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "568", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "71", + "end": "6988", + "id": "569", + "length": "29", + "line": "221", + "parentIndex": "550", + "start": "6960" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "572", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "574", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "574", + "src": { + "column": "15", + "end": "6977", + "id": "575", + "length": "1", + "line": "222", + "parentIndex": "572", + "start": "6977" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "576", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "576", + "src": { + "column": "19", + "end": "6981", + "id": "577", + "length": "1", + "line": "222", + "parentIndex": "572", + "start": "6981" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "15", + "end": "6981", + "id": "573", + "length": "5", + "line": "222", + "parentIndex": "568", + "start": "6977" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "550", + "id": "570", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "6982", + "id": "571", + "length": "13", + "line": "222", + "parentIndex": "550", + "start": "6970" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "550", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "div", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "552", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "554", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "554", + "src": { + "column": "17", + "end": "6914", + "id": "555", + "length": "9", + "line": "221", + "parentIndex": "552", + "start": "6906" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "556", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "6912", + "id": "557", + "length": "7", + "line": "221", + "parentIndex": "554", + "start": "6906" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "558", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "558", + "src": { + "column": "28", + "end": "6925", + "id": "559", + "length": "9", + "line": "221", + "parentIndex": "552", + "start": "6917" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "560", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "6923", + "id": "561", + "length": "7", + "line": "221", + "parentIndex": "558", + "start": "6917" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "6925", + "id": "553", + "length": "20", + "line": "221", + "parentIndex": "550", + "start": "6906" + } + }, + "returnParameters": { + "id": "562", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "564", + "nodeType": "VARIABLE_DECLARATION", + "scope": "564", + "src": { + "column": "62", + "end": "6957", + "id": "565", + "length": "7", + "line": "221", + "parentIndex": "562", + "start": "6951" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "566", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "6957", + "id": "567", + "length": "7", + "line": "221", + "parentIndex": "564", + "start": "6951" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "6957", + "id": "563", + "length": "7", + "line": "221", + "parentIndex": "550", + "start": "6951" + } + }, + "scope": "192", + "src": { + "column": "4", + "end": "6988", + "id": "551", + "length": "96", + "line": "221", + "parentIndex": "192", + "start": "6893" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "597", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "71", + "end": "7537", + "id": "598", + "length": "29", + "line": "237", + "parentIndex": "579", + "start": "7509" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "601", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "603", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "603", + "src": { + "column": "15", + "end": "7526", + "id": "604", + "length": "1", + "line": "238", + "parentIndex": "601", + "start": "7526" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MODULO", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "605", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "605", + "src": { + "column": "19", + "end": "7530", + "id": "606", + "length": "1", + "line": "238", + "parentIndex": "601", + "start": "7530" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "15", + "end": "7530", + "id": "602", + "length": "5", + "line": "238", + "parentIndex": "597", + "start": "7526" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "579", + "id": "599", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "7531", + "id": "600", + "length": "13", + "line": "238", + "parentIndex": "579", + "start": "7519" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "579", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "mod", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "581", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "583", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "583", + "src": { + "column": "17", + "end": "7463", + "id": "584", + "length": "9", + "line": "237", + "parentIndex": "581", + "start": "7455" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "585", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "7461", + "id": "586", + "length": "7", + "line": "237", + "parentIndex": "583", + "start": "7455" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "587", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "587", + "src": { + "column": "28", + "end": "7474", + "id": "588", + "length": "9", + "line": "237", + "parentIndex": "581", + "start": "7466" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "589", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "7472", + "id": "590", + "length": "7", + "line": "237", + "parentIndex": "587", + "start": "7466" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "7474", + "id": "582", + "length": "20", + "line": "237", + "parentIndex": "579", + "start": "7455" + } + }, + "returnParameters": { + "id": "591", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "593", + "nodeType": "VARIABLE_DECLARATION", + "scope": "593", + "src": { + "column": "62", + "end": "7506", + "id": "594", + "length": "7", + "line": "237", + "parentIndex": "591", + "start": "7500" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "595", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "7506", + "id": "596", + "length": "7", + "line": "237", + "parentIndex": "593", + "start": "7500" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "7506", + "id": "592", + "length": "7", + "line": "237", + "parentIndex": "579", + "start": "7500" + } + }, + "scope": "192", + "src": { + "column": "4", + "end": "7537", + "id": "580", + "length": "96", + "line": "237", + "parentIndex": "192", + "start": "7442" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "630", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "38", + "end": "8232", + "id": "631", + "length": "106", + "line": "258", + "parentIndex": "608", + "start": "8127" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "632", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "8226", + "id": "633", + "length": "90", + "line": "259", + "parentIndex": "192", + "start": "8137" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string", + "typeString": "string" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "638", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "640", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "640", + "src": { + "column": "20", + "end": "8169", + "id": "641", + "length": "1", + "line": "260", + "parentIndex": "638", + "start": "8169" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "642", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "642", + "src": { + "column": "25", + "end": "8174", + "id": "643", + "length": "1", + "line": "260", + "parentIndex": "638", + "start": "8174" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "20", + "end": "8174", + "id": "639", + "length": "6", + "line": "260", + "parentIndex": "634", + "start": "8169" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": "644", + "name": "errorMessage", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "644", + "src": { + "column": "28", + "end": "8188", + "id": "645", + "length": "12", + "line": "260", + "parentIndex": "634", + "start": "8177" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "636", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "8167", + "id": "637", + "length": "7", + "line": "260", + "parentIndex": "634", + "start": "8161" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "634", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "8189", + "id": "635", + "length": "29", + "line": "260", + "parentIndex": "632", + "start": "8161" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string$", + "typeString": "function(bool,string)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "648", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "650", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "650", + "src": { + "column": "19", + "end": "8211", + "id": "651", + "length": "1", + "line": "261", + "parentIndex": "648", + "start": "8211" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "652", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "652", + "src": { + "column": "23", + "end": "8215", + "id": "653", + "length": "1", + "line": "261", + "parentIndex": "648", + "start": "8215" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "19", + "end": "8215", + "id": "649", + "length": "5", + "line": "261", + "parentIndex": "632", + "start": "8211" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "608", + "id": "646", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "8216", + "id": "647", + "length": "13", + "line": "261", + "parentIndex": "608", + "start": "8204" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + } + } + ] + }, + "id": "608", + "kind": "KIND_FUNCTION", + "name": "sub", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "610", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "612", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "612", + "src": { + "column": "8", + "end": "8032", + "id": "613", + "length": "9", + "line": "255", + "parentIndex": "610", + "start": "8024" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "614", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "8030", + "id": "615", + "length": "7", + "line": "255", + "parentIndex": "612", + "start": "8024" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "616", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "616", + "src": { + "column": "8", + "end": "8051", + "id": "617", + "length": "9", + "line": "256", + "parentIndex": "610", + "start": "8043" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "618", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "8049", + "id": "619", + "length": "7", + "line": "256", + "parentIndex": "616", + "start": "8043" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "620", + "name": "errorMessage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "620", + "src": { + "column": "8", + "end": "8087", + "id": "621", + "length": "26", + "line": "257", + "parentIndex": "610", + "start": "8062" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "622", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "8067", + "id": "623", + "length": "6", + "line": "257", + "parentIndex": "620", + "start": "8062" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "8087", + "id": "611", + "length": "64", + "line": "255", + "parentIndex": "608", + "start": "8024" + } + }, + "returnParameters": { + "id": "624", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "626", + "nodeType": "VARIABLE_DECLARATION", + "scope": "626", + "src": { + "column": "29", + "end": "8124", + "id": "627", + "length": "7", + "line": "258", + "parentIndex": "624", + "start": "8118" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "628", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "8124", + "id": "629", + "length": "7", + "line": "258", + "parentIndex": "626", + "start": "8118" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "8124", + "id": "625", + "length": "7", + "line": "258", + "parentIndex": "608", + "start": "8118" + } + }, + "scope": "192", + "src": { + "column": "4", + "end": "8232", + "id": "609", + "length": "231", + "line": "254", + "parentIndex": "192", + "start": "8002" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$_t_string$", + "typeString": "function(uint256,uint256,string)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "677", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "38", + "end": "8946", + "id": "678", + "length": "105", + "line": "281", + "parentIndex": "655", + "start": "8842" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "679", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "8940", + "id": "680", + "length": "89", + "line": "282", + "parentIndex": "192", + "start": "8852" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string", + "typeString": "string" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "685", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "687", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "687", + "src": { + "column": "20", + "end": "8884", + "id": "688", + "length": "1", + "line": "283", + "parentIndex": "685", + "start": "8884" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "689", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "24", + "end": "8888", + "id": "690", + "length": "1", + "line": "283", + "parentIndex": "685", + "start": "8888" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "20", + "end": "8888", + "id": "686", + "length": "5", + "line": "283", + "parentIndex": "681", + "start": "8884" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": "691", + "name": "errorMessage", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "691", + "src": { + "column": "27", + "end": "8902", + "id": "692", + "length": "12", + "line": "283", + "parentIndex": "681", + "start": "8891" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "683", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "8882", + "id": "684", + "length": "7", + "line": "283", + "parentIndex": "681", + "start": "8876" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "681", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "8903", + "id": "682", + "length": "28", + "line": "283", + "parentIndex": "679", + "start": "8876" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string$", + "typeString": "function(bool,string)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "695", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "697", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "697", + "src": { + "column": "19", + "end": "8925", + "id": "698", + "length": "1", + "line": "284", + "parentIndex": "695", + "start": "8925" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "699", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "699", + "src": { + "column": "23", + "end": "8929", + "id": "700", + "length": "1", + "line": "284", + "parentIndex": "695", + "start": "8929" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "19", + "end": "8929", + "id": "696", + "length": "5", + "line": "284", + "parentIndex": "679", + "start": "8925" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "655", + "id": "693", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "8930", + "id": "694", + "length": "13", + "line": "284", + "parentIndex": "655", + "start": "8918" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + } + } + ] + }, + "id": "655", + "kind": "KIND_FUNCTION", + "name": "div", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "657", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "659", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "659", + "src": { + "column": "8", + "end": "8747", + "id": "660", + "length": "9", + "line": "278", + "parentIndex": "657", + "start": "8739" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "661", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "8745", + "id": "662", + "length": "7", + "line": "278", + "parentIndex": "659", + "start": "8739" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "663", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "663", + "src": { + "column": "8", + "end": "8766", + "id": "664", + "length": "9", + "line": "279", + "parentIndex": "657", + "start": "8758" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "665", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "8764", + "id": "666", + "length": "7", + "line": "279", + "parentIndex": "663", + "start": "8758" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "667", + "name": "errorMessage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "667", + "src": { + "column": "8", + "end": "8802", + "id": "668", + "length": "26", + "line": "280", + "parentIndex": "657", + "start": "8777" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "669", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "8782", + "id": "670", + "length": "6", + "line": "280", + "parentIndex": "667", + "start": "8777" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "8802", + "id": "658", + "length": "64", + "line": "278", + "parentIndex": "655", + "start": "8739" + } + }, + "returnParameters": { + "id": "671", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "673", + "nodeType": "VARIABLE_DECLARATION", + "scope": "673", + "src": { + "column": "29", + "end": "8839", + "id": "674", + "length": "7", + "line": "281", + "parentIndex": "671", + "start": "8833" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "675", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "8839", + "id": "676", + "length": "7", + "line": "281", + "parentIndex": "673", + "start": "8833" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "8839", + "id": "672", + "length": "7", + "line": "281", + "parentIndex": "655", + "start": "8833" + } + }, + "scope": "192", + "src": { + "column": "4", + "end": "8946", + "id": "656", + "length": "230", + "line": "277", + "parentIndex": "192", + "start": "8717" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$_t_string$", + "typeString": "function(uint256,uint256,string)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "724", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "38", + "end": "9822", + "id": "725", + "length": "105", + "line": "307", + "parentIndex": "702", + "start": "9718" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "726", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "9816", + "id": "727", + "length": "89", + "line": "308", + "parentIndex": "192", + "start": "9728" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string", + "typeString": "string" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "732", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "734", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "734", + "src": { + "column": "20", + "end": "9760", + "id": "735", + "length": "1", + "line": "309", + "parentIndex": "732", + "start": "9760" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "736", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "24", + "end": "9764", + "id": "737", + "length": "1", + "line": "309", + "parentIndex": "732", + "start": "9764" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "20", + "end": "9764", + "id": "733", + "length": "5", + "line": "309", + "parentIndex": "728", + "start": "9760" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": "738", + "name": "errorMessage", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "738", + "src": { + "column": "27", + "end": "9778", + "id": "739", + "length": "12", + "line": "309", + "parentIndex": "728", + "start": "9767" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "730", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "9758", + "id": "731", + "length": "7", + "line": "309", + "parentIndex": "728", + "start": "9752" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "728", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "9779", + "id": "729", + "length": "28", + "line": "309", + "parentIndex": "726", + "start": "9752" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string$", + "typeString": "function(bool,string)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "742", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "744", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "744", + "src": { + "column": "19", + "end": "9801", + "id": "745", + "length": "1", + "line": "310", + "parentIndex": "742", + "start": "9801" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MODULO", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "746", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "746", + "src": { + "column": "23", + "end": "9805", + "id": "747", + "length": "1", + "line": "310", + "parentIndex": "742", + "start": "9805" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "19", + "end": "9805", + "id": "743", + "length": "5", + "line": "310", + "parentIndex": "726", + "start": "9801" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "702", + "id": "740", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "9806", + "id": "741", + "length": "13", + "line": "310", + "parentIndex": "702", + "start": "9794" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + } + } + ] + }, + "id": "702", + "kind": "KIND_FUNCTION", + "name": "mod", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "704", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "706", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "706", + "src": { + "column": "8", + "end": "9623", + "id": "707", + "length": "9", + "line": "304", + "parentIndex": "704", + "start": "9615" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "708", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "9621", + "id": "709", + "length": "7", + "line": "304", + "parentIndex": "706", + "start": "9615" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "710", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "710", + "src": { + "column": "8", + "end": "9642", + "id": "711", + "length": "9", + "line": "305", + "parentIndex": "704", + "start": "9634" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "712", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "9640", + "id": "713", + "length": "7", + "line": "305", + "parentIndex": "710", + "start": "9634" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "714", + "name": "errorMessage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "714", + "src": { + "column": "8", + "end": "9678", + "id": "715", + "length": "26", + "line": "306", + "parentIndex": "704", + "start": "9653" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "716", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "9658", + "id": "717", + "length": "6", + "line": "306", + "parentIndex": "714", + "start": "9653" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "9678", + "id": "705", + "length": "64", + "line": "304", + "parentIndex": "702", + "start": "9615" + } + }, + "returnParameters": { + "id": "718", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "720", + "nodeType": "VARIABLE_DECLARATION", + "scope": "720", + "src": { + "column": "29", + "end": "9715", + "id": "721", + "length": "7", + "line": "307", + "parentIndex": "718", + "start": "9709" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "722", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "9715", + "id": "723", + "length": "7", + "line": "307", + "parentIndex": "720", + "start": "9709" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "9715", + "id": "719", + "length": "7", + "line": "307", + "parentIndex": "702", + "start": "9709" + } + }, + "scope": "192", + "src": { + "column": "4", + "end": "9822", + "id": "703", + "length": "230", + "line": "303", + "parentIndex": "192", + "start": "9593" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$_t_string$", + "typeString": "function(uint256,uint256,string)" + }, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "9824", + "length": "6476", + "line": "100", + "parentIndex": "186", + "start": "3349" + } + } + } + ] + }, + "src": { + "id": 187, + "line": 100, + "start": 3349, + "end": 9824, + "length": 6476, + "parent_index": 30 + } + }, + { + "id": 748, + "license": "MIT", + "name": "TokenSale", + "absolute_path": "TokenSale.sol", + "exported_symbols": [ + { + "id": 748, + "name": "TokenSale", + "absolute_path": "TokenSale.sol" + }, + { + "id": 186, + "name": "SafeMath", + "absolute_path": "SafeMath.sol" + }, + { + "id": 31, + "name": "IERC20", + "absolute_path": "IERC20.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "754", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "9881", + "id": "755", + "length": "23", + "line": "316", + "parentIndex": "748", + "start": "9859" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IERC20.sol", + "file": "./IERC20.sol", + "id": "756", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "748", + "sourceUnit": "186", + "src": { + "end": "9905", + "length": "22", + "line": "318", + "parentIndex": "748", + "start": "9884" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "SafeMath.sol", + "file": "./SafeMath.sol", + "id": "757", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "748", + "sourceUnit": "186", + "src": { + "end": "9930", + "length": "24", + "line": "319", + "parentIndex": "748", + "start": "9907" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "contractDependencies": [ + "756", + "757" + ], + "fullyImplemented": true, + "id": "758", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "758", + "756", + "757" + ], + "name": "TokenSale", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Using", + "value": { + "id": "760", + "libraryName": { + "id": "764", + "name": "SafeMath", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "186", + "src": { + "end": "9971", + "id": "765", + "length": "8", + "line": "322", + "parentIndex": "760", + "start": "9964" + } + }, + "name": "SafeMath", + "nodeType": "USING_FOR_DIRECTIVE", + "src": { + "end": "9984", + "id": "761", + "length": "27", + "line": "322", + "parentIndex": "758", + "start": "9958" + }, + "typeName": { + "id": "762", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "9983", + "id": "763", + "length": "7", + "line": "322", + "parentIndex": "760", + "start": "9977" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "767", + "isStateVariable": true, + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "758", + "src": { + "column": "4", + "end": "10011", + "id": "768", + "length": "21", + "line": "324", + "parentIndex": "758", + "start": "9991" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_contract$_IERC20_$31", + "typeString": "contract IERC20" + }, + "typeName": { + "id": "769", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "771", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "31", + "src": { + "column": "4", + "end": "9996", + "id": "772", + "length": "6", + "line": "324", + "parentIndex": "769", + "start": "9991" + } + }, + "referencedDeclaration": "31", + "src": { + "column": "4", + "end": "9996", + "id": "770", + "length": "6", + "line": "324", + "parentIndex": "767", + "start": "9991" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IERC20_$31", + "typeString": "contract IERC20" + } + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "774", + "isStateVariable": true, + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "758", + "src": { + "column": "4", + "end": "10038", + "id": "775", + "length": "22", + "line": "325", + "parentIndex": "758", + "start": "10017" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "776", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "10023", + "id": "777", + "length": "7", + "line": "325", + "parentIndex": "774", + "start": "10017" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "779", + "isStateVariable": true, + "name": "tokenPrice", + "nodeType": "VARIABLE_DECLARATION", + "scope": "758", + "src": { + "column": "4", + "end": "10070", + "id": "780", + "length": "27", + "line": "326", + "parentIndex": "758", + "start": "10044" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "781", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "10050", + "id": "782", + "length": "7", + "line": "326", + "parentIndex": "779", + "start": "10044" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "784", + "name": "TokensPurchased", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "786", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "787", + "name": "buyer", + "nodeType": "VARIABLE_DECLARATION", + "scope": "787", + "src": { + "column": "26", + "end": "10111", + "id": "788", + "length": "13", + "line": "328", + "parentIndex": "786", + "start": "10099" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "789", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "26", + "end": "10105", + "id": "790", + "length": "7", + "line": "328", + "parentIndex": "787", + "start": "10099" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "791", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "791", + "src": { + "column": "41", + "end": "10127", + "id": "792", + "length": "14", + "line": "328", + "parentIndex": "786", + "start": "10114" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "793", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "41", + "end": "10120", + "id": "794", + "length": "7", + "line": "328", + "parentIndex": "791", + "start": "10114" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "10129", + "id": "785", + "length": "53", + "line": "328", + "parentIndex": "784", + "start": "10077" + } + }, + "src": { + "column": "4", + "end": "10129", + "id": "785", + "length": "53", + "line": "328", + "parentIndex": "758", + "start": "10077" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_TokenSale_TokensPurchased_\u0026784", + "typeString": "event TokenSale.TokensPurchased" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "809", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "60", + "end": "10299", + "id": "810", + "length": "108", + "line": "330", + "parentIndex": "796", + "start": "10192" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "813", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "815", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "767", + "src": { + "column": "8", + "end": "10206", + "id": "816", + "length": "5", + "line": "331", + "parentIndex": "813", + "start": "10202" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IERC20_$31", + "typeString": "contract IERC20" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "821", + "name": "_tokenAddress", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "821", + "src": { + "column": "23", + "end": "10229", + "id": "822", + "length": "13", + "line": "331", + "parentIndex": "817", + "start": "10217" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "819", + "name": "IERC20", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "10215", + "id": "820", + "length": "6", + "line": "331", + "parentIndex": "817", + "start": "10210" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "817", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "10230", + "id": "818", + "length": "21", + "line": "331", + "parentIndex": "813", + "start": "10210" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "src": { + "column": "8", + "end": "10230", + "id": "814", + "length": "29", + "line": "331", + "parentIndex": "809", + "start": "10202" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IERC20_$31", + "typeString": "contract IERC20" + } + } + }, + "id": "811", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "10231", + "id": "812", + "length": "30", + "line": "331", + "parentIndex": "809", + "start": "10202" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IERC20_$31", + "typeString": "contract IERC20" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "825", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "827", + "name": "owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "774", + "src": { + "column": "8", + "end": "10245", + "id": "828", + "length": "5", + "line": "332", + "parentIndex": "825", + "start": "10241" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "831", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "10251", + "id": "832", + "length": "3", + "line": "332", + "parentIndex": "829", + "start": "10249" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "829", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "10258", + "id": "830", + "length": "10", + "line": "332", + "parentIndex": "825", + "start": "10249" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "src": { + "column": "8", + "end": "10258", + "id": "826", + "length": "18", + "line": "332", + "parentIndex": "809", + "start": "10241" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "823", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "10259", + "id": "824", + "length": "19", + "line": "332", + "parentIndex": "809", + "start": "10241" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "835", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "837", + "name": "tokenPrice", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "779", + "src": { + "column": "8", + "end": "10278", + "id": "838", + "length": "10", + "line": "333", + "parentIndex": "835", + "start": "10269" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "839", + "name": "_tokenPrice", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "839", + "src": { + "column": "21", + "end": "10292", + "id": "840", + "length": "11", + "line": "333", + "parentIndex": "835", + "start": "10282" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "8", + "end": "10292", + "id": "836", + "length": "24", + "line": "333", + "parentIndex": "809", + "start": "10269" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "833", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "10293", + "id": "834", + "length": "25", + "line": "333", + "parentIndex": "809", + "start": "10269" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "796", + "implemented": true, + "kind": "CONSTRUCTOR", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "798", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "800", + "name": "_tokenAddress", + "nodeType": "VARIABLE_DECLARATION", + "scope": "800", + "src": { + "column": "16", + "end": "10168", + "id": "801", + "length": "21", + "line": "330", + "parentIndex": "798", + "start": "10148" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "802", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "10154", + "id": "803", + "length": "7", + "line": "330", + "parentIndex": "800", + "start": "10148" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "804", + "name": "_tokenPrice", + "nodeType": "VARIABLE_DECLARATION", + "scope": "804", + "src": { + "column": "39", + "end": "10189", + "id": "805", + "length": "19", + "line": "330", + "parentIndex": "798", + "start": "10171" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "806", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "39", + "end": "10177", + "id": "807", + "length": "7", + "line": "330", + "parentIndex": "804", + "start": "10171" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "16", + "end": "10189", + "id": "799", + "length": "42", + "line": "330", + "parentIndex": "796", + "start": "10148" + } + }, + "returnParameters": { + "id": "808", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "10299", + "id": "797", + "length": "164", + "line": "330", + "parentIndex": "796", + "start": "10136" + } + }, + "scope": "758", + "src": { + "column": "4", + "end": "10299", + "id": "797", + "length": "164", + "line": "330", + "parentIndex": "758", + "start": "10136" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "$_t_constructor", + "typeString": "constructor" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "851", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "49", + "end": "10518", + "id": "852", + "length": "168", + "line": "336", + "parentIndex": "842", + "start": "10351" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "855" + ], + "declarations": [ + { + "id": "855", + "mutability": "MUTABLE", + "name": "totalPrice", + "nodeType": "VARIABLE_DECLARATION", + "scope": "851", + "src": { + "column": "8", + "end": "10378", + "id": "856", + "length": "18", + "line": "337", + "parentIndex": "853", + "start": "10361" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "857", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "10367", + "id": "858", + "length": "7", + "line": "337", + "parentIndex": "855", + "start": "10361" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "853", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "865", + "name": "tokenPrice", + "nodeType": "IDENTIFIER", + "src": { + "column": "41", + "end": "10403", + "id": "866", + "length": "10", + "line": "337", + "parentIndex": "859", + "start": "10394" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "863", + "name": "_amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "863", + "src": { + "column": "29", + "end": "10388", + "id": "864", + "length": "7", + "line": "337", + "parentIndex": "861", + "start": "10382" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "861", + "memberName": "mul", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "29", + "end": "10392", + "id": "862", + "length": "11", + "line": "337", + "parentIndex": "859", + "start": "10382" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "859", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "29", + "end": "10404", + "id": "860", + "length": "23", + "line": "337", + "parentIndex": "853", + "start": "10382" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "10405", + "id": "854", + "length": "45", + "line": "337", + "parentIndex": "851", + "start": "10361" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "873", + "name": "owner", + "nodeType": "IDENTIFIER", + "src": { + "column": "27", + "end": "10438", + "id": "874", + "length": "5", + "line": "338", + "parentIndex": "867", + "start": "10434" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "877", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "34", + "end": "10443", + "id": "878", + "length": "3", + "line": "338", + "parentIndex": "875", + "start": "10441" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "875", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "34", + "end": "10450", + "id": "876", + "length": "10", + "line": "338", + "parentIndex": "867", + "start": "10441" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "879", + "name": "_amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "879", + "src": { + "column": "46", + "end": "10459", + "id": "880", + "length": "7", + "line": "338", + "parentIndex": "867", + "start": "10453" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "871", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "767", + "src": { + "column": "8", + "end": "10419", + "id": "872", + "length": "5", + "line": "338", + "parentIndex": "869", + "start": "10415" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IERC20_$31", + "typeString": "contract IERC20" + } + } + }, + "id": "869", + "memberName": "transferFrom", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "10432", + "id": "870", + "length": "18", + "line": "338", + "parentIndex": "867", + "start": "10415" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IERC20_$31", + "typeString": "contract IERC20" + } + } + }, + "id": "867", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "10460", + "id": "868", + "length": "46", + "line": "338", + "parentIndex": "851", + "start": "10415" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_uint256$", + "typeString": "function(function(),address,uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "885", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "29", + "end": "10494", + "id": "886", + "length": "3", + "line": "339", + "parentIndex": "883", + "start": "10492" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "883", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "29", + "end": "10501", + "id": "884", + "length": "10", + "line": "339", + "parentIndex": "851", + "start": "10492" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "887", + "name": "_amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "887", + "src": { + "column": "41", + "end": "10510", + "id": "888", + "length": "7", + "line": "339", + "parentIndex": "851", + "start": "10504" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "889", + "name": "TokensPurchased", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "784", + "src": { + "column": "13", + "end": "10490", + "id": "890", + "length": "15", + "line": "339", + "parentIndex": "851", + "start": "10476" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_TokenSale_TokensPurchased_\u0026784", + "typeString": "event TokenSale.TokensPurchased" + } + } + }, + "id": "881", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "10512", + "id": "882", + "length": "42", + "line": "339", + "parentIndex": "842", + "start": "10471" + } + } + } + ] + }, + "id": "842", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "buyTokens", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "844", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "846", + "name": "_amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "846", + "src": { + "column": "23", + "end": "10339", + "id": "847", + "length": "15", + "line": "336", + "parentIndex": "844", + "start": "10325" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "848", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "10331", + "id": "849", + "length": "7", + "line": "336", + "parentIndex": "846", + "start": "10325" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "10339", + "id": "845", + "length": "15", + "line": "336", + "parentIndex": "842", + "start": "10325" + } + }, + "returnParameters": { + "id": "850", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "10518", + "id": "843", + "length": "213", + "line": "336", + "parentIndex": "842", + "start": "10306" + } + }, + "scope": "758", + "src": { + "column": "4", + "end": "10518", + "id": "843", + "length": "213", + "line": "336", + "parentIndex": "758", + "start": "10306" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "EXTERNAL" + } + } + ], + "src": { + "end": "10520", + "length": "588", + "line": "321", + "parentIndex": "748", + "start": "9933" + } + } + } + ] + }, + "src": { + "id": 749, + "line": 321, + "start": 9933, + "end": 10520, + "length": 588, + "parent_index": 30 + } + } + ], + "comments": [ + { + "id": 1, + "node_type": 33, + "src": { + "line": 1, + "end": 30, + "length": 31, + "parent_index": 2 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 2, + "node_type": 32, + "src": { + "line": 5, + "start": 58, + "end": 127, + "length": 70, + "parent_index": 3 + }, + "text": "/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */" + }, + { + "id": 3, + "node_type": 32, + "src": { + "line": 9, + "column": 4, + "start": 152, + "end": 217, + "length": 66, + "parent_index": 4 + }, + "text": "/**\n * @dev Returns the amount of tokens in existence.\n */" + }, + { + "id": 4, + "node_type": 32, + "src": { + "line": 14, + "column": 4, + "start": 284, + "end": 355, + "length": 72, + "parent_index": 5 + }, + "text": "/**\n * @dev Returns the amount of tokens owned by `account`.\n */" + }, + { + "id": 5, + "node_type": 32, + "src": { + "line": 19, + "column": 4, + "start": 435, + "end": 643, + "length": 209, + "parent_index": 6 + }, + "text": "/**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */" + }, + { + "id": 6, + "node_type": 32, + "src": { + "line": 28, + "column": 4, + "start": 732, + "end": 995, + "length": 264, + "parent_index": 7 + }, + "text": "/**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */" + }, + { + "id": 7, + "node_type": 32, + "src": { + "line": 37, + "column": 4, + "start": 1090, + "end": 1731, + "length": 642, + "parent_index": 8 + }, + "text": "/**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race condition\n * is to first reduce the spender's allowance to 0 and set the desired value\n * afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */" + }, + { + "id": 8, + "node_type": 32, + "src": { + "line": 53, + "column": 4, + "start": 1817, + "end": 2112, + "length": 296, + "parent_index": 9 + }, + "text": "/**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */" + }, + { + "id": 9, + "node_type": 32, + "src": { + "line": 68, + "column": 4, + "start": 2251, + "end": 2408, + "length": 158, + "parent_index": 10 + }, + "text": "/**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */" + }, + { + "id": 10, + "node_type": 32, + "src": { + "line": 76, + "column": 4, + "start": 2492, + "end": 2639, + "length": 148, + "parent_index": 11 + }, + "text": "/**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */" + }, + { + "id": 11, + "node_type": 33, + "src": { + "line": 83, + "start": 2727, + "end": 2757, + "length": 31, + "parent_index": 12 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 12, + "node_type": 32, + "src": { + "line": 87, + "start": 2785, + "end": 3347, + "length": 563, + "parent_index": 13 + }, + "text": "/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */" + }, + { + "id": 13, + "node_type": 32, + "src": { + "line": 101, + "column": 4, + "start": 3372, + "end": 3502, + "length": 131, + "parent_index": 14 + }, + "text": "/**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */" + }, + { + "id": 14, + "node_type": 32, + "src": { + "line": 114, + "column": 4, + "start": 3730, + "end": 3864, + "length": 135, + "parent_index": 15 + }, + "text": "/**\n * @dev Returns the substraction of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */" + }, + { + "id": 15, + "node_type": 32, + "src": { + "line": 126, + "column": 4, + "start": 4065, + "end": 4201, + "length": 137, + "parent_index": 16 + }, + "text": "/**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */" + }, + { + "id": 16, + "node_type": 31, + "src": { + "line": 133, + "column": 12, + "start": 4317, + "end": 4395, + "length": 79, + "parent_index": 17 + }, + "text": "// Gas optimization: this is cheaper than requiring 'a' not being zero, but the" + }, + { + "id": 17, + "node_type": 31, + "src": { + "line": 134, + "column": 12, + "start": 4409, + "end": 4449, + "length": 41, + "parent_index": 18 + }, + "text": "// benefit is lost if 'b' is also tested." + }, + { + "id": 18, + "node_type": 31, + "src": { + "line": 135, + "column": 12, + "start": 4463, + "end": 4533, + "length": 71, + "parent_index": 19 + }, + "text": "// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522" + }, + { + "id": 19, + "node_type": 32, + "src": { + "line": 143, + "column": 4, + "start": 4706, + "end": 4843, + "length": 138, + "parent_index": 20 + }, + "text": "/**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */" + }, + { + "id": 20, + "node_type": 32, + "src": { + "line": 155, + "column": 4, + "start": 5045, + "end": 5192, + "length": 148, + "parent_index": 21 + }, + "text": "/**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */" + }, + { + "id": 21, + "node_type": 32, + "src": { + "line": 167, + "column": 4, + "start": 5394, + "end": 5617, + "length": 224, + "parent_index": 22 + }, + "text": "/**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */" + }, + { + "id": 22, + "node_type": 32, + "src": { + "line": 181, + "column": 4, + "start": 5725, + "end": 5984, + "length": 260, + "parent_index": 23 + }, + "text": "/**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */" + }, + { + "id": 23, + "node_type": 32, + "src": { + "line": 195, + "column": 4, + "start": 6092, + "end": 6327, + "length": 236, + "parent_index": 24 + }, + "text": "/**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */" + }, + { + "id": 24, + "node_type": 32, + "src": { + "line": 209, + "column": 4, + "start": 6435, + "end": 6887, + "length": 453, + "parent_index": 25 + }, + "text": "/**\n * @dev Returns the integer division of two unsigned integers, reverting on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */" + }, + { + "id": 25, + "node_type": 32, + "src": { + "line": 225, + "column": 4, + "start": 6995, + "end": 7436, + "length": 442, + "parent_index": 26 + }, + "text": "/**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */" + }, + { + "id": 26, + "node_type": 32, + "src": { + "line": 241, + "column": 4, + "start": 7544, + "end": 7996, + "length": 453, + "parent_index": 27 + }, + "text": "/**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {trySub}.\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */" + }, + { + "id": 27, + "node_type": 32, + "src": { + "line": 265, + "column": 4, + "start": 8239, + "end": 8711, + "length": 473, + "parent_index": 28 + }, + "text": "/**\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */" + }, + { + "id": 28, + "node_type": 32, + "src": { + "line": 288, + "column": 4, + "start": 8953, + "end": 9587, + "length": 635, + "parent_index": 29 + }, + "text": "/**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting with custom message when dividing by zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryMod}.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */" + }, + { + "id": 29, + "node_type": 33, + "src": { + "line": 315, + "start": 9827, + "end": 9857, + "length": 31, + "parent_index": 30 + }, + "text": "// SPDX-License-Identifier: MIT" + } + ] } \ No newline at end of file diff --git a/data/tests/ast/resolver/InterfaceContract.json b/data/tests/ast/resolver/InterfaceContract.json index 1194de46..e518d7e6 100644 --- a/data/tests/ast/resolver/InterfaceContract.json +++ b/data/tests/ast/resolver/InterfaceContract.json @@ -1 +1 @@ -{"id":1,"node_type":80,"entry_source_unit":60,"root":[{"id":2,"base_contracts":[],"license":"unknown","exported_symbols":[{"id":2,"name":"IERC20","absolute_path":"IERC20.sol"}],"absolute_path":"IERC20.sol","name":"IERC20","node_type":1,"nodes":[{"id":4,"node_type":10,"src":{"id":5,"line":1,"column":0,"start":0,"end":22,"length":23,"parent_index":2},"literals":["pragma","solidity","^","0",".","5",".","0",";"],"text":"pragma solidity ^0.5.0;"},{"id":7,"name":"IERC20","node_type":35,"src":{"id":0,"line":1,"column":24,"start":24,"end":246,"length":223,"parent_index":2},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":9,"name":"totalSupply","node_type":42,"kind":41,"src":{"id":10,"line":1,"column":43,"start":43,"end":97,"length":55,"parent_index":7},"body":{"id":23,"node_type":46,"kind":0,"src":{"id":10,"line":1,"column":43,"start":43,"end":97,"length":55,"parent_index":9},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":11,"node_type":43,"src":{"id":12,"line":1,"column":89,"start":89,"end":95,"length":7,"parent_index":9},"parameters":[{"id":13,"node_type":44,"src":{"id":14,"line":1,"column":89,"start":89,"end":95,"length":7,"parent_index":11},"scope":9,"name":"","type_name":{"id":15,"node_type":30,"src":{"id":16,"line":1,"column":89,"start":89,"end":95,"length":7,"parent_index":13},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":17,"node_type":43,"src":{"id":18,"line":1,"column":89,"start":89,"end":95,"length":7,"parent_index":9},"parameters":[{"id":19,"node_type":44,"src":{"id":20,"line":1,"column":89,"start":89,"end":95,"length":7,"parent_index":17},"scope":9,"name":"","type_name":{"id":21,"node_type":30,"src":{"id":22,"line":1,"column":89,"start":89,"end":95,"length":7,"parent_index":19},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":7,"type_description":{"type_identifier":"t_function_$_t_uint256","type_string":"function(uint256)"}},{"id":25,"name":"balanceOf","node_type":42,"kind":41,"src":{"id":26,"line":1,"column":99,"start":99,"end":166,"length":68,"parent_index":7},"body":{"id":39,"node_type":46,"kind":0,"src":{"id":26,"line":1,"column":99,"start":99,"end":166,"length":68,"parent_index":25},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":27,"node_type":43,"src":{"id":28,"line":1,"column":118,"start":118,"end":132,"length":15,"parent_index":25},"parameters":[{"id":29,"node_type":44,"src":{"id":30,"line":1,"column":118,"start":118,"end":132,"length":15,"parent_index":27},"scope":25,"name":"account","type_name":{"id":31,"node_type":30,"src":{"id":32,"line":1,"column":118,"start":118,"end":124,"length":7,"parent_index":29},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":33,"node_type":43,"src":{"id":34,"line":1,"column":158,"start":158,"end":164,"length":7,"parent_index":25},"parameters":[{"id":35,"node_type":44,"src":{"id":36,"line":1,"column":158,"start":158,"end":164,"length":7,"parent_index":33},"scope":25,"name":"","type_name":{"id":37,"node_type":30,"src":{"id":38,"line":1,"column":158,"start":158,"end":164,"length":7,"parent_index":35},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":7,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":41,"name":"transfer","node_type":42,"kind":41,"src":{"id":42,"line":1,"column":168,"start":168,"end":244,"length":77,"parent_index":7},"body":{"id":59,"node_type":46,"kind":0,"src":{"id":42,"line":1,"column":168,"start":168,"end":244,"length":77,"parent_index":41},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":43,"node_type":43,"src":{"id":44,"line":1,"column":186,"start":186,"end":218,"length":33,"parent_index":41},"parameters":[{"id":45,"node_type":44,"src":{"id":46,"line":1,"column":186,"start":186,"end":202,"length":17,"parent_index":43},"scope":41,"name":"recipient","type_name":{"id":47,"node_type":30,"src":{"id":48,"line":1,"column":186,"start":186,"end":192,"length":7,"parent_index":45},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":49,"node_type":44,"src":{"id":50,"line":1,"column":205,"start":205,"end":218,"length":14,"parent_index":43},"scope":41,"name":"amount","type_name":{"id":51,"node_type":30,"src":{"id":52,"line":1,"column":205,"start":205,"end":211,"length":7,"parent_index":49},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":53,"node_type":43,"src":{"id":54,"line":1,"column":239,"start":239,"end":242,"length":4,"parent_index":41},"parameters":[{"id":55,"node_type":44,"src":{"id":56,"line":1,"column":239,"start":239,"end":242,"length":4,"parent_index":53},"scope":41,"name":"","type_name":{"id":57,"node_type":30,"src":{"id":58,"line":1,"column":239,"start":239,"end":242,"length":4,"parent_index":55},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":7,"type_description":{"type_identifier":"t_function_$_t_address$$_t_uint256","type_string":"function(address,uint256)"}}],"linearized_base_contracts":[7],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":3,"line":1,"column":24,"start":24,"end":246,"length":223,"parent_index":1}},{"id":60,"base_contracts":[{"id":68,"node_type":62,"src":{"id":69,"line":3,"column":77,"start":326,"end":331,"length":6,"parent_index":67},"base_name":{"id":70,"node_type":52,"src":{"id":71,"line":3,"column":77,"start":326,"end":331,"length":6,"parent_index":67},"name":"IERC20","referenced_declaration":2}}],"license":"unknown","exported_symbols":[{"id":60,"name":"InterfaceContract","absolute_path":"InterfaceContract.sol"},{"id":0,"name":"IERC20","absolute_path":"IERC20.sol'"}],"absolute_path":"InterfaceContract.sol","name":"InterfaceContract","node_type":1,"nodes":[{"id":64,"node_type":10,"src":{"id":65,"line":3,"column":0,"start":249,"end":271,"length":23,"parent_index":60},"literals":["pragma","solidity","^","0",".","5",".","0",";"],"text":"pragma solidity ^0.5.0;"},{"id":66,"node_type":29,"src":{"id":0,"line":3,"column":24,"start":273,"end":294,"length":22,"parent_index":60},"absolute_path":"IERC20.sol'","file":"'./IERC20.sol'","scope":60,"unit_alias":"","source_unit":0},{"id":67,"name":"InterfaceContract","node_type":35,"src":{"id":0,"line":3,"column":47,"start":296,"end":664,"length":369,"parent_index":60},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":73,"name":"totalSupply","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":74,"line":3,"column":86,"start":335,"end":361,"length":27,"parent_index":67},"scope":67,"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"visibility":3,"storage_location":1,"mutability":1,"type_name":{"id":75,"node_type":30,"src":{"id":76,"line":3,"column":86,"start":335,"end":341,"length":7,"parent_index":73},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0}},{"id":78,"name":"_balances","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":79,"line":3,"column":114,"start":363,"end":408,"length":46,"parent_index":67},"scope":67,"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":80,"node_type":0,"src":{"id":81,"line":3,"column":114,"start":363,"end":389,"length":27,"parent_index":78},"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"key_type":{"id":82,"node_type":30,"src":{"id":83,"line":3,"column":122,"start":371,"end":377,"length":7,"parent_index":80},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0},"value_type":{"id":84,"node_type":30,"src":{"id":85,"line":3,"column":133,"start":382,"end":388,"length":7,"parent_index":80},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"referenced_declaration":0}},{"id":87,"name":"balanceOf","node_type":42,"kind":41,"src":{"id":88,"line":3,"column":161,"start":410,"end":505,"length":96,"parent_index":67},"body":{"id":101,"node_type":46,"kind":0,"src":{"id":102,"line":3,"column":227,"start":476,"end":505,"length":30,"parent_index":87},"implemented":true,"statements":[{"id":103,"node_type":47,"src":{"id":104,"line":3,"column":229,"start":478,"end":503,"length":26,"parent_index":87},"function_return_parameters":87,"expression":{"id":105,"node_type":22,"src":{"id":106,"line":3,"column":236,"start":485,"end":502,"length":18,"parent_index":101},"index_expression":{"id":107,"node_type":16,"src":{"id":108,"line":3,"column":236,"start":485,"end":493,"length":9,"parent_index":105},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":78,"is_pure":false},"base_expression":{"id":109,"node_type":16,"src":{"id":110,"line":3,"column":246,"start":495,"end":501,"length":7,"parent_index":105},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":109,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"}}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":89,"node_type":43,"src":{"id":90,"line":3,"column":180,"start":429,"end":443,"length":15,"parent_index":87},"parameters":[{"id":91,"node_type":44,"src":{"id":92,"line":3,"column":180,"start":429,"end":443,"length":15,"parent_index":89},"scope":87,"name":"account","type_name":{"id":93,"node_type":30,"src":{"id":94,"line":3,"column":180,"start":429,"end":435,"length":7,"parent_index":91},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":95,"node_type":43,"src":{"id":96,"line":3,"column":218,"start":467,"end":473,"length":7,"parent_index":87},"parameters":[{"id":97,"node_type":44,"src":{"id":98,"line":3,"column":218,"start":467,"end":473,"length":7,"parent_index":95},"scope":87,"name":"","type_name":{"id":99,"node_type":30,"src":{"id":100,"line":3,"column":218,"start":467,"end":473,"length":7,"parent_index":97},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":67,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":112,"name":"transfer","node_type":42,"kind":41,"src":{"id":113,"line":3,"column":258,"start":507,"end":662,"length":156,"parent_index":67},"body":{"id":130,"node_type":46,"kind":0,"src":{"id":131,"line":3,"column":333,"start":582,"end":662,"length":81,"parent_index":112},"implemented":true,"statements":[{"id":132,"node_type":81,"src":{"id":133,"line":3,"column":335,"start":584,"end":615,"length":32,"parent_index":130},"expression":{"id":134,"node_type":27,"src":{"id":135,"line":3,"column":335,"start":584,"end":614,"length":31,"parent_index":130},"operator":14,"left_expression":{"id":136,"node_type":22,"src":{"id":137,"line":3,"column":335,"start":584,"end":604,"length":21,"parent_index":134},"index_expression":{"id":138,"node_type":16,"src":{"id":139,"line":3,"column":335,"start":584,"end":592,"length":9,"parent_index":136},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":78,"is_pure":false},"base_expression":{"id":140,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":141,"line":3,"column":345,"start":594,"end":603,"length":10,"parent_index":136},"expression":{"id":142,"node_type":16,"src":{"id":143,"line":3,"column":345,"start":594,"end":596,"length":3,"parent_index":140},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"}},"right_expression":{"id":144,"node_type":16,"src":{"id":145,"line":3,"column":360,"start":609,"end":614,"length":6,"parent_index":134},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":144,"is_pure":false},"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"}}},{"id":146,"node_type":81,"src":{"id":147,"line":3,"column":368,"start":617,"end":647,"length":31,"parent_index":130},"expression":{"id":148,"node_type":27,"src":{"id":149,"line":3,"column":368,"start":617,"end":646,"length":30,"parent_index":130},"operator":13,"left_expression":{"id":150,"node_type":22,"src":{"id":151,"line":3,"column":368,"start":617,"end":636,"length":20,"parent_index":148},"index_expression":{"id":152,"node_type":16,"src":{"id":153,"line":3,"column":368,"start":617,"end":625,"length":9,"parent_index":150},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":78,"is_pure":false},"base_expression":{"id":154,"node_type":16,"src":{"id":155,"line":3,"column":378,"start":627,"end":635,"length":9,"parent_index":150},"name":"recipient","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":154,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"}},"right_expression":{"id":156,"node_type":16,"src":{"id":157,"line":3,"column":392,"start":641,"end":646,"length":6,"parent_index":148},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":156,"is_pure":false},"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"}}},{"id":158,"node_type":47,"src":{"id":159,"line":3,"column":400,"start":649,"end":660,"length":12,"parent_index":112},"function_return_parameters":112,"expression":{"id":160,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":161,"line":3,"column":407,"start":656,"end":659,"length":4,"parent_index":130},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":114,"node_type":43,"src":{"id":115,"line":3,"column":276,"start":525,"end":557,"length":33,"parent_index":112},"parameters":[{"id":116,"node_type":44,"src":{"id":117,"line":3,"column":276,"start":525,"end":541,"length":17,"parent_index":114},"scope":112,"name":"recipient","type_name":{"id":118,"node_type":30,"src":{"id":119,"line":3,"column":276,"start":525,"end":531,"length":7,"parent_index":116},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":120,"node_type":44,"src":{"id":121,"line":3,"column":295,"start":544,"end":557,"length":14,"parent_index":114},"scope":112,"name":"amount","type_name":{"id":122,"node_type":30,"src":{"id":123,"line":3,"column":295,"start":544,"end":550,"length":7,"parent_index":120},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":124,"node_type":43,"src":{"id":125,"line":3,"column":327,"start":576,"end":579,"length":4,"parent_index":112},"parameters":[{"id":126,"node_type":44,"src":{"id":127,"line":3,"column":327,"start":576,"end":579,"length":4,"parent_index":124},"scope":112,"name":"","type_name":{"id":128,"node_type":30,"src":{"id":129,"line":3,"column":327,"start":576,"end":579,"length":4,"parent_index":126},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":67,"type_description":{"type_identifier":"t_function_$_t_address$$_t_uint256","type_string":"function(address,uint256)"}}],"linearized_base_contracts":[2,67,66],"base_contracts":[{"id":68,"node_type":62,"src":{"id":69,"line":3,"column":77,"start":326,"end":331,"length":6,"parent_index":67},"base_name":{"id":70,"node_type":52,"src":{"id":71,"line":3,"column":77,"start":326,"end":331,"length":6,"parent_index":67},"name":"IERC20","referenced_declaration":2}}],"contract_dependencies":[2,66]}],"src":{"id":61,"line":3,"column":47,"start":296,"end":664,"length":369,"parent_index":1}}],"comments":[]} \ No newline at end of file +{"id":1,"node_type":80,"entry_source_unit":60,"root":[{"id":2,"base_contracts":[],"license":"unknown","exported_symbols":[{"id":2,"name":"IERC20","absolute_path":"IERC20.sol"}],"absolute_path":"IERC20.sol","name":"IERC20","node_type":1,"nodes":[{"id":4,"node_type":10,"src":{"id":5,"line":1,"column":0,"start":0,"end":22,"length":23,"parent_index":2},"literals":["pragma","solidity","^","0",".","5",".","0",";"],"text":"pragma solidity ^0.5.0;"},{"id":7,"name":"IERC20","node_type":35,"src":{"id":0,"line":1,"column":24,"start":24,"end":246,"length":223,"parent_index":2},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":9,"name":"totalSupply","node_type":42,"kind":41,"src":{"id":10,"line":1,"column":43,"start":43,"end":97,"length":55,"parent_index":7},"body":{"id":23,"node_type":46,"kind":0,"src":{"id":10,"line":1,"column":43,"start":43,"end":97,"length":55,"parent_index":9},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":11,"node_type":43,"src":{"id":12,"line":1,"column":89,"start":89,"end":95,"length":7,"parent_index":9},"parameters":[{"id":13,"node_type":44,"src":{"id":14,"line":1,"column":89,"start":89,"end":95,"length":7,"parent_index":11},"scope":9,"name":"","type_name":{"id":15,"node_type":30,"src":{"id":16,"line":1,"column":89,"start":89,"end":95,"length":7,"parent_index":13},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":17,"node_type":43,"src":{"id":18,"line":1,"column":89,"start":89,"end":95,"length":7,"parent_index":9},"parameters":[{"id":19,"node_type":44,"src":{"id":20,"line":1,"column":89,"start":89,"end":95,"length":7,"parent_index":17},"scope":9,"name":"","type_name":{"id":21,"node_type":30,"src":{"id":22,"line":1,"column":89,"start":89,"end":95,"length":7,"parent_index":19},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":7,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},{"id":25,"name":"balanceOf","node_type":42,"kind":41,"src":{"id":26,"line":1,"column":99,"start":99,"end":166,"length":68,"parent_index":7},"body":{"id":39,"node_type":46,"kind":0,"src":{"id":26,"line":1,"column":99,"start":99,"end":166,"length":68,"parent_index":25},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":27,"node_type":43,"src":{"id":28,"line":1,"column":118,"start":118,"end":132,"length":15,"parent_index":25},"parameters":[{"id":29,"node_type":44,"src":{"id":30,"line":1,"column":118,"start":118,"end":132,"length":15,"parent_index":27},"scope":25,"name":"account","type_name":{"id":31,"node_type":30,"src":{"id":32,"line":1,"column":118,"start":118,"end":124,"length":7,"parent_index":29},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":33,"node_type":43,"src":{"id":34,"line":1,"column":158,"start":158,"end":164,"length":7,"parent_index":25},"parameters":[{"id":35,"node_type":44,"src":{"id":36,"line":1,"column":158,"start":158,"end":164,"length":7,"parent_index":33},"scope":25,"name":"","type_name":{"id":37,"node_type":30,"src":{"id":38,"line":1,"column":158,"start":158,"end":164,"length":7,"parent_index":35},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":7,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":41,"name":"transfer","node_type":42,"kind":41,"src":{"id":42,"line":1,"column":168,"start":168,"end":244,"length":77,"parent_index":7},"body":{"id":59,"node_type":46,"kind":0,"src":{"id":42,"line":1,"column":168,"start":168,"end":244,"length":77,"parent_index":41},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":43,"node_type":43,"src":{"id":44,"line":1,"column":186,"start":186,"end":218,"length":33,"parent_index":41},"parameters":[{"id":45,"node_type":44,"src":{"id":46,"line":1,"column":186,"start":186,"end":202,"length":17,"parent_index":43},"scope":41,"name":"recipient","type_name":{"id":47,"node_type":30,"src":{"id":48,"line":1,"column":186,"start":186,"end":192,"length":7,"parent_index":45},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":49,"node_type":44,"src":{"id":50,"line":1,"column":205,"start":205,"end":218,"length":14,"parent_index":43},"scope":41,"name":"amount","type_name":{"id":51,"node_type":30,"src":{"id":52,"line":1,"column":205,"start":205,"end":211,"length":7,"parent_index":49},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":53,"node_type":43,"src":{"id":54,"line":1,"column":239,"start":239,"end":242,"length":4,"parent_index":41},"parameters":[{"id":55,"node_type":44,"src":{"id":56,"line":1,"column":239,"start":239,"end":242,"length":4,"parent_index":53},"scope":41,"name":"","type_name":{"id":57,"node_type":30,"src":{"id":58,"line":1,"column":239,"start":239,"end":242,"length":4,"parent_index":55},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":7,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}}],"linearized_base_contracts":[7],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":3,"line":1,"column":24,"start":24,"end":246,"length":223,"parent_index":1}},{"id":60,"base_contracts":[{"id":68,"node_type":62,"src":{"id":69,"line":3,"column":77,"start":326,"end":331,"length":6,"parent_index":67},"base_name":{"id":70,"node_type":52,"src":{"id":71,"line":3,"column":77,"start":326,"end":331,"length":6,"parent_index":67},"name":"IERC20","referenced_declaration":2}}],"license":"unknown","exported_symbols":[{"id":60,"name":"InterfaceContract","absolute_path":"InterfaceContract.sol"},{"id":0,"name":"IERC20","absolute_path":"IERC20.sol'"}],"absolute_path":"InterfaceContract.sol","name":"InterfaceContract","node_type":1,"nodes":[{"id":64,"node_type":10,"src":{"id":65,"line":3,"column":0,"start":249,"end":271,"length":23,"parent_index":60},"literals":["pragma","solidity","^","0",".","5",".","0",";"],"text":"pragma solidity ^0.5.0;"},{"id":66,"node_type":29,"src":{"id":0,"line":3,"column":24,"start":273,"end":294,"length":22,"parent_index":60},"absolute_path":"IERC20.sol'","file":"'./IERC20.sol'","scope":60,"unit_alias":"","source_unit":0},{"id":67,"name":"InterfaceContract","node_type":35,"src":{"id":0,"line":3,"column":47,"start":296,"end":664,"length":369,"parent_index":60},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":73,"name":"totalSupply","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":74,"line":3,"column":86,"start":335,"end":361,"length":27,"parent_index":67},"scope":67,"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"visibility":3,"storage_location":1,"mutability":1,"type_name":{"id":75,"node_type":30,"src":{"id":76,"line":3,"column":86,"start":335,"end":341,"length":7,"parent_index":73},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0}},{"id":78,"name":"_balances","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":79,"line":3,"column":114,"start":363,"end":408,"length":46,"parent_index":67},"scope":67,"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":80,"node_type":0,"src":{"id":81,"line":3,"column":114,"start":363,"end":389,"length":27,"parent_index":78},"type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"key_type":{"id":82,"node_type":30,"src":{"id":83,"line":3,"column":122,"start":371,"end":377,"length":7,"parent_index":80},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0},"value_type":{"id":84,"node_type":30,"src":{"id":85,"line":3,"column":133,"start":382,"end":388,"length":7,"parent_index":80},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"referenced_declaration":0}},{"id":87,"name":"balanceOf","node_type":42,"kind":41,"src":{"id":88,"line":3,"column":161,"start":410,"end":505,"length":96,"parent_index":67},"body":{"id":101,"node_type":46,"kind":0,"src":{"id":102,"line":3,"column":227,"start":476,"end":505,"length":30,"parent_index":87},"implemented":true,"statements":[{"id":103,"node_type":47,"src":{"id":104,"line":3,"column":229,"start":478,"end":503,"length":26,"parent_index":87},"function_return_parameters":87,"expression":{"id":105,"node_type":22,"src":{"id":106,"line":3,"column":236,"start":485,"end":502,"length":18,"parent_index":101},"index_expression":{"id":107,"node_type":16,"src":{"id":108,"line":3,"column":236,"start":485,"end":493,"length":9,"parent_index":105},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":78,"is_pure":false},"base_expression":{"id":109,"node_type":16,"src":{"id":110,"line":3,"column":246,"start":495,"end":501,"length":7,"parent_index":105},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":109,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":89,"node_type":43,"src":{"id":90,"line":3,"column":180,"start":429,"end":443,"length":15,"parent_index":87},"parameters":[{"id":91,"node_type":44,"src":{"id":92,"line":3,"column":180,"start":429,"end":443,"length":15,"parent_index":89},"scope":87,"name":"account","type_name":{"id":93,"node_type":30,"src":{"id":94,"line":3,"column":180,"start":429,"end":435,"length":7,"parent_index":91},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":95,"node_type":43,"src":{"id":96,"line":3,"column":218,"start":467,"end":473,"length":7,"parent_index":87},"parameters":[{"id":97,"node_type":44,"src":{"id":98,"line":3,"column":218,"start":467,"end":473,"length":7,"parent_index":95},"scope":87,"name":"","type_name":{"id":99,"node_type":30,"src":{"id":100,"line":3,"column":218,"start":467,"end":473,"length":7,"parent_index":97},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":67,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":112,"name":"transfer","node_type":42,"kind":41,"src":{"id":113,"line":3,"column":258,"start":507,"end":662,"length":156,"parent_index":67},"body":{"id":130,"node_type":46,"kind":0,"src":{"id":131,"line":3,"column":333,"start":582,"end":662,"length":81,"parent_index":112},"implemented":true,"statements":[{"id":132,"node_type":81,"src":{"id":133,"line":3,"column":335,"start":584,"end":615,"length":32,"parent_index":130},"expression":{"id":134,"node_type":27,"src":{"id":135,"line":3,"column":335,"start":584,"end":614,"length":31,"parent_index":130},"operator":14,"left_expression":{"id":136,"node_type":22,"src":{"id":137,"line":3,"column":335,"start":584,"end":604,"length":21,"parent_index":134},"index_expression":{"id":138,"node_type":16,"src":{"id":139,"line":3,"column":335,"start":584,"end":592,"length":9,"parent_index":136},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":78,"is_pure":false},"base_expression":{"id":140,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":141,"line":3,"column":345,"start":594,"end":603,"length":10,"parent_index":136},"expression":{"id":142,"node_type":16,"src":{"id":143,"line":3,"column":345,"start":594,"end":596,"length":3,"parent_index":140},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}},"right_expression":{"id":144,"node_type":16,"src":{"id":145,"line":3,"column":360,"start":609,"end":614,"length":6,"parent_index":134},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":144,"is_pure":false},"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}},"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}},{"id":146,"node_type":81,"src":{"id":147,"line":3,"column":368,"start":617,"end":647,"length":31,"parent_index":130},"expression":{"id":148,"node_type":27,"src":{"id":149,"line":3,"column":368,"start":617,"end":646,"length":30,"parent_index":130},"operator":13,"left_expression":{"id":150,"node_type":22,"src":{"id":151,"line":3,"column":368,"start":617,"end":636,"length":20,"parent_index":148},"index_expression":{"id":152,"node_type":16,"src":{"id":153,"line":3,"column":368,"start":617,"end":625,"length":9,"parent_index":150},"name":"_balances","type_description":{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},"overloaded_declarations":[],"referenced_declaration":78,"is_pure":false},"base_expression":{"id":154,"node_type":16,"src":{"id":155,"line":3,"column":378,"start":627,"end":635,"length":9,"parent_index":150},"name":"recipient","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":154,"is_pure":false},"type_descriptions":[{"type_identifier":"t_mapping_$t_address_$t_uint256$","type_string":"mapping(address=\u003euint256)"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}},"right_expression":{"id":156,"node_type":16,"src":{"id":157,"line":3,"column":392,"start":641,"end":646,"length":6,"parent_index":148},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":156,"is_pure":false},"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}},"type_description":{"type_identifier":"t_[_[$_t_mapping_$t_address_$t_uint256$]$_t_address]$","type_string":"index[mapping(address=\u003euint256):address]"}},{"id":158,"node_type":47,"src":{"id":159,"line":3,"column":400,"start":649,"end":660,"length":12,"parent_index":112},"function_return_parameters":112,"expression":{"id":160,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":161,"line":3,"column":407,"start":656,"end":659,"length":4,"parent_index":130},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":114,"node_type":43,"src":{"id":115,"line":3,"column":276,"start":525,"end":557,"length":33,"parent_index":112},"parameters":[{"id":116,"node_type":44,"src":{"id":117,"line":3,"column":276,"start":525,"end":541,"length":17,"parent_index":114},"scope":112,"name":"recipient","type_name":{"id":118,"node_type":30,"src":{"id":119,"line":3,"column":276,"start":525,"end":531,"length":7,"parent_index":116},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":120,"node_type":44,"src":{"id":121,"line":3,"column":295,"start":544,"end":557,"length":14,"parent_index":114},"scope":112,"name":"amount","type_name":{"id":122,"node_type":30,"src":{"id":123,"line":3,"column":295,"start":544,"end":550,"length":7,"parent_index":120},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":124,"node_type":43,"src":{"id":125,"line":3,"column":327,"start":576,"end":579,"length":4,"parent_index":112},"parameters":[{"id":126,"node_type":44,"src":{"id":127,"line":3,"column":327,"start":576,"end":579,"length":4,"parent_index":124},"scope":112,"name":"","type_name":{"id":128,"node_type":30,"src":{"id":129,"line":3,"column":327,"start":576,"end":579,"length":4,"parent_index":126},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":67,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}}],"linearized_base_contracts":[2,67,66],"base_contracts":[{"id":68,"node_type":62,"src":{"id":69,"line":3,"column":77,"start":326,"end":331,"length":6,"parent_index":67},"base_name":{"id":70,"node_type":52,"src":{"id":71,"line":3,"column":77,"start":326,"end":331,"length":6,"parent_index":67},"name":"IERC20","referenced_declaration":2}}],"contract_dependencies":[2,66]}],"src":{"id":61,"line":3,"column":47,"start":296,"end":664,"length":369,"parent_index":1}}],"comments":[]} \ No newline at end of file diff --git a/data/tests/ast/resolver/LibraryContract.json b/data/tests/ast/resolver/LibraryContract.json index e43b9a16..0c30e887 100644 --- a/data/tests/ast/resolver/LibraryContract.json +++ b/data/tests/ast/resolver/LibraryContract.json @@ -1 +1 @@ -{"id":1,"node_type":80,"entry_source_unit":56,"root":[{"id":2,"base_contracts":[],"license":"unknown","exported_symbols":[{"id":2,"name":"SafeMath","absolute_path":"SafeMath.sol"}],"absolute_path":"SafeMath.sol","name":"SafeMath","node_type":1,"nodes":[{"id":4,"node_type":10,"src":{"id":5,"line":1,"column":0,"start":0,"end":22,"length":23,"parent_index":2},"literals":["pragma","solidity","^","0",".","5",".","0",";"],"text":"pragma solidity ^0.5.0;"},{"id":6,"name":"SafeMath","node_type":35,"src":{"id":0,"line":1,"column":24,"start":24,"end":191,"length":168,"parent_index":2},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":8,"name":"add","node_type":42,"kind":41,"src":{"id":9,"line":1,"column":43,"start":43,"end":189,"length":147,"parent_index":6},"body":{"id":26,"node_type":46,"kind":0,"src":{"id":27,"line":1,"column":110,"start":110,"end":189,"length":80,"parent_index":8},"implemented":true,"statements":[{"id":28,"node_type":44,"src":{"id":29,"line":1,"column":112,"start":112,"end":129,"length":18,"parent_index":26},"assignments":[30],"declarations":[{"is_constant":false,"id":30,"state_mutability":1,"name":"c","node_type":44,"scope":26,"src":{"id":31,"line":1,"column":112,"start":112,"end":120,"length":9,"parent_index":28},"is_state_variable":false,"storage_location":1,"type_name":{"id":32,"node_type":30,"src":{"id":33,"line":1,"column":112,"start":112,"end":118,"length":7,"parent_index":30},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":34,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":35,"line":1,"column":124,"start":124,"end":128,"length":5,"parent_index":28},"operator":1,"left_expression":{"id":36,"node_type":16,"src":{"id":37,"line":1,"column":124,"start":124,"end":124,"length":1,"parent_index":34},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":36,"is_pure":false},"right_expression":{"id":38,"node_type":16,"src":{"id":39,"line":1,"column":128,"start":128,"end":128,"length":1,"parent_index":34},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":38,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":40,"node_type":24,"kind":24,"src":{"id":41,"line":1,"column":131,"start":131,"end":176,"length":46,"parent_index":26},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string 'SafeMath: addition overflow'"}],"arguments":[{"id":42,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":43,"line":1,"column":139,"start":139,"end":144,"length":6,"parent_index":40},"operator":8,"left_expression":{"id":44,"node_type":16,"src":{"id":45,"line":1,"column":139,"start":139,"end":139,"length":1,"parent_index":42},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":28,"is_pure":false},"right_expression":{"id":46,"node_type":16,"src":{"id":47,"line":1,"column":144,"start":144,"end":144,"length":1,"parent_index":42},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":46,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":48,"node_type":17,"kind":50,"value":"'SafeMath: addition overflow'","hex_value":"27536166654d6174683a206164646974696f6e206f766572666c6f7727","src":{"id":49,"line":1,"column":147,"start":147,"end":175,"length":29,"parent_index":40},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string 'SafeMath: addition overflow'"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":50,"node_type":16,"src":{"id":51,"line":1,"column":131,"start":131,"end":137,"length":7,"parent_index":40},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string 'SafeMath: addition overflow')"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string 'SafeMath: addition overflow'"}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":52,"node_type":47,"src":{"id":53,"line":1,"column":179,"start":179,"end":187,"length":9,"parent_index":8},"function_return_parameters":8,"expression":{"id":54,"node_type":16,"src":{"id":55,"line":1,"column":186,"start":186,"end":186,"length":1,"parent_index":26},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":28,"is_pure":false}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":10,"node_type":43,"src":{"id":11,"line":1,"column":56,"start":56,"end":75,"length":20,"parent_index":8},"parameters":[{"id":12,"node_type":44,"src":{"id":13,"line":1,"column":56,"start":56,"end":64,"length":9,"parent_index":10},"scope":8,"name":"a","type_name":{"id":14,"node_type":30,"src":{"id":15,"line":1,"column":56,"start":56,"end":62,"length":7,"parent_index":12},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":16,"node_type":44,"src":{"id":17,"line":1,"column":67,"start":67,"end":75,"length":9,"parent_index":10},"scope":8,"name":"b","type_name":{"id":18,"node_type":30,"src":{"id":19,"line":1,"column":67,"start":67,"end":73,"length":7,"parent_index":16},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":20,"node_type":43,"src":{"id":21,"line":1,"column":101,"start":101,"end":107,"length":7,"parent_index":8},"parameters":[{"id":22,"node_type":44,"src":{"id":23,"line":1,"column":101,"start":101,"end":107,"length":7,"parent_index":20},"scope":8,"name":"","type_name":{"id":24,"node_type":30,"src":{"id":25,"line":1,"column":101,"start":101,"end":107,"length":7,"parent_index":22},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":6,"type_description":{"type_identifier":"t_function_$_t_uint256$$_t_uint256","type_string":"function(uint256,uint256)"}}],"linearized_base_contracts":[6],"base_contracts":[],"contract_dependencies":[],"scope":2}],"src":{"id":3,"line":1,"column":24,"start":24,"end":191,"length":168,"parent_index":1}},{"id":56,"base_contracts":[],"license":"unknown","exported_symbols":[{"id":56,"name":"LibraryContract","absolute_path":"LibraryContract.sol"},{"id":0,"name":"SafeMath","absolute_path":"SafeMath.sol'"}],"absolute_path":"LibraryContract.sol","name":"LibraryContract","node_type":1,"nodes":[{"id":60,"node_type":10,"src":{"id":61,"line":3,"column":0,"start":194,"end":216,"length":23,"parent_index":56},"literals":["pragma","solidity","^","0",".","5",".","0",";"],"text":"pragma solidity ^0.5.0;"},{"id":62,"node_type":29,"src":{"id":0,"line":3,"column":24,"start":218,"end":241,"length":24,"parent_index":56},"absolute_path":"SafeMath.sol'","file":"'./SafeMath.sol'","scope":56,"unit_alias":"","source_unit":0},{"id":63,"name":"LibraryContract","node_type":35,"src":{"id":0,"line":3,"column":49,"start":243,"end":397,"length":155,"parent_index":56},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":65,"node_type":51,"src":{"id":66,"line":3,"column":0,"start":270,"end":296,"length":27,"parent_index":63},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"type_name":{"id":67,"node_type":30,"src":{"id":68,"line":3,"column":95,"start":289,"end":295,"length":7,"parent_index":65},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"library_name":{"id":69,"node_type":52,"src":{"id":70,"line":3,"column":0,"start":276,"end":283,"length":8,"parent_index":65},"name":"SafeMath","referenced_declaration":2}},{"id":72,"name":"value","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":73,"line":3,"column":104,"start":298,"end":318,"length":21,"parent_index":63},"scope":63,"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"visibility":3,"storage_location":1,"mutability":1,"type_name":{"id":74,"node_type":30,"src":{"id":75,"line":3,"column":104,"start":298,"end":304,"length":7,"parent_index":72},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0}},{"id":77,"name":"increaseValue","node_type":42,"kind":41,"src":{"id":78,"line":3,"column":126,"start":320,"end":395,"length":76,"parent_index":63},"body":{"id":86,"node_type":46,"kind":0,"src":{"id":87,"line":3,"column":172,"start":366,"end":395,"length":30,"parent_index":77},"implemented":true,"statements":[{"id":88,"node_type":81,"src":{"id":89,"line":3,"column":174,"start":368,"end":393,"length":26,"parent_index":86},"expression":{"id":90,"node_type":27,"src":{"id":91,"line":3,"column":174,"start":368,"end":392,"length":25,"parent_index":86},"operator":11,"left_expression":{"id":92,"node_type":16,"src":{"id":93,"line":3,"column":174,"start":368,"end":372,"length":5,"parent_index":90},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":72,"is_pure":false},"right_expression":{"id":94,"node_type":24,"kind":24,"src":{"id":95,"line":3,"column":182,"start":376,"end":392,"length":17,"parent_index":90},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":96,"node_type":16,"src":{"id":97,"line":3,"column":192,"start":386,"end":391,"length":6,"parent_index":94},"name":"_value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":96,"is_pure":false}],"expression":{"id":98,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":99,"line":3,"column":182,"start":376,"end":384,"length":9,"parent_index":94},"expression":{"id":100,"node_type":16,"src":{"id":101,"line":3,"column":182,"start":376,"end":380,"length":5,"parent_index":98},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":72,"is_pure":false},"member_name":"add","argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":79,"node_type":43,"src":{"id":80,"line":3,"column":149,"start":343,"end":356,"length":14,"parent_index":77},"parameters":[{"id":81,"node_type":44,"src":{"id":82,"line":3,"column":149,"start":343,"end":356,"length":14,"parent_index":79},"scope":77,"name":"_value","type_name":{"id":83,"node_type":30,"src":{"id":84,"line":3,"column":149,"start":343,"end":349,"length":7,"parent_index":81},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":85,"node_type":43,"src":{"id":78,"line":3,"column":126,"start":320,"end":395,"length":76,"parent_index":77},"parameters":[],"parameter_types":[]},"scope":63,"type_description":{"type_identifier":"t_function_$_t_uint256","type_string":"function(uint256)"}}],"linearized_base_contracts":[63,62],"base_contracts":[],"contract_dependencies":[62]}],"src":{"id":57,"line":3,"column":49,"start":243,"end":397,"length":155,"parent_index":1}}],"comments":[]} \ No newline at end of file +{"id":1,"node_type":80,"entry_source_unit":56,"root":[{"id":2,"base_contracts":[],"license":"unknown","exported_symbols":[{"id":2,"name":"SafeMath","absolute_path":"SafeMath.sol"}],"absolute_path":"SafeMath.sol","name":"SafeMath","node_type":1,"nodes":[{"id":4,"node_type":10,"src":{"id":5,"line":1,"column":0,"start":0,"end":22,"length":23,"parent_index":2},"literals":["pragma","solidity","^","0",".","5",".","0",";"],"text":"pragma solidity ^0.5.0;"},{"id":6,"name":"SafeMath","node_type":35,"src":{"id":0,"line":1,"column":24,"start":24,"end":191,"length":168,"parent_index":2},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":8,"name":"add","node_type":42,"kind":41,"src":{"id":9,"line":1,"column":43,"start":43,"end":189,"length":147,"parent_index":6},"body":{"id":26,"node_type":46,"kind":0,"src":{"id":27,"line":1,"column":110,"start":110,"end":189,"length":80,"parent_index":8},"implemented":true,"statements":[{"id":28,"node_type":44,"src":{"id":29,"line":1,"column":112,"start":112,"end":129,"length":18,"parent_index":26},"assignments":[30],"declarations":[{"is_constant":false,"id":30,"state_mutability":1,"name":"c","node_type":44,"scope":26,"src":{"id":31,"line":1,"column":112,"start":112,"end":120,"length":9,"parent_index":28},"is_state_variable":false,"storage_location":1,"type_name":{"id":32,"node_type":30,"src":{"id":33,"line":1,"column":112,"start":112,"end":118,"length":7,"parent_index":30},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":34,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":35,"line":1,"column":124,"start":124,"end":128,"length":5,"parent_index":28},"operator":1,"left_expression":{"id":36,"node_type":16,"src":{"id":37,"line":1,"column":124,"start":124,"end":124,"length":1,"parent_index":34},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":36,"is_pure":false},"right_expression":{"id":38,"node_type":16,"src":{"id":39,"line":1,"column":128,"start":128,"end":128,"length":1,"parent_index":34},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":38,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":40,"node_type":24,"kind":24,"src":{"id":41,"line":1,"column":131,"start":131,"end":176,"length":46,"parent_index":26},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string 'SafeMath: addition overflow'"}],"arguments":[{"id":44,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":45,"line":1,"column":139,"start":139,"end":144,"length":6,"parent_index":40},"operator":8,"left_expression":{"id":46,"node_type":16,"src":{"id":47,"line":1,"column":139,"start":139,"end":139,"length":1,"parent_index":44},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":28,"is_pure":false},"right_expression":{"id":48,"node_type":16,"src":{"id":49,"line":1,"column":144,"start":144,"end":144,"length":1,"parent_index":44},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":48,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":50,"node_type":17,"kind":50,"value":"'SafeMath: addition overflow'","hex_value":"27536166654d6174683a206164646974696f6e206f766572666c6f7727","src":{"id":51,"line":1,"column":147,"start":147,"end":175,"length":29,"parent_index":40},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string 'SafeMath: addition overflow'"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":42,"node_type":16,"src":{"id":43,"line":1,"column":131,"start":131,"end":137,"length":7,"parent_index":40},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":52,"node_type":47,"src":{"id":53,"line":1,"column":179,"start":179,"end":187,"length":9,"parent_index":8},"function_return_parameters":8,"expression":{"id":54,"node_type":16,"src":{"id":55,"line":1,"column":186,"start":186,"end":186,"length":1,"parent_index":26},"name":"c","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":28,"is_pure":false}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":10,"node_type":43,"src":{"id":11,"line":1,"column":56,"start":56,"end":75,"length":20,"parent_index":8},"parameters":[{"id":12,"node_type":44,"src":{"id":13,"line":1,"column":56,"start":56,"end":64,"length":9,"parent_index":10},"scope":8,"name":"a","type_name":{"id":14,"node_type":30,"src":{"id":15,"line":1,"column":56,"start":56,"end":62,"length":7,"parent_index":12},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":16,"node_type":44,"src":{"id":17,"line":1,"column":67,"start":67,"end":75,"length":9,"parent_index":10},"scope":8,"name":"b","type_name":{"id":18,"node_type":30,"src":{"id":19,"line":1,"column":67,"start":67,"end":73,"length":7,"parent_index":16},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":20,"node_type":43,"src":{"id":21,"line":1,"column":101,"start":101,"end":107,"length":7,"parent_index":8},"parameters":[{"id":22,"node_type":44,"src":{"id":23,"line":1,"column":101,"start":101,"end":107,"length":7,"parent_index":20},"scope":8,"name":"","type_name":{"id":24,"node_type":30,"src":{"id":25,"line":1,"column":101,"start":101,"end":107,"length":7,"parent_index":22},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":6,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}}],"linearized_base_contracts":[6],"base_contracts":[],"contract_dependencies":[],"scope":2}],"src":{"id":3,"line":1,"column":24,"start":24,"end":191,"length":168,"parent_index":1}},{"id":56,"base_contracts":[],"license":"unknown","exported_symbols":[{"id":56,"name":"LibraryContract","absolute_path":"LibraryContract.sol"},{"id":0,"name":"SafeMath","absolute_path":"SafeMath.sol'"}],"absolute_path":"LibraryContract.sol","name":"LibraryContract","node_type":1,"nodes":[{"id":60,"node_type":10,"src":{"id":61,"line":3,"column":0,"start":194,"end":216,"length":23,"parent_index":56},"literals":["pragma","solidity","^","0",".","5",".","0",";"],"text":"pragma solidity ^0.5.0;"},{"id":62,"node_type":29,"src":{"id":0,"line":3,"column":24,"start":218,"end":241,"length":24,"parent_index":56},"absolute_path":"SafeMath.sol'","file":"'./SafeMath.sol'","scope":56,"unit_alias":"","source_unit":0},{"id":63,"name":"LibraryContract","node_type":35,"src":{"id":0,"line":3,"column":49,"start":243,"end":397,"length":155,"parent_index":56},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":65,"node_type":51,"src":{"id":66,"line":3,"column":0,"start":270,"end":296,"length":27,"parent_index":63},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"type_name":{"id":67,"node_type":30,"src":{"id":68,"line":3,"column":95,"start":289,"end":295,"length":7,"parent_index":65},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"library_name":{"id":69,"node_type":52,"src":{"id":70,"line":3,"column":0,"start":276,"end":283,"length":8,"parent_index":65},"name":"SafeMath","referenced_declaration":2}},{"id":72,"name":"value","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":73,"line":3,"column":104,"start":298,"end":318,"length":21,"parent_index":63},"scope":63,"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"visibility":3,"storage_location":1,"mutability":1,"type_name":{"id":74,"node_type":30,"src":{"id":75,"line":3,"column":104,"start":298,"end":304,"length":7,"parent_index":72},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0}},{"id":77,"name":"increaseValue","node_type":42,"kind":41,"src":{"id":78,"line":3,"column":126,"start":320,"end":395,"length":76,"parent_index":63},"body":{"id":86,"node_type":46,"kind":0,"src":{"id":87,"line":3,"column":172,"start":366,"end":395,"length":30,"parent_index":77},"implemented":true,"statements":[{"id":88,"node_type":81,"src":{"id":89,"line":3,"column":174,"start":368,"end":393,"length":26,"parent_index":86},"expression":{"id":90,"node_type":27,"src":{"id":91,"line":3,"column":174,"start":368,"end":392,"length":25,"parent_index":86},"operator":11,"left_expression":{"id":92,"node_type":16,"src":{"id":93,"line":3,"column":174,"start":368,"end":372,"length":5,"parent_index":90},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":72,"is_pure":false},"right_expression":{"id":94,"node_type":24,"kind":24,"src":{"id":95,"line":3,"column":182,"start":376,"end":392,"length":17,"parent_index":90},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":100,"node_type":16,"src":{"id":101,"line":3,"column":192,"start":386,"end":391,"length":6,"parent_index":94},"name":"_value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":100,"is_pure":false}],"expression":{"id":96,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":97,"line":3,"column":182,"start":376,"end":384,"length":9,"parent_index":94},"expression":{"id":98,"node_type":16,"src":{"id":99,"line":3,"column":182,"start":376,"end":380,"length":5,"parent_index":96},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":72,"is_pure":false},"member_name":"add","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":79,"node_type":43,"src":{"id":80,"line":3,"column":149,"start":343,"end":356,"length":14,"parent_index":77},"parameters":[{"id":81,"node_type":44,"src":{"id":82,"line":3,"column":149,"start":343,"end":356,"length":14,"parent_index":79},"scope":77,"name":"_value","type_name":{"id":83,"node_type":30,"src":{"id":84,"line":3,"column":149,"start":343,"end":349,"length":7,"parent_index":81},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":85,"node_type":43,"src":{"id":78,"line":3,"column":126,"start":320,"end":395,"length":76,"parent_index":77},"parameters":[],"parameter_types":[]},"scope":63,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}}],"linearized_base_contracts":[63,62],"base_contracts":[],"contract_dependencies":[62]}],"src":{"id":57,"line":3,"column":49,"start":243,"end":397,"length":155,"parent_index":1}}],"comments":[]} \ No newline at end of file diff --git a/data/tests/ast/resolver/TestContract.json b/data/tests/ast/resolver/TestContract.json index 3b3859e7..b71577e4 100644 --- a/data/tests/ast/resolver/TestContract.json +++ b/data/tests/ast/resolver/TestContract.json @@ -1 +1 @@ -{"id":1,"node_type":80,"entry_source_unit":2,"root":[{"id":2,"base_contracts":[],"license":"unknown","exported_symbols":[{"id":2,"name":"TestContract","absolute_path":"TestContract.sol"}],"absolute_path":"TestContract.sol","name":"TestContract","node_type":1,"nodes":[{"id":4,"node_type":10,"src":{"id":5,"line":1,"column":0,"start":0,"end":22,"length":23,"parent_index":2},"literals":["pragma","solidity","^","0",".","5",".","0",";"],"text":"pragma solidity ^0.5.0;"},{"id":6,"name":"TestContract","node_type":35,"src":{"id":0,"line":1,"column":24,"start":24,"end":131,"length":108,"parent_index":2},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":8,"name":"value","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":9,"line":1,"column":48,"start":48,"end":68,"length":21,"parent_index":6},"scope":6,"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"visibility":3,"storage_location":1,"mutability":1,"type_name":{"id":10,"node_type":30,"src":{"id":11,"line":1,"column":48,"start":48,"end":54,"length":7,"parent_index":8},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0}},{"id":13,"name":"setValue","node_type":42,"kind":41,"src":{"id":14,"line":1,"column":70,"start":70,"end":129,"length":60,"parent_index":6},"body":{"id":22,"node_type":46,"kind":0,"src":{"id":23,"line":1,"column":111,"start":111,"end":129,"length":19,"parent_index":13},"implemented":true,"statements":[{"id":24,"node_type":81,"src":{"id":25,"line":1,"column":113,"start":113,"end":127,"length":15,"parent_index":22},"expression":{"id":26,"node_type":27,"src":{"id":27,"line":1,"column":113,"start":113,"end":126,"length":14,"parent_index":22},"operator":11,"left_expression":{"id":28,"node_type":16,"src":{"id":29,"line":1,"column":113,"start":113,"end":117,"length":5,"parent_index":26},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":8,"is_pure":false},"right_expression":{"id":30,"node_type":16,"src":{"id":31,"line":1,"column":121,"start":121,"end":126,"length":6,"parent_index":26},"name":"_value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":30,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":15,"node_type":43,"src":{"id":16,"line":1,"column":88,"start":88,"end":101,"length":14,"parent_index":13},"parameters":[{"id":17,"node_type":44,"src":{"id":18,"line":1,"column":88,"start":88,"end":101,"length":14,"parent_index":15},"scope":13,"name":"_value","type_name":{"id":19,"node_type":30,"src":{"id":20,"line":1,"column":88,"start":88,"end":94,"length":7,"parent_index":17},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":21,"node_type":43,"src":{"id":14,"line":1,"column":70,"start":70,"end":129,"length":60,"parent_index":13},"parameters":[],"parameter_types":[]},"scope":6,"type_description":{"type_identifier":"t_function_$_t_uint256","type_string":"function(uint256)"}}],"linearized_base_contracts":[6],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":3,"line":1,"column":24,"start":24,"end":131,"length":108,"parent_index":1}}],"comments":[]} \ No newline at end of file +{"id":1,"node_type":80,"entry_source_unit":2,"root":[{"id":2,"base_contracts":[],"license":"unknown","exported_symbols":[{"id":2,"name":"TestContract","absolute_path":"TestContract.sol"}],"absolute_path":"TestContract.sol","name":"TestContract","node_type":1,"nodes":[{"id":4,"node_type":10,"src":{"id":5,"line":1,"column":0,"start":0,"end":22,"length":23,"parent_index":2},"literals":["pragma","solidity","^","0",".","5",".","0",";"],"text":"pragma solidity ^0.5.0;"},{"id":6,"name":"TestContract","node_type":35,"src":{"id":0,"line":1,"column":24,"start":24,"end":131,"length":108,"parent_index":2},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":8,"name":"value","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":9,"line":1,"column":48,"start":48,"end":68,"length":21,"parent_index":6},"scope":6,"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"visibility":3,"storage_location":1,"mutability":1,"type_name":{"id":10,"node_type":30,"src":{"id":11,"line":1,"column":48,"start":48,"end":54,"length":7,"parent_index":8},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0}},{"id":13,"name":"setValue","node_type":42,"kind":41,"src":{"id":14,"line":1,"column":70,"start":70,"end":129,"length":60,"parent_index":6},"body":{"id":22,"node_type":46,"kind":0,"src":{"id":23,"line":1,"column":111,"start":111,"end":129,"length":19,"parent_index":13},"implemented":true,"statements":[{"id":24,"node_type":81,"src":{"id":25,"line":1,"column":113,"start":113,"end":127,"length":15,"parent_index":22},"expression":{"id":26,"node_type":27,"src":{"id":27,"line":1,"column":113,"start":113,"end":126,"length":14,"parent_index":22},"operator":11,"left_expression":{"id":28,"node_type":16,"src":{"id":29,"line":1,"column":113,"start":113,"end":117,"length":5,"parent_index":26},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":8,"is_pure":false},"right_expression":{"id":30,"node_type":16,"src":{"id":31,"line":1,"column":121,"start":121,"end":126,"length":6,"parent_index":26},"name":"_value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":30,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":15,"node_type":43,"src":{"id":16,"line":1,"column":88,"start":88,"end":101,"length":14,"parent_index":13},"parameters":[{"id":17,"node_type":44,"src":{"id":18,"line":1,"column":88,"start":88,"end":101,"length":14,"parent_index":15},"scope":13,"name":"_value","type_name":{"id":19,"node_type":30,"src":{"id":20,"line":1,"column":88,"start":88,"end":94,"length":7,"parent_index":17},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":21,"node_type":43,"src":{"id":14,"line":1,"column":70,"start":70,"end":129,"length":60,"parent_index":13},"parameters":[],"parameter_types":[]},"scope":6,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}}],"linearized_base_contracts":[6],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":3,"line":1,"column":24,"start":24,"end":131,"length":108,"parent_index":1}}],"comments":[]} \ No newline at end of file diff --git a/data/tests/contracts/cheelee/Address.solgo.ast.json b/data/tests/contracts/cheelee/Address.solgo.ast.json index 15b3c3bf..9e6738ac 100644 --- a/data/tests/contracts/cheelee/Address.solgo.ast.json +++ b/data/tests/contracts/cheelee/Address.solgo.ast.json @@ -1,5713 +1,5507 @@ { - "id": 251, - "base_contracts": [], - "license": "MIT", - "exported_symbols": [ - { - "id": 251, - "name": "Address", - "absolute_path": "Address.sol" - } - ], - "absolute_path": "Address.sol", - "name": "Address", - "node_type": 1, - "nodes": [ - { - "id": 257, - "node_type": 10, - "src": { - "id": 258, - "line": 103, - "column": 0, - "start": 3613, - "end": 3635, - "length": 23, - "parent_index": 251 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 259, - "name": "Address", - "node_type": 35, - "src": { - "id": 0, - "line": 108, - "column": 0, - "start": 3706, - "end": 11389, - "length": 7684, - "parent_index": 251 - }, - "abstract": false, - "kind": 37, - "fully_implemented": true, - "nodes": [ - { - "id": 261, - "name": "isContract", - "node_type": 42, - "kind": 41, - "src": { - "id": 262, - "line": 126, - "column": 4, - "start": 4298, - "end": 4710, - "length": 413, - "parent_index": 259 - }, - "body": { - "id": 275, - "node_type": 46, - "kind": 0, - "src": { - "id": 276, - "line": 126, - "column": 70, - "start": 4364, - "end": 4710, - "length": 347, - "parent_index": 261 - }, - "implemented": true, - "statements": [ - { - "id": 277, - "node_type": 44, - "src": { - "id": 278, - "line": 131, - "column": 8, - "start": 4561, - "end": 4573, - "length": 13, - "parent_index": 275 - }, - "assignments": [ - 279 - ], - "declarations": [ - { - "is_constant": false, - "id": 279, - "state_mutability": 1, - "name": "size", - "node_type": 44, - "scope": 275, - "src": { - "id": 280, - "line": 131, - "column": 8, - "start": 4561, - "end": 4572, - "length": 12, - "parent_index": 277 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 281, - "node_type": 30, - "src": { - "id": 282, - "line": 131, - "column": 8, - "start": 4561, - "end": 4567, - "length": 7, - "parent_index": 279 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ] - }, - { - "id": 283, - "node_type": 89, - "src": { - "id": 284, - "line": 133, - "column": 8, - "start": 4639, - "end": 4679, - "length": 41, - "parent_index": 275 - }, - "body": { - "id": 286, - "node_type": 90, - "kind": 0, - "src": { - "id": 284, - "line": 133, - "column": 8, - "start": 4639, - "end": 4679, - "length": 41, - "parent_index": 283 - }, - "implemented": false, - "statements": [ - { - "id": 285, - "node_type": 91, - "src": { - "id": 287, - "line": 133, - "column": 19, - "start": 4650, - "end": 4677, - "length": 28, - "parent_index": 283 - }, - "body": [] - } - ] - } - }, - { - "id": 288, - "node_type": 47, - "src": { - "id": 289, - "line": 134, - "column": 8, - "start": 4689, - "end": 4704, - "length": 16, - "parent_index": 261 - }, - "function_return_parameters": 261, - "expression": { - "id": 290, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 291, - "line": 134, - "column": 15, - "start": 4696, - "end": 4703, - "length": 8, - "parent_index": 275 - }, - "operator": 7, - "left_expression": { - "id": 292, - "node_type": 16, - "src": { - "id": 293, - "line": 134, - "column": 15, - "start": 4696, - "end": 4699, - "length": 4, - "parent_index": 290 - }, - "name": "size", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 277, - "is_pure": false - }, - "right_expression": { - "id": 294, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 295, - "line": 134, - "column": 22, - "start": 4703, - "end": 4703, - "length": 1, - "parent_index": 290 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 5, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 263, - "node_type": 43, - "src": { - "id": 264, - "line": 126, - "column": 24, - "start": 4318, - "end": 4332, - "length": 15, - "parent_index": 261 - }, - "parameters": [ - { - "id": 265, - "node_type": 44, - "src": { - "id": 266, - "line": 126, - "column": 24, - "start": 4318, - "end": 4332, - "length": 15, - "parent_index": 263 - }, - "scope": 261, - "name": "account", - "type_name": { - "id": 267, - "node_type": 30, - "src": { - "id": 268, - "line": 126, - "column": 24, - "start": 4318, - "end": 4324, - "length": 7, - "parent_index": 265 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 269, - "node_type": 43, - "src": { - "id": 270, - "line": 126, - "column": 64, - "start": 4358, - "end": 4361, - "length": 4, - "parent_index": 261 - }, - "parameters": [ - { - "id": 271, - "node_type": 44, - "src": { - "id": 272, - "line": 126, - "column": 64, - "start": 4358, - "end": 4361, - "length": 4, - "parent_index": 269 - }, - "scope": 261, - "name": "", - "type_name": { - "id": 273, - "node_type": 30, - "src": { - "id": 274, - "line": 126, - "column": 64, - "start": 4358, - "end": 4361, - "length": 4, - "parent_index": 271 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "scope": 259, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 297, - "name": "sendValue", - "node_type": 42, - "kind": 41, - "src": { - "id": 298, - "line": 153, - "column": 4, - "start": 5628, - "end": 6018, - "length": 391, - "parent_index": 259 - }, - "body": { - "id": 310, - "node_type": 46, - "kind": 0, - "src": { - "id": 311, - "line": 153, - "column": 75, - "start": 5699, - "end": 6018, - "length": 320, - "parent_index": 297 - }, - "implemented": true, - "statements": [ - { - "id": 312, - "node_type": 24, - "kind": 24, - "src": { - "id": 313, - "line": 154, - "column": 8, - "start": 5709, - "end": 5781, - "length": 73, - "parent_index": 310 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: insufficient balance\"" - } - ], - "arguments": [ - { - "id": 314, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 315, - "line": 154, - "column": 16, - "start": 5717, - "end": 5747, - "length": 31, - "parent_index": 312 - }, - "operator": 8, - "left_expression": { - "id": 316, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 317, - "line": 154, - "column": 16, - "start": 5717, - "end": 5737, - "length": 21, - "parent_index": 314 - }, - "expression": { - "id": 318, - "node_type": 24, - "kind": 24, - "src": { - "id": 319, - "line": 154, - "column": 16, - "start": 5717, - "end": 5729, - "length": 13, - "parent_index": 316 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "arguments": [ - { - "id": 320, - "node_type": 16, - "src": { - "id": 321, - "line": 154, - "column": 24, - "start": 5725, - "end": 5728, - "length": 4, - "parent_index": 318 - }, - "name": "this", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - } - ], - "expression": { - "id": 322, - "node_type": 16, - "src": { - "id": 323, - "line": 154, - "column": 16, - "start": 5717, - "end": 5723, - "length": 7, - "parent_index": 318 - }, - "type_name": { - "id": 324, - "node_type": 30, - "src": { - "id": 325, - "line": 154, - "column": 16, - "start": 5717, - "end": 5723, - "length": 7, - "parent_index": 322 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_function_", - "type_string": "function(function())" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - }, - "member_name": "balance", - "argument_types": [], - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - }, - "right_expression": { - "id": 326, - "node_type": 16, - "src": { - "id": 327, - "line": 154, - "column": 41, - "start": 5742, - "end": 5747, - "length": 6, - "parent_index": 314 - }, - "name": "amount", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 326, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 328, - "node_type": 17, - "kind": 50, - "value": "Address: insufficient balance", - "hex_value": "416464726573733a20696e73756666696369656e742062616c616e6365", - "src": { - "id": 329, - "line": 154, - "column": 49, - "start": 5750, - "end": 5780, - "length": 31, - "parent_index": 312 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: insufficient balance\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 330, - "node_type": 16, - "src": { - "id": 331, - "line": 154, - "column": 8, - "start": 5709, - "end": 5715, - "length": 7, - "parent_index": 312 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"Address: insufficient balance\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: insufficient balance\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 332, - "node_type": 44, - "src": { - "id": 333, - "line": 157, - "column": 8, - "start": 5870, - "end": 5924, - "length": 55, - "parent_index": 310 - }, - "assignments": [], - "declarations": [], - "initial_value": { - "id": 334, - "node_type": 24, - "kind": 24, - "src": { - "id": 335, - "line": 157, - "column": 27, - "start": 5889, - "end": 5923, - "length": 35, - "parent_index": 332 - }, - "argument_types": [ - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"\"" - } - ], - "arguments": [ - { - "id": 336, - "node_type": 17, - "kind": 50, - "src": { - "id": 337, - "line": 157, - "column": 59, - "start": 5921, - "end": 5922, - "length": 2, - "parent_index": 334 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 338, - "node_type": 93, - "kind": 93, - "src": { - "id": 339, - "line": 157, - "column": 27, - "start": 5889, - "end": 5919, - "length": 31, - "parent_index": 334 - }, - "expression": { - "id": 340, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 341, - "line": 157, - "column": 27, - "start": 5889, - "end": 5902, - "length": 14, - "parent_index": 338 - }, - "expression": { - "id": 342, - "node_type": 16, - "src": { - "id": 343, - "line": 157, - "column": 27, - "start": 5889, - "end": 5897, - "length": 9, - "parent_index": 340 - }, - "name": "recipient", - "type_description": { - "type_identifier": "t_address_payable", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 342, - "is_pure": false - }, - "member_name": "call", - "argument_types": [], - "type_description": { - "type_identifier": "t_address_payable", - "type_string": "address" - } - }, - "type_description": { - "type_identifier": "t_address_payable", - "type_string": "address" - } - }, - "type_description": { - "type_identifier": "t_function__t_string_literal$", - "type_string": "function(string memory)" - } - } - }, - { - "id": 344, - "node_type": 24, - "kind": 24, - "src": { - "id": 345, - "line": 158, - "column": 8, - "start": 5934, - "end": 6011, - "length": 78, - "parent_index": 310 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: unable to send value, recipient may have reverted\"" - } - ], - "arguments": [ - { - "id": 346, - "node_type": 16, - "src": { - "id": 347, - "line": 158, - "column": 16, - "start": 5942, - "end": 5948, - "length": 7, - "parent_index": 344 - }, - "name": "success", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - { - "id": 348, - "node_type": 17, - "kind": 50, - "value": "Address: unable to send value, recipient may have reverted", - "hex_value": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", - "src": { - "id": 349, - "line": 158, - "column": 25, - "start": 5951, - "end": 6010, - "length": 60, - "parent_index": 344 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: unable to send value, recipient may have reverted\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ] - } - ], - "expression": { - "id": 350, - "node_type": 16, - "src": { - "id": 351, - "line": 158, - "column": 8, - "start": 5934, - "end": 5940, - "length": 7, - "parent_index": 344 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_function_$$_t_string_literal", - "type_string": "function(function(),literal_string \"Address: unable to send value, recipient may have reverted\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: unable to send value, recipient may have reverted\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_string_literal$", - "type_string": "function(function(),string memory)" - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 299, - "node_type": 43, - "src": { - "id": 300, - "line": 153, - "column": 23, - "start": 5647, - "end": 5687, - "length": 41, - "parent_index": 297 - }, - "parameters": [ - { - "id": 301, - "node_type": 44, - "src": { - "id": 302, - "line": 153, - "column": 23, - "start": 5647, - "end": 5671, - "length": 25, - "parent_index": 299 - }, - "scope": 297, - "name": "recipient", - "type_name": { - "id": 303, - "node_type": 30, - "src": { - "id": 304, - "line": 153, - "column": 23, - "start": 5647, - "end": 5661, - "length": 15, - "parent_index": 301 - }, - "name": "addresspayable", - "type_description": { - "type_identifier": "t_address_payable", - "type_string": "address" - }, - "state_mutability": 3, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 3 - }, - { - "id": 305, - "node_type": 44, - "src": { - "id": 306, - "line": 153, - "column": 50, - "start": 5674, - "end": 5687, - "length": 14, - "parent_index": 299 - }, - "scope": 297, - "name": "amount", - "type_name": { - "id": 307, - "node_type": 30, - "src": { - "id": 308, - "line": 153, - "column": 50, - "start": 5674, - "end": 5680, - "length": 7, - "parent_index": 305 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address_payable", - "type_string": "address" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 309, - "node_type": 43, - "src": { - "id": 298, - "line": 153, - "column": 4, - "start": 5628, - "end": 6018, - "length": 391, - "parent_index": 297 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 259, - "type_description": { - "type_identifier": "t_function_$_t_address_payable$$_t_uint256", - "type_string": "function(address,uint256)" - } - }, - { - "id": 353, - "name": "functionCall", - "node_type": 42, - "kind": 41, - "src": { - "id": 354, - "line": 179, - "column": 4, - "start": 6760, - "end": 6930, - "length": 171, - "parent_index": 259 - }, - "body": { - "id": 371, - "node_type": 46, - "kind": 0, - "src": { - "id": 372, - "line": 179, - "column": 93, - "start": 6849, - "end": 6930, - "length": 82, - "parent_index": 353 - }, - "implemented": true, - "statements": [ - { - "id": 373, - "node_type": 47, - "src": { - "id": 374, - "line": 180, - "column": 6, - "start": 6857, - "end": 6924, - "length": 68, - "parent_index": 353 - }, - "function_return_parameters": 353, - "expression": { - "id": 375, - "node_type": 24, - "kind": 24, - "src": { - "id": 376, - "line": 180, - "column": 13, - "start": 6864, - "end": 6923, - "length": 60, - "parent_index": 371 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: low-level call failed\"" - } - ], - "arguments": [ - { - "id": 377, - "node_type": 16, - "src": { - "id": 378, - "line": 180, - "column": 26, - "start": 6877, - "end": 6882, - "length": 6, - "parent_index": 375 - }, - "name": "target", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 377, - "is_pure": false - }, - { - "id": 379, - "node_type": 16, - "src": { - "id": 380, - "line": 180, - "column": 34, - "start": 6885, - "end": 6888, - "length": 4, - "parent_index": 375 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 379, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - { - "id": 381, - "node_type": 17, - "kind": 50, - "value": "Address: low-level call failed", - "hex_value": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", - "src": { - "id": 382, - "line": 180, - "column": 40, - "start": 6891, - "end": 6922, - "length": 32, - "parent_index": 375 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: low-level call failed\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - } - ], - "expression": { - "id": 383, - "node_type": 16, - "src": { - "id": 384, - "line": 180, - "column": 13, - "start": 6864, - "end": 6875, - "length": 12, - "parent_index": 375 - }, - "name": "functionCall", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_string_literal", - "type_string": "function(address,bytes,literal_string \"Address: low-level call failed\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: low-level call failed\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$_t_string_literal$", - "type_string": "function(address,bytes,string memory)" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 355, - "node_type": 43, - "src": { - "id": 356, - "line": 179, - "column": 26, - "start": 6782, - "end": 6814, - "length": 33, - "parent_index": 353 - }, - "parameters": [ - { - "id": 357, - "node_type": 44, - "src": { - "id": 358, - "line": 179, - "column": 26, - "start": 6782, - "end": 6795, - "length": 14, - "parent_index": 355 - }, - "scope": 353, - "name": "target", - "type_name": { - "id": 359, - "node_type": 30, - "src": { - "id": 360, - "line": 179, - "column": 26, - "start": 6782, - "end": 6788, - "length": 7, - "parent_index": 357 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 361, - "node_type": 44, - "src": { - "id": 362, - "line": 179, - "column": 42, - "start": 6798, - "end": 6814, - "length": 17, - "parent_index": 355 - }, - "scope": 353, - "name": "data", - "type_name": { - "id": 363, - "node_type": 30, - "src": { - "id": 364, - "line": 179, - "column": 42, - "start": 6798, - "end": 6802, - "length": 5, - "parent_index": 361 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "return_parameters": { - "id": 365, - "node_type": 43, - "src": { - "id": 366, - "line": 179, - "column": 79, - "start": 6835, - "end": 6846, - "length": 12, - "parent_index": 353 - }, - "parameters": [ - { - "id": 367, - "node_type": 44, - "src": { - "id": 368, - "line": 179, - "column": 79, - "start": 6835, - "end": 6846, - "length": 12, - "parent_index": 365 - }, - "scope": 353, - "name": "", - "type_name": { - "id": 369, - "node_type": 30, - "src": { - "id": 370, - "line": 179, - "column": 79, - "start": 6835, - "end": 6839, - "length": 5, - "parent_index": 367 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "scope": 259, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes", - "type_string": "function(address,bytes)" - } - }, - { - "id": 386, - "name": "functionCall", - "node_type": 42, - "kind": 41, - "src": { - "id": 387, - "line": 189, - "column": 4, - "start": 7153, - "end": 7345, - "length": 193, - "parent_index": 259 - }, - "body": { - "id": 408, - "node_type": 46, - "kind": 0, - "src": { - "id": 409, - "line": 189, - "column": 121, - "start": 7270, - "end": 7345, - "length": 76, - "parent_index": 386 - }, - "implemented": true, - "statements": [ - { - "id": 410, - "node_type": 47, - "src": { - "id": 411, - "line": 190, - "column": 8, - "start": 7280, - "end": 7339, - "length": 60, - "parent_index": 386 - }, - "function_return_parameters": 386, - "expression": { - "id": 412, - "node_type": 24, - "kind": 24, - "src": { - "id": 413, - "line": 190, - "column": 15, - "start": 7287, - "end": 7338, - "length": 52, - "parent_index": 408 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ], - "arguments": [ - { - "id": 414, - "node_type": 16, - "src": { - "id": 415, - "line": 190, - "column": 37, - "start": 7309, - "end": 7314, - "length": 6, - "parent_index": 412 - }, - "name": "target", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 414, - "is_pure": false - }, - { - "id": 416, - "node_type": 16, - "src": { - "id": 417, - "line": 190, - "column": 45, - "start": 7317, - "end": 7320, - "length": 4, - "parent_index": 412 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 416, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - { - "id": 418, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 419, - "line": 190, - "column": 51, - "start": 7323, - "end": 7323, - "length": 1, - "parent_index": 412 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - { - "id": 420, - "node_type": 16, - "src": { - "id": 421, - "line": 190, - "column": 54, - "start": 7326, - "end": 7337, - "length": 12, - "parent_index": 412 - }, - "name": "errorMessage", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "overloaded_declarations": [], - "referenced_declaration": 420, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - } - ], - "expression": { - "id": 422, - "node_type": 16, - "src": { - "id": 423, - "line": 190, - "column": 15, - "start": 7287, - "end": 7307, - "length": 21, - "parent_index": 412 - }, - "name": "functionCallWithValue", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_rational_0_by_1$$_t_string", - "type_string": "function(address,bytes,int_const 0,string)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_rational_0_by_1$$_t_string$", - "type_string": "function(address,bytes,int_const 0,string)" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 388, - "node_type": 43, - "src": { - "id": 389, - "line": 189, - "column": 26, - "start": 7175, - "end": 7235, - "length": 61, - "parent_index": 386 - }, - "parameters": [ - { - "id": 390, - "node_type": 44, - "src": { - "id": 391, - "line": 189, - "column": 26, - "start": 7175, - "end": 7188, - "length": 14, - "parent_index": 388 - }, - "scope": 386, - "name": "target", - "type_name": { - "id": 392, - "node_type": 30, - "src": { - "id": 393, - "line": 189, - "column": 26, - "start": 7175, - "end": 7181, - "length": 7, - "parent_index": 390 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 394, - "node_type": 44, - "src": { - "id": 395, - "line": 189, - "column": 42, - "start": 7191, - "end": 7207, - "length": 17, - "parent_index": 388 - }, - "scope": 386, - "name": "data", - "type_name": { - "id": 396, - "node_type": 30, - "src": { - "id": 397, - "line": 189, - "column": 42, - "start": 7191, - "end": 7195, - "length": 5, - "parent_index": 394 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 398, - "node_type": 44, - "src": { - "id": 399, - "line": 189, - "column": 61, - "start": 7210, - "end": 7235, - "length": 26, - "parent_index": 388 - }, - "scope": 386, - "name": "errorMessage", - "type_name": { - "id": 400, - "node_type": 30, - "src": { - "id": 401, - "line": 189, - "column": 61, - "start": 7210, - "end": 7215, - "length": 6, - "parent_index": 398 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "return_parameters": { - "id": 402, - "node_type": 43, - "src": { - "id": 403, - "line": 189, - "column": 107, - "start": 7256, - "end": 7267, - "length": 12, - "parent_index": 386 - }, - "parameters": [ - { - "id": 404, - "node_type": 44, - "src": { - "id": 405, - "line": 189, - "column": 107, - "start": 7256, - "end": 7267, - "length": 12, - "parent_index": 402 - }, - "scope": 386, - "name": "", - "type_name": { - "id": 406, - "node_type": 30, - "src": { - "id": 407, - "line": 189, - "column": 107, - "start": 7256, - "end": 7260, - "length": 5, - "parent_index": 404 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "scope": 259, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_string", - "type_string": "function(address,bytes,string)" - } - }, - { - "id": 425, - "name": "functionCallWithValue", - "node_type": 42, - "kind": 41, - "src": { - "id": 426, - "line": 204, - "column": 4, - "start": 7708, - "end": 7931, - "length": 224, - "parent_index": 259 - }, - "body": { - "id": 447, - "node_type": 46, - "kind": 0, - "src": { - "id": 448, - "line": 204, - "column": 117, - "start": 7821, - "end": 7931, - "length": 111, - "parent_index": 425 - }, - "implemented": true, - "statements": [ - { - "id": 449, - "node_type": 47, - "src": { - "id": 450, - "line": 205, - "column": 8, - "start": 7831, - "end": 7925, - "length": 95, - "parent_index": 425 - }, - "function_return_parameters": 425, - "expression": { - "id": 451, - "node_type": 24, - "kind": 24, - "src": { - "id": 452, - "line": 205, - "column": 15, - "start": 7838, - "end": 7924, - "length": 87, - "parent_index": 447 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: low-level call with value failed\"" - } - ], - "arguments": [ - { - "id": 453, - "node_type": 16, - "src": { - "id": 454, - "line": 205, - "column": 37, - "start": 7860, - "end": 7865, - "length": 6, - "parent_index": 451 - }, - "name": "target", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 453, - "is_pure": false - }, - { - "id": 455, - "node_type": 16, - "src": { - "id": 456, - "line": 205, - "column": 45, - "start": 7868, - "end": 7871, - "length": 4, - "parent_index": 451 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 455, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - { - "id": 457, - "node_type": 16, - "src": { - "id": 458, - "line": 205, - "column": 51, - "start": 7874, - "end": 7878, - "length": 5, - "parent_index": 451 - }, - "name": "value", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 457, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - { - "id": 459, - "node_type": 17, - "kind": 50, - "value": "Address: low-level call with value failed", - "hex_value": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", - "src": { - "id": 460, - "line": 205, - "column": 58, - "start": 7881, - "end": 7923, - "length": 43, - "parent_index": 451 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: low-level call with value failed\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - } - ], - "expression": { - "id": 461, - "node_type": 16, - "src": { - "id": 462, - "line": 205, - "column": 15, - "start": 7838, - "end": 7858, - "length": 21, - "parent_index": 451 - }, - "name": "functionCallWithValue", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_uint256$$_t_string_literal", - "type_string": "function(address,bytes,uint256,literal_string \"Address: low-level call with value failed\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: low-level call with value failed\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_uint256$_t_string_literal$", - "type_string": "function(address,bytes,uint256,string memory)" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 427, - "node_type": 43, - "src": { - "id": 428, - "line": 204, - "column": 35, - "start": 7739, - "end": 7786, - "length": 48, - "parent_index": 425 - }, - "parameters": [ - { - "id": 429, - "node_type": 44, - "src": { - "id": 430, - "line": 204, - "column": 35, - "start": 7739, - "end": 7752, - "length": 14, - "parent_index": 427 - }, - "scope": 425, - "name": "target", - "type_name": { - "id": 431, - "node_type": 30, - "src": { - "id": 432, - "line": 204, - "column": 35, - "start": 7739, - "end": 7745, - "length": 7, - "parent_index": 429 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 433, - "node_type": 44, - "src": { - "id": 434, - "line": 204, - "column": 51, - "start": 7755, - "end": 7771, - "length": 17, - "parent_index": 427 - }, - "scope": 425, - "name": "data", - "type_name": { - "id": 435, - "node_type": 30, - "src": { - "id": 436, - "line": 204, - "column": 51, - "start": 7755, - "end": 7759, - "length": 5, - "parent_index": 433 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 437, - "node_type": 44, - "src": { - "id": 438, - "line": 204, - "column": 70, - "start": 7774, - "end": 7786, - "length": 13, - "parent_index": 427 - }, - "scope": 425, - "name": "value", - "type_name": { - "id": 439, - "node_type": 30, - "src": { - "id": 440, - "line": 204, - "column": 70, - "start": 7774, - "end": 7780, - "length": 7, - "parent_index": 437 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - } - ] - }, - "return_parameters": { - "id": 441, - "node_type": 43, - "src": { - "id": 442, - "line": 204, - "column": 103, - "start": 7807, - "end": 7818, - "length": 12, - "parent_index": 425 - }, - "parameters": [ - { - "id": 443, - "node_type": 44, - "src": { - "id": 444, - "line": 204, - "column": 103, - "start": 7807, - "end": 7818, - "length": 12, - "parent_index": 441 - }, - "scope": 425, - "name": "", - "type_name": { - "id": 445, - "node_type": 30, - "src": { - "id": 446, - "line": 204, - "column": 103, - "start": 7807, - "end": 7811, - "length": 5, - "parent_index": 443 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "scope": 259, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_uint256", - "type_string": "function(address,bytes,uint256)" - } - }, - { - "id": 464, - "name": "functionCallWithValue", - "node_type": 42, - "kind": 41, - "src": { - "id": 465, - "line": 214, - "column": 4, - "start": 8180, - "end": 8702, - "length": 523, - "parent_index": 259 - }, - "body": { - "id": 490, - "node_type": 46, - "kind": 0, - "src": { - "id": 491, - "line": 214, - "column": 145, - "start": 8321, - "end": 8702, - "length": 382, - "parent_index": 464 - }, - "implemented": true, - "statements": [ - { - "id": 492, - "node_type": 24, - "kind": 24, - "src": { - "id": 493, - "line": 215, - "column": 8, - "start": 8331, - "end": 8411, - "length": 81, - "parent_index": 490 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: insufficient balance for call\"" - } - ], - "arguments": [ - { - "id": 494, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 495, - "line": 215, - "column": 16, - "start": 8339, - "end": 8368, - "length": 30, - "parent_index": 492 - }, - "operator": 8, - "left_expression": { - "id": 496, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 497, - "line": 215, - "column": 16, - "start": 8339, - "end": 8359, - "length": 21, - "parent_index": 494 - }, - "expression": { - "id": 498, - "node_type": 24, - "kind": 24, - "src": { - "id": 499, - "line": 215, - "column": 16, - "start": 8339, - "end": 8351, - "length": 13, - "parent_index": 496 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "arguments": [ - { - "id": 500, - "node_type": 16, - "src": { - "id": 501, - "line": 215, - "column": 24, - "start": 8347, - "end": 8350, - "length": 4, - "parent_index": 498 - }, - "name": "this", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - } - ], - "expression": { - "id": 502, - "node_type": 16, - "src": { - "id": 503, - "line": 215, - "column": 16, - "start": 8339, - "end": 8345, - "length": 7, - "parent_index": 498 - }, - "type_name": { - "id": 504, - "node_type": 30, - "src": { - "id": 505, - "line": 215, - "column": 16, - "start": 8339, - "end": 8345, - "length": 7, - "parent_index": 502 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_function_", - "type_string": "function(function())" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - }, - "member_name": "balance", - "argument_types": [], - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - }, - "right_expression": { - "id": 506, - "node_type": 16, - "src": { - "id": 507, - "line": 215, - "column": 41, - "start": 8364, - "end": 8368, - "length": 5, - "parent_index": 494 - }, - "name": "value", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "overloaded_declarations": [], - "referenced_declaration": 506, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 508, - "node_type": 17, - "kind": 50, - "value": "Address: insufficient balance for call", - "hex_value": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", - "src": { - "id": 509, - "line": 215, - "column": 48, - "start": 8371, - "end": 8410, - "length": 40, - "parent_index": 492 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: insufficient balance for call\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 510, - "node_type": 16, - "src": { - "id": 511, - "line": 215, - "column": 8, - "start": 8331, - "end": 8337, - "length": 7, - "parent_index": 492 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"Address: insufficient balance for call\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: insufficient balance for call\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 512, - "node_type": 24, - "kind": 24, - "src": { - "id": 513, - "line": 216, - "column": 8, - "start": 8422, - "end": 8481, - "length": 60, - "parent_index": 490 - }, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: call to non-contract\"" - } - ], - "arguments": [ - { - "id": 514, - "node_type": 24, - "kind": 24, - "src": { - "id": 515, - "line": 216, - "column": 16, - "start": 8430, - "end": 8447, - "length": 18, - "parent_index": 512 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 516, - "node_type": 16, - "src": { - "id": 517, - "line": 216, - "column": 27, - "start": 8441, - "end": 8446, - "length": 6, - "parent_index": 514 - }, - "name": "target", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 516, - "is_pure": false - } - ], - "expression": { - "id": 518, - "node_type": 16, - "src": { - "id": 519, - "line": 216, - "column": 16, - "start": 8430, - "end": 8439, - "length": 10, - "parent_index": 514 - }, - "name": "isContract", - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - }, - { - "id": 520, - "node_type": 17, - "kind": 50, - "value": "Address: call to non-contract", - "hex_value": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", - "src": { - "id": 521, - "line": 216, - "column": 36, - "start": 8450, - "end": 8480, - "length": 31, - "parent_index": 512 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: call to non-contract\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - ] - } - ], - "expression": { - "id": 522, - "node_type": 16, - "src": { - "id": 523, - "line": 216, - "column": 8, - "start": 8422, - "end": 8428, - "length": 7, - "parent_index": 512 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$$_t_string_literal", - "type_string": "function(function(address),literal_string \"Address: call to non-contract\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: call to non-contract\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", - "type_string": "function(function(address),string memory)" - } - }, - { - "id": 524, - "node_type": 44, - "src": { - "id": 525, - "line": 219, - "column": 8, - "start": 8552, - "end": 8627, - "length": 76, - "parent_index": 490 - }, - "assignments": [], - "declarations": [], - "initial_value": { - "id": 526, - "node_type": 24, - "kind": 24, - "src": { - "id": 527, - "line": 219, - "column": 50, - "start": 8594, - "end": 8626, - "length": 33, - "parent_index": 524 - }, - "argument_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ], - "arguments": [ - { - "id": 528, - "node_type": 16, - "src": { - "id": 529, - "line": 219, - "column": 78, - "start": 8622, - "end": 8625, - "length": 4, - "parent_index": 526 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 528, - "is_pure": false - } - ], - "expression": { - "id": 530, - "node_type": 93, - "kind": 93, - "src": { - "id": 531, - "line": 219, - "column": 50, - "start": 8594, - "end": 8620, - "length": 27, - "parent_index": 526 - }, - "expression": { - "id": 532, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 533, - "line": 219, - "column": 50, - "start": 8594, - "end": 8604, - "length": 11, - "parent_index": 530 - }, - "expression": { - "id": 534, - "node_type": 16, - "src": { - "id": 535, - "line": 219, - "column": 50, - "start": 8594, - "end": 8599, - "length": 6, - "parent_index": 532 - }, - "name": "target", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 534, - "is_pure": false - }, - "member_name": "call", - "argument_types": [], - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - } - }, - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_bytes$", - "type_string": "function(bytes)" - } - } - }, - { - "id": 536, - "node_type": 47, - "src": { - "id": 537, - "line": 220, - "column": 8, - "start": 8637, - "end": 8696, - "length": 60, - "parent_index": 464 - }, - "function_return_parameters": 464, - "expression": { - "id": 538, - "node_type": 24, - "kind": 24, - "src": { - "id": 539, - "line": 220, - "column": 15, - "start": 8644, - "end": 8695, - "length": 52, - "parent_index": 490 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_function_$_t_function_", - "type_string": "function(function())" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ], - "arguments": [ - { - "id": 540, - "node_type": 16, - "src": { - "id": 541, - "line": 220, - "column": 33, - "start": 8662, - "end": 8668, - "length": 7, - "parent_index": 538 - }, - "name": "success", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - { - "id": 542, - "node_type": 16, - "src": { - "id": 543, - "line": 220, - "column": 42, - "start": 8671, - "end": 8680, - "length": 10, - "parent_index": 538 - }, - "name": "returndata", - "type_description": { - "type_identifier": "t_function_$_t_function_", - "type_string": "function(function())" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ] - }, - { - "id": 544, - "node_type": 16, - "src": { - "id": 545, - "line": 220, - "column": 54, - "start": 8683, - "end": 8694, - "length": 12, - "parent_index": 538 - }, - "name": "errorMessage", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "overloaded_declarations": [], - "referenced_declaration": 544, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_function_$_t_function_", - "type_string": "function(function())" - } - ] - } - ], - "expression": { - "id": 546, - "node_type": 16, - "src": { - "id": 547, - "line": 220, - "column": 15, - "start": 8644, - "end": 8660, - "length": 17, - "parent_index": 538 - }, - "name": "_verifyCallResult", - "type_description": { - "type_identifier": "t_function_$_t_function_$$_t_function_$_t_function_$$_t_string", - "type_string": "function(function(),function(function()),string)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_function_$_t_function_", - "type_string": "function(function())" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$$_t_function_$_t_function_$$_t_string$", - "type_string": "function(function(),function(function()),string)" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 466, - "node_type": 43, - "src": { - "id": 467, - "line": 214, - "column": 35, - "start": 8211, - "end": 8286, - "length": 76, - "parent_index": 464 - }, - "parameters": [ - { - "id": 468, - "node_type": 44, - "src": { - "id": 469, - "line": 214, - "column": 35, - "start": 8211, - "end": 8224, - "length": 14, - "parent_index": 466 - }, - "scope": 464, - "name": "target", - "type_name": { - "id": 470, - "node_type": 30, - "src": { - "id": 471, - "line": 214, - "column": 35, - "start": 8211, - "end": 8217, - "length": 7, - "parent_index": 468 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 472, - "node_type": 44, - "src": { - "id": 473, - "line": 214, - "column": 51, - "start": 8227, - "end": 8243, - "length": 17, - "parent_index": 466 - }, - "scope": 464, - "name": "data", - "type_name": { - "id": 474, - "node_type": 30, - "src": { - "id": 475, - "line": 214, - "column": 51, - "start": 8227, - "end": 8231, - "length": 5, - "parent_index": 472 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 476, - "node_type": 44, - "src": { - "id": 477, - "line": 214, - "column": 70, - "start": 8246, - "end": 8258, - "length": 13, - "parent_index": 466 - }, - "scope": 464, - "name": "value", - "type_name": { - "id": 478, - "node_type": 30, - "src": { - "id": 479, - "line": 214, - "column": 70, - "start": 8246, - "end": 8252, - "length": 7, - "parent_index": 476 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 480, - "node_type": 44, - "src": { - "id": 481, - "line": 214, - "column": 85, - "start": 8261, - "end": 8286, - "length": 26, - "parent_index": 466 - }, - "scope": 464, - "name": "errorMessage", - "type_name": { - "id": 482, - "node_type": 30, - "src": { - "id": 483, - "line": 214, - "column": 85, - "start": 8261, - "end": 8266, - "length": 6, - "parent_index": 480 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "return_parameters": { - "id": 484, - "node_type": 43, - "src": { - "id": 485, - "line": 214, - "column": 131, - "start": 8307, - "end": 8318, - "length": 12, - "parent_index": 464 - }, - "parameters": [ - { - "id": 486, - "node_type": 44, - "src": { - "id": 487, - "line": 214, - "column": 131, - "start": 8307, - "end": 8318, - "length": 12, - "parent_index": 484 - }, - "scope": 464, - "name": "", - "type_name": { - "id": 488, - "node_type": 30, - "src": { - "id": 489, - "line": 214, - "column": 131, - "start": 8307, - "end": 8311, - "length": 5, - "parent_index": 486 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "scope": 259, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_uint256$$_t_string", - "type_string": "function(address,bytes,uint256,string)" - } - }, - { - "id": 549, - "name": "functionStaticCall", - "node_type": 42, - "kind": 41, - "src": { - "id": 550, - "line": 229, - "column": 4, - "start": 8880, - "end": 9076, - "length": 197, - "parent_index": 259 - }, - "body": { - "id": 567, - "node_type": 46, - "kind": 0, - "src": { - "id": 568, - "line": 229, - "column": 104, - "start": 8980, - "end": 9076, - "length": 97, - "parent_index": 549 - }, - "implemented": true, - "statements": [ - { - "id": 569, - "node_type": 47, - "src": { - "id": 570, - "line": 230, - "column": 8, - "start": 8990, - "end": 9070, - "length": 81, - "parent_index": 549 - }, - "function_return_parameters": 549, - "expression": { - "id": 571, - "node_type": 24, - "kind": 24, - "src": { - "id": 572, - "line": 230, - "column": 15, - "start": 8997, - "end": 9069, - "length": 73, - "parent_index": 567 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: low-level static call failed\"" - } - ], - "arguments": [ - { - "id": 573, - "node_type": 16, - "src": { - "id": 574, - "line": 230, - "column": 34, - "start": 9016, - "end": 9021, - "length": 6, - "parent_index": 571 - }, - "name": "target", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 573, - "is_pure": false - }, - { - "id": 575, - "node_type": 16, - "src": { - "id": 576, - "line": 230, - "column": 42, - "start": 9024, - "end": 9027, - "length": 4, - "parent_index": 571 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 575, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - { - "id": 577, - "node_type": 17, - "kind": 50, - "value": "Address: low-level static call failed", - "hex_value": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", - "src": { - "id": 578, - "line": 230, - "column": 48, - "start": 9030, - "end": 9068, - "length": 39, - "parent_index": 571 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: low-level static call failed\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - } - ], - "expression": { - "id": 579, - "node_type": 16, - "src": { - "id": 580, - "line": 230, - "column": 15, - "start": 8997, - "end": 9014, - "length": 18, - "parent_index": 571 - }, - "name": "functionStaticCall", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_string_literal", - "type_string": "function(address,bytes,literal_string \"Address: low-level static call failed\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: low-level static call failed\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$_t_string_literal$", - "type_string": "function(address,bytes,string memory)" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 5, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 551, - "node_type": 43, - "src": { - "id": 552, - "line": 229, - "column": 32, - "start": 8908, - "end": 8940, - "length": 33, - "parent_index": 549 - }, - "parameters": [ - { - "id": 553, - "node_type": 44, - "src": { - "id": 554, - "line": 229, - "column": 32, - "start": 8908, - "end": 8921, - "length": 14, - "parent_index": 551 - }, - "scope": 549, - "name": "target", - "type_name": { - "id": 555, - "node_type": 30, - "src": { - "id": 556, - "line": 229, - "column": 32, - "start": 8908, - "end": 8914, - "length": 7, - "parent_index": 553 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 557, - "node_type": 44, - "src": { - "id": 558, - "line": 229, - "column": 48, - "start": 8924, - "end": 8940, - "length": 17, - "parent_index": 551 - }, - "scope": 549, - "name": "data", - "type_name": { - "id": 559, - "node_type": 30, - "src": { - "id": 560, - "line": 229, - "column": 48, - "start": 8924, - "end": 8928, - "length": 5, - "parent_index": 557 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "return_parameters": { - "id": 561, - "node_type": 43, - "src": { - "id": 562, - "line": 229, - "column": 90, - "start": 8966, - "end": 8977, - "length": 12, - "parent_index": 549 - }, - "parameters": [ - { - "id": 563, - "node_type": 44, - "src": { - "id": 564, - "line": 229, - "column": 90, - "start": 8966, - "end": 8977, - "length": 12, - "parent_index": 561 - }, - "scope": 549, - "name": "", - "type_name": { - "id": 565, - "node_type": 30, - "src": { - "id": 566, - "line": 229, - "column": 90, - "start": 8966, - "end": 8970, - "length": 5, - "parent_index": 563 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "scope": 259, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes", - "type_string": "function(address,bytes)" - } - }, - { - "id": 582, - "name": "functionStaticCall", - "node_type": 42, - "kind": 41, - "src": { - "id": 583, - "line": 239, - "column": 4, - "start": 9261, - "end": 9676, - "length": 416, - "parent_index": 259 - }, - "body": { - "id": 604, - "node_type": 46, - "kind": 0, - "src": { - "id": 605, - "line": 239, - "column": 132, - "start": 9389, - "end": 9676, - "length": 288, - "parent_index": 582 - }, - "implemented": true, - "statements": [ - { - "id": 606, - "node_type": 24, - "kind": 24, - "src": { - "id": 607, - "line": 240, - "column": 8, - "start": 9399, - "end": 9465, - "length": 67, - "parent_index": 604 - }, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: static call to non-contract\"" - } - ], - "arguments": [ - { - "id": 608, - "node_type": 24, - "kind": 24, - "src": { - "id": 609, - "line": 240, - "column": 16, - "start": 9407, - "end": 9424, - "length": 18, - "parent_index": 606 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 610, - "node_type": 16, - "src": { - "id": 611, - "line": 240, - "column": 27, - "start": 9418, - "end": 9423, - "length": 6, - "parent_index": 608 - }, - "name": "target", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 610, - "is_pure": false - } - ], - "expression": { - "id": 612, - "node_type": 16, - "src": { - "id": 613, - "line": 240, - "column": 16, - "start": 9407, - "end": 9416, - "length": 10, - "parent_index": 608 - }, - "name": "isContract", - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - }, - { - "id": 614, - "node_type": 17, - "kind": 50, - "value": "Address: static call to non-contract", - "hex_value": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374", - "src": { - "id": 615, - "line": 240, - "column": 36, - "start": 9427, - "end": 9464, - "length": 38, - "parent_index": 606 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: static call to non-contract\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - ] - } - ], - "expression": { - "id": 616, - "node_type": 16, - "src": { - "id": 617, - "line": 240, - "column": 8, - "start": 9399, - "end": 9405, - "length": 7, - "parent_index": 606 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$$_t_string_literal", - "type_string": "function(function(address),literal_string \"Address: static call to non-contract\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: static call to non-contract\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", - "type_string": "function(function(address),string memory)" - } - }, - { - "id": 618, - "node_type": 44, - "src": { - "id": 619, - "line": 243, - "column": 8, - "start": 9536, - "end": 9601, - "length": 66, - "parent_index": 604 - }, - "assignments": [], - "declarations": [], - "initial_value": { - "id": 620, - "node_type": 24, - "kind": 24, - "src": { - "id": 621, - "line": 243, - "column": 50, - "start": 9578, - "end": 9600, - "length": 23, - "parent_index": 618 - }, - "argument_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ], - "arguments": [ - { - "id": 622, - "node_type": 16, - "src": { - "id": 623, - "line": 243, - "column": 68, - "start": 9596, - "end": 9599, - "length": 4, - "parent_index": 620 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 622, - "is_pure": false - } - ], - "expression": { - "id": 624, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 625, - "line": 243, - "column": 50, - "start": 9578, - "end": 9594, - "length": 17, - "parent_index": 620 - }, - "expression": { - "id": 626, - "node_type": 16, - "src": { - "id": 627, - "line": 243, - "column": 50, - "start": 9578, - "end": 9583, - "length": 6, - "parent_index": 624 - }, - "name": "target", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 626, - "is_pure": false - }, - "member_name": "staticcall", - "argument_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ], - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_bytes$", - "type_string": "function(bytes)" - } - } - }, - { - "id": 628, - "node_type": 47, - "src": { - "id": 629, - "line": 244, - "column": 8, - "start": 9611, - "end": 9670, - "length": 60, - "parent_index": 582 - }, - "function_return_parameters": 582, - "expression": { - "id": 630, - "node_type": 24, - "kind": 24, - "src": { - "id": 631, - "line": 244, - "column": 15, - "start": 9618, - "end": 9669, - "length": 52, - "parent_index": 604 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_function_$_t_function_", - "type_string": "function(function())" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ], - "arguments": [ - { - "id": 632, - "node_type": 16, - "src": { - "id": 633, - "line": 244, - "column": 33, - "start": 9636, - "end": 9642, - "length": 7, - "parent_index": 630 - }, - "name": "success", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - { - "id": 634, - "node_type": 16, - "src": { - "id": 635, - "line": 244, - "column": 42, - "start": 9645, - "end": 9654, - "length": 10, - "parent_index": 630 - }, - "name": "returndata", - "type_description": { - "type_identifier": "t_function_$_t_function_", - "type_string": "function(function())" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ] - }, - { - "id": 636, - "node_type": 16, - "src": { - "id": 637, - "line": 244, - "column": 54, - "start": 9657, - "end": 9668, - "length": 12, - "parent_index": 630 - }, - "name": "errorMessage", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "overloaded_declarations": [], - "referenced_declaration": 636, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_function_$_t_function_", - "type_string": "function(function())" - } - ] - } - ], - "expression": { - "id": 638, - "node_type": 16, - "src": { - "id": 639, - "line": 244, - "column": 15, - "start": 9618, - "end": 9634, - "length": 17, - "parent_index": 630 - }, - "name": "_verifyCallResult", - "type_description": { - "type_identifier": "t_function_$_t_function_$$_t_function_$_t_function_$$_t_string", - "type_string": "function(function(),function(function()),string)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_function_$_t_function_", - "type_string": "function(function())" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$$_t_function_$_t_function_$$_t_string$", - "type_string": "function(function(),function(function()),string)" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 5, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 584, - "node_type": 43, - "src": { - "id": 585, - "line": 239, - "column": 32, - "start": 9289, - "end": 9349, - "length": 61, - "parent_index": 582 - }, - "parameters": [ - { - "id": 586, - "node_type": 44, - "src": { - "id": 587, - "line": 239, - "column": 32, - "start": 9289, - "end": 9302, - "length": 14, - "parent_index": 584 - }, - "scope": 582, - "name": "target", - "type_name": { - "id": 588, - "node_type": 30, - "src": { - "id": 589, - "line": 239, - "column": 32, - "start": 9289, - "end": 9295, - "length": 7, - "parent_index": 586 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 590, - "node_type": 44, - "src": { - "id": 591, - "line": 239, - "column": 48, - "start": 9305, - "end": 9321, - "length": 17, - "parent_index": 584 - }, - "scope": 582, - "name": "data", - "type_name": { - "id": 592, - "node_type": 30, - "src": { - "id": 593, - "line": 239, - "column": 48, - "start": 9305, - "end": 9309, - "length": 5, - "parent_index": 590 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 594, - "node_type": 44, - "src": { - "id": 595, - "line": 239, - "column": 67, - "start": 9324, - "end": 9349, - "length": 26, - "parent_index": 584 - }, - "scope": 582, - "name": "errorMessage", - "type_name": { - "id": 596, - "node_type": 30, - "src": { - "id": 597, - "line": 239, - "column": 67, - "start": 9324, - "end": 9329, - "length": 6, - "parent_index": 594 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "return_parameters": { - "id": 598, - "node_type": 43, - "src": { - "id": 599, - "line": 239, - "column": 118, - "start": 9375, - "end": 9386, - "length": 12, - "parent_index": 582 - }, - "parameters": [ - { - "id": 600, - "node_type": 44, - "src": { - "id": 601, - "line": 239, - "column": 118, - "start": 9375, - "end": 9386, - "length": 12, - "parent_index": 598 - }, - "scope": 582, - "name": "", - "type_name": { - "id": 602, - "node_type": 30, - "src": { - "id": 603, - "line": 239, - "column": 118, - "start": 9375, - "end": 9379, - "length": 5, - "parent_index": 600 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "scope": 259, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_string", - "type_string": "function(address,bytes,string)" - } - }, - { - "id": 641, - "name": "functionDelegateCall", - "node_type": 42, - "kind": 41, - "src": { - "id": 642, - "line": 253, - "column": 4, - "start": 9856, - "end": 10053, - "length": 198, - "parent_index": 259 - }, - "body": { - "id": 659, - "node_type": 46, - "kind": 0, - "src": { - "id": 660, - "line": 253, - "column": 101, - "start": 9953, - "end": 10053, - "length": 101, - "parent_index": 641 - }, - "implemented": true, - "statements": [ - { - "id": 661, - "node_type": 47, - "src": { - "id": 662, - "line": 254, - "column": 8, - "start": 9963, - "end": 10047, - "length": 85, - "parent_index": 641 - }, - "function_return_parameters": 641, - "expression": { - "id": 663, - "node_type": 24, - "kind": 24, - "src": { - "id": 664, - "line": 254, - "column": 15, - "start": 9970, - "end": 10046, - "length": 77, - "parent_index": 659 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: low-level delegate call failed\"" - } - ], - "arguments": [ - { - "id": 665, - "node_type": 16, - "src": { - "id": 666, - "line": 254, - "column": 36, - "start": 9991, - "end": 9996, - "length": 6, - "parent_index": 663 - }, - "name": "target", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 665, - "is_pure": false - }, - { - "id": 667, - "node_type": 16, - "src": { - "id": 668, - "line": 254, - "column": 44, - "start": 9999, - "end": 10002, - "length": 4, - "parent_index": 663 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 667, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - { - "id": 669, - "node_type": 17, - "kind": 50, - "value": "Address: low-level delegate call failed", - "hex_value": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "src": { - "id": 670, - "line": 254, - "column": 50, - "start": 10005, - "end": 10045, - "length": 41, - "parent_index": 663 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: low-level delegate call failed\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - } - ], - "expression": { - "id": 671, - "node_type": 16, - "src": { - "id": 672, - "line": 254, - "column": 15, - "start": 9970, - "end": 9989, - "length": 20, - "parent_index": 663 - }, - "name": "functionDelegateCall", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_string_literal", - "type_string": "function(address,bytes,literal_string \"Address: low-level delegate call failed\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: low-level delegate call failed\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$_t_string_literal$", - "type_string": "function(address,bytes,string memory)" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 643, - "node_type": 43, - "src": { - "id": 644, - "line": 253, - "column": 34, - "start": 9886, - "end": 9918, - "length": 33, - "parent_index": 641 - }, - "parameters": [ - { - "id": 645, - "node_type": 44, - "src": { - "id": 646, - "line": 253, - "column": 34, - "start": 9886, - "end": 9899, - "length": 14, - "parent_index": 643 - }, - "scope": 641, - "name": "target", - "type_name": { - "id": 647, - "node_type": 30, - "src": { - "id": 648, - "line": 253, - "column": 34, - "start": 9886, - "end": 9892, - "length": 7, - "parent_index": 645 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 649, - "node_type": 44, - "src": { - "id": 650, - "line": 253, - "column": 50, - "start": 9902, - "end": 9918, - "length": 17, - "parent_index": 643 - }, - "scope": 641, - "name": "data", - "type_name": { - "id": 651, - "node_type": 30, - "src": { - "id": 652, - "line": 253, - "column": 50, - "start": 9902, - "end": 9906, - "length": 5, - "parent_index": 649 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "return_parameters": { - "id": 653, - "node_type": 43, - "src": { - "id": 654, - "line": 253, - "column": 87, - "start": 9939, - "end": 9950, - "length": 12, - "parent_index": 641 - }, - "parameters": [ - { - "id": 655, - "node_type": 44, - "src": { - "id": 656, - "line": 253, - "column": 87, - "start": 9939, - "end": 9950, - "length": 12, - "parent_index": 653 - }, - "scope": 641, - "name": "", - "type_name": { - "id": 657, - "node_type": 30, - "src": { - "id": 658, - "line": 253, - "column": 87, - "start": 9939, - "end": 9943, - "length": 5, - "parent_index": 655 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "scope": 259, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes", - "type_string": "function(address,bytes)" - } - }, - { - "id": 674, - "name": "functionDelegateCall", - "node_type": 42, - "kind": 41, - "src": { - "id": 675, - "line": 263, - "column": 4, - "start": 10240, - "end": 10656, - "length": 417, - "parent_index": 259 - }, - "body": { - "id": 696, - "node_type": 46, - "kind": 0, - "src": { - "id": 697, - "line": 263, - "column": 129, - "start": 10365, - "end": 10656, - "length": 292, - "parent_index": 674 - }, - "implemented": true, - "statements": [ - { - "id": 698, - "node_type": 24, - "kind": 24, - "src": { - "id": 699, - "line": 264, - "column": 8, - "start": 10375, - "end": 10443, - "length": 69, - "parent_index": 696 - }, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: delegate call to non-contract\"" - } - ], - "arguments": [ - { - "id": 700, - "node_type": 24, - "kind": 24, - "src": { - "id": 701, - "line": 264, - "column": 16, - "start": 10383, - "end": 10400, - "length": 18, - "parent_index": 698 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 702, - "node_type": 16, - "src": { - "id": 703, - "line": 264, - "column": 27, - "start": 10394, - "end": 10399, - "length": 6, - "parent_index": 700 - }, - "name": "target", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 702, - "is_pure": false - } - ], - "expression": { - "id": 704, - "node_type": 16, - "src": { - "id": 705, - "line": 264, - "column": 16, - "start": 10383, - "end": 10392, - "length": 10, - "parent_index": 700 - }, - "name": "isContract", - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - }, - { - "id": 706, - "node_type": 17, - "kind": 50, - "value": "Address: delegate call to non-contract", - "hex_value": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374", - "src": { - "id": 707, - "line": 264, - "column": 36, - "start": 10403, - "end": 10442, - "length": 40, - "parent_index": 698 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: delegate call to non-contract\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - ] - } - ], - "expression": { - "id": 708, - "node_type": 16, - "src": { - "id": 709, - "line": 264, - "column": 8, - "start": 10375, - "end": 10381, - "length": 7, - "parent_index": 698 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$$_t_string_literal", - "type_string": "function(function(address),literal_string \"Address: delegate call to non-contract\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Address: delegate call to non-contract\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", - "type_string": "function(function(address),string memory)" - } - }, - { - "id": 710, - "node_type": 44, - "src": { - "id": 711, - "line": 267, - "column": 8, - "start": 10514, - "end": 10581, - "length": 68, - "parent_index": 696 - }, - "assignments": [], - "declarations": [], - "initial_value": { - "id": 712, - "node_type": 24, - "kind": 24, - "src": { - "id": 713, - "line": 267, - "column": 50, - "start": 10556, - "end": 10580, - "length": 25, - "parent_index": 710 - }, - "argument_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ], - "arguments": [ - { - "id": 714, - "node_type": 16, - "src": { - "id": 715, - "line": 267, - "column": 70, - "start": 10576, - "end": 10579, - "length": 4, - "parent_index": 712 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 714, - "is_pure": false - } - ], - "expression": { - "id": 716, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 717, - "line": 267, - "column": 50, - "start": 10556, - "end": 10574, - "length": 19, - "parent_index": 712 - }, - "expression": { - "id": 718, - "node_type": 16, - "src": { - "id": 719, - "line": 267, - "column": 50, - "start": 10556, - "end": 10561, - "length": 6, - "parent_index": 716 - }, - "name": "target", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 718, - "is_pure": false - }, - "member_name": "delegatecall", - "argument_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ], - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_bytes$", - "type_string": "function(bytes)" - } - } - }, - { - "id": 720, - "node_type": 47, - "src": { - "id": 721, - "line": 268, - "column": 8, - "start": 10591, - "end": 10650, - "length": 60, - "parent_index": 674 - }, - "function_return_parameters": 674, - "expression": { - "id": 722, - "node_type": 24, - "kind": 24, - "src": { - "id": 723, - "line": 268, - "column": 15, - "start": 10598, - "end": 10649, - "length": 52, - "parent_index": 696 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_function_$_t_function_", - "type_string": "function(function())" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ], - "arguments": [ - { - "id": 724, - "node_type": 16, - "src": { - "id": 725, - "line": 268, - "column": 33, - "start": 10616, - "end": 10622, - "length": 7, - "parent_index": 722 - }, - "name": "success", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - { - "id": 726, - "node_type": 16, - "src": { - "id": 727, - "line": 268, - "column": 42, - "start": 10625, - "end": 10634, - "length": 10, - "parent_index": 722 - }, - "name": "returndata", - "type_description": { - "type_identifier": "t_function_$_t_function_", - "type_string": "function(function())" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ] - }, - { - "id": 728, - "node_type": 16, - "src": { - "id": 729, - "line": 268, - "column": 54, - "start": 10637, - "end": 10648, - "length": 12, - "parent_index": 722 - }, - "name": "errorMessage", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "overloaded_declarations": [], - "referenced_declaration": 728, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_function_$_t_function_", - "type_string": "function(function())" - } - ] - } - ], - "expression": { - "id": 730, - "node_type": 16, - "src": { - "id": 731, - "line": 268, - "column": 15, - "start": 10598, - "end": 10614, - "length": 17, - "parent_index": 722 - }, - "name": "_verifyCallResult", - "type_description": { - "type_identifier": "t_function_$_t_function_$$_t_function_$_t_function_$$_t_string", - "type_string": "function(function(),function(function()),string)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_function_$_t_function_", - "type_string": "function(function())" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$$_t_function_$_t_function_$$_t_string$", - "type_string": "function(function(),function(function()),string)" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 676, - "node_type": 43, - "src": { - "id": 677, - "line": 263, - "column": 34, - "start": 10270, - "end": 10330, - "length": 61, - "parent_index": 674 - }, - "parameters": [ - { - "id": 678, - "node_type": 44, - "src": { - "id": 679, - "line": 263, - "column": 34, - "start": 10270, - "end": 10283, - "length": 14, - "parent_index": 676 - }, - "scope": 674, - "name": "target", - "type_name": { - "id": 680, - "node_type": 30, - "src": { - "id": 681, - "line": 263, - "column": 34, - "start": 10270, - "end": 10276, - "length": 7, - "parent_index": 678 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 682, - "node_type": 44, - "src": { - "id": 683, - "line": 263, - "column": 50, - "start": 10286, - "end": 10302, - "length": 17, - "parent_index": 676 - }, - "scope": 674, - "name": "data", - "type_name": { - "id": 684, - "node_type": 30, - "src": { - "id": 685, - "line": 263, - "column": 50, - "start": 10286, - "end": 10290, - "length": 5, - "parent_index": 682 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 686, - "node_type": 44, - "src": { - "id": 687, - "line": 263, - "column": 69, - "start": 10305, - "end": 10330, - "length": 26, - "parent_index": 676 - }, - "scope": 674, - "name": "errorMessage", - "type_name": { - "id": 688, - "node_type": 30, - "src": { - "id": 689, - "line": 263, - "column": 69, - "start": 10305, - "end": 10310, - "length": 6, - "parent_index": 686 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "return_parameters": { - "id": 690, - "node_type": 43, - "src": { - "id": 691, - "line": 263, - "column": 115, - "start": 10351, - "end": 10362, - "length": 12, - "parent_index": 674 - }, - "parameters": [ - { - "id": 692, - "node_type": 44, - "src": { - "id": 693, - "line": 263, - "column": 115, - "start": 10351, - "end": 10362, - "length": 12, - "parent_index": 690 - }, - "scope": 674, - "name": "", - "type_name": { - "id": 694, - "node_type": 30, - "src": { - "id": 695, - "line": 263, - "column": 115, - "start": 10351, - "end": 10355, - "length": 5, - "parent_index": 692 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "scope": 259, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_string", - "type_string": "function(address,bytes,string)" - } - }, - { - "id": 733, - "name": "_verifyCallResult", - "node_type": 42, - "kind": 41, - "src": { - "id": 734, - "line": 271, - "column": 4, - "start": 10663, - "end": 11387, - "length": 725, - "parent_index": 259 - }, - "body": { - "id": 755, - "node_type": 46, - "kind": 0, - "src": { - "id": 756, - "line": 271, - "column": 133, - "start": 10792, - "end": 11387, - "length": 596, - "parent_index": 733 - }, - "implemented": true, - "statements": [ - { - "id": 757, - "node_type": 48, - "src": { - "id": 758, - "line": 272, - "column": 0, - "start": 10802, - "end": 11381, - "length": 580, - "parent_index": 755 - }, - "condition": { - "id": 759, - "node_type": 16, - "src": { - "id": 760, - "line": 272, - "column": 12, - "start": 10806, - "end": 10812, - "length": 7, - "parent_index": 757 - }, - "name": "success", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 759, - "is_pure": false - }, - "body": { - "id": 761, - "node_type": 46, - "kind": 0, - "src": { - "id": 762, - "line": 272, - "column": 21, - "start": 10815, - "end": 10856, - "length": 42, - "parent_index": 733 - }, - "implemented": true, - "statements": [ - { - "id": 763, - "node_type": 47, - "src": { - "id": 764, - "line": 273, - "column": 12, - "start": 10829, - "end": 10846, - "length": 18, - "parent_index": 733 - }, - "function_return_parameters": 733, - "expression": { - "id": 765, - "node_type": 16, - "src": { - "id": 766, - "line": 273, - "column": 19, - "start": 10836, - "end": 10845, - "length": 10, - "parent_index": 761 - }, - "name": "returndata", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 765, - "is_pure": false - } - } - ] - } - } - ] - }, - "implemented": true, - "visibility": 2, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 735, - "node_type": 43, - "src": { - "id": 736, - "line": 271, - "column": 31, - "start": 10690, - "end": 10754, - "length": 65, - "parent_index": 733 - }, - "parameters": [ - { - "id": 737, - "node_type": 44, - "src": { - "id": 738, - "line": 271, - "column": 31, - "start": 10690, - "end": 10701, - "length": 12, - "parent_index": 735 - }, - "scope": 733, - "name": "success", - "type_name": { - "id": 739, - "node_type": 30, - "src": { - "id": 740, - "line": 271, - "column": 31, - "start": 10690, - "end": 10693, - "length": 4, - "parent_index": 737 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 741, - "node_type": 44, - "src": { - "id": 742, - "line": 271, - "column": 45, - "start": 10704, - "end": 10726, - "length": 23, - "parent_index": 735 - }, - "scope": 733, - "name": "returndata", - "type_name": { - "id": 743, - "node_type": 30, - "src": { - "id": 744, - "line": 271, - "column": 45, - "start": 10704, - "end": 10708, - "length": 5, - "parent_index": 741 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 745, - "node_type": 44, - "src": { - "id": 746, - "line": 271, - "column": 70, - "start": 10729, - "end": 10754, - "length": 26, - "parent_index": 735 - }, - "scope": 733, - "name": "errorMessage", - "type_name": { - "id": 747, - "node_type": 30, - "src": { - "id": 748, - "line": 271, - "column": 70, - "start": 10729, - "end": 10734, - "length": 6, - "parent_index": 745 - }, - "name": "string", - "type_description": { - "type_identifier": "t_string", - "type_string": "string" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_string", - "type_string": "string" - } - ] - }, - "return_parameters": { - "id": 749, - "node_type": 43, - "src": { - "id": 750, - "line": 271, - "column": 119, - "start": 10778, - "end": 10789, - "length": 12, - "parent_index": 733 - }, - "parameters": [ - { - "id": 751, - "node_type": 44, - "src": { - "id": 752, - "line": 271, - "column": 119, - "start": 10778, - "end": 10789, - "length": 12, - "parent_index": 749 - }, - "scope": 733, - "name": "", - "type_name": { - "id": 753, - "node_type": 30, - "src": { - "id": 754, - "line": 271, - "column": 119, - "start": 10778, - "end": 10782, - "length": 5, - "parent_index": 751 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "scope": 259, - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_bytes$$_t_string", - "type_string": "function(bool,bytes,string)" - } - } - ], - "linearized_base_contracts": [ - 259 - ], - "base_contracts": [], - "contract_dependencies": [], - "scope": 251 - } - ], - "src": { - "id": 252, - "line": 108, - "column": 0, - "start": 3706, - "end": 11389, - "length": 7684, - "parent_index": 118 - } + "id": 251, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 251, + "name": "Address", + "absolute_path": "Address.sol" + } + ], + "absolute_path": "Address.sol", + "name": "Address", + "node_type": 1, + "nodes": [ + { + "id": 257, + "node_type": 10, + "src": { + "id": 258, + "line": 103, + "column": 0, + "start": 3613, + "end": 3635, + "length": 23, + "parent_index": 251 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 259, + "name": "Address", + "node_type": 35, + "src": { + "id": 0, + "line": 108, + "column": 0, + "start": 3706, + "end": 11389, + "length": 7684, + "parent_index": 251 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 261, + "name": "isContract", + "node_type": 42, + "kind": 41, + "src": { + "id": 262, + "line": 126, + "column": 4, + "start": 4298, + "end": 4710, + "length": 413, + "parent_index": 259 + }, + "body": { + "id": 275, + "node_type": 46, + "kind": 0, + "src": { + "id": 276, + "line": 126, + "column": 70, + "start": 4364, + "end": 4710, + "length": 347, + "parent_index": 261 + }, + "implemented": true, + "statements": [ + { + "id": 277, + "node_type": 44, + "src": { + "id": 278, + "line": 131, + "column": 8, + "start": 4561, + "end": 4573, + "length": 13, + "parent_index": 275 + }, + "assignments": [ + 279 + ], + "declarations": [ + { + "is_constant": false, + "id": 279, + "state_mutability": 1, + "name": "size", + "node_type": 44, + "scope": 275, + "src": { + "id": 280, + "line": 131, + "column": 8, + "start": 4561, + "end": 4572, + "length": 12, + "parent_index": 277 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 281, + "node_type": 30, + "src": { + "id": 282, + "line": 131, + "column": 8, + "start": 4561, + "end": 4567, + "length": 7, + "parent_index": 279 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ] + }, + { + "id": 283, + "node_type": 89, + "src": { + "id": 284, + "line": 133, + "column": 8, + "start": 4639, + "end": 4679, + "length": 41, + "parent_index": 275 + }, + "body": { + "id": 286, + "node_type": 90, + "kind": 0, + "src": { + "id": 284, + "line": 133, + "column": 8, + "start": 4639, + "end": 4679, + "length": 41, + "parent_index": 283 + }, + "implemented": false, + "statements": [ + { + "id": 285, + "node_type": 91, + "src": { + "id": 287, + "line": 133, + "column": 19, + "start": 4650, + "end": 4677, + "length": 28, + "parent_index": 283 + }, + "body": [] + } + ] + } + }, + { + "id": 288, + "node_type": 47, + "src": { + "id": 289, + "line": 134, + "column": 8, + "start": 4689, + "end": 4704, + "length": 16, + "parent_index": 261 + }, + "function_return_parameters": 261, + "expression": { + "id": 290, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 291, + "line": 134, + "column": 15, + "start": 4696, + "end": 4703, + "length": 8, + "parent_index": 275 + }, + "operator": 7, + "left_expression": { + "id": 292, + "node_type": 16, + "src": { + "id": 293, + "line": 134, + "column": 15, + "start": 4696, + "end": 4699, + "length": 4, + "parent_index": 290 + }, + "name": "size", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 277, + "is_pure": false + }, + "right_expression": { + "id": 294, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 295, + "line": 134, + "column": 22, + "start": 4703, + "end": 4703, + "length": 1, + "parent_index": 290 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 263, + "node_type": 43, + "src": { + "id": 264, + "line": 126, + "column": 24, + "start": 4318, + "end": 4332, + "length": 15, + "parent_index": 261 + }, + "parameters": [ + { + "id": 265, + "node_type": 44, + "src": { + "id": 266, + "line": 126, + "column": 24, + "start": 4318, + "end": 4332, + "length": 15, + "parent_index": 263 + }, + "scope": 261, + "name": "account", + "type_name": { + "id": 267, + "node_type": 30, + "src": { + "id": 268, + "line": 126, + "column": 24, + "start": 4318, + "end": 4324, + "length": 7, + "parent_index": 265 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 269, + "node_type": 43, + "src": { + "id": 270, + "line": 126, + "column": 64, + "start": 4358, + "end": 4361, + "length": 4, + "parent_index": 261 + }, + "parameters": [ + { + "id": 271, + "node_type": 44, + "src": { + "id": 272, + "line": 126, + "column": 64, + "start": 4358, + "end": 4361, + "length": 4, + "parent_index": 269 + }, + "scope": 261, + "name": "", + "type_name": { + "id": 273, + "node_type": 30, + "src": { + "id": 274, + "line": 126, + "column": 64, + "start": 4358, + "end": 4361, + "length": 4, + "parent_index": 271 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "scope": 259, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 297, + "name": "sendValue", + "node_type": 42, + "kind": 41, + "src": { + "id": 298, + "line": 153, + "column": 4, + "start": 5628, + "end": 6018, + "length": 391, + "parent_index": 259 + }, + "body": { + "id": 310, + "node_type": 46, + "kind": 0, + "src": { + "id": 311, + "line": 153, + "column": 75, + "start": 5699, + "end": 6018, + "length": 320, + "parent_index": 297 + }, + "implemented": true, + "statements": [ + { + "id": 312, + "node_type": 24, + "kind": 24, + "src": { + "id": 313, + "line": 154, + "column": 8, + "start": 5709, + "end": 5781, + "length": 73, + "parent_index": 310 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: insufficient balance\"" + } + ], + "arguments": [ + { + "id": 316, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 317, + "line": 154, + "column": 16, + "start": 5717, + "end": 5747, + "length": 31, + "parent_index": 312 + }, + "operator": 8, + "left_expression": { + "id": 318, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 319, + "line": 154, + "column": 16, + "start": 5717, + "end": 5737, + "length": 21, + "parent_index": 316 + }, + "expression": { + "id": 320, + "node_type": 24, + "kind": 24, + "src": { + "id": 321, + "line": 154, + "column": 16, + "start": 5717, + "end": 5729, + "length": 13, + "parent_index": 318 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + } + ], + "arguments": [ + { + "id": 326, + "node_type": 16, + "src": { + "id": 327, + "line": 154, + "column": 24, + "start": 5725, + "end": 5728, + "length": 4, + "parent_index": 320 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 322, + "node_type": 16, + "src": { + "id": 323, + "line": 154, + "column": 16, + "start": 5717, + "end": 5723, + "length": 7, + "parent_index": 320 + }, + "name": "address", + "type_name": { + "id": 324, + "node_type": 30, + "src": { + "id": 325, + "line": 154, + "column": 16, + "start": 5717, + "end": 5723, + "length": 7, + "parent_index": 322 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "member_name": "balance", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "right_expression": { + "id": 328, + "node_type": 16, + "src": { + "id": 329, + "line": 154, + "column": 41, + "start": 5742, + "end": 5747, + "length": 6, + "parent_index": 316 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 328, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 330, + "node_type": 17, + "kind": 50, + "value": "Address: insufficient balance", + "hex_value": "416464726573733a20696e73756666696369656e742062616c616e6365", + "src": { + "id": 331, + "line": 154, + "column": 49, + "start": 5750, + "end": 5780, + "length": 31, + "parent_index": 312 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: insufficient balance\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 314, + "node_type": 16, + "src": { + "id": 315, + "line": 154, + "column": 8, + "start": 5709, + "end": 5715, + "length": 7, + "parent_index": 312 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 332, + "node_type": 44, + "src": { + "id": 333, + "line": 157, + "column": 8, + "start": 5870, + "end": 5924, + "length": 55, + "parent_index": 310 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 334, + "node_type": 24, + "kind": 24, + "src": { + "id": 335, + "line": 157, + "column": 27, + "start": 5889, + "end": 5923, + "length": 35, + "parent_index": 332 + }, + "argument_types": [ + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"\"" + } + ], + "arguments": [ + { + "id": 342, + "node_type": 17, + "kind": 50, + "src": { + "id": 343, + "line": 157, + "column": 59, + "start": 5921, + "end": 5922, + "length": 2, + "parent_index": 334 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 336, + "node_type": 93, + "kind": 93, + "src": { + "id": 337, + "line": 157, + "column": 27, + "start": 5889, + "end": 5919, + "length": 31, + "parent_index": 334 + }, + "expression": { + "id": 338, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 339, + "line": 157, + "column": 27, + "start": 5889, + "end": 5902, + "length": 14, + "parent_index": 336 + }, + "expression": { + "id": 340, + "node_type": 16, + "src": { + "id": 341, + "line": 157, + "column": 27, + "start": 5889, + "end": 5897, + "length": 9, + "parent_index": 338 + }, + "name": "recipient", + "type_description": { + "type_identifier": "t_address_payable", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 340, + "is_pure": false + }, + "member_name": "call", + "argument_types": [], + "type_description": { + "type_identifier": "t_address_payable", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_address_payable", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_function__t_string_literal$", + "type_string": "function(string memory)" + } + } + }, + { + "id": 344, + "node_type": 24, + "kind": 24, + "src": { + "id": 345, + "line": 158, + "column": 8, + "start": 5934, + "end": 6011, + "length": 78, + "parent_index": 310 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: unable to send value, recipient may have reverted\"" + } + ], + "arguments": [ + { + "id": 348, + "node_type": 16, + "src": { + "id": 349, + "line": 158, + "column": 16, + "start": 5942, + "end": 5948, + "length": 7, + "parent_index": 344 + }, + "name": "success", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 350, + "node_type": 17, + "kind": 50, + "value": "Address: unable to send value, recipient may have reverted", + "hex_value": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", + "src": { + "id": 351, + "line": 158, + "column": 25, + "start": 5951, + "end": 6010, + "length": 60, + "parent_index": 344 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: unable to send value, recipient may have reverted\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + } + ], + "expression": { + "id": 346, + "node_type": 16, + "src": { + "id": 347, + "line": 158, + "column": 8, + "start": 5934, + "end": 5940, + "length": 7, + "parent_index": 344 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_string_literal$", + "type_string": "function(function(),string memory)" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 299, + "node_type": 43, + "src": { + "id": 300, + "line": 153, + "column": 23, + "start": 5647, + "end": 5687, + "length": 41, + "parent_index": 297 + }, + "parameters": [ + { + "id": 301, + "node_type": 44, + "src": { + "id": 302, + "line": 153, + "column": 23, + "start": 5647, + "end": 5671, + "length": 25, + "parent_index": 299 + }, + "scope": 297, + "name": "recipient", + "type_name": { + "id": 303, + "node_type": 30, + "src": { + "id": 304, + "line": 153, + "column": 23, + "start": 5647, + "end": 5661, + "length": 15, + "parent_index": 301 + }, + "name": "addresspayable", + "type_description": { + "type_identifier": "t_address_payable", + "type_string": "address" + }, + "state_mutability": 3, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 3 + }, + { + "id": 305, + "node_type": 44, + "src": { + "id": 306, + "line": 153, + "column": 50, + "start": 5674, + "end": 5687, + "length": 14, + "parent_index": 299 + }, + "scope": 297, + "name": "amount", + "type_name": { + "id": 307, + "node_type": 30, + "src": { + "id": 308, + "line": 153, + "column": 50, + "start": 5674, + "end": 5680, + "length": 7, + "parent_index": 305 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address_payable", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 309, + "node_type": 43, + "src": { + "id": 298, + "line": 153, + "column": 4, + "start": 5628, + "end": 6018, + "length": 391, + "parent_index": 297 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 259, + "type_description": { + "type_identifier": "t_function_$_t_address_payable$_t_uint256$", + "type_string": "function(address,uint256)" + } + }, + { + "id": 353, + "name": "functionCall", + "node_type": 42, + "kind": 41, + "src": { + "id": 354, + "line": 179, + "column": 4, + "start": 6760, + "end": 6930, + "length": 171, + "parent_index": 259 + }, + "body": { + "id": 371, + "node_type": 46, + "kind": 0, + "src": { + "id": 372, + "line": 179, + "column": 93, + "start": 6849, + "end": 6930, + "length": 82, + "parent_index": 353 + }, + "implemented": true, + "statements": [ + { + "id": 373, + "node_type": 47, + "src": { + "id": 374, + "line": 180, + "column": 6, + "start": 6857, + "end": 6924, + "length": 68, + "parent_index": 353 + }, + "function_return_parameters": 353, + "expression": { + "id": 375, + "node_type": 24, + "kind": 24, + "src": { + "id": 376, + "line": 180, + "column": 13, + "start": 6864, + "end": 6923, + "length": 60, + "parent_index": 371 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: low-level call failed\"" + } + ], + "arguments": [ + { + "id": 379, + "node_type": 16, + "src": { + "id": 380, + "line": 180, + "column": 26, + "start": 6877, + "end": 6882, + "length": 6, + "parent_index": 375 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 379, + "is_pure": false + }, + { + "id": 381, + "node_type": 16, + "src": { + "id": 382, + "line": 180, + "column": 34, + "start": 6885, + "end": 6888, + "length": 4, + "parent_index": 375 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 381, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 383, + "node_type": 17, + "kind": 50, + "value": "Address: low-level call failed", + "hex_value": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", + "src": { + "id": 384, + "line": 180, + "column": 40, + "start": 6891, + "end": 6922, + "length": 32, + "parent_index": 375 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: low-level call failed\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + } + ], + "expression": { + "id": 377, + "node_type": 16, + "src": { + "id": 378, + "line": 180, + "column": 13, + "start": 6864, + "end": 6875, + "length": 12, + "parent_index": 375 + }, + "name": "functionCall", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "type_string": "function(address,bytes,string memory)" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 355, + "node_type": 43, + "src": { + "id": 356, + "line": 179, + "column": 26, + "start": 6782, + "end": 6814, + "length": 33, + "parent_index": 353 + }, + "parameters": [ + { + "id": 357, + "node_type": 44, + "src": { + "id": 358, + "line": 179, + "column": 26, + "start": 6782, + "end": 6795, + "length": 14, + "parent_index": 355 + }, + "scope": 353, + "name": "target", + "type_name": { + "id": 359, + "node_type": 30, + "src": { + "id": 360, + "line": 179, + "column": 26, + "start": 6782, + "end": 6788, + "length": 7, + "parent_index": 357 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 361, + "node_type": 44, + "src": { + "id": 362, + "line": 179, + "column": 42, + "start": 6798, + "end": 6814, + "length": 17, + "parent_index": 355 + }, + "scope": 353, + "name": "data", + "type_name": { + "id": 363, + "node_type": 30, + "src": { + "id": 364, + "line": 179, + "column": 42, + "start": 6798, + "end": 6802, + "length": 5, + "parent_index": 361 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 365, + "node_type": 43, + "src": { + "id": 366, + "line": 179, + "column": 79, + "start": 6835, + "end": 6846, + "length": 12, + "parent_index": 353 + }, + "parameters": [ + { + "id": 367, + "node_type": 44, + "src": { + "id": 368, + "line": 179, + "column": 79, + "start": 6835, + "end": 6846, + "length": 12, + "parent_index": 365 + }, + "scope": 353, + "name": "", + "type_name": { + "id": 369, + "node_type": 30, + "src": { + "id": 370, + "line": 179, + "column": 79, + "start": 6835, + "end": 6839, + "length": 5, + "parent_index": 367 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 259, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$", + "type_string": "function(address,bytes)" + } + }, + { + "id": 386, + "name": "functionCall", + "node_type": 42, + "kind": 41, + "src": { + "id": 387, + "line": 189, + "column": 4, + "start": 7153, + "end": 7345, + "length": 193, + "parent_index": 259 + }, + "body": { + "id": 408, + "node_type": 46, + "kind": 0, + "src": { + "id": 409, + "line": 189, + "column": 121, + "start": 7270, + "end": 7345, + "length": 76, + "parent_index": 386 + }, + "implemented": true, + "statements": [ + { + "id": 410, + "node_type": 47, + "src": { + "id": 411, + "line": 190, + "column": 8, + "start": 7280, + "end": 7339, + "length": 60, + "parent_index": 386 + }, + "function_return_parameters": 386, + "expression": { + "id": 412, + "node_type": 24, + "kind": 24, + "src": { + "id": 413, + "line": 190, + "column": 15, + "start": 7287, + "end": 7338, + "length": 52, + "parent_index": 408 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ], + "arguments": [ + { + "id": 416, + "node_type": 16, + "src": { + "id": 417, + "line": 190, + "column": 37, + "start": 7309, + "end": 7314, + "length": 6, + "parent_index": 412 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 416, + "is_pure": false + }, + { + "id": 418, + "node_type": 16, + "src": { + "id": 419, + "line": 190, + "column": 45, + "start": 7317, + "end": 7320, + "length": 4, + "parent_index": 412 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 418, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 420, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 421, + "line": 190, + "column": 51, + "start": 7323, + "end": 7323, + "length": 1, + "parent_index": 412 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + { + "id": 422, + "node_type": 16, + "src": { + "id": 423, + "line": 190, + "column": 54, + "start": 7326, + "end": 7337, + "length": 12, + "parent_index": 412 + }, + "name": "errorMessage", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 422, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ] + } + ], + "expression": { + "id": 414, + "node_type": 16, + "src": { + "id": 415, + "line": 190, + "column": 15, + "start": 7287, + "end": 7307, + "length": 21, + "parent_index": 412 + }, + "name": "functionCallWithValue", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_rational_0_by_1$_t_string$", + "type_string": "function(address,bytes,int_const 0,string)" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 388, + "node_type": 43, + "src": { + "id": 389, + "line": 189, + "column": 26, + "start": 7175, + "end": 7235, + "length": 61, + "parent_index": 386 + }, + "parameters": [ + { + "id": 390, + "node_type": 44, + "src": { + "id": 391, + "line": 189, + "column": 26, + "start": 7175, + "end": 7188, + "length": 14, + "parent_index": 388 + }, + "scope": 386, + "name": "target", + "type_name": { + "id": 392, + "node_type": 30, + "src": { + "id": 393, + "line": 189, + "column": 26, + "start": 7175, + "end": 7181, + "length": 7, + "parent_index": 390 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 394, + "node_type": 44, + "src": { + "id": 395, + "line": 189, + "column": 42, + "start": 7191, + "end": 7207, + "length": 17, + "parent_index": 388 + }, + "scope": 386, + "name": "data", + "type_name": { + "id": 396, + "node_type": 30, + "src": { + "id": 397, + "line": 189, + "column": 42, + "start": 7191, + "end": 7195, + "length": 5, + "parent_index": 394 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 398, + "node_type": 44, + "src": { + "id": 399, + "line": 189, + "column": 61, + "start": 7210, + "end": 7235, + "length": 26, + "parent_index": 388 + }, + "scope": 386, + "name": "errorMessage", + "type_name": { + "id": 400, + "node_type": 30, + "src": { + "id": 401, + "line": 189, + "column": 61, + "start": 7210, + "end": 7215, + "length": 6, + "parent_index": 398 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 402, + "node_type": 43, + "src": { + "id": 403, + "line": 189, + "column": 107, + "start": 7256, + "end": 7267, + "length": 12, + "parent_index": 386 + }, + "parameters": [ + { + "id": 404, + "node_type": 44, + "src": { + "id": 405, + "line": 189, + "column": 107, + "start": 7256, + "end": 7267, + "length": 12, + "parent_index": 402 + }, + "scope": 386, + "name": "", + "type_name": { + "id": 406, + "node_type": 30, + "src": { + "id": 407, + "line": 189, + "column": 107, + "start": 7256, + "end": 7260, + "length": 5, + "parent_index": 404 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 259, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_string$", + "type_string": "function(address,bytes,string)" + } + }, + { + "id": 425, + "name": "functionCallWithValue", + "node_type": 42, + "kind": 41, + "src": { + "id": 426, + "line": 204, + "column": 4, + "start": 7708, + "end": 7931, + "length": 224, + "parent_index": 259 + }, + "body": { + "id": 447, + "node_type": 46, + "kind": 0, + "src": { + "id": 448, + "line": 204, + "column": 117, + "start": 7821, + "end": 7931, + "length": 111, + "parent_index": 425 + }, + "implemented": true, + "statements": [ + { + "id": 449, + "node_type": 47, + "src": { + "id": 450, + "line": 205, + "column": 8, + "start": 7831, + "end": 7925, + "length": 95, + "parent_index": 425 + }, + "function_return_parameters": 425, + "expression": { + "id": 451, + "node_type": 24, + "kind": 24, + "src": { + "id": 452, + "line": 205, + "column": 15, + "start": 7838, + "end": 7924, + "length": 87, + "parent_index": 447 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: low-level call with value failed\"" + } + ], + "arguments": [ + { + "id": 455, + "node_type": 16, + "src": { + "id": 456, + "line": 205, + "column": 37, + "start": 7860, + "end": 7865, + "length": 6, + "parent_index": 451 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 455, + "is_pure": false + }, + { + "id": 457, + "node_type": 16, + "src": { + "id": 458, + "line": 205, + "column": 45, + "start": 7868, + "end": 7871, + "length": 4, + "parent_index": 451 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 457, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 459, + "node_type": 16, + "src": { + "id": 460, + "line": 205, + "column": 51, + "start": 7874, + "end": 7878, + "length": 5, + "parent_index": 451 + }, + "name": "value", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 459, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + { + "id": 461, + "node_type": 17, + "kind": 50, + "value": "Address: low-level call with value failed", + "hex_value": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", + "src": { + "id": 462, + "line": 205, + "column": 58, + "start": 7881, + "end": 7923, + "length": 43, + "parent_index": 451 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: low-level call with value failed\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + } + ], + "expression": { + "id": 453, + "node_type": 16, + "src": { + "id": 454, + "line": 205, + "column": 15, + "start": 7838, + "end": 7858, + "length": 21, + "parent_index": 451 + }, + "name": "functionCallWithValue", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_uint256$_t_string_literal$", + "type_string": "function(address,bytes,uint256,string memory)" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 427, + "node_type": 43, + "src": { + "id": 428, + "line": 204, + "column": 35, + "start": 7739, + "end": 7786, + "length": 48, + "parent_index": 425 + }, + "parameters": [ + { + "id": 429, + "node_type": 44, + "src": { + "id": 430, + "line": 204, + "column": 35, + "start": 7739, + "end": 7752, + "length": 14, + "parent_index": 427 + }, + "scope": 425, + "name": "target", + "type_name": { + "id": 431, + "node_type": 30, + "src": { + "id": 432, + "line": 204, + "column": 35, + "start": 7739, + "end": 7745, + "length": 7, + "parent_index": 429 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 433, + "node_type": 44, + "src": { + "id": 434, + "line": 204, + "column": 51, + "start": 7755, + "end": 7771, + "length": 17, + "parent_index": 427 + }, + "scope": 425, + "name": "data", + "type_name": { + "id": 435, + "node_type": 30, + "src": { + "id": 436, + "line": 204, + "column": 51, + "start": 7755, + "end": 7759, + "length": 5, + "parent_index": 433 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 437, + "node_type": 44, + "src": { + "id": 438, + "line": 204, + "column": 70, + "start": 7774, + "end": 7786, + "length": 13, + "parent_index": 427 + }, + "scope": 425, + "name": "value", + "type_name": { + "id": 439, + "node_type": 30, + "src": { + "id": 440, + "line": 204, + "column": 70, + "start": 7774, + "end": 7780, + "length": 7, + "parent_index": 437 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 441, + "node_type": 43, + "src": { + "id": 442, + "line": 204, + "column": 103, + "start": 7807, + "end": 7818, + "length": 12, + "parent_index": 425 + }, + "parameters": [ + { + "id": 443, + "node_type": 44, + "src": { + "id": 444, + "line": 204, + "column": 103, + "start": 7807, + "end": 7818, + "length": 12, + "parent_index": 441 + }, + "scope": 425, + "name": "", + "type_name": { + "id": 445, + "node_type": 30, + "src": { + "id": 446, + "line": 204, + "column": 103, + "start": 7807, + "end": 7811, + "length": 5, + "parent_index": 443 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 259, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_uint256$", + "type_string": "function(address,bytes,uint256)" + } + }, + { + "id": 464, + "name": "functionCallWithValue", + "node_type": 42, + "kind": 41, + "src": { + "id": 465, + "line": 214, + "column": 4, + "start": 8180, + "end": 8702, + "length": 523, + "parent_index": 259 + }, + "body": { + "id": 490, + "node_type": 46, + "kind": 0, + "src": { + "id": 491, + "line": 214, + "column": 145, + "start": 8321, + "end": 8702, + "length": 382, + "parent_index": 464 + }, + "implemented": true, + "statements": [ + { + "id": 492, + "node_type": 24, + "kind": 24, + "src": { + "id": 493, + "line": 215, + "column": 8, + "start": 8331, + "end": 8411, + "length": 81, + "parent_index": 490 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: insufficient balance for call\"" + } + ], + "arguments": [ + { + "id": 496, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 497, + "line": 215, + "column": 16, + "start": 8339, + "end": 8368, + "length": 30, + "parent_index": 492 + }, + "operator": 8, + "left_expression": { + "id": 498, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 499, + "line": 215, + "column": 16, + "start": 8339, + "end": 8359, + "length": 21, + "parent_index": 496 + }, + "expression": { + "id": 500, + "node_type": 24, + "kind": 24, + "src": { + "id": 501, + "line": 215, + "column": 16, + "start": 8339, + "end": 8351, + "length": 13, + "parent_index": 498 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + } + ], + "arguments": [ + { + "id": 506, + "node_type": 16, + "src": { + "id": 507, + "line": 215, + "column": 24, + "start": 8347, + "end": 8350, + "length": 4, + "parent_index": 500 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 502, + "node_type": 16, + "src": { + "id": 503, + "line": 215, + "column": 16, + "start": 8339, + "end": 8345, + "length": 7, + "parent_index": 500 + }, + "name": "address", + "type_name": { + "id": 504, + "node_type": 30, + "src": { + "id": 505, + "line": 215, + "column": 16, + "start": 8339, + "end": 8345, + "length": 7, + "parent_index": 502 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "member_name": "balance", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "right_expression": { + "id": 508, + "node_type": 16, + "src": { + "id": 509, + "line": 215, + "column": 41, + "start": 8364, + "end": 8368, + "length": 5, + "parent_index": 496 + }, + "name": "value", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 508, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 510, + "node_type": 17, + "kind": 50, + "value": "Address: insufficient balance for call", + "hex_value": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", + "src": { + "id": 511, + "line": 215, + "column": 48, + "start": 8371, + "end": 8410, + "length": 40, + "parent_index": 492 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: insufficient balance for call\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 494, + "node_type": 16, + "src": { + "id": 495, + "line": 215, + "column": 8, + "start": 8331, + "end": 8337, + "length": 7, + "parent_index": 492 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 512, + "node_type": 24, + "kind": 24, + "src": { + "id": 513, + "line": 216, + "column": 8, + "start": 8422, + "end": 8481, + "length": 60, + "parent_index": 490 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: call to non-contract\"" + } + ], + "arguments": [ + { + "id": 516, + "node_type": 24, + "kind": 24, + "src": { + "id": 517, + "line": 216, + "column": 16, + "start": 8430, + "end": 8447, + "length": 18, + "parent_index": 512 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 520, + "node_type": 16, + "src": { + "id": 521, + "line": 216, + "column": 27, + "start": 8441, + "end": 8446, + "length": 6, + "parent_index": 516 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 520, + "is_pure": false + } + ], + "expression": { + "id": 518, + "node_type": 16, + "src": { + "id": 519, + "line": 216, + "column": 16, + "start": 8430, + "end": 8439, + "length": 10, + "parent_index": 516 + }, + "name": "isContract", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 522, + "node_type": 17, + "kind": 50, + "value": "Address: call to non-contract", + "hex_value": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", + "src": { + "id": 523, + "line": 216, + "column": 36, + "start": 8450, + "end": 8480, + "length": 31, + "parent_index": 512 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: call to non-contract\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ] + } + ], + "expression": { + "id": 514, + "node_type": 16, + "src": { + "id": 515, + "line": 216, + "column": 8, + "start": 8422, + "end": 8428, + "length": 7, + "parent_index": 512 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "type_string": "function(function(address),string memory)" + } + }, + { + "id": 524, + "node_type": 44, + "src": { + "id": 525, + "line": 219, + "column": 8, + "start": 8552, + "end": 8627, + "length": 76, + "parent_index": 490 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 526, + "node_type": 24, + "kind": 24, + "src": { + "id": 527, + "line": 219, + "column": 50, + "start": 8594, + "end": 8626, + "length": 33, + "parent_index": 524 + }, + "argument_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ], + "arguments": [ + { + "id": 534, + "node_type": 16, + "src": { + "id": 535, + "line": 219, + "column": 78, + "start": 8622, + "end": 8625, + "length": 4, + "parent_index": 526 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 534, + "is_pure": false + } + ], + "expression": { + "id": 528, + "node_type": 93, + "kind": 93, + "src": { + "id": 529, + "line": 219, + "column": 50, + "start": 8594, + "end": 8620, + "length": 27, + "parent_index": 526 + }, + "expression": { + "id": 530, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 531, + "line": 219, + "column": 50, + "start": 8594, + "end": 8604, + "length": 11, + "parent_index": 528 + }, + "expression": { + "id": 532, + "node_type": 16, + "src": { + "id": 533, + "line": 219, + "column": 50, + "start": 8594, + "end": 8599, + "length": 6, + "parent_index": 530 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 532, + "is_pure": false + }, + "member_name": "call", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + } + } + }, + { + "id": 536, + "node_type": 47, + "src": { + "id": 537, + "line": 220, + "column": 8, + "start": 8637, + "end": 8696, + "length": 60, + "parent_index": 464 + }, + "function_return_parameters": 464, + "expression": { + "id": 538, + "node_type": 24, + "kind": 24, + "src": { + "id": 539, + "line": 220, + "column": 15, + "start": 8644, + "end": 8695, + "length": 52, + "parent_index": 490 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ], + "arguments": [ + { + "id": 542, + "node_type": 16, + "src": { + "id": 543, + "line": 220, + "column": 33, + "start": 8662, + "end": 8668, + "length": 7, + "parent_index": 538 + }, + "name": "success", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 544, + "node_type": 16, + "src": { + "id": 545, + "line": 220, + "column": 42, + "start": 8671, + "end": 8680, + "length": 10, + "parent_index": 538 + }, + "name": "returndata", + "type_description": { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + }, + { + "id": 546, + "node_type": 16, + "src": { + "id": 547, + "line": 220, + "column": 54, + "start": 8683, + "end": 8694, + "length": 12, + "parent_index": 538 + }, + "name": "errorMessage", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 546, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + } + ] + } + ], + "expression": { + "id": 540, + "node_type": 16, + "src": { + "id": 541, + "line": 220, + "column": 15, + "start": 8644, + "end": 8660, + "length": 17, + "parent_index": 538 + }, + "name": "_verifyCallResult", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "type_string": "function(function(),function(function()),string)" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 466, + "node_type": 43, + "src": { + "id": 467, + "line": 214, + "column": 35, + "start": 8211, + "end": 8286, + "length": 76, + "parent_index": 464 + }, + "parameters": [ + { + "id": 468, + "node_type": 44, + "src": { + "id": 469, + "line": 214, + "column": 35, + "start": 8211, + "end": 8224, + "length": 14, + "parent_index": 466 + }, + "scope": 464, + "name": "target", + "type_name": { + "id": 470, + "node_type": 30, + "src": { + "id": 471, + "line": 214, + "column": 35, + "start": 8211, + "end": 8217, + "length": 7, + "parent_index": 468 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 472, + "node_type": 44, + "src": { + "id": 473, + "line": 214, + "column": 51, + "start": 8227, + "end": 8243, + "length": 17, + "parent_index": 466 + }, + "scope": 464, + "name": "data", + "type_name": { + "id": 474, + "node_type": 30, + "src": { + "id": 475, + "line": 214, + "column": 51, + "start": 8227, + "end": 8231, + "length": 5, + "parent_index": 472 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 476, + "node_type": 44, + "src": { + "id": 477, + "line": 214, + "column": 70, + "start": 8246, + "end": 8258, + "length": 13, + "parent_index": 466 + }, + "scope": 464, + "name": "value", + "type_name": { + "id": 478, + "node_type": 30, + "src": { + "id": 479, + "line": 214, + "column": 70, + "start": 8246, + "end": 8252, + "length": 7, + "parent_index": 476 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 480, + "node_type": 44, + "src": { + "id": 481, + "line": 214, + "column": 85, + "start": 8261, + "end": 8286, + "length": 26, + "parent_index": 466 + }, + "scope": 464, + "name": "errorMessage", + "type_name": { + "id": 482, + "node_type": 30, + "src": { + "id": 483, + "line": 214, + "column": 85, + "start": 8261, + "end": 8266, + "length": 6, + "parent_index": 480 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 484, + "node_type": 43, + "src": { + "id": 485, + "line": 214, + "column": 131, + "start": 8307, + "end": 8318, + "length": 12, + "parent_index": 464 + }, + "parameters": [ + { + "id": 486, + "node_type": 44, + "src": { + "id": 487, + "line": 214, + "column": 131, + "start": 8307, + "end": 8318, + "length": 12, + "parent_index": 484 + }, + "scope": 464, + "name": "", + "type_name": { + "id": 488, + "node_type": 30, + "src": { + "id": 489, + "line": 214, + "column": 131, + "start": 8307, + "end": 8311, + "length": 5, + "parent_index": 486 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 259, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_uint256$_t_string$", + "type_string": "function(address,bytes,uint256,string)" + } + }, + { + "id": 549, + "name": "functionStaticCall", + "node_type": 42, + "kind": 41, + "src": { + "id": 550, + "line": 229, + "column": 4, + "start": 8880, + "end": 9076, + "length": 197, + "parent_index": 259 + }, + "body": { + "id": 567, + "node_type": 46, + "kind": 0, + "src": { + "id": 568, + "line": 229, + "column": 104, + "start": 8980, + "end": 9076, + "length": 97, + "parent_index": 549 + }, + "implemented": true, + "statements": [ + { + "id": 569, + "node_type": 47, + "src": { + "id": 570, + "line": 230, + "column": 8, + "start": 8990, + "end": 9070, + "length": 81, + "parent_index": 549 + }, + "function_return_parameters": 549, + "expression": { + "id": 571, + "node_type": 24, + "kind": 24, + "src": { + "id": 572, + "line": 230, + "column": 15, + "start": 8997, + "end": 9069, + "length": 73, + "parent_index": 567 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: low-level static call failed\"" + } + ], + "arguments": [ + { + "id": 575, + "node_type": 16, + "src": { + "id": 576, + "line": 230, + "column": 34, + "start": 9016, + "end": 9021, + "length": 6, + "parent_index": 571 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 575, + "is_pure": false + }, + { + "id": 577, + "node_type": 16, + "src": { + "id": 578, + "line": 230, + "column": 42, + "start": 9024, + "end": 9027, + "length": 4, + "parent_index": 571 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 577, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 579, + "node_type": 17, + "kind": 50, + "value": "Address: low-level static call failed", + "hex_value": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", + "src": { + "id": 580, + "line": 230, + "column": 48, + "start": 9030, + "end": 9068, + "length": 39, + "parent_index": 571 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: low-level static call failed\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + } + ], + "expression": { + "id": 573, + "node_type": 16, + "src": { + "id": 574, + "line": 230, + "column": 15, + "start": 8997, + "end": 9014, + "length": 18, + "parent_index": 571 + }, + "name": "functionStaticCall", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "type_string": "function(address,bytes,string memory)" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 551, + "node_type": 43, + "src": { + "id": 552, + "line": 229, + "column": 32, + "start": 8908, + "end": 8940, + "length": 33, + "parent_index": 549 + }, + "parameters": [ + { + "id": 553, + "node_type": 44, + "src": { + "id": 554, + "line": 229, + "column": 32, + "start": 8908, + "end": 8921, + "length": 14, + "parent_index": 551 + }, + "scope": 549, + "name": "target", + "type_name": { + "id": 555, + "node_type": 30, + "src": { + "id": 556, + "line": 229, + "column": 32, + "start": 8908, + "end": 8914, + "length": 7, + "parent_index": 553 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 557, + "node_type": 44, + "src": { + "id": 558, + "line": 229, + "column": 48, + "start": 8924, + "end": 8940, + "length": 17, + "parent_index": 551 + }, + "scope": 549, + "name": "data", + "type_name": { + "id": 559, + "node_type": 30, + "src": { + "id": 560, + "line": 229, + "column": 48, + "start": 8924, + "end": 8928, + "length": 5, + "parent_index": 557 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 561, + "node_type": 43, + "src": { + "id": 562, + "line": 229, + "column": 90, + "start": 8966, + "end": 8977, + "length": 12, + "parent_index": 549 + }, + "parameters": [ + { + "id": 563, + "node_type": 44, + "src": { + "id": 564, + "line": 229, + "column": 90, + "start": 8966, + "end": 8977, + "length": 12, + "parent_index": 561 + }, + "scope": 549, + "name": "", + "type_name": { + "id": 565, + "node_type": 30, + "src": { + "id": 566, + "line": 229, + "column": 90, + "start": 8966, + "end": 8970, + "length": 5, + "parent_index": 563 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 259, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$", + "type_string": "function(address,bytes)" + } + }, + { + "id": 582, + "name": "functionStaticCall", + "node_type": 42, + "kind": 41, + "src": { + "id": 583, + "line": 239, + "column": 4, + "start": 9261, + "end": 9676, + "length": 416, + "parent_index": 259 + }, + "body": { + "id": 604, + "node_type": 46, + "kind": 0, + "src": { + "id": 605, + "line": 239, + "column": 132, + "start": 9389, + "end": 9676, + "length": 288, + "parent_index": 582 + }, + "implemented": true, + "statements": [ + { + "id": 606, + "node_type": 24, + "kind": 24, + "src": { + "id": 607, + "line": 240, + "column": 8, + "start": 9399, + "end": 9465, + "length": 67, + "parent_index": 604 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: static call to non-contract\"" + } + ], + "arguments": [ + { + "id": 610, + "node_type": 24, + "kind": 24, + "src": { + "id": 611, + "line": 240, + "column": 16, + "start": 9407, + "end": 9424, + "length": 18, + "parent_index": 606 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 614, + "node_type": 16, + "src": { + "id": 615, + "line": 240, + "column": 27, + "start": 9418, + "end": 9423, + "length": 6, + "parent_index": 610 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 614, + "is_pure": false + } + ], + "expression": { + "id": 612, + "node_type": 16, + "src": { + "id": 613, + "line": 240, + "column": 16, + "start": 9407, + "end": 9416, + "length": 10, + "parent_index": 610 + }, + "name": "isContract", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 616, + "node_type": 17, + "kind": 50, + "value": "Address: static call to non-contract", + "hex_value": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374", + "src": { + "id": 617, + "line": 240, + "column": 36, + "start": 9427, + "end": 9464, + "length": 38, + "parent_index": 606 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: static call to non-contract\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ] + } + ], + "expression": { + "id": 608, + "node_type": 16, + "src": { + "id": 609, + "line": 240, + "column": 8, + "start": 9399, + "end": 9405, + "length": 7, + "parent_index": 606 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "type_string": "function(function(address),string memory)" + } + }, + { + "id": 618, + "node_type": 44, + "src": { + "id": 619, + "line": 243, + "column": 8, + "start": 9536, + "end": 9601, + "length": 66, + "parent_index": 604 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 620, + "node_type": 24, + "kind": 24, + "src": { + "id": 621, + "line": 243, + "column": 50, + "start": 9578, + "end": 9600, + "length": 23, + "parent_index": 618 + }, + "argument_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ], + "arguments": [ + { + "id": 626, + "node_type": 16, + "src": { + "id": 627, + "line": 243, + "column": 68, + "start": 9596, + "end": 9599, + "length": 4, + "parent_index": 620 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 626, + "is_pure": false + } + ], + "expression": { + "id": 622, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 623, + "line": 243, + "column": 50, + "start": 9578, + "end": 9594, + "length": 17, + "parent_index": 620 + }, + "expression": { + "id": 624, + "node_type": 16, + "src": { + "id": 625, + "line": 243, + "column": 50, + "start": 9578, + "end": 9583, + "length": 6, + "parent_index": 622 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 624, + "is_pure": false + }, + "member_name": "staticcall", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + } + } + }, + { + "id": 628, + "node_type": 47, + "src": { + "id": 629, + "line": 244, + "column": 8, + "start": 9611, + "end": 9670, + "length": 60, + "parent_index": 582 + }, + "function_return_parameters": 582, + "expression": { + "id": 630, + "node_type": 24, + "kind": 24, + "src": { + "id": 631, + "line": 244, + "column": 15, + "start": 9618, + "end": 9669, + "length": 52, + "parent_index": 604 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ], + "arguments": [ + { + "id": 634, + "node_type": 16, + "src": { + "id": 635, + "line": 244, + "column": 33, + "start": 9636, + "end": 9642, + "length": 7, + "parent_index": 630 + }, + "name": "success", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 636, + "node_type": 16, + "src": { + "id": 637, + "line": 244, + "column": 42, + "start": 9645, + "end": 9654, + "length": 10, + "parent_index": 630 + }, + "name": "returndata", + "type_description": { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + }, + { + "id": 638, + "node_type": 16, + "src": { + "id": 639, + "line": 244, + "column": 54, + "start": 9657, + "end": 9668, + "length": 12, + "parent_index": 630 + }, + "name": "errorMessage", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 638, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + } + ] + } + ], + "expression": { + "id": 632, + "node_type": 16, + "src": { + "id": 633, + "line": 244, + "column": 15, + "start": 9618, + "end": 9634, + "length": 17, + "parent_index": 630 + }, + "name": "_verifyCallResult", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "type_string": "function(function(),function(function()),string)" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 584, + "node_type": 43, + "src": { + "id": 585, + "line": 239, + "column": 32, + "start": 9289, + "end": 9349, + "length": 61, + "parent_index": 582 + }, + "parameters": [ + { + "id": 586, + "node_type": 44, + "src": { + "id": 587, + "line": 239, + "column": 32, + "start": 9289, + "end": 9302, + "length": 14, + "parent_index": 584 + }, + "scope": 582, + "name": "target", + "type_name": { + "id": 588, + "node_type": 30, + "src": { + "id": 589, + "line": 239, + "column": 32, + "start": 9289, + "end": 9295, + "length": 7, + "parent_index": 586 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 590, + "node_type": 44, + "src": { + "id": 591, + "line": 239, + "column": 48, + "start": 9305, + "end": 9321, + "length": 17, + "parent_index": 584 + }, + "scope": 582, + "name": "data", + "type_name": { + "id": 592, + "node_type": 30, + "src": { + "id": 593, + "line": 239, + "column": 48, + "start": 9305, + "end": 9309, + "length": 5, + "parent_index": 590 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 594, + "node_type": 44, + "src": { + "id": 595, + "line": 239, + "column": 67, + "start": 9324, + "end": 9349, + "length": 26, + "parent_index": 584 + }, + "scope": 582, + "name": "errorMessage", + "type_name": { + "id": 596, + "node_type": 30, + "src": { + "id": 597, + "line": 239, + "column": 67, + "start": 9324, + "end": 9329, + "length": 6, + "parent_index": 594 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 598, + "node_type": 43, + "src": { + "id": 599, + "line": 239, + "column": 118, + "start": 9375, + "end": 9386, + "length": 12, + "parent_index": 582 + }, + "parameters": [ + { + "id": 600, + "node_type": 44, + "src": { + "id": 601, + "line": 239, + "column": 118, + "start": 9375, + "end": 9386, + "length": 12, + "parent_index": 598 + }, + "scope": 582, + "name": "", + "type_name": { + "id": 602, + "node_type": 30, + "src": { + "id": 603, + "line": 239, + "column": 118, + "start": 9375, + "end": 9379, + "length": 5, + "parent_index": 600 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 259, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_string$", + "type_string": "function(address,bytes,string)" + } + }, + { + "id": 641, + "name": "functionDelegateCall", + "node_type": 42, + "kind": 41, + "src": { + "id": 642, + "line": 253, + "column": 4, + "start": 9856, + "end": 10053, + "length": 198, + "parent_index": 259 + }, + "body": { + "id": 659, + "node_type": 46, + "kind": 0, + "src": { + "id": 660, + "line": 253, + "column": 101, + "start": 9953, + "end": 10053, + "length": 101, + "parent_index": 641 + }, + "implemented": true, + "statements": [ + { + "id": 661, + "node_type": 47, + "src": { + "id": 662, + "line": 254, + "column": 8, + "start": 9963, + "end": 10047, + "length": 85, + "parent_index": 641 + }, + "function_return_parameters": 641, + "expression": { + "id": 663, + "node_type": 24, + "kind": 24, + "src": { + "id": 664, + "line": 254, + "column": 15, + "start": 9970, + "end": 10046, + "length": 77, + "parent_index": 659 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: low-level delegate call failed\"" + } + ], + "arguments": [ + { + "id": 667, + "node_type": 16, + "src": { + "id": 668, + "line": 254, + "column": 36, + "start": 9991, + "end": 9996, + "length": 6, + "parent_index": 663 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 667, + "is_pure": false + }, + { + "id": 669, + "node_type": 16, + "src": { + "id": 670, + "line": 254, + "column": 44, + "start": 9999, + "end": 10002, + "length": 4, + "parent_index": 663 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 669, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 671, + "node_type": 17, + "kind": 50, + "value": "Address: low-level delegate call failed", + "hex_value": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", + "src": { + "id": 672, + "line": 254, + "column": 50, + "start": 10005, + "end": 10045, + "length": 41, + "parent_index": 663 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: low-level delegate call failed\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + } + ], + "expression": { + "id": 665, + "node_type": 16, + "src": { + "id": 666, + "line": 254, + "column": 15, + "start": 9970, + "end": 9989, + "length": 20, + "parent_index": 663 + }, + "name": "functionDelegateCall", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "type_string": "function(address,bytes,string memory)" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 643, + "node_type": 43, + "src": { + "id": 644, + "line": 253, + "column": 34, + "start": 9886, + "end": 9918, + "length": 33, + "parent_index": 641 + }, + "parameters": [ + { + "id": 645, + "node_type": 44, + "src": { + "id": 646, + "line": 253, + "column": 34, + "start": 9886, + "end": 9899, + "length": 14, + "parent_index": 643 + }, + "scope": 641, + "name": "target", + "type_name": { + "id": 647, + "node_type": 30, + "src": { + "id": 648, + "line": 253, + "column": 34, + "start": 9886, + "end": 9892, + "length": 7, + "parent_index": 645 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 649, + "node_type": 44, + "src": { + "id": 650, + "line": 253, + "column": 50, + "start": 9902, + "end": 9918, + "length": 17, + "parent_index": 643 + }, + "scope": 641, + "name": "data", + "type_name": { + "id": 651, + "node_type": 30, + "src": { + "id": 652, + "line": 253, + "column": 50, + "start": 9902, + "end": 9906, + "length": 5, + "parent_index": 649 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 653, + "node_type": 43, + "src": { + "id": 654, + "line": 253, + "column": 87, + "start": 9939, + "end": 9950, + "length": 12, + "parent_index": 641 + }, + "parameters": [ + { + "id": 655, + "node_type": 44, + "src": { + "id": 656, + "line": 253, + "column": 87, + "start": 9939, + "end": 9950, + "length": 12, + "parent_index": 653 + }, + "scope": 641, + "name": "", + "type_name": { + "id": 657, + "node_type": 30, + "src": { + "id": 658, + "line": 253, + "column": 87, + "start": 9939, + "end": 9943, + "length": 5, + "parent_index": 655 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 259, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$", + "type_string": "function(address,bytes)" + } + }, + { + "id": 674, + "name": "functionDelegateCall", + "node_type": 42, + "kind": 41, + "src": { + "id": 675, + "line": 263, + "column": 4, + "start": 10240, + "end": 10656, + "length": 417, + "parent_index": 259 + }, + "body": { + "id": 696, + "node_type": 46, + "kind": 0, + "src": { + "id": 697, + "line": 263, + "column": 129, + "start": 10365, + "end": 10656, + "length": 292, + "parent_index": 674 + }, + "implemented": true, + "statements": [ + { + "id": 698, + "node_type": 24, + "kind": 24, + "src": { + "id": 699, + "line": 264, + "column": 8, + "start": 10375, + "end": 10443, + "length": 69, + "parent_index": 696 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: delegate call to non-contract\"" + } + ], + "arguments": [ + { + "id": 702, + "node_type": 24, + "kind": 24, + "src": { + "id": 703, + "line": 264, + "column": 16, + "start": 10383, + "end": 10400, + "length": 18, + "parent_index": 698 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 706, + "node_type": 16, + "src": { + "id": 707, + "line": 264, + "column": 27, + "start": 10394, + "end": 10399, + "length": 6, + "parent_index": 702 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 706, + "is_pure": false + } + ], + "expression": { + "id": 704, + "node_type": 16, + "src": { + "id": 705, + "line": 264, + "column": 16, + "start": 10383, + "end": 10392, + "length": 10, + "parent_index": 702 + }, + "name": "isContract", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 708, + "node_type": 17, + "kind": 50, + "value": "Address: delegate call to non-contract", + "hex_value": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374", + "src": { + "id": 709, + "line": 264, + "column": 36, + "start": 10403, + "end": 10442, + "length": 40, + "parent_index": 698 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: delegate call to non-contract\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ] + } + ], + "expression": { + "id": 700, + "node_type": 16, + "src": { + "id": 701, + "line": 264, + "column": 8, + "start": 10375, + "end": 10381, + "length": 7, + "parent_index": 698 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "type_string": "function(function(address),string memory)" + } + }, + { + "id": 710, + "node_type": 44, + "src": { + "id": 711, + "line": 267, + "column": 8, + "start": 10514, + "end": 10581, + "length": 68, + "parent_index": 696 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 712, + "node_type": 24, + "kind": 24, + "src": { + "id": 713, + "line": 267, + "column": 50, + "start": 10556, + "end": 10580, + "length": 25, + "parent_index": 710 + }, + "argument_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ], + "arguments": [ + { + "id": 718, + "node_type": 16, + "src": { + "id": 719, + "line": 267, + "column": 70, + "start": 10576, + "end": 10579, + "length": 4, + "parent_index": 712 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 718, + "is_pure": false + } + ], + "expression": { + "id": 714, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 715, + "line": 267, + "column": 50, + "start": 10556, + "end": 10574, + "length": 19, + "parent_index": 712 + }, + "expression": { + "id": 716, + "node_type": 16, + "src": { + "id": 717, + "line": 267, + "column": 50, + "start": 10556, + "end": 10561, + "length": 6, + "parent_index": 714 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 716, + "is_pure": false + }, + "member_name": "delegatecall", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + } + } + }, + { + "id": 720, + "node_type": 47, + "src": { + "id": 721, + "line": 268, + "column": 8, + "start": 10591, + "end": 10650, + "length": 60, + "parent_index": 674 + }, + "function_return_parameters": 674, + "expression": { + "id": 722, + "node_type": 24, + "kind": 24, + "src": { + "id": 723, + "line": 268, + "column": 15, + "start": 10598, + "end": 10649, + "length": 52, + "parent_index": 696 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ], + "arguments": [ + { + "id": 726, + "node_type": 16, + "src": { + "id": 727, + "line": 268, + "column": 33, + "start": 10616, + "end": 10622, + "length": 7, + "parent_index": 722 + }, + "name": "success", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 728, + "node_type": 16, + "src": { + "id": 729, + "line": 268, + "column": 42, + "start": 10625, + "end": 10634, + "length": 10, + "parent_index": 722 + }, + "name": "returndata", + "type_description": { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + }, + { + "id": 730, + "node_type": 16, + "src": { + "id": 731, + "line": 268, + "column": 54, + "start": 10637, + "end": 10648, + "length": 12, + "parent_index": 722 + }, + "name": "errorMessage", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 730, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + } + ] + } + ], + "expression": { + "id": 724, + "node_type": 16, + "src": { + "id": 725, + "line": 268, + "column": 15, + "start": 10598, + "end": 10614, + "length": 17, + "parent_index": 722 + }, + "name": "_verifyCallResult", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "type_string": "function(function(),function(function()),string)" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 676, + "node_type": 43, + "src": { + "id": 677, + "line": 263, + "column": 34, + "start": 10270, + "end": 10330, + "length": 61, + "parent_index": 674 + }, + "parameters": [ + { + "id": 678, + "node_type": 44, + "src": { + "id": 679, + "line": 263, + "column": 34, + "start": 10270, + "end": 10283, + "length": 14, + "parent_index": 676 + }, + "scope": 674, + "name": "target", + "type_name": { + "id": 680, + "node_type": 30, + "src": { + "id": 681, + "line": 263, + "column": 34, + "start": 10270, + "end": 10276, + "length": 7, + "parent_index": 678 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 682, + "node_type": 44, + "src": { + "id": 683, + "line": 263, + "column": 50, + "start": 10286, + "end": 10302, + "length": 17, + "parent_index": 676 + }, + "scope": 674, + "name": "data", + "type_name": { + "id": 684, + "node_type": 30, + "src": { + "id": 685, + "line": 263, + "column": 50, + "start": 10286, + "end": 10290, + "length": 5, + "parent_index": 682 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 686, + "node_type": 44, + "src": { + "id": 687, + "line": 263, + "column": 69, + "start": 10305, + "end": 10330, + "length": 26, + "parent_index": 676 + }, + "scope": 674, + "name": "errorMessage", + "type_name": { + "id": 688, + "node_type": 30, + "src": { + "id": 689, + "line": 263, + "column": 69, + "start": 10305, + "end": 10310, + "length": 6, + "parent_index": 686 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 690, + "node_type": 43, + "src": { + "id": 691, + "line": 263, + "column": 115, + "start": 10351, + "end": 10362, + "length": 12, + "parent_index": 674 + }, + "parameters": [ + { + "id": 692, + "node_type": 44, + "src": { + "id": 693, + "line": 263, + "column": 115, + "start": 10351, + "end": 10362, + "length": 12, + "parent_index": 690 + }, + "scope": 674, + "name": "", + "type_name": { + "id": 694, + "node_type": 30, + "src": { + "id": 695, + "line": 263, + "column": 115, + "start": 10351, + "end": 10355, + "length": 5, + "parent_index": 692 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 259, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_string$", + "type_string": "function(address,bytes,string)" + } + }, + { + "id": 733, + "name": "_verifyCallResult", + "node_type": 42, + "kind": 41, + "src": { + "id": 734, + "line": 271, + "column": 4, + "start": 10663, + "end": 11387, + "length": 725, + "parent_index": 259 + }, + "body": { + "id": 755, + "node_type": 46, + "kind": 0, + "src": { + "id": 756, + "line": 271, + "column": 133, + "start": 10792, + "end": 11387, + "length": 596, + "parent_index": 733 + }, + "implemented": true, + "statements": [ + { + "id": 757, + "node_type": 48, + "src": { + "id": 758, + "line": 272, + "column": 0, + "start": 10802, + "end": 11381, + "length": 580, + "parent_index": 755 + }, + "condition": { + "id": 759, + "node_type": 16, + "src": { + "id": 760, + "line": 272, + "column": 12, + "start": 10806, + "end": 10812, + "length": 7, + "parent_index": 757 + }, + "name": "success", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 759, + "is_pure": false + }, + "body": { + "id": 761, + "node_type": 46, + "kind": 0, + "src": { + "id": 762, + "line": 272, + "column": 21, + "start": 10815, + "end": 10856, + "length": 42, + "parent_index": 733 + }, + "implemented": true, + "statements": [ + { + "id": 763, + "node_type": 47, + "src": { + "id": 764, + "line": 273, + "column": 12, + "start": 10829, + "end": 10846, + "length": 18, + "parent_index": 733 + }, + "function_return_parameters": 733, + "expression": { + "id": 765, + "node_type": 16, + "src": { + "id": 766, + "line": 273, + "column": 19, + "start": 10836, + "end": 10845, + "length": 10, + "parent_index": 761 + }, + "name": "returndata", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 765, + "is_pure": false + } + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 2, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 735, + "node_type": 43, + "src": { + "id": 736, + "line": 271, + "column": 31, + "start": 10690, + "end": 10754, + "length": 65, + "parent_index": 733 + }, + "parameters": [ + { + "id": 737, + "node_type": 44, + "src": { + "id": 738, + "line": 271, + "column": 31, + "start": 10690, + "end": 10701, + "length": 12, + "parent_index": 735 + }, + "scope": 733, + "name": "success", + "type_name": { + "id": 739, + "node_type": 30, + "src": { + "id": 740, + "line": 271, + "column": 31, + "start": 10690, + "end": 10693, + "length": 4, + "parent_index": 737 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 741, + "node_type": 44, + "src": { + "id": 742, + "line": 271, + "column": 45, + "start": 10704, + "end": 10726, + "length": 23, + "parent_index": 735 + }, + "scope": 733, + "name": "returndata", + "type_name": { + "id": 743, + "node_type": 30, + "src": { + "id": 744, + "line": 271, + "column": 45, + "start": 10704, + "end": 10708, + "length": 5, + "parent_index": 741 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 745, + "node_type": 44, + "src": { + "id": 746, + "line": 271, + "column": 70, + "start": 10729, + "end": 10754, + "length": 26, + "parent_index": 735 + }, + "scope": 733, + "name": "errorMessage", + "type_name": { + "id": 747, + "node_type": 30, + "src": { + "id": 748, + "line": 271, + "column": 70, + "start": 10729, + "end": 10734, + "length": 6, + "parent_index": 745 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 749, + "node_type": 43, + "src": { + "id": 750, + "line": 271, + "column": 119, + "start": 10778, + "end": 10789, + "length": 12, + "parent_index": 733 + }, + "parameters": [ + { + "id": 751, + "node_type": 44, + "src": { + "id": 752, + "line": 271, + "column": 119, + "start": 10778, + "end": 10789, + "length": 12, + "parent_index": 749 + }, + "scope": 733, + "name": "", + "type_name": { + "id": 753, + "node_type": 30, + "src": { + "id": 754, + "line": 271, + "column": 119, + "start": 10778, + "end": 10782, + "length": 5, + "parent_index": 751 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 259, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_bytes$_t_string$", + "type_string": "function(bool,bytes,string)" + } + } + ], + "linearized_base_contracts": [ + 259 + ], + "base_contracts": [], + "contract_dependencies": [], + "scope": 251 + } + ], + "src": { + "id": 252, + "line": 108, + "column": 0, + "start": 3706, + "end": 11389, + "length": 7684, + "parent_index": 118 + } } \ No newline at end of file diff --git a/data/tests/contracts/cheelee/AdminUpgradeabilityProxy.solgo.ast.json b/data/tests/contracts/cheelee/AdminUpgradeabilityProxy.solgo.ast.json index e6daf38c..57919782 100644 --- a/data/tests/contracts/cheelee/AdminUpgradeabilityProxy.solgo.ast.json +++ b/data/tests/contracts/cheelee/AdminUpgradeabilityProxy.solgo.ast.json @@ -1,567 +1,567 @@ { - "id": 2858, - "base_contracts": [ - { - "id": 2907, - "node_type": 62, - "src": { - "id": 2908, - "line": 1029, - "column": 37, - "start": 37504, - "end": 37530, - "length": 27, - "parent_index": 2906 - }, - "base_name": { - "id": 2909, - "node_type": 52, - "src": { - "id": 2910, - "line": 1029, - "column": 37, - "start": 37504, - "end": 37530, - "length": 27, - "parent_index": 2906 - }, - "name": "TransparentUpgradeableProxy", - "referenced_declaration": 2272 - } - } - ], - "license": "MIT", - "exported_symbols": [ - { - "id": 2858, - "name": "AdminUpgradeabilityProxy", - "absolute_path": "" - }, - { - "id": 2600, - "name": "ProxyAdmin", - "absolute_path": "ProxyAdmin.sol" - }, - { - "id": 2272, - "name": "TransparentUpgradeableProxy", - "absolute_path": "TransparentUpgradeableProxy.sol" - }, - { - "id": 2272, - "name": "TransparentUpgradeableProxy", - "absolute_path": "TransparentUpgradeableProxy.sol" - }, - { - "id": 2146, - "name": "ERC1967Proxy", - "absolute_path": "ERC1967Proxy.sol" - }, - { - "id": 1991, - "name": "UpgradeableBeacon", - "absolute_path": "UpgradeableBeacon.sol" - }, - { - "id": 1533, - "name": "BeaconProxy", - "absolute_path": "BeaconProxy.sol" - } - ], - "absolute_path": "", - "name": "AdminUpgradeabilityProxy", - "node_type": 1, - "nodes": [ - { - "id": 2884, - "node_type": 10, - "src": { - "id": 2885, - "line": 1020, - "column": 0, - "start": 37005, - "end": 37027, - "length": 23, - "parent_index": 2858 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 2901, - "node_type": 29, - "src": { - "id": 0, - "line": 1022, - "column": 0, - "start": 37030, - "end": 37091, - "length": 62, - "parent_index": 2858 - }, - "absolute_path": "BeaconProxy.sol", - "file": "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol", - "scope": 2858, - "unit_alias": "", - "source_unit": 2600 - }, - { - "id": 2902, - "node_type": 29, - "src": { - "id": 0, - "line": 1023, - "column": 0, - "start": 37093, - "end": 37160, - "length": 68, - "parent_index": 2858 - }, - "absolute_path": "UpgradeableBeacon.sol", - "file": "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol", - "scope": 2858, - "unit_alias": "", - "source_unit": 2600 - }, - { - "id": 2903, - "node_type": 29, - "src": { - "id": 0, - "line": 1024, - "column": 0, - "start": 37162, - "end": 37225, - "length": 64, - "parent_index": 2858 - }, - "absolute_path": "ERC1967Proxy.sol", - "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", - "scope": 2858, - "unit_alias": "", - "source_unit": 2600 - }, - { - "id": 2904, - "node_type": 29, - "src": { - "id": 0, - "line": 1025, - "column": 0, - "start": 37227, - "end": 37309, - "length": 83, - "parent_index": 2858 - }, - "absolute_path": "TransparentUpgradeableProxy.sol", - "file": "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", - "scope": 2858, - "unit_alias": "", - "source_unit": 2600 - }, - { - "id": 2905, - "node_type": 29, - "src": { - "id": 0, - "line": 1026, - "column": 0, - "start": 37311, - "end": 37376, - "length": 66, - "parent_index": 2858 - }, - "absolute_path": "ProxyAdmin.sol", - "file": "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol", - "scope": 2858, - "unit_alias": "", - "source_unit": 2600 - }, - { - "id": 2906, - "name": "AdminUpgradeabilityProxy", - "node_type": 35, - "src": { - "id": 0, - "line": 1029, - "column": 0, - "start": 37467, - "end": 37658, - "length": 192, - "parent_index": 2858 - }, - "abstract": false, - "kind": 36, - "fully_implemented": true, - "nodes": [ - { - "id": 2912, - "node_type": 42, - "src": { - "id": 2913, - "line": 1030, - "column": 4, - "start": 37538, - "end": 37656, - "length": 119, - "parent_index": 2906 - }, - "kind": 11, - "state_mutability": 3, - "visibility": 1, - "implemented": true, - "modifiers": [ - { - "id": 2929, - "name": "TransparentUpgradeableProxy", - "node_type": 72, - "kind": 72, - "src": { - "id": 2930, - "line": 1030, - "column": 73, - "start": 37607, - "end": 37653, - "length": 47, - "parent_index": 2912 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ], - "arguments": [ - { - "id": 2933, - "node_type": 16, - "src": { - "id": 2934, - "line": 1030, - "column": 101, - "start": 37635, - "end": 37639, - "length": 5, - "parent_index": 2929 - }, - "name": "logic", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 2933, - "is_pure": false - }, - { - "id": 2935, - "node_type": 16, - "src": { - "id": 2936, - "line": 1030, - "column": 108, - "start": 37642, - "end": 37646, - "length": 5, - "parent_index": 2929 - }, - "name": "admin", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 2935, - "is_pure": false - }, - { - "id": 2937, - "node_type": 16, - "src": { - "id": 2938, - "line": 1030, - "column": 115, - "start": 37649, - "end": 37652, - "length": 4, - "parent_index": 2929 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 2937, - "is_pure": false - } - ], - "modifier_name": { - "id": 2931, - "name": "TransparentUpgradeableProxy", - "node_type": 0, - "src": { - "id": 2932, - "line": 1030, - "column": 73, - "start": 37607, - "end": 37633, - "length": 27, - "parent_index": 2929 - } - } - } - ], - "parameters": { - "id": 2914, - "node_type": 43, - "src": { - "id": 2915, - "line": 1030, - "column": 16, - "start": 37550, - "end": 37596, - "length": 47, - "parent_index": 2912 - }, - "parameters": [ - { - "id": 2916, - "node_type": 44, - "src": { - "id": 2917, - "line": 1030, - "column": 16, - "start": 37550, - "end": 37562, - "length": 13, - "parent_index": 2914 - }, - "scope": 2912, - "name": "logic", - "type_name": { - "id": 2918, - "node_type": 30, - "src": { - "id": 2919, - "line": 1030, - "column": 16, - "start": 37550, - "end": 37556, - "length": 7, - "parent_index": 2916 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 2920, - "node_type": 44, - "src": { - "id": 2921, - "line": 1030, - "column": 31, - "start": 37565, - "end": 37577, - "length": 13, - "parent_index": 2914 - }, - "scope": 2912, - "name": "admin", - "type_name": { - "id": 2922, - "node_type": 30, - "src": { - "id": 2923, - "line": 1030, - "column": 31, - "start": 37565, - "end": 37571, - "length": 7, - "parent_index": 2920 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 2924, - "node_type": 44, - "src": { - "id": 2925, - "line": 1030, - "column": 46, - "start": 37580, - "end": 37596, - "length": 17, - "parent_index": 2914 - }, - "scope": 2912, - "name": "data", - "type_name": { - "id": 2926, - "node_type": 30, - "src": { - "id": 2927, - "line": 1030, - "column": 46, - "start": 37580, - "end": 37584, - "length": 5, - "parent_index": 2924 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "return_parameters": { - "id": 2928, - "node_type": 43, - "src": { - "id": 2913, - "line": 1030, - "column": 4, - "start": 37538, - "end": 37656, - "length": 119, - "parent_index": 2912 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 2906, - "body": { - "id": 2939, - "node_type": 46, - "kind": 0, - "src": { - "id": 2940, - "line": 1030, - "column": 121, - "start": 37655, - "end": 37656, - "length": 2, - "parent_index": 2912 - }, - "implemented": true, - "statements": [] - } - } - ], - "linearized_base_contracts": [ - 2272, - 2906, - 2901, - 2902, - 2903, - 2904, - 2905 - ], - "base_contracts": [ - { - "id": 2907, - "node_type": 62, - "src": { - "id": 2908, - "line": 1029, - "column": 37, - "start": 37504, - "end": 37530, - "length": 27, - "parent_index": 2906 - }, - "base_name": { - "id": 2909, - "node_type": 52, - "src": { - "id": 2910, - "line": 1029, - "column": 37, - "start": 37504, - "end": 37530, - "length": 27, - "parent_index": 2906 - }, - "name": "TransparentUpgradeableProxy", - "referenced_declaration": 2272 - } - } - ], - "contract_dependencies": [ - 2272, - 2901, - 2902, - 2903, - 2904, - 2905 - ] - } - ], - "src": { - "id": 2859, - "line": 1029, - "column": 0, - "start": 37467, - "end": 37658, - "length": 192, - "parent_index": 118 - } + "id": 2858, + "base_contracts": [ + { + "id": 2907, + "node_type": 62, + "src": { + "id": 2908, + "line": 1029, + "column": 37, + "start": 37504, + "end": 37530, + "length": 27, + "parent_index": 2906 + }, + "base_name": { + "id": 2909, + "node_type": 52, + "src": { + "id": 2910, + "line": 1029, + "column": 37, + "start": 37504, + "end": 37530, + "length": 27, + "parent_index": 2906 + }, + "name": "TransparentUpgradeableProxy", + "referenced_declaration": 2272 + } + } + ], + "license": "MIT", + "exported_symbols": [ + { + "id": 2858, + "name": "AdminUpgradeabilityProxy", + "absolute_path": "" + }, + { + "id": 2600, + "name": "ProxyAdmin", + "absolute_path": "ProxyAdmin.sol" + }, + { + "id": 2272, + "name": "TransparentUpgradeableProxy", + "absolute_path": "TransparentUpgradeableProxy.sol" + }, + { + "id": 2272, + "name": "TransparentUpgradeableProxy", + "absolute_path": "TransparentUpgradeableProxy.sol" + }, + { + "id": 2146, + "name": "ERC1967Proxy", + "absolute_path": "ERC1967Proxy.sol" + }, + { + "id": 1991, + "name": "UpgradeableBeacon", + "absolute_path": "UpgradeableBeacon.sol" + }, + { + "id": 1533, + "name": "BeaconProxy", + "absolute_path": "BeaconProxy.sol" + } + ], + "absolute_path": "", + "name": "AdminUpgradeabilityProxy", + "node_type": 1, + "nodes": [ + { + "id": 2884, + "node_type": 10, + "src": { + "id": 2885, + "line": 1020, + "column": 0, + "start": 37005, + "end": 37027, + "length": 23, + "parent_index": 2858 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 2901, + "node_type": 29, + "src": { + "id": 0, + "line": 1022, + "column": 0, + "start": 37030, + "end": 37091, + "length": 62, + "parent_index": 2858 + }, + "absolute_path": "BeaconProxy.sol", + "file": "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol", + "scope": 2858, + "unit_alias": "", + "source_unit": 2600 + }, + { + "id": 2902, + "node_type": 29, + "src": { + "id": 0, + "line": 1023, + "column": 0, + "start": 37093, + "end": 37160, + "length": 68, + "parent_index": 2858 + }, + "absolute_path": "UpgradeableBeacon.sol", + "file": "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol", + "scope": 2858, + "unit_alias": "", + "source_unit": 2600 + }, + { + "id": 2903, + "node_type": 29, + "src": { + "id": 0, + "line": 1024, + "column": 0, + "start": 37162, + "end": 37225, + "length": 64, + "parent_index": 2858 + }, + "absolute_path": "ERC1967Proxy.sol", + "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "scope": 2858, + "unit_alias": "", + "source_unit": 2600 + }, + { + "id": 2904, + "node_type": 29, + "src": { + "id": 0, + "line": 1025, + "column": 0, + "start": 37227, + "end": 37309, + "length": 83, + "parent_index": 2858 + }, + "absolute_path": "TransparentUpgradeableProxy.sol", + "file": "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", + "scope": 2858, + "unit_alias": "", + "source_unit": 2600 + }, + { + "id": 2905, + "node_type": 29, + "src": { + "id": 0, + "line": 1026, + "column": 0, + "start": 37311, + "end": 37376, + "length": 66, + "parent_index": 2858 + }, + "absolute_path": "ProxyAdmin.sol", + "file": "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol", + "scope": 2858, + "unit_alias": "", + "source_unit": 2600 + }, + { + "id": 2906, + "name": "AdminUpgradeabilityProxy", + "node_type": 35, + "src": { + "id": 0, + "line": 1029, + "column": 0, + "start": 37467, + "end": 37658, + "length": 192, + "parent_index": 2858 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 2912, + "node_type": 42, + "src": { + "id": 2913, + "line": 1030, + "column": 4, + "start": 37538, + "end": 37656, + "length": 119, + "parent_index": 2906 + }, + "kind": 11, + "state_mutability": 3, + "visibility": 1, + "implemented": true, + "modifiers": [ + { + "id": 2929, + "name": "TransparentUpgradeableProxy", + "node_type": 72, + "kind": 72, + "src": { + "id": 2930, + "line": 1030, + "column": 73, + "start": 37607, + "end": 37653, + "length": 47, + "parent_index": 2912 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ], + "arguments": [ + { + "id": 2933, + "node_type": 16, + "src": { + "id": 2934, + "line": 1030, + "column": 101, + "start": 37635, + "end": 37639, + "length": 5, + "parent_index": 2929 + }, + "name": "logic", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2933, + "is_pure": false + }, + { + "id": 2935, + "node_type": 16, + "src": { + "id": 2936, + "line": 1030, + "column": 108, + "start": 37642, + "end": 37646, + "length": 5, + "parent_index": 2929 + }, + "name": "admin", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2935, + "is_pure": false + }, + { + "id": 2937, + "node_type": 16, + "src": { + "id": 2938, + "line": 1030, + "column": 115, + "start": 37649, + "end": 37652, + "length": 4, + "parent_index": 2929 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 2937, + "is_pure": false + } + ], + "modifier_name": { + "id": 2931, + "name": "TransparentUpgradeableProxy", + "node_type": 0, + "src": { + "id": 2932, + "line": 1030, + "column": 73, + "start": 37607, + "end": 37633, + "length": 27, + "parent_index": 2929 + } + } + } + ], + "parameters": { + "id": 2914, + "node_type": 43, + "src": { + "id": 2915, + "line": 1030, + "column": 16, + "start": 37550, + "end": 37596, + "length": 47, + "parent_index": 2912 + }, + "parameters": [ + { + "id": 2916, + "node_type": 44, + "src": { + "id": 2917, + "line": 1030, + "column": 16, + "start": 37550, + "end": 37562, + "length": 13, + "parent_index": 2914 + }, + "scope": 2912, + "name": "logic", + "type_name": { + "id": 2918, + "node_type": 30, + "src": { + "id": 2919, + "line": 1030, + "column": 16, + "start": 37550, + "end": 37556, + "length": 7, + "parent_index": 2916 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2920, + "node_type": 44, + "src": { + "id": 2921, + "line": 1030, + "column": 31, + "start": 37565, + "end": 37577, + "length": 13, + "parent_index": 2914 + }, + "scope": 2912, + "name": "admin", + "type_name": { + "id": 2922, + "node_type": 30, + "src": { + "id": 2923, + "line": 1030, + "column": 31, + "start": 37565, + "end": 37571, + "length": 7, + "parent_index": 2920 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2924, + "node_type": 44, + "src": { + "id": 2925, + "line": 1030, + "column": 46, + "start": 37580, + "end": 37596, + "length": 17, + "parent_index": 2914 + }, + "scope": 2912, + "name": "data", + "type_name": { + "id": 2926, + "node_type": 30, + "src": { + "id": 2927, + "line": 1030, + "column": 46, + "start": 37580, + "end": 37584, + "length": 5, + "parent_index": 2924 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 2928, + "node_type": 43, + "src": { + "id": 2913, + "line": 1030, + "column": 4, + "start": 37538, + "end": 37656, + "length": 119, + "parent_index": 2912 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2906, + "body": { + "id": 2939, + "node_type": 46, + "kind": 0, + "src": { + "id": 2940, + "line": 1030, + "column": 121, + "start": 37655, + "end": 37656, + "length": 2, + "parent_index": 2912 + }, + "implemented": true, + "statements": [] + } + } + ], + "linearized_base_contracts": [ + 2272, + 2906, + 2901, + 2902, + 2903, + 2904, + 2905 + ], + "base_contracts": [ + { + "id": 2907, + "node_type": 62, + "src": { + "id": 2908, + "line": 1029, + "column": 37, + "start": 37504, + "end": 37530, + "length": 27, + "parent_index": 2906 + }, + "base_name": { + "id": 2909, + "node_type": 52, + "src": { + "id": 2910, + "line": 1029, + "column": 37, + "start": 37504, + "end": 37530, + "length": 27, + "parent_index": 2906 + }, + "name": "TransparentUpgradeableProxy", + "referenced_declaration": 2272 + } + } + ], + "contract_dependencies": [ + 2272, + 2901, + 2902, + 2903, + 2904, + 2905 + ] + } + ], + "src": { + "id": 2859, + "line": 1029, + "column": 0, + "start": 37467, + "end": 37658, + "length": 192, + "parent_index": 118 + } } \ No newline at end of file diff --git a/data/tests/contracts/cheelee/BeaconProxy.solgo.ast.json b/data/tests/contracts/cheelee/BeaconProxy.solgo.ast.json index 70ad8547..8250af9f 100644 --- a/data/tests/contracts/cheelee/BeaconProxy.solgo.ast.json +++ b/data/tests/contracts/cheelee/BeaconProxy.solgo.ast.json @@ -1,1786 +1,1742 @@ { - "id": 1533, - "base_contracts": [ - { - "id": 1554, - "node_type": 62, - "src": { - "id": 1555, - "line": 582, - "column": 24, - "start": 21117, - "end": 21121, - "length": 5, - "parent_index": 1553 - }, - "base_name": { - "id": 1556, - "node_type": 52, - "src": { - "id": 1557, - "line": 582, - "column": 24, - "start": 21117, - "end": 21121, - "length": 5, - "parent_index": 1553 - }, - "name": "Proxy", - "referenced_declaration": 160 - } - }, - { - "id": 1558, - "node_type": 62, - "src": { - "id": 1559, - "line": 582, - "column": 31, - "start": 21124, - "end": 21137, - "length": 14, - "parent_index": 1553 - }, - "base_name": { - "id": 1560, - "node_type": 52, - "src": { - "id": 1561, - "line": 582, - "column": 31, - "start": 21124, - "end": 21137, - "length": 14, - "parent_index": 1553 - }, - "name": "ERC1967Upgrade", - "referenced_declaration": 902 - } - } - ], - "license": "MIT", - "exported_symbols": [ - { - "id": 1533, - "name": "BeaconProxy", - "absolute_path": "BeaconProxy.sol" - }, - { - "id": 902, - "name": "ERC1967Upgrade", - "absolute_path": "ERC1967Upgrade.sol" - }, - { - "id": 160, - "name": "Proxy", - "absolute_path": "Proxy.sol" - }, - { - "id": 119, - "name": "IBeacon", - "absolute_path": "IBeacon.sol" - }, - { - "id": 119, - "name": "IBeacon", - "absolute_path": "IBeacon.sol" - } - ], - "absolute_path": "BeaconProxy.sol", - "name": "BeaconProxy", - "node_type": 1, - "nodes": [ - { - "id": 1545, - "node_type": 10, - "src": { - "id": 1546, - "line": 568, - "column": 0, - "start": 20626, - "end": 20648, - "length": 23, - "parent_index": 1533 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 1550, - "node_type": 29, - "src": { - "id": 0, - "line": 570, - "column": 0, - "start": 20651, - "end": 20673, - "length": 23, - "parent_index": 1533 - }, - "absolute_path": "IBeacon.sol", - "file": "./IBeacon.sol", - "scope": 1533, - "unit_alias": "", - "source_unit": 902 - }, - { - "id": 1551, - "node_type": 29, - "src": { - "id": 0, - "line": 571, - "column": 0, - "start": 20675, - "end": 20696, - "length": 22, - "parent_index": 1533 - }, - "absolute_path": "Proxy.sol", - "file": "../Proxy.sol", - "scope": 1533, - "unit_alias": "", - "source_unit": 902 - }, - { - "id": 1552, - "node_type": 29, - "src": { - "id": 0, - "line": 572, - "column": 0, - "start": 20698, - "end": 20736, - "length": 39, - "parent_index": 1533 - }, - "absolute_path": "ERC1967Upgrade.sol", - "file": "../ERC1967/ERC1967Upgrade.sol", - "scope": 1533, - "unit_alias": "", - "source_unit": 902 - }, - { - "id": 1553, - "name": "BeaconProxy", - "node_type": 35, - "src": { - "id": 0, - "line": 582, - "column": 0, - "start": 21093, - "end": 22698, - "length": 1606, - "parent_index": 1533 - }, - "abstract": false, - "kind": 36, - "fully_implemented": true, - "nodes": [ - { - "id": 1563, - "node_type": 42, - "src": { - "id": 1564, - "line": 594, - "column": 4, - "start": 21575, - "end": 21779, - "length": 205, - "parent_index": 1553 - }, - "kind": 11, - "state_mutability": 3, - "visibility": 1, - "implemented": true, - "modifiers": [], - "parameters": { - "id": 1565, - "node_type": 43, - "src": { - "id": 1566, - "line": 594, - "column": 16, - "start": 21587, - "end": 21619, - "length": 33, - "parent_index": 1563 - }, - "parameters": [ - { - "id": 1567, - "node_type": 44, - "src": { - "id": 1568, - "line": 594, - "column": 16, - "start": 21587, - "end": 21600, - "length": 14, - "parent_index": 1565 - }, - "scope": 1563, - "name": "beacon", - "type_name": { - "id": 1569, - "node_type": 30, - "src": { - "id": 1570, - "line": 594, - "column": 16, - "start": 21587, - "end": 21593, - "length": 7, - "parent_index": 1567 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 1571, - "node_type": 44, - "src": { - "id": 1572, - "line": 594, - "column": 32, - "start": 21603, - "end": 21619, - "length": 17, - "parent_index": 1565 - }, - "scope": 1563, - "name": "data", - "type_name": { - "id": 1573, - "node_type": 30, - "src": { - "id": 1574, - "line": 594, - "column": 32, - "start": 21603, - "end": 21607, - "length": 5, - "parent_index": 1571 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "return_parameters": { - "id": 1575, - "node_type": 43, - "src": { - "id": 1564, - "line": 594, - "column": 4, - "start": 21575, - "end": 21779, - "length": 205, - "parent_index": 1563 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 1553, - "body": { - "id": 1576, - "node_type": 46, - "kind": 0, - "src": { - "id": 1577, - "line": 594, - "column": 59, - "start": 21630, - "end": 21779, - "length": 150, - "parent_index": 1563 - }, - "implemented": true, - "statements": [ - { - "id": 1578, - "node_type": 24, - "kind": 24, - "src": { - "id": 1579, - "line": 595, - "column": 8, - "start": 21640, - "end": 21718, - "length": 79, - "parent_index": 1576 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ], - "arguments": [ - { - "id": 1580, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1581, - "line": 595, - "column": 15, - "start": 21647, - "end": 21717, - "length": 71, - "parent_index": 1578 - }, - "operator": 11, - "left_expression": { - "id": 1582, - "node_type": 16, - "src": { - "id": 1583, - "line": 595, - "column": 15, - "start": 21647, - "end": 21658, - "length": 12, - "parent_index": 1580 - }, - "name": "_BEACON_SLOT", - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "overloaded_declarations": [], - "referenced_declaration": 1428, - "is_pure": false - }, - "right_expression": { - "id": 1584, - "node_type": 24, - "kind": 24, - "src": { - "id": 1585, - "line": 595, - "column": 31, - "start": 21663, - "end": 21717, - "length": 55, - "parent_index": 1580 - }, - "argument_types": [ - { - "type_identifier": "t_function_$_t_function__t_string_literal$$", - "type_string": "function(function(string memory))" - } - ], - "arguments": [ - { - "id": 1586, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1587, - "line": 595, - "column": 39, - "start": 21671, - "end": 21716, - "length": 46, - "parent_index": 1584 - }, - "operator": 2, - "left_expression": { - "id": 1588, - "node_type": 24, - "kind": 24, - "src": { - "id": 1589, - "line": 595, - "column": 39, - "start": 21671, - "end": 21712, - "length": 42, - "parent_index": 1586 - }, - "argument_types": [ - { - "type_identifier": "t_function__t_string_literal$", - "type_string": "function(string memory)" - } - ], - "arguments": [ - { - "id": 1590, - "node_type": 24, - "kind": 24, - "src": { - "id": 1591, - "line": 595, - "column": 47, - "start": 21679, - "end": 21711, - "length": 33, - "parent_index": 1588 - }, - "argument_types": [ - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"eip1967.proxy.beacon\"" - } - ], - "arguments": [ - { - "id": 1592, - "node_type": 17, - "kind": 50, - "value": "eip1967.proxy.beacon", - "hex_value": "656970313936372e70726f78792e626561636f6e", - "src": { - "id": 1593, - "line": 595, - "column": 57, - "start": 21689, - "end": 21710, - "length": 22, - "parent_index": 1590 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"eip1967.proxy.beacon\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 1594, - "node_type": 16, - "src": { - "id": 1595, - "line": 595, - "column": 47, - "start": 21679, - "end": 21687, - "length": 9, - "parent_index": 1590 - }, - "name": "keccak256", - "type_description": { - "type_identifier": "t_function_$_t_string_literal", - "type_string": "function(literal_string \"eip1967.proxy.beacon\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"eip1967.proxy.beacon\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function__t_string_literal$", - "type_string": "function(string memory)" - } - } - ], - "expression": { - "id": 1596, - "node_type": 16, - "src": { - "id": 1597, - "line": 595, - "column": 39, - "start": 21671, - "end": 21677, - "length": 7, - "parent_index": 1588 - }, - "type_name": { - "id": 1598, - "node_type": 30, - "src": { - "id": 1599, - "line": 595, - "column": 39, - "start": 21671, - "end": 21677, - "length": 7, - "parent_index": 1596 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_function__t_string_literal$", - "type_string": "function(function(string memory))" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function__t_string_literal$", - "type_string": "function(string memory)" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function__t_string_literal$$", - "type_string": "function(function(string memory))" - } - }, - "right_expression": { - "id": 1600, - "node_type": 17, - "kind": 49, - "value": "1", - "hex_value": "31", - "src": { - "id": 1601, - "line": 595, - "column": 84, - "start": 21716, - "end": 21716, - "length": 1, - "parent_index": 1586 - }, - "type_description": { - "type_identifier": "t_rational_1_by_1", - "type_string": "int_const 1" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - "type_description": { - "type_identifier": "t_function_$_t_function__t_string_literal$$", - "type_string": "function(function(string memory))" - } - } - ], - "expression": { - "id": 1602, - "node_type": 16, - "src": { - "id": 1603, - "line": 595, - "column": 31, - "start": 21663, - "end": 21669, - "length": 7, - "parent_index": 1584 - }, - "type_name": { - "id": 1604, - "node_type": 30, - "src": { - "id": 1605, - "line": 595, - "column": 31, - "start": 21663, - "end": 21669, - "length": 7, - "parent_index": 1602 - }, - "name": "bytes32", - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_function__t_string_literal$$", - "type_string": "function(function(function(string memory)))" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$_t_function__t_string_literal$$", - "type_string": "function(function(string memory))" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_function__t_string_literal$$$", - "type_string": "function(function(function(string memory)))" - } - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - } - ], - "expression": { - "id": 1606, - "node_type": 16, - "src": { - "id": 1607, - "line": 595, - "column": 8, - "start": 21640, - "end": 21645, - "length": 6, - "parent_index": 1578 - }, - "name": "assert", - "type_description": { - "type_identifier": "t_function_$_t_bool", - "type_string": "function(bool)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$", - "type_string": "function(bool)" - } - }, - { - "id": 1608, - "node_type": 24, - "kind": 24, - "src": { - "id": 1609, - "line": 596, - "column": 8, - "start": 21729, - "end": 21772, - "length": 44, - "parent_index": 1576 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ], - "arguments": [ - { - "id": 1610, - "node_type": 16, - "src": { - "id": 1611, - "line": 596, - "column": 32, - "start": 21753, - "end": 21758, - "length": 6, - "parent_index": 1608 - }, - "name": "beacon", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1610, - "is_pure": false - }, - { - "id": 1612, - "node_type": 16, - "src": { - "id": 1613, - "line": 596, - "column": 40, - "start": 21761, - "end": 21764, - "length": 4, - "parent_index": 1608 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 1612, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - { - "id": 1614, - "node_type": 17, - "kind": 61, - "value": "false", - "hex_value": "66616c7365", - "src": { - "id": 1615, - "line": 596, - "column": 46, - "start": 21767, - "end": 21771, - "length": 5, - "parent_index": 1608 - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - } - ], - "expression": { - "id": 1616, - "node_type": 16, - "src": { - "id": 1617, - "line": 596, - "column": 8, - "start": 21729, - "end": 21751, - "length": 23, - "parent_index": 1608 - }, - "name": "_upgradeBeaconToAndCall", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_bool", - "type_string": "function(address,bytes,bool)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_bool$", - "type_string": "function(address,bytes,bool)" - } - } - ] - } - }, - { - "id": 1619, - "name": "_beacon", - "node_type": 42, - "kind": 41, - "src": { - "id": 1620, - "line": 602, - "column": 4, - "start": 21850, - "end": 21944, - "length": 95, - "parent_index": 1553 - }, - "body": { - "id": 1633, - "node_type": 46, - "kind": 0, - "src": { - "id": 1634, - "line": 602, - "column": 63, - "start": 21909, - "end": 21944, - "length": 36, - "parent_index": 1619 - }, - "implemented": true, - "statements": [ - { - "id": 1635, - "node_type": 47, - "src": { - "id": 1636, - "line": 603, - "column": 8, - "start": 21919, - "end": 21938, - "length": 20, - "parent_index": 1619 - }, - "function_return_parameters": 1619, - "expression": { - "id": 1637, - "node_type": 24, - "kind": 24, - "src": { - "id": 1638, - "line": 603, - "column": 15, - "start": 21926, - "end": 21937, - "length": 12, - "parent_index": 1633 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 1639, - "node_type": 16, - "src": { - "id": 1640, - "line": 603, - "column": 15, - "start": 21926, - "end": 21935, - "length": 10, - "parent_index": 1637 - }, - "name": "_getBeacon", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1621, - "node_type": 43, - "src": { - "id": 1622, - "line": 602, - "column": 54, - "start": 21900, - "end": 21906, - "length": 7, - "parent_index": 1619 - }, - "parameters": [ - { - "id": 1623, - "node_type": 44, - "src": { - "id": 1624, - "line": 602, - "column": 54, - "start": 21900, - "end": 21906, - "length": 7, - "parent_index": 1621 - }, - "scope": 1619, - "name": "", - "type_name": { - "id": 1625, - "node_type": 30, - "src": { - "id": 1626, - "line": 602, - "column": 54, - "start": 21900, - "end": 21906, - "length": 7, - "parent_index": 1623 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 1627, - "node_type": 43, - "src": { - "id": 1628, - "line": 602, - "column": 54, - "start": 21900, - "end": 21906, - "length": 7, - "parent_index": 1619 - }, - "parameters": [ - { - "id": 1629, - "node_type": 44, - "src": { - "id": 1630, - "line": 602, - "column": 54, - "start": 21900, - "end": 21906, - "length": 7, - "parent_index": 1627 - }, - "scope": 1619, - "name": "", - "type_name": { - "id": 1631, - "node_type": 30, - "src": { - "id": 1632, - "line": 602, - "column": 54, - "start": 21900, - "end": 21906, - "length": 7, - "parent_index": 1629 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "scope": 1553, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 1642, - "name": "_implementation", - "node_type": 42, - "kind": 41, - "src": { - "id": 1643, - "line": 609, - "column": 4, - "start": 22048, - "end": 22185, - "length": 138, - "parent_index": 1553 - }, - "body": { - "id": 1658, - "node_type": 46, - "kind": 0, - "src": { - "id": 1659, - "line": 609, - "column": 80, - "start": 22124, - "end": 22185, - "length": 62, - "parent_index": 1642 - }, - "implemented": true, - "statements": [ - { - "id": 1660, - "node_type": 47, - "src": { - "id": 1661, - "line": 610, - "column": 8, - "start": 22134, - "end": 22179, - "length": 46, - "parent_index": 1642 - }, - "function_return_parameters": 1642, - "expression": { - "id": 1662, - "node_type": 24, - "kind": 24, - "src": { - "id": 1663, - "line": 610, - "column": 15, - "start": 22141, - "end": 22178, - "length": 38, - "parent_index": 1658 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 1664, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1665, - "line": 610, - "column": 15, - "start": 22141, - "end": 22176, - "length": 36, - "parent_index": 1662 - }, - "expression": { - "id": 1666, - "node_type": 24, - "kind": 24, - "src": { - "id": 1667, - "line": 610, - "column": 15, - "start": 22141, - "end": 22161, - "length": 21, - "parent_index": 1664 - }, - "argument_types": [ - { - "type_identifier": "t_function_$", - "type_string": "function()" - } - ], - "arguments": [ - { - "id": 1668, - "node_type": 24, - "kind": 24, - "src": { - "id": 1669, - "line": 610, - "column": 23, - "start": 22149, - "end": 22160, - "length": 12, - "parent_index": 1666 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 1670, - "node_type": 16, - "src": { - "id": 1671, - "line": 610, - "column": 23, - "start": 22149, - "end": 22158, - "length": 10, - "parent_index": 1668 - }, - "name": "_getBeacon", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - } - ], - "expression": { - "id": 1672, - "node_type": 16, - "src": { - "id": 1673, - "line": 610, - "column": 15, - "start": 22141, - "end": 22147, - "length": 7, - "parent_index": 1666 - }, - "name": "IBeacon", - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$", - "type_string": "function()" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$$", - "type_string": "function(function())" - } - }, - "member_name": "implementation", - "argument_types": [], - "type_description": { - "type_identifier": "t_function_$_t_function_$$", - "type_string": "function(function())" - } - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [ - { - "id": 1644, - "node_type": 63, - "name": "_implementation", - "src": { - "id": 1645, - "line": 609, - "column": 53, - "start": 22097, - "end": 22104, - "length": 8, - "parent_index": 1642 - }, - "referenced_declaration": 188, - "type_descriptions": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - } - ], - "parameters": { - "id": 1646, - "node_type": 43, - "src": { - "id": 1647, - "line": 609, - "column": 71, - "start": 22115, - "end": 22121, - "length": 7, - "parent_index": 1642 - }, - "parameters": [ - { - "id": 1648, - "node_type": 44, - "src": { - "id": 1649, - "line": 609, - "column": 71, - "start": 22115, - "end": 22121, - "length": 7, - "parent_index": 1646 - }, - "scope": 1642, - "name": "", - "type_name": { - "id": 1650, - "node_type": 30, - "src": { - "id": 1651, - "line": 609, - "column": 71, - "start": 22115, - "end": 22121, - "length": 7, - "parent_index": 1648 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 1652, - "node_type": 43, - "src": { - "id": 1653, - "line": 609, - "column": 71, - "start": 22115, - "end": 22121, - "length": 7, - "parent_index": 1642 - }, - "parameters": [ - { - "id": 1654, - "node_type": 44, - "src": { - "id": 1655, - "line": 609, - "column": 71, - "start": 22115, - "end": 22121, - "length": 7, - "parent_index": 1652 - }, - "scope": 1642, - "name": "", - "type_name": { - "id": 1656, - "node_type": 30, - "src": { - "id": 1657, - "line": 609, - "column": 71, - "start": 22115, - "end": 22121, - "length": 7, - "parent_index": 1654 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "scope": 1553, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 1675, - "name": "_setBeacon", - "node_type": 42, - "kind": 41, - "src": { - "id": 1676, - "line": 623, - "column": 4, - "start": 22564, - "end": 22696, - "length": 133, - "parent_index": 1553 - }, - "body": { - "id": 1688, - "node_type": 46, - "kind": 0, - "src": { - "id": 1689, - "line": 623, - "column": 76, - "start": 22636, - "end": 22696, - "length": 61, - "parent_index": 1675 - }, - "implemented": true, - "statements": [ - { - "id": 1690, - "node_type": 24, - "kind": 24, - "src": { - "id": 1691, - "line": 624, - "column": 8, - "start": 22646, - "end": 22689, - "length": 44, - "parent_index": 1688 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ], - "arguments": [ - { - "id": 1692, - "node_type": 16, - "src": { - "id": 1693, - "line": 624, - "column": 32, - "start": 22670, - "end": 22675, - "length": 6, - "parent_index": 1690 - }, - "name": "beacon", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1692, - "is_pure": false - }, - { - "id": 1694, - "node_type": 16, - "src": { - "id": 1695, - "line": 624, - "column": 40, - "start": 22678, - "end": 22681, - "length": 4, - "parent_index": 1690 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 1694, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - { - "id": 1696, - "node_type": 17, - "kind": 61, - "value": "false", - "hex_value": "66616c7365", - "src": { - "id": 1697, - "line": 624, - "column": 46, - "start": 22684, - "end": 22688, - "length": 5, - "parent_index": 1690 - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - } - ], - "expression": { - "id": 1698, - "node_type": 16, - "src": { - "id": 1699, - "line": 624, - "column": 8, - "start": 22646, - "end": 22668, - "length": 23, - "parent_index": 1690 - }, - "name": "_upgradeBeaconToAndCall", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_bool", - "type_string": "function(address,bytes,bool)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_bool$", - "type_string": "function(address,bytes,bool)" - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1677, - "node_type": 43, - "src": { - "id": 1678, - "line": 623, - "column": 24, - "start": 22584, - "end": 22616, - "length": 33, - "parent_index": 1675 - }, - "parameters": [ - { - "id": 1679, - "node_type": 44, - "src": { - "id": 1680, - "line": 623, - "column": 24, - "start": 22584, - "end": 22597, - "length": 14, - "parent_index": 1677 - }, - "scope": 1675, - "name": "beacon", - "type_name": { - "id": 1681, - "node_type": 30, - "src": { - "id": 1682, - "line": 623, - "column": 24, - "start": 22584, - "end": 22590, - "length": 7, - "parent_index": 1679 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 1683, - "node_type": 44, - "src": { - "id": 1684, - "line": 623, - "column": 40, - "start": 22600, - "end": 22616, - "length": 17, - "parent_index": 1677 - }, - "scope": 1675, - "name": "data", - "type_name": { - "id": 1685, - "node_type": 30, - "src": { - "id": 1686, - "line": 623, - "column": 40, - "start": 22600, - "end": 22604, - "length": 5, - "parent_index": 1683 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "return_parameters": { - "id": 1687, - "node_type": 43, - "src": { - "id": 1676, - "line": 623, - "column": 4, - "start": 22564, - "end": 22696, - "length": 133, - "parent_index": 1675 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 1553, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes", - "type_string": "function(address,bytes)" - } - } - ], - "linearized_base_contracts": [ - 160, - 902, - 1553, - 1550, - 1551, - 1552 - ], - "base_contracts": [ - { - "id": 1554, - "node_type": 62, - "src": { - "id": 1555, - "line": 582, - "column": 24, - "start": 21117, - "end": 21121, - "length": 5, - "parent_index": 1553 - }, - "base_name": { - "id": 1556, - "node_type": 52, - "src": { - "id": 1557, - "line": 582, - "column": 24, - "start": 21117, - "end": 21121, - "length": 5, - "parent_index": 1553 - }, - "name": "Proxy", - "referenced_declaration": 160 - } - }, - { - "id": 1558, - "node_type": 62, - "src": { - "id": 1559, - "line": 582, - "column": 31, - "start": 21124, - "end": 21137, - "length": 14, - "parent_index": 1553 - }, - "base_name": { - "id": 1560, - "node_type": 52, - "src": { - "id": 1561, - "line": 582, - "column": 31, - "start": 21124, - "end": 21137, - "length": 14, - "parent_index": 1553 - }, - "name": "ERC1967Upgrade", - "referenced_declaration": 902 - } - } - ], - "contract_dependencies": [ - 160, - 902, - 1550, - 1551, - 1552 - ] - } - ], - "src": { - "id": 1534, - "line": 582, - "column": 0, - "start": 21093, - "end": 22698, - "length": 1606, - "parent_index": 118 - } + "id": 1533, + "base_contracts": [ + { + "id": 1554, + "node_type": 62, + "src": { + "id": 1555, + "line": 582, + "column": 24, + "start": 21117, + "end": 21121, + "length": 5, + "parent_index": 1553 + }, + "base_name": { + "id": 1556, + "node_type": 52, + "src": { + "id": 1557, + "line": 582, + "column": 24, + "start": 21117, + "end": 21121, + "length": 5, + "parent_index": 1553 + }, + "name": "Proxy", + "referenced_declaration": 160 + } + }, + { + "id": 1558, + "node_type": 62, + "src": { + "id": 1559, + "line": 582, + "column": 31, + "start": 21124, + "end": 21137, + "length": 14, + "parent_index": 1553 + }, + "base_name": { + "id": 1560, + "node_type": 52, + "src": { + "id": 1561, + "line": 582, + "column": 31, + "start": 21124, + "end": 21137, + "length": 14, + "parent_index": 1553 + }, + "name": "ERC1967Upgrade", + "referenced_declaration": 902 + } + } + ], + "license": "MIT", + "exported_symbols": [ + { + "id": 1533, + "name": "BeaconProxy", + "absolute_path": "BeaconProxy.sol" + }, + { + "id": 902, + "name": "ERC1967Upgrade", + "absolute_path": "ERC1967Upgrade.sol" + }, + { + "id": 160, + "name": "Proxy", + "absolute_path": "Proxy.sol" + }, + { + "id": 119, + "name": "IBeacon", + "absolute_path": "IBeacon.sol" + }, + { + "id": 119, + "name": "IBeacon", + "absolute_path": "IBeacon.sol" + } + ], + "absolute_path": "BeaconProxy.sol", + "name": "BeaconProxy", + "node_type": 1, + "nodes": [ + { + "id": 1545, + "node_type": 10, + "src": { + "id": 1546, + "line": 568, + "column": 0, + "start": 20626, + "end": 20648, + "length": 23, + "parent_index": 1533 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 1550, + "node_type": 29, + "src": { + "id": 0, + "line": 570, + "column": 0, + "start": 20651, + "end": 20673, + "length": 23, + "parent_index": 1533 + }, + "absolute_path": "IBeacon.sol", + "file": "./IBeacon.sol", + "scope": 1533, + "unit_alias": "", + "source_unit": 902 + }, + { + "id": 1551, + "node_type": 29, + "src": { + "id": 0, + "line": 571, + "column": 0, + "start": 20675, + "end": 20696, + "length": 22, + "parent_index": 1533 + }, + "absolute_path": "Proxy.sol", + "file": "../Proxy.sol", + "scope": 1533, + "unit_alias": "", + "source_unit": 902 + }, + { + "id": 1552, + "node_type": 29, + "src": { + "id": 0, + "line": 572, + "column": 0, + "start": 20698, + "end": 20736, + "length": 39, + "parent_index": 1533 + }, + "absolute_path": "ERC1967Upgrade.sol", + "file": "../ERC1967/ERC1967Upgrade.sol", + "scope": 1533, + "unit_alias": "", + "source_unit": 902 + }, + { + "id": 1553, + "name": "BeaconProxy", + "node_type": 35, + "src": { + "id": 0, + "line": 582, + "column": 0, + "start": 21093, + "end": 22698, + "length": 1606, + "parent_index": 1533 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 1563, + "node_type": 42, + "src": { + "id": 1564, + "line": 594, + "column": 4, + "start": 21575, + "end": 21779, + "length": 205, + "parent_index": 1553 + }, + "kind": 11, + "state_mutability": 3, + "visibility": 1, + "implemented": true, + "modifiers": [], + "parameters": { + "id": 1565, + "node_type": 43, + "src": { + "id": 1566, + "line": 594, + "column": 16, + "start": 21587, + "end": 21619, + "length": 33, + "parent_index": 1563 + }, + "parameters": [ + { + "id": 1567, + "node_type": 44, + "src": { + "id": 1568, + "line": 594, + "column": 16, + "start": 21587, + "end": 21600, + "length": 14, + "parent_index": 1565 + }, + "scope": 1563, + "name": "beacon", + "type_name": { + "id": 1569, + "node_type": 30, + "src": { + "id": 1570, + "line": 594, + "column": 16, + "start": 21587, + "end": 21593, + "length": 7, + "parent_index": 1567 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1571, + "node_type": 44, + "src": { + "id": 1572, + "line": 594, + "column": 32, + "start": 21603, + "end": 21619, + "length": 17, + "parent_index": 1565 + }, + "scope": 1563, + "name": "data", + "type_name": { + "id": 1573, + "node_type": 30, + "src": { + "id": 1574, + "line": 594, + "column": 32, + "start": 21603, + "end": 21607, + "length": 5, + "parent_index": 1571 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 1575, + "node_type": 43, + "src": { + "id": 1564, + "line": 594, + "column": 4, + "start": 21575, + "end": 21779, + "length": 205, + "parent_index": 1563 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 1553, + "body": { + "id": 1576, + "node_type": 46, + "kind": 0, + "src": { + "id": 1577, + "line": 594, + "column": 59, + "start": 21630, + "end": 21779, + "length": 150, + "parent_index": 1563 + }, + "implemented": true, + "statements": [ + { + "id": 1578, + "node_type": 24, + "kind": 24, + "src": { + "id": 1579, + "line": 595, + "column": 8, + "start": 21640, + "end": 21718, + "length": 79, + "parent_index": 1576 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ], + "arguments": [ + { + "id": 1582, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1583, + "line": 595, + "column": 15, + "start": 21647, + "end": 21717, + "length": 71, + "parent_index": 1578 + }, + "operator": 11, + "left_expression": { + "id": 1584, + "node_type": 16, + "src": { + "id": 1585, + "line": 595, + "column": 15, + "start": 21647, + "end": 21658, + "length": 12, + "parent_index": 1582 + }, + "name": "_BEACON_SLOT", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "overloaded_declarations": [], + "referenced_declaration": 1428, + "is_pure": false + }, + "right_expression": { + "id": 1586, + "node_type": 24, + "kind": 24, + "src": { + "id": 1587, + "line": 595, + "column": 31, + "start": 21663, + "end": 21717, + "length": 55, + "parent_index": 1582 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_function__t_string_literal$", + "type_string": "function(function(string memory))" + } + ], + "arguments": [ + { + "id": 1592, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1593, + "line": 595, + "column": 39, + "start": 21671, + "end": 21716, + "length": 46, + "parent_index": 1586 + }, + "operator": 2, + "left_expression": { + "id": 1594, + "node_type": 24, + "kind": 24, + "src": { + "id": 1595, + "line": 595, + "column": 39, + "start": 21671, + "end": 21712, + "length": 42, + "parent_index": 1592 + }, + "argument_types": [ + { + "type_identifier": "t_function__t_string_literal$", + "type_string": "function(string memory)" + } + ], + "arguments": [ + { + "id": 1600, + "node_type": 24, + "kind": 24, + "src": { + "id": 1601, + "line": 595, + "column": 47, + "start": 21679, + "end": 21711, + "length": 33, + "parent_index": 1594 + }, + "argument_types": [ + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"eip1967.proxy.beacon\"" + } + ], + "arguments": [ + { + "id": 1604, + "node_type": 17, + "kind": 50, + "value": "eip1967.proxy.beacon", + "hex_value": "656970313936372e70726f78792e626561636f6e", + "src": { + "id": 1605, + "line": 595, + "column": 57, + "start": 21689, + "end": 21710, + "length": 22, + "parent_index": 1600 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"eip1967.proxy.beacon\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 1602, + "node_type": 16, + "src": { + "id": 1603, + "line": 595, + "column": 47, + "start": 21679, + "end": 21687, + "length": 9, + "parent_index": 1600 + }, + "name": "keccak256", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function__t_string_literal$", + "type_string": "function(string memory)" + } + } + ], + "expression": { + "id": 1596, + "node_type": 16, + "src": { + "id": 1597, + "line": 595, + "column": 39, + "start": 21671, + "end": 21677, + "length": 7, + "parent_index": 1594 + }, + "name": "uint256", + "type_name": { + "id": 1598, + "node_type": 30, + "src": { + "id": 1599, + "line": 595, + "column": 39, + "start": 21671, + "end": 21677, + "length": 7, + "parent_index": 1596 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_function__t_string_literal$", + "type_string": "function(function(string memory))" + } + }, + "right_expression": { + "id": 1606, + "node_type": 17, + "kind": 49, + "value": "1", + "hex_value": "31", + "src": { + "id": 1607, + "line": 595, + "column": 84, + "start": 21716, + "end": 21716, + "length": 1, + "parent_index": 1592 + }, + "type_description": { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_function_$_t_function__t_string_literal$", + "type_string": "function(function(string memory))" + } + } + ], + "expression": { + "id": 1588, + "node_type": 16, + "src": { + "id": 1589, + "line": 595, + "column": 31, + "start": 21663, + "end": 21669, + "length": 7, + "parent_index": 1586 + }, + "name": "bytes32", + "type_name": { + "id": 1590, + "node_type": 30, + "src": { + "id": 1591, + "line": 595, + "column": 31, + "start": 21663, + "end": 21669, + "length": 7, + "parent_index": 1588 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_bytes32$", + "type_string": "function(bytes32)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function__t_string_literal$", + "type_string": "function(function(function(string memory)))" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + } + ], + "expression": { + "id": 1580, + "node_type": 16, + "src": { + "id": 1581, + "line": 595, + "column": 8, + "start": 21640, + "end": 21645, + "length": 6, + "parent_index": 1578 + }, + "name": "assert", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$", + "type_string": "function(bool)" + } + }, + { + "id": 1608, + "node_type": 24, + "kind": 24, + "src": { + "id": 1609, + "line": 596, + "column": 8, + "start": 21729, + "end": 21772, + "length": 44, + "parent_index": 1576 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ], + "arguments": [ + { + "id": 1612, + "node_type": 16, + "src": { + "id": 1613, + "line": 596, + "column": 32, + "start": 21753, + "end": 21758, + "length": 6, + "parent_index": 1608 + }, + "name": "beacon", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1612, + "is_pure": false + }, + { + "id": 1614, + "node_type": 16, + "src": { + "id": 1615, + "line": 596, + "column": 40, + "start": 21761, + "end": 21764, + "length": 4, + "parent_index": 1608 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 1614, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 1616, + "node_type": 17, + "kind": 61, + "value": "false", + "hex_value": "66616c7365", + "src": { + "id": 1617, + "line": 596, + "column": 46, + "start": 21767, + "end": 21771, + "length": 5, + "parent_index": 1608 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + } + ], + "expression": { + "id": 1610, + "node_type": 16, + "src": { + "id": 1611, + "line": 596, + "column": 8, + "start": 21729, + "end": 21751, + "length": 23, + "parent_index": 1608 + }, + "name": "_upgradeBeaconToAndCall", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_bool$", + "type_string": "function(address,bytes,bool)" + } + } + ] + } + }, + { + "id": 1619, + "name": "_beacon", + "node_type": 42, + "kind": 41, + "src": { + "id": 1620, + "line": 602, + "column": 4, + "start": 21850, + "end": 21944, + "length": 95, + "parent_index": 1553 + }, + "body": { + "id": 1633, + "node_type": 46, + "kind": 0, + "src": { + "id": 1634, + "line": 602, + "column": 63, + "start": 21909, + "end": 21944, + "length": 36, + "parent_index": 1619 + }, + "implemented": true, + "statements": [ + { + "id": 1635, + "node_type": 47, + "src": { + "id": 1636, + "line": 603, + "column": 8, + "start": 21919, + "end": 21938, + "length": 20, + "parent_index": 1619 + }, + "function_return_parameters": 1619, + "expression": { + "id": 1637, + "node_type": 24, + "kind": 24, + "src": { + "id": 1638, + "line": 603, + "column": 15, + "start": 21926, + "end": 21937, + "length": 12, + "parent_index": 1633 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 1639, + "node_type": 16, + "src": { + "id": 1640, + "line": 603, + "column": 15, + "start": 21926, + "end": 21935, + "length": 10, + "parent_index": 1637 + }, + "name": "_getBeacon", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1621, + "node_type": 43, + "src": { + "id": 1622, + "line": 602, + "column": 54, + "start": 21900, + "end": 21906, + "length": 7, + "parent_index": 1619 + }, + "parameters": [ + { + "id": 1623, + "node_type": 44, + "src": { + "id": 1624, + "line": 602, + "column": 54, + "start": 21900, + "end": 21906, + "length": 7, + "parent_index": 1621 + }, + "scope": 1619, + "name": "", + "type_name": { + "id": 1625, + "node_type": 30, + "src": { + "id": 1626, + "line": 602, + "column": 54, + "start": 21900, + "end": 21906, + "length": 7, + "parent_index": 1623 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 1627, + "node_type": 43, + "src": { + "id": 1628, + "line": 602, + "column": 54, + "start": 21900, + "end": 21906, + "length": 7, + "parent_index": 1619 + }, + "parameters": [ + { + "id": 1629, + "node_type": 44, + "src": { + "id": 1630, + "line": 602, + "column": 54, + "start": 21900, + "end": 21906, + "length": 7, + "parent_index": 1627 + }, + "scope": 1619, + "name": "", + "type_name": { + "id": 1631, + "node_type": 30, + "src": { + "id": 1632, + "line": 602, + "column": 54, + "start": 21900, + "end": 21906, + "length": 7, + "parent_index": 1629 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 1553, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1642, + "name": "_implementation", + "node_type": 42, + "kind": 41, + "src": { + "id": 1643, + "line": 609, + "column": 4, + "start": 22048, + "end": 22185, + "length": 138, + "parent_index": 1553 + }, + "body": { + "id": 1658, + "node_type": 46, + "kind": 0, + "src": { + "id": 1659, + "line": 609, + "column": 80, + "start": 22124, + "end": 22185, + "length": 62, + "parent_index": 1642 + }, + "implemented": true, + "statements": [ + { + "id": 1660, + "node_type": 47, + "src": { + "id": 1661, + "line": 610, + "column": 8, + "start": 22134, + "end": 22179, + "length": 46, + "parent_index": 1642 + }, + "function_return_parameters": 1642, + "expression": { + "id": 1662, + "node_type": 24, + "kind": 24, + "src": { + "id": 1663, + "line": 610, + "column": 15, + "start": 22141, + "end": 22178, + "length": 38, + "parent_index": 1658 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 1664, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1665, + "line": 610, + "column": 15, + "start": 22141, + "end": 22176, + "length": 36, + "parent_index": 1662 + }, + "expression": { + "id": 1666, + "node_type": 24, + "kind": 24, + "src": { + "id": 1667, + "line": 610, + "column": 15, + "start": 22141, + "end": 22161, + "length": 21, + "parent_index": 1664 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 1670, + "node_type": 24, + "kind": 24, + "src": { + "id": 1671, + "line": 610, + "column": 23, + "start": 22149, + "end": 22160, + "length": 12, + "parent_index": 1666 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 1672, + "node_type": 16, + "src": { + "id": 1673, + "line": 610, + "column": 23, + "start": 22149, + "end": 22158, + "length": 10, + "parent_index": 1670 + }, + "name": "_getBeacon", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + ], + "expression": { + "id": 1668, + "node_type": 16, + "src": { + "id": 1669, + "line": 610, + "column": 15, + "start": 22141, + "end": 22147, + "length": 7, + "parent_index": 1666 + }, + "name": "IBeacon", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "member_name": "implementation", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [ + { + "id": 1644, + "node_type": 63, + "name": "_implementation", + "src": { + "id": 1645, + "line": 609, + "column": 53, + "start": 22097, + "end": 22104, + "length": 8, + "parent_index": 1642 + }, + "referenced_declaration": 188, + "type_descriptions": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ], + "parameters": { + "id": 1646, + "node_type": 43, + "src": { + "id": 1647, + "line": 609, + "column": 71, + "start": 22115, + "end": 22121, + "length": 7, + "parent_index": 1642 + }, + "parameters": [ + { + "id": 1648, + "node_type": 44, + "src": { + "id": 1649, + "line": 609, + "column": 71, + "start": 22115, + "end": 22121, + "length": 7, + "parent_index": 1646 + }, + "scope": 1642, + "name": "", + "type_name": { + "id": 1650, + "node_type": 30, + "src": { + "id": 1651, + "line": 609, + "column": 71, + "start": 22115, + "end": 22121, + "length": 7, + "parent_index": 1648 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 1652, + "node_type": 43, + "src": { + "id": 1653, + "line": 609, + "column": 71, + "start": 22115, + "end": 22121, + "length": 7, + "parent_index": 1642 + }, + "parameters": [ + { + "id": 1654, + "node_type": 44, + "src": { + "id": 1655, + "line": 609, + "column": 71, + "start": 22115, + "end": 22121, + "length": 7, + "parent_index": 1652 + }, + "scope": 1642, + "name": "", + "type_name": { + "id": 1656, + "node_type": 30, + "src": { + "id": 1657, + "line": 609, + "column": 71, + "start": 22115, + "end": 22121, + "length": 7, + "parent_index": 1654 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 1553, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1675, + "name": "_setBeacon", + "node_type": 42, + "kind": 41, + "src": { + "id": 1676, + "line": 623, + "column": 4, + "start": 22564, + "end": 22696, + "length": 133, + "parent_index": 1553 + }, + "body": { + "id": 1688, + "node_type": 46, + "kind": 0, + "src": { + "id": 1689, + "line": 623, + "column": 76, + "start": 22636, + "end": 22696, + "length": 61, + "parent_index": 1675 + }, + "implemented": true, + "statements": [ + { + "id": 1690, + "node_type": 24, + "kind": 24, + "src": { + "id": 1691, + "line": 624, + "column": 8, + "start": 22646, + "end": 22689, + "length": 44, + "parent_index": 1688 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ], + "arguments": [ + { + "id": 1694, + "node_type": 16, + "src": { + "id": 1695, + "line": 624, + "column": 32, + "start": 22670, + "end": 22675, + "length": 6, + "parent_index": 1690 + }, + "name": "beacon", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1694, + "is_pure": false + }, + { + "id": 1696, + "node_type": 16, + "src": { + "id": 1697, + "line": 624, + "column": 40, + "start": 22678, + "end": 22681, + "length": 4, + "parent_index": 1690 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 1696, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 1698, + "node_type": 17, + "kind": 61, + "value": "false", + "hex_value": "66616c7365", + "src": { + "id": 1699, + "line": 624, + "column": 46, + "start": 22684, + "end": 22688, + "length": 5, + "parent_index": 1690 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + } + ], + "expression": { + "id": 1692, + "node_type": 16, + "src": { + "id": 1693, + "line": 624, + "column": 8, + "start": 22646, + "end": 22668, + "length": 23, + "parent_index": 1690 + }, + "name": "_upgradeBeaconToAndCall", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_bool$", + "type_string": "function(address,bytes,bool)" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1677, + "node_type": 43, + "src": { + "id": 1678, + "line": 623, + "column": 24, + "start": 22584, + "end": 22616, + "length": 33, + "parent_index": 1675 + }, + "parameters": [ + { + "id": 1679, + "node_type": 44, + "src": { + "id": 1680, + "line": 623, + "column": 24, + "start": 22584, + "end": 22597, + "length": 14, + "parent_index": 1677 + }, + "scope": 1675, + "name": "beacon", + "type_name": { + "id": 1681, + "node_type": 30, + "src": { + "id": 1682, + "line": 623, + "column": 24, + "start": 22584, + "end": 22590, + "length": 7, + "parent_index": 1679 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1683, + "node_type": 44, + "src": { + "id": 1684, + "line": 623, + "column": 40, + "start": 22600, + "end": 22616, + "length": 17, + "parent_index": 1677 + }, + "scope": 1675, + "name": "data", + "type_name": { + "id": 1685, + "node_type": 30, + "src": { + "id": 1686, + "line": 623, + "column": 40, + "start": 22600, + "end": 22604, + "length": 5, + "parent_index": 1683 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 1687, + "node_type": 43, + "src": { + "id": 1676, + "line": 623, + "column": 4, + "start": 22564, + "end": 22696, + "length": 133, + "parent_index": 1675 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 1553, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$", + "type_string": "function(address,bytes)" + } + } + ], + "linearized_base_contracts": [ + 160, + 902, + 1553, + 1550, + 1551, + 1552 + ], + "base_contracts": [ + { + "id": 1554, + "node_type": 62, + "src": { + "id": 1555, + "line": 582, + "column": 24, + "start": 21117, + "end": 21121, + "length": 5, + "parent_index": 1553 + }, + "base_name": { + "id": 1556, + "node_type": 52, + "src": { + "id": 1557, + "line": 582, + "column": 24, + "start": 21117, + "end": 21121, + "length": 5, + "parent_index": 1553 + }, + "name": "Proxy", + "referenced_declaration": 160 + } + }, + { + "id": 1558, + "node_type": 62, + "src": { + "id": 1559, + "line": 582, + "column": 31, + "start": 21124, + "end": 21137, + "length": 14, + "parent_index": 1553 + }, + "base_name": { + "id": 1560, + "node_type": 52, + "src": { + "id": 1561, + "line": 582, + "column": 31, + "start": 21124, + "end": 21137, + "length": 14, + "parent_index": 1553 + }, + "name": "ERC1967Upgrade", + "referenced_declaration": 902 + } + } + ], + "contract_dependencies": [ + 160, + 902, + 1550, + 1551, + 1552 + ] + } + ], + "src": { + "id": 1534, + "line": 582, + "column": 0, + "start": 21093, + "end": 22698, + "length": 1606, + "parent_index": 118 + } } \ No newline at end of file diff --git a/data/tests/contracts/cheelee/Context.solgo.ast.json b/data/tests/contracts/cheelee/Context.solgo.ast.json index 4dbd804a..9039fc46 100644 --- a/data/tests/contracts/cheelee/Context.solgo.ast.json +++ b/data/tests/contracts/cheelee/Context.solgo.ast.json @@ -1,532 +1,532 @@ { - "id": 1700, - "base_contracts": [], - "license": "MIT", - "exported_symbols": [ - { - "id": 1700, - "name": "Context", - "absolute_path": "Context.sol" - } - ], - "absolute_path": "Context.sol", - "name": "Context", - "node_type": 1, - "nodes": [ - { - "id": 1714, - "node_type": 10, - "src": { - "id": 1715, - "line": 630, - "column": 0, - "start": 22734, - "end": 22756, - "length": 23, - "parent_index": 1700 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 1722, - "name": "Context", - "node_type": 35, - "src": { - "id": 0, - "line": 642, - "column": 0, - "start": 23255, - "end": 23622, - "length": 368, - "parent_index": 1700 - }, - "abstract": false, - "kind": 36, - "fully_implemented": true, - "nodes": [ - { - "id": 1724, - "name": "_msgSender", - "node_type": 42, - "kind": 41, - "src": { - "id": 1725, - "line": 643, - "column": 4, - "start": 23287, - "end": 23382, - "length": 96, - "parent_index": 1722 - }, - "body": { - "id": 1738, - "node_type": 46, - "kind": 0, - "src": { - "id": 1739, - "line": 643, - "column": 66, - "start": 23349, - "end": 23382, - "length": 34, - "parent_index": 1724 - }, - "implemented": true, - "statements": [ - { - "id": 1740, - "node_type": 47, - "src": { - "id": 1741, - "line": 644, - "column": 8, - "start": 23359, - "end": 23376, - "length": 18, - "parent_index": 1724 - }, - "function_return_parameters": 1724, - "expression": { - "id": 1742, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1743, - "line": 644, - "column": 15, - "start": 23366, - "end": 23375, - "length": 10, - "parent_index": 1738 - }, - "expression": { - "id": 1744, - "node_type": 16, - "src": { - "id": 1745, - "line": 644, - "column": 15, - "start": 23366, - "end": 23368, - "length": 3, - "parent_index": 1742 - }, - "name": "msg", - "type_description": { - "type_identifier": "t_magic_message", - "type_string": "msg" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "member_name": "sender", - "argument_types": [], - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1726, - "node_type": 43, - "src": { - "id": 1727, - "line": 643, - "column": 57, - "start": 23340, - "end": 23346, - "length": 7, - "parent_index": 1724 - }, - "parameters": [ - { - "id": 1728, - "node_type": 44, - "src": { - "id": 1729, - "line": 643, - "column": 57, - "start": 23340, - "end": 23346, - "length": 7, - "parent_index": 1726 - }, - "scope": 1724, - "name": "", - "type_name": { - "id": 1730, - "node_type": 30, - "src": { - "id": 1731, - "line": 643, - "column": 57, - "start": 23340, - "end": 23346, - "length": 7, - "parent_index": 1728 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 1732, - "node_type": 43, - "src": { - "id": 1733, - "line": 643, - "column": 57, - "start": 23340, - "end": 23346, - "length": 7, - "parent_index": 1724 - }, - "parameters": [ - { - "id": 1734, - "node_type": 44, - "src": { - "id": 1735, - "line": 643, - "column": 57, - "start": 23340, - "end": 23346, - "length": 7, - "parent_index": 1732 - }, - "scope": 1724, - "name": "", - "type_name": { - "id": 1736, - "node_type": 30, - "src": { - "id": 1737, - "line": 643, - "column": 57, - "start": 23340, - "end": 23346, - "length": 7, - "parent_index": 1734 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "scope": 1722, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 1747, - "name": "_msgData", - "node_type": 42, - "kind": 41, - "src": { - "id": 1748, - "line": 647, - "column": 4, - "start": 23389, - "end": 23620, - "length": 232, - "parent_index": 1722 - }, - "body": { - "id": 1761, - "node_type": 46, - "kind": 0, - "src": { - "id": 1762, - "line": 647, - "column": 71, - "start": 23456, - "end": 23620, - "length": 165, - "parent_index": 1747 - }, - "implemented": true, - "statements": [ - { - "id": 1763, - "node_type": 16, - "src": { - "id": 1764, - "line": 648, - "column": 8, - "start": 23466, - "end": 23469, - "length": 4, - "parent_index": 1761 - }, - "name": "this", - "type_description": { - "type_identifier": "t_contract$_Context_$1700", - "type_string": "contract Context" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - { - "id": 1765, - "node_type": 47, - "src": { - "id": 1766, - "line": 649, - "column": 8, - "start": 23599, - "end": 23614, - "length": 16, - "parent_index": 1747 - }, - "function_return_parameters": 1747, - "expression": { - "id": 1767, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1768, - "line": 649, - "column": 15, - "start": 23606, - "end": 23613, - "length": 8, - "parent_index": 1761 - }, - "expression": { - "id": 1769, - "node_type": 16, - "src": { - "id": 1770, - "line": 649, - "column": 15, - "start": 23606, - "end": 23608, - "length": 3, - "parent_index": 1767 - }, - "name": "msg", - "type_description": { - "type_identifier": "t_magic_message", - "type_string": "msg" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "member_name": "data", - "argument_types": [], - "type_description": { - "type_identifier": "t_bytes_calldata_ptr", - "type_string": "bytes calldata" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1749, - "node_type": 43, - "src": { - "id": 1750, - "line": 647, - "column": 55, - "start": 23440, - "end": 23453, - "length": 14, - "parent_index": 1747 - }, - "parameters": [ - { - "id": 1751, - "node_type": 44, - "src": { - "id": 1752, - "line": 647, - "column": 55, - "start": 23440, - "end": 23453, - "length": 14, - "parent_index": 1749 - }, - "scope": 1747, - "name": "", - "type_name": { - "id": 1753, - "node_type": 30, - "src": { - "id": 1754, - "line": 647, - "column": 55, - "start": 23440, - "end": 23444, - "length": 5, - "parent_index": 1751 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 4, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "return_parameters": { - "id": 1755, - "node_type": 43, - "src": { - "id": 1756, - "line": 647, - "column": 55, - "start": 23440, - "end": 23453, - "length": 14, - "parent_index": 1747 - }, - "parameters": [ - { - "id": 1757, - "node_type": 44, - "src": { - "id": 1758, - "line": 647, - "column": 55, - "start": 23440, - "end": 23453, - "length": 14, - "parent_index": 1755 - }, - "scope": 1747, - "name": "", - "type_name": { - "id": 1759, - "node_type": 30, - "src": { - "id": 1760, - "line": 647, - "column": 55, - "start": 23440, - "end": 23444, - "length": 5, - "parent_index": 1757 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 4, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "scope": 1722, - "type_description": { - "type_identifier": "t_function_$_t_bytes", - "type_string": "function(bytes)" - } - } - ], - "linearized_base_contracts": [ - 1722 - ], - "base_contracts": [], - "contract_dependencies": [] - } - ], - "src": { - "id": 1701, - "line": 642, - "column": 0, - "start": 23255, - "end": 23622, - "length": 368, - "parent_index": 118 - } + "id": 1700, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 1700, + "name": "Context", + "absolute_path": "Context.sol" + } + ], + "absolute_path": "Context.sol", + "name": "Context", + "node_type": 1, + "nodes": [ + { + "id": 1714, + "node_type": 10, + "src": { + "id": 1715, + "line": 630, + "column": 0, + "start": 22734, + "end": 22756, + "length": 23, + "parent_index": 1700 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 1722, + "name": "Context", + "node_type": 35, + "src": { + "id": 0, + "line": 642, + "column": 0, + "start": 23255, + "end": 23622, + "length": 368, + "parent_index": 1700 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 1724, + "name": "_msgSender", + "node_type": 42, + "kind": 41, + "src": { + "id": 1725, + "line": 643, + "column": 4, + "start": 23287, + "end": 23382, + "length": 96, + "parent_index": 1722 + }, + "body": { + "id": 1738, + "node_type": 46, + "kind": 0, + "src": { + "id": 1739, + "line": 643, + "column": 66, + "start": 23349, + "end": 23382, + "length": 34, + "parent_index": 1724 + }, + "implemented": true, + "statements": [ + { + "id": 1740, + "node_type": 47, + "src": { + "id": 1741, + "line": 644, + "column": 8, + "start": 23359, + "end": 23376, + "length": 18, + "parent_index": 1724 + }, + "function_return_parameters": 1724, + "expression": { + "id": 1742, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1743, + "line": 644, + "column": 15, + "start": 23366, + "end": 23375, + "length": 10, + "parent_index": 1738 + }, + "expression": { + "id": 1744, + "node_type": 16, + "src": { + "id": 1745, + "line": 644, + "column": 15, + "start": 23366, + "end": 23368, + "length": 3, + "parent_index": 1742 + }, + "name": "msg", + "type_description": { + "type_identifier": "t_magic_message", + "type_string": "msg" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "sender", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1726, + "node_type": 43, + "src": { + "id": 1727, + "line": 643, + "column": 57, + "start": 23340, + "end": 23346, + "length": 7, + "parent_index": 1724 + }, + "parameters": [ + { + "id": 1728, + "node_type": 44, + "src": { + "id": 1729, + "line": 643, + "column": 57, + "start": 23340, + "end": 23346, + "length": 7, + "parent_index": 1726 + }, + "scope": 1724, + "name": "", + "type_name": { + "id": 1730, + "node_type": 30, + "src": { + "id": 1731, + "line": 643, + "column": 57, + "start": 23340, + "end": 23346, + "length": 7, + "parent_index": 1728 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 1732, + "node_type": 43, + "src": { + "id": 1733, + "line": 643, + "column": 57, + "start": 23340, + "end": 23346, + "length": 7, + "parent_index": 1724 + }, + "parameters": [ + { + "id": 1734, + "node_type": 44, + "src": { + "id": 1735, + "line": 643, + "column": 57, + "start": 23340, + "end": 23346, + "length": 7, + "parent_index": 1732 + }, + "scope": 1724, + "name": "", + "type_name": { + "id": 1736, + "node_type": 30, + "src": { + "id": 1737, + "line": 643, + "column": 57, + "start": 23340, + "end": 23346, + "length": 7, + "parent_index": 1734 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 1722, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1747, + "name": "_msgData", + "node_type": 42, + "kind": 41, + "src": { + "id": 1748, + "line": 647, + "column": 4, + "start": 23389, + "end": 23620, + "length": 232, + "parent_index": 1722 + }, + "body": { + "id": 1761, + "node_type": 46, + "kind": 0, + "src": { + "id": 1762, + "line": 647, + "column": 71, + "start": 23456, + "end": 23620, + "length": 165, + "parent_index": 1747 + }, + "implemented": true, + "statements": [ + { + "id": 1763, + "node_type": 16, + "src": { + "id": 1764, + "line": 648, + "column": 8, + "start": 23466, + "end": 23469, + "length": 4, + "parent_index": 1761 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_Context_$1700", + "type_string": "contract Context" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 1765, + "node_type": 47, + "src": { + "id": 1766, + "line": 649, + "column": 8, + "start": 23599, + "end": 23614, + "length": 16, + "parent_index": 1747 + }, + "function_return_parameters": 1747, + "expression": { + "id": 1767, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1768, + "line": 649, + "column": 15, + "start": 23606, + "end": 23613, + "length": 8, + "parent_index": 1761 + }, + "expression": { + "id": 1769, + "node_type": 16, + "src": { + "id": 1770, + "line": 649, + "column": 15, + "start": 23606, + "end": 23608, + "length": 3, + "parent_index": 1767 + }, + "name": "msg", + "type_description": { + "type_identifier": "t_magic_message", + "type_string": "msg" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "data", + "argument_types": [], + "type_description": { + "type_identifier": "t_bytes_calldata_ptr", + "type_string": "bytes calldata" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1749, + "node_type": 43, + "src": { + "id": 1750, + "line": 647, + "column": 55, + "start": 23440, + "end": 23453, + "length": 14, + "parent_index": 1747 + }, + "parameters": [ + { + "id": 1751, + "node_type": 44, + "src": { + "id": 1752, + "line": 647, + "column": 55, + "start": 23440, + "end": 23453, + "length": 14, + "parent_index": 1749 + }, + "scope": 1747, + "name": "", + "type_name": { + "id": 1753, + "node_type": 30, + "src": { + "id": 1754, + "line": 647, + "column": 55, + "start": 23440, + "end": 23444, + "length": 5, + "parent_index": 1751 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 4, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 1755, + "node_type": 43, + "src": { + "id": 1756, + "line": 647, + "column": 55, + "start": 23440, + "end": 23453, + "length": 14, + "parent_index": 1747 + }, + "parameters": [ + { + "id": 1757, + "node_type": 44, + "src": { + "id": 1758, + "line": 647, + "column": 55, + "start": 23440, + "end": 23453, + "length": 14, + "parent_index": 1755 + }, + "scope": 1747, + "name": "", + "type_name": { + "id": 1759, + "node_type": 30, + "src": { + "id": 1760, + "line": 647, + "column": 55, + "start": 23440, + "end": 23444, + "length": 5, + "parent_index": 1757 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 4, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 1722, + "type_description": { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + } + } + ], + "linearized_base_contracts": [ + 1722 + ], + "base_contracts": [], + "contract_dependencies": [] + } + ], + "src": { + "id": 1701, + "line": 642, + "column": 0, + "start": 23255, + "end": 23622, + "length": 368, + "parent_index": 118 + } } \ No newline at end of file diff --git a/data/tests/contracts/cheelee/ERC1967Proxy.solgo.ast.json b/data/tests/contracts/cheelee/ERC1967Proxy.solgo.ast.json index 0f56e36d..efb64910 100644 --- a/data/tests/contracts/cheelee/ERC1967Proxy.solgo.ast.json +++ b/data/tests/contracts/cheelee/ERC1967Proxy.solgo.ast.json @@ -1,1169 +1,1145 @@ { - "id": 2146, - "base_contracts": [ - { - "id": 2181, - "node_type": 62, - "src": { - "id": 2182, - "line": 800, - "column": 25, - "start": 28345, - "end": 28349, - "length": 5, - "parent_index": 2180 - }, - "base_name": { - "id": 2183, - "node_type": 52, - "src": { - "id": 2184, - "line": 800, - "column": 25, - "start": 28345, - "end": 28349, - "length": 5, - "parent_index": 2180 - }, - "name": "Proxy", - "referenced_declaration": 160 - } - }, - { - "id": 2185, - "node_type": 62, - "src": { - "id": 2186, - "line": 800, - "column": 32, - "start": 28352, - "end": 28365, - "length": 14, - "parent_index": 2180 - }, - "base_name": { - "id": 2187, - "node_type": 52, - "src": { - "id": 2188, - "line": 800, - "column": 32, - "start": 28352, - "end": 28365, - "length": 14, - "parent_index": 2180 - }, - "name": "ERC1967Upgrade", - "referenced_declaration": 902 - } - } - ], - "license": "MIT", - "exported_symbols": [ - { - "id": 2146, - "name": "ERC1967Proxy", - "absolute_path": "ERC1967Proxy.sol" - }, - { - "id": 902, - "name": "ERC1967Upgrade", - "absolute_path": "ERC1967Upgrade.sol" - }, - { - "id": 902, - "name": "ERC1967Upgrade", - "absolute_path": "ERC1967Upgrade.sol" - }, - { - "id": 160, - "name": "Proxy", - "absolute_path": "Proxy.sol" - }, - { - "id": 160, - "name": "Proxy", - "absolute_path": "Proxy.sol" - } - ], - "absolute_path": "ERC1967Proxy.sol", - "name": "ERC1967Proxy", - "node_type": 1, - "nodes": [ - { - "id": 2166, - "node_type": 10, - "src": { - "id": 2167, - "line": 789, - "column": 0, - "start": 27867, - "end": 27889, - "length": 23, - "parent_index": 2146 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 2178, - "node_type": 29, - "src": { - "id": 0, - "line": 791, - "column": 0, - "start": 27892, - "end": 27913, - "length": 22, - "parent_index": 2146 - }, - "absolute_path": "Proxy.sol", - "file": "../Proxy.sol", - "scope": 2146, - "unit_alias": "", - "source_unit": 1991 - }, - { - "id": 2179, - "node_type": 29, - "src": { - "id": 0, - "line": 792, - "column": 0, - "start": 27915, - "end": 27944, - "length": 30, - "parent_index": 2146 - }, - "absolute_path": "ERC1967Upgrade.sol", - "file": "./ERC1967Upgrade.sol", - "scope": 2146, - "unit_alias": "", - "source_unit": 1991 - }, - { - "id": 2180, - "name": "ERC1967Proxy", - "node_type": 35, - "src": { - "id": 0, - "line": 800, - "column": 0, - "start": 28320, - "end": 29149, - "length": 830, - "parent_index": 2146 - }, - "abstract": false, - "kind": 36, - "fully_implemented": true, - "nodes": [ - { - "id": 2190, - "node_type": 42, - "src": { - "id": 2191, - "line": 807, - "column": 4, - "start": 28713, - "end": 28929, - "length": 217, - "parent_index": 2180 - }, - "kind": 11, - "state_mutability": 3, - "visibility": 1, - "implemented": true, - "modifiers": [], - "parameters": { - "id": 2192, - "node_type": 43, - "src": { - "id": 2193, - "line": 807, - "column": 16, - "start": 28725, - "end": 28758, - "length": 34, - "parent_index": 2190 - }, - "parameters": [ - { - "id": 2194, - "node_type": 44, - "src": { - "id": 2195, - "line": 807, - "column": 16, - "start": 28725, - "end": 28738, - "length": 14, - "parent_index": 2192 - }, - "scope": 2190, - "name": "_logic", - "type_name": { - "id": 2196, - "node_type": 30, - "src": { - "id": 2197, - "line": 807, - "column": 16, - "start": 28725, - "end": 28731, - "length": 7, - "parent_index": 2194 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 2198, - "node_type": 44, - "src": { - "id": 2199, - "line": 807, - "column": 32, - "start": 28741, - "end": 28758, - "length": 18, - "parent_index": 2192 - }, - "scope": 2190, - "name": "_data", - "type_name": { - "id": 2200, - "node_type": 30, - "src": { - "id": 2201, - "line": 807, - "column": 32, - "start": 28741, - "end": 28745, - "length": 5, - "parent_index": 2198 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "return_parameters": { - "id": 2202, - "node_type": 43, - "src": { - "id": 2191, - "line": 807, - "column": 4, - "start": 28713, - "end": 28929, - "length": 217, - "parent_index": 2190 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 2180, - "body": { - "id": 2203, - "node_type": 46, - "kind": 0, - "src": { - "id": 2204, - "line": 807, - "column": 60, - "start": 28769, - "end": 28929, - "length": 161, - "parent_index": 2190 - }, - "implemented": true, - "statements": [ - { - "id": 2205, - "node_type": 24, - "kind": 24, - "src": { - "id": 2206, - "line": 808, - "column": 8, - "start": 28779, - "end": 28873, - "length": 95, - "parent_index": 2203 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ], - "arguments": [ - { - "id": 2207, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 2208, - "line": 808, - "column": 15, - "start": 28786, - "end": 28872, - "length": 87, - "parent_index": 2205 - }, - "operator": 11, - "left_expression": { - "id": 2209, - "node_type": 16, - "src": { - "id": 2210, - "line": 808, - "column": 15, - "start": 28786, - "end": 28805, - "length": 20, - "parent_index": 2207 - }, - "name": "_IMPLEMENTATION_SLOT", - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "overloaded_declarations": [], - "referenced_declaration": 924, - "is_pure": false - }, - "right_expression": { - "id": 2211, - "node_type": 24, - "kind": 24, - "src": { - "id": 2212, - "line": 808, - "column": 39, - "start": 28810, - "end": 28872, - "length": 63, - "parent_index": 2207 - }, - "argument_types": [ - { - "type_identifier": "t_function_$_t_function__t_string_literal$$", - "type_string": "function(function(string memory))" - } - ], - "arguments": [ - { - "id": 2213, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 2214, - "line": 808, - "column": 47, - "start": 28818, - "end": 28871, - "length": 54, - "parent_index": 2211 - }, - "operator": 2, - "left_expression": { - "id": 2215, - "node_type": 24, - "kind": 24, - "src": { - "id": 2216, - "line": 808, - "column": 47, - "start": 28818, - "end": 28867, - "length": 50, - "parent_index": 2213 - }, - "argument_types": [ - { - "type_identifier": "t_function__t_string_literal$", - "type_string": "function(string memory)" - } - ], - "arguments": [ - { - "id": 2217, - "node_type": 24, - "kind": 24, - "src": { - "id": 2218, - "line": 808, - "column": 55, - "start": 28826, - "end": 28866, - "length": 41, - "parent_index": 2215 - }, - "argument_types": [ - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"eip1967.proxy.implementation\"" - } - ], - "arguments": [ - { - "id": 2219, - "node_type": 17, - "kind": 50, - "value": "eip1967.proxy.implementation", - "hex_value": "656970313936372e70726f78792e696d706c656d656e746174696f6e", - "src": { - "id": 2220, - "line": 808, - "column": 65, - "start": 28836, - "end": 28865, - "length": 30, - "parent_index": 2217 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"eip1967.proxy.implementation\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 2221, - "node_type": 16, - "src": { - "id": 2222, - "line": 808, - "column": 55, - "start": 28826, - "end": 28834, - "length": 9, - "parent_index": 2217 - }, - "name": "keccak256", - "type_description": { - "type_identifier": "t_function_$_t_string_literal", - "type_string": "function(literal_string \"eip1967.proxy.implementation\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"eip1967.proxy.implementation\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function__t_string_literal$", - "type_string": "function(string memory)" - } - } - ], - "expression": { - "id": 2223, - "node_type": 16, - "src": { - "id": 2224, - "line": 808, - "column": 47, - "start": 28818, - "end": 28824, - "length": 7, - "parent_index": 2215 - }, - "type_name": { - "id": 2225, - "node_type": 30, - "src": { - "id": 2226, - "line": 808, - "column": 47, - "start": 28818, - "end": 28824, - "length": 7, - "parent_index": 2223 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_function__t_string_literal$", - "type_string": "function(function(string memory))" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function__t_string_literal$", - "type_string": "function(string memory)" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function__t_string_literal$$", - "type_string": "function(function(string memory))" - } - }, - "right_expression": { - "id": 2227, - "node_type": 17, - "kind": 49, - "value": "1", - "hex_value": "31", - "src": { - "id": 2228, - "line": 808, - "column": 100, - "start": 28871, - "end": 28871, - "length": 1, - "parent_index": 2213 - }, - "type_description": { - "type_identifier": "t_rational_1_by_1", - "type_string": "int_const 1" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - "type_description": { - "type_identifier": "t_function_$_t_function__t_string_literal$$", - "type_string": "function(function(string memory))" - } - } - ], - "expression": { - "id": 2229, - "node_type": 16, - "src": { - "id": 2230, - "line": 808, - "column": 39, - "start": 28810, - "end": 28816, - "length": 7, - "parent_index": 2211 - }, - "type_name": { - "id": 2231, - "node_type": 30, - "src": { - "id": 2232, - "line": 808, - "column": 39, - "start": 28810, - "end": 28816, - "length": 7, - "parent_index": 2229 - }, - "name": "bytes32", - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_function__t_string_literal$$", - "type_string": "function(function(function(string memory)))" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$_t_function__t_string_literal$$", - "type_string": "function(function(string memory))" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_function__t_string_literal$$$", - "type_string": "function(function(function(string memory)))" - } - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - } - ], - "expression": { - "id": 2233, - "node_type": 16, - "src": { - "id": 2234, - "line": 808, - "column": 8, - "start": 28779, - "end": 28784, - "length": 6, - "parent_index": 2205 - }, - "name": "assert", - "type_description": { - "type_identifier": "t_function_$_t_bool", - "type_string": "function(bool)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$", - "type_string": "function(bool)" - } - }, - { - "id": 2235, - "node_type": 24, - "kind": 24, - "src": { - "id": 2236, - "line": 809, - "column": 8, - "start": 28884, - "end": 28922, - "length": 39, - "parent_index": 2203 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ], - "arguments": [ - { - "id": 2237, - "node_type": 16, - "src": { - "id": 2238, - "line": 809, - "column": 26, - "start": 28902, - "end": 28907, - "length": 6, - "parent_index": 2235 - }, - "name": "_logic", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 2237, - "is_pure": false - }, - { - "id": 2239, - "node_type": 16, - "src": { - "id": 2240, - "line": 809, - "column": 34, - "start": 28910, - "end": 28914, - "length": 5, - "parent_index": 2235 - }, - "name": "_data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 2239, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - { - "id": 2241, - "node_type": 17, - "kind": 61, - "value": "false", - "hex_value": "66616c7365", - "src": { - "id": 2242, - "line": 809, - "column": 41, - "start": 28917, - "end": 28921, - "length": 5, - "parent_index": 2235 - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - } - ], - "expression": { - "id": 2243, - "node_type": 16, - "src": { - "id": 2244, - "line": 809, - "column": 8, - "start": 28884, - "end": 28900, - "length": 17, - "parent_index": 2235 - }, - "name": "_upgradeToAndCall", - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_bool", - "type_string": "function(address,bytes,bool)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_bool$", - "type_string": "function(address,bytes,bool)" - } - } - ] - } - }, - { - "id": 2246, - "name": "_implementation", - "node_type": 42, - "kind": 41, - "src": { - "id": 2247, - "line": 815, - "column": 4, - "start": 29008, - "end": 29147, - "length": 140, - "parent_index": 2180 - }, - "body": { - "id": 2262, - "node_type": 46, - "kind": 0, - "src": { - "id": 2263, - "line": 815, - "column": 85, - "start": 29089, - "end": 29147, - "length": 59, - "parent_index": 2246 - }, - "implemented": true, - "statements": [ - { - "id": 2264, - "node_type": 47, - "src": { - "id": 2265, - "line": 816, - "column": 8, - "start": 29099, - "end": 29141, - "length": 43, - "parent_index": 2246 - }, - "function_return_parameters": 2246, - "expression": { - "id": 2266, - "node_type": 24, - "kind": 24, - "src": { - "id": 2267, - "line": 816, - "column": 15, - "start": 29106, - "end": 29140, - "length": 35, - "parent_index": 2262 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 2268, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 2269, - "line": 816, - "column": 15, - "start": 29106, - "end": 29138, - "length": 33, - "parent_index": 2266 - }, - "expression": { - "id": 2270, - "node_type": 16, - "src": { - "id": 2271, - "line": 816, - "column": 15, - "start": 29106, - "end": 29119, - "length": 14, - "parent_index": 2268 - }, - "name": "ERC1967Upgrade", - "type_description": { - "type_identifier": "t_contract$_ERC1967Upgrade_$902", - "type_string": "contract ERC1967Upgrade" - }, - "overloaded_declarations": [], - "referenced_declaration": 902, - "is_pure": false - }, - "member_name": "_getImplementation", - "argument_types": [], - "type_description": { - "type_identifier": "t_contract$_ERC1967Upgrade_$902", - "type_string": "contract ERC1967Upgrade" - } - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [ - { - "id": 2248, - "node_type": 63, - "name": "_implementation", - "src": { - "id": 2249, - "line": 815, - "column": 53, - "start": 29057, - "end": 29064, - "length": 8, - "parent_index": 2246 - }, - "referenced_declaration": 2031, - "type_descriptions": { - "type_identifier": "t_address", - "type_string": "address" - } - } - ], - "parameters": { - "id": 2250, - "node_type": 43, - "src": { - "id": 2251, - "line": 815, - "column": 71, - "start": 29075, - "end": 29086, - "length": 12, - "parent_index": 2246 - }, - "parameters": [ - { - "id": 2252, - "node_type": 44, - "src": { - "id": 2253, - "line": 815, - "column": 71, - "start": 29075, - "end": 29086, - "length": 12, - "parent_index": 2250 - }, - "scope": 2246, - "name": "impl", - "type_name": { - "id": 2254, - "node_type": 30, - "src": { - "id": 2255, - "line": 815, - "column": 71, - "start": 29075, - "end": 29081, - "length": 7, - "parent_index": 2252 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 2256, - "node_type": 43, - "src": { - "id": 2257, - "line": 815, - "column": 71, - "start": 29075, - "end": 29086, - "length": 12, - "parent_index": 2246 - }, - "parameters": [ - { - "id": 2258, - "node_type": 44, - "src": { - "id": 2259, - "line": 815, - "column": 71, - "start": 29075, - "end": 29086, - "length": 12, - "parent_index": 2256 - }, - "scope": 2246, - "name": "impl", - "type_name": { - "id": 2260, - "node_type": 30, - "src": { - "id": 2261, - "line": 815, - "column": 71, - "start": 29075, - "end": 29081, - "length": 7, - "parent_index": 2258 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "scope": 2180, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - } - ], - "linearized_base_contracts": [ - 160, - 902, - 2180, - 2178, - 2179 - ], - "base_contracts": [ - { - "id": 2181, - "node_type": 62, - "src": { - "id": 2182, - "line": 800, - "column": 25, - "start": 28345, - "end": 28349, - "length": 5, - "parent_index": 2180 - }, - "base_name": { - "id": 2183, - "node_type": 52, - "src": { - "id": 2184, - "line": 800, - "column": 25, - "start": 28345, - "end": 28349, - "length": 5, - "parent_index": 2180 - }, - "name": "Proxy", - "referenced_declaration": 160 - } - }, - { - "id": 2185, - "node_type": 62, - "src": { - "id": 2186, - "line": 800, - "column": 32, - "start": 28352, - "end": 28365, - "length": 14, - "parent_index": 2180 - }, - "base_name": { - "id": 2187, - "node_type": 52, - "src": { - "id": 2188, - "line": 800, - "column": 32, - "start": 28352, - "end": 28365, - "length": 14, - "parent_index": 2180 - }, - "name": "ERC1967Upgrade", - "referenced_declaration": 902 - } - } - ], - "contract_dependencies": [ - 160, - 902, - 2178, - 2179 - ] - } - ], - "src": { - "id": 2147, - "line": 800, - "column": 0, - "start": 28320, - "end": 29149, - "length": 830, - "parent_index": 118 - } + "id": 2146, + "base_contracts": [ + { + "id": 2181, + "node_type": 62, + "src": { + "id": 2182, + "line": 800, + "column": 25, + "start": 28345, + "end": 28349, + "length": 5, + "parent_index": 2180 + }, + "base_name": { + "id": 2183, + "node_type": 52, + "src": { + "id": 2184, + "line": 800, + "column": 25, + "start": 28345, + "end": 28349, + "length": 5, + "parent_index": 2180 + }, + "name": "Proxy", + "referenced_declaration": 160 + } + }, + { + "id": 2185, + "node_type": 62, + "src": { + "id": 2186, + "line": 800, + "column": 32, + "start": 28352, + "end": 28365, + "length": 14, + "parent_index": 2180 + }, + "base_name": { + "id": 2187, + "node_type": 52, + "src": { + "id": 2188, + "line": 800, + "column": 32, + "start": 28352, + "end": 28365, + "length": 14, + "parent_index": 2180 + }, + "name": "ERC1967Upgrade", + "referenced_declaration": 902 + } + } + ], + "license": "MIT", + "exported_symbols": [ + { + "id": 2146, + "name": "ERC1967Proxy", + "absolute_path": "ERC1967Proxy.sol" + }, + { + "id": 902, + "name": "ERC1967Upgrade", + "absolute_path": "ERC1967Upgrade.sol" + }, + { + "id": 902, + "name": "ERC1967Upgrade", + "absolute_path": "ERC1967Upgrade.sol" + }, + { + "id": 160, + "name": "Proxy", + "absolute_path": "Proxy.sol" + }, + { + "id": 160, + "name": "Proxy", + "absolute_path": "Proxy.sol" + } + ], + "absolute_path": "ERC1967Proxy.sol", + "name": "ERC1967Proxy", + "node_type": 1, + "nodes": [ + { + "id": 2166, + "node_type": 10, + "src": { + "id": 2167, + "line": 789, + "column": 0, + "start": 27867, + "end": 27889, + "length": 23, + "parent_index": 2146 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 2178, + "node_type": 29, + "src": { + "id": 0, + "line": 791, + "column": 0, + "start": 27892, + "end": 27913, + "length": 22, + "parent_index": 2146 + }, + "absolute_path": "Proxy.sol", + "file": "../Proxy.sol", + "scope": 2146, + "unit_alias": "", + "source_unit": 1991 + }, + { + "id": 2179, + "node_type": 29, + "src": { + "id": 0, + "line": 792, + "column": 0, + "start": 27915, + "end": 27944, + "length": 30, + "parent_index": 2146 + }, + "absolute_path": "ERC1967Upgrade.sol", + "file": "./ERC1967Upgrade.sol", + "scope": 2146, + "unit_alias": "", + "source_unit": 1991 + }, + { + "id": 2180, + "name": "ERC1967Proxy", + "node_type": 35, + "src": { + "id": 0, + "line": 800, + "column": 0, + "start": 28320, + "end": 29149, + "length": 830, + "parent_index": 2146 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 2190, + "node_type": 42, + "src": { + "id": 2191, + "line": 807, + "column": 4, + "start": 28713, + "end": 28929, + "length": 217, + "parent_index": 2180 + }, + "kind": 11, + "state_mutability": 3, + "visibility": 1, + "implemented": true, + "modifiers": [], + "parameters": { + "id": 2192, + "node_type": 43, + "src": { + "id": 2193, + "line": 807, + "column": 16, + "start": 28725, + "end": 28758, + "length": 34, + "parent_index": 2190 + }, + "parameters": [ + { + "id": 2194, + "node_type": 44, + "src": { + "id": 2195, + "line": 807, + "column": 16, + "start": 28725, + "end": 28738, + "length": 14, + "parent_index": 2192 + }, + "scope": 2190, + "name": "_logic", + "type_name": { + "id": 2196, + "node_type": 30, + "src": { + "id": 2197, + "line": 807, + "column": 16, + "start": 28725, + "end": 28731, + "length": 7, + "parent_index": 2194 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2198, + "node_type": 44, + "src": { + "id": 2199, + "line": 807, + "column": 32, + "start": 28741, + "end": 28758, + "length": 18, + "parent_index": 2192 + }, + "scope": 2190, + "name": "_data", + "type_name": { + "id": 2200, + "node_type": 30, + "src": { + "id": 2201, + "line": 807, + "column": 32, + "start": 28741, + "end": 28745, + "length": 5, + "parent_index": 2198 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 2202, + "node_type": 43, + "src": { + "id": 2191, + "line": 807, + "column": 4, + "start": 28713, + "end": 28929, + "length": 217, + "parent_index": 2190 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2180, + "body": { + "id": 2203, + "node_type": 46, + "kind": 0, + "src": { + "id": 2204, + "line": 807, + "column": 60, + "start": 28769, + "end": 28929, + "length": 161, + "parent_index": 2190 + }, + "implemented": true, + "statements": [ + { + "id": 2205, + "node_type": 24, + "kind": 24, + "src": { + "id": 2206, + "line": 808, + "column": 8, + "start": 28779, + "end": 28873, + "length": 95, + "parent_index": 2203 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ], + "arguments": [ + { + "id": 2209, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 2210, + "line": 808, + "column": 15, + "start": 28786, + "end": 28872, + "length": 87, + "parent_index": 2205 + }, + "operator": 11, + "left_expression": { + "id": 2211, + "node_type": 16, + "src": { + "id": 2212, + "line": 808, + "column": 15, + "start": 28786, + "end": 28805, + "length": 20, + "parent_index": 2209 + }, + "name": "_IMPLEMENTATION_SLOT", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "overloaded_declarations": [], + "referenced_declaration": 924, + "is_pure": false + }, + "right_expression": { + "id": 2213, + "node_type": 24, + "kind": 24, + "src": { + "id": 2214, + "line": 808, + "column": 39, + "start": 28810, + "end": 28872, + "length": 63, + "parent_index": 2209 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_function__t_string_literal$", + "type_string": "function(function(string memory))" + } + ], + "arguments": [ + { + "id": 2219, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 2220, + "line": 808, + "column": 47, + "start": 28818, + "end": 28871, + "length": 54, + "parent_index": 2213 + }, + "operator": 2, + "left_expression": { + "id": 2221, + "node_type": 24, + "kind": 24, + "src": { + "id": 2222, + "line": 808, + "column": 47, + "start": 28818, + "end": 28867, + "length": 50, + "parent_index": 2219 + }, + "argument_types": [ + { + "type_identifier": "t_function__t_string_literal$", + "type_string": "function(string memory)" + } + ], + "arguments": [ + { + "id": 2227, + "node_type": 24, + "kind": 24, + "src": { + "id": 2228, + "line": 808, + "column": 55, + "start": 28826, + "end": 28866, + "length": 41, + "parent_index": 2221 + }, + "argument_types": [ + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"eip1967.proxy.implementation\"" + } + ], + "arguments": [ + { + "id": 2231, + "node_type": 17, + "kind": 50, + "value": "eip1967.proxy.implementation", + "hex_value": "656970313936372e70726f78792e696d706c656d656e746174696f6e", + "src": { + "id": 2232, + "line": 808, + "column": 65, + "start": 28836, + "end": 28865, + "length": 30, + "parent_index": 2227 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"eip1967.proxy.implementation\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 2229, + "node_type": 16, + "src": { + "id": 2230, + "line": 808, + "column": 55, + "start": 28826, + "end": 28834, + "length": 9, + "parent_index": 2227 + }, + "name": "keccak256", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function__t_string_literal$", + "type_string": "function(string memory)" + } + } + ], + "expression": { + "id": 2223, + "node_type": 16, + "src": { + "id": 2224, + "line": 808, + "column": 47, + "start": 28818, + "end": 28824, + "length": 7, + "parent_index": 2221 + }, + "name": "uint256", + "type_name": { + "id": 2225, + "node_type": 30, + "src": { + "id": 2226, + "line": 808, + "column": 47, + "start": 28818, + "end": 28824, + "length": 7, + "parent_index": 2223 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_function__t_string_literal$", + "type_string": "function(function(string memory))" + } + }, + "right_expression": { + "id": 2233, + "node_type": 17, + "kind": 49, + "value": "1", + "hex_value": "31", + "src": { + "id": 2234, + "line": 808, + "column": 100, + "start": 28871, + "end": 28871, + "length": 1, + "parent_index": 2219 + }, + "type_description": { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_function_$_t_function__t_string_literal$", + "type_string": "function(function(string memory))" + } + } + ], + "expression": { + "id": 2215, + "node_type": 16, + "src": { + "id": 2216, + "line": 808, + "column": 39, + "start": 28810, + "end": 28816, + "length": 7, + "parent_index": 2213 + }, + "name": "bytes32", + "type_name": { + "id": 2217, + "node_type": 30, + "src": { + "id": 2218, + "line": 808, + "column": 39, + "start": 28810, + "end": 28816, + "length": 7, + "parent_index": 2215 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_bytes32$", + "type_string": "function(bytes32)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function__t_string_literal$", + "type_string": "function(function(function(string memory)))" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + } + ], + "expression": { + "id": 2207, + "node_type": 16, + "src": { + "id": 2208, + "line": 808, + "column": 8, + "start": 28779, + "end": 28784, + "length": 6, + "parent_index": 2205 + }, + "name": "assert", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$", + "type_string": "function(bool)" + } + }, + { + "id": 2235, + "node_type": 24, + "kind": 24, + "src": { + "id": 2236, + "line": 809, + "column": 8, + "start": 28884, + "end": 28922, + "length": 39, + "parent_index": 2203 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ], + "arguments": [ + { + "id": 2239, + "node_type": 16, + "src": { + "id": 2240, + "line": 809, + "column": 26, + "start": 28902, + "end": 28907, + "length": 6, + "parent_index": 2235 + }, + "name": "_logic", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2239, + "is_pure": false + }, + { + "id": 2241, + "node_type": 16, + "src": { + "id": 2242, + "line": 809, + "column": 34, + "start": 28910, + "end": 28914, + "length": 5, + "parent_index": 2235 + }, + "name": "_data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 2241, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 2243, + "node_type": 17, + "kind": 61, + "value": "false", + "hex_value": "66616c7365", + "src": { + "id": 2244, + "line": 809, + "column": 41, + "start": 28917, + "end": 28921, + "length": 5, + "parent_index": 2235 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + } + ], + "expression": { + "id": 2237, + "node_type": 16, + "src": { + "id": 2238, + "line": 809, + "column": 8, + "start": 28884, + "end": 28900, + "length": 17, + "parent_index": 2235 + }, + "name": "_upgradeToAndCall", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_bool$", + "type_string": "function(address,bytes,bool)" + } + } + ] + } + }, + { + "id": 2246, + "name": "_implementation", + "node_type": 42, + "kind": 41, + "src": { + "id": 2247, + "line": 815, + "column": 4, + "start": 29008, + "end": 29147, + "length": 140, + "parent_index": 2180 + }, + "body": { + "id": 2262, + "node_type": 46, + "kind": 0, + "src": { + "id": 2263, + "line": 815, + "column": 85, + "start": 29089, + "end": 29147, + "length": 59, + "parent_index": 2246 + }, + "implemented": true, + "statements": [ + { + "id": 2264, + "node_type": 47, + "src": { + "id": 2265, + "line": 816, + "column": 8, + "start": 29099, + "end": 29141, + "length": 43, + "parent_index": 2246 + }, + "function_return_parameters": 2246, + "expression": { + "id": 2266, + "node_type": 24, + "kind": 24, + "src": { + "id": 2267, + "line": 816, + "column": 15, + "start": 29106, + "end": 29140, + "length": 35, + "parent_index": 2262 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 2268, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2269, + "line": 816, + "column": 15, + "start": 29106, + "end": 29138, + "length": 33, + "parent_index": 2266 + }, + "expression": { + "id": 2270, + "node_type": 16, + "src": { + "id": 2271, + "line": 816, + "column": 15, + "start": 29106, + "end": 29119, + "length": 14, + "parent_index": 2268 + }, + "name": "ERC1967Upgrade", + "type_description": { + "type_identifier": "t_contract$_ERC1967Upgrade_$902", + "type_string": "contract ERC1967Upgrade" + }, + "overloaded_declarations": [], + "referenced_declaration": 902, + "is_pure": false + }, + "member_name": "_getImplementation", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_ERC1967Upgrade_$902", + "type_string": "contract ERC1967Upgrade" + } + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [ + { + "id": 2248, + "node_type": 63, + "name": "_implementation", + "src": { + "id": 2249, + "line": 815, + "column": 53, + "start": 29057, + "end": 29064, + "length": 8, + "parent_index": 2246 + }, + "referenced_declaration": 2031, + "type_descriptions": { + "type_identifier": "t_address", + "type_string": "address" + } + } + ], + "parameters": { + "id": 2250, + "node_type": 43, + "src": { + "id": 2251, + "line": 815, + "column": 71, + "start": 29075, + "end": 29086, + "length": 12, + "parent_index": 2246 + }, + "parameters": [ + { + "id": 2252, + "node_type": 44, + "src": { + "id": 2253, + "line": 815, + "column": 71, + "start": 29075, + "end": 29086, + "length": 12, + "parent_index": 2250 + }, + "scope": 2246, + "name": "impl", + "type_name": { + "id": 2254, + "node_type": 30, + "src": { + "id": 2255, + "line": 815, + "column": 71, + "start": 29075, + "end": 29081, + "length": 7, + "parent_index": 2252 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 2256, + "node_type": 43, + "src": { + "id": 2257, + "line": 815, + "column": 71, + "start": 29075, + "end": 29086, + "length": 12, + "parent_index": 2246 + }, + "parameters": [ + { + "id": 2258, + "node_type": 44, + "src": { + "id": 2259, + "line": 815, + "column": 71, + "start": 29075, + "end": 29086, + "length": 12, + "parent_index": 2256 + }, + "scope": 2246, + "name": "impl", + "type_name": { + "id": 2260, + "node_type": 30, + "src": { + "id": 2261, + "line": 815, + "column": 71, + "start": 29075, + "end": 29081, + "length": 7, + "parent_index": 2258 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 2180, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ], + "linearized_base_contracts": [ + 160, + 902, + 2180, + 2178, + 2179 + ], + "base_contracts": [ + { + "id": 2181, + "node_type": 62, + "src": { + "id": 2182, + "line": 800, + "column": 25, + "start": 28345, + "end": 28349, + "length": 5, + "parent_index": 2180 + }, + "base_name": { + "id": 2183, + "node_type": 52, + "src": { + "id": 2184, + "line": 800, + "column": 25, + "start": 28345, + "end": 28349, + "length": 5, + "parent_index": 2180 + }, + "name": "Proxy", + "referenced_declaration": 160 + } + }, + { + "id": 2185, + "node_type": 62, + "src": { + "id": 2186, + "line": 800, + "column": 32, + "start": 28352, + "end": 28365, + "length": 14, + "parent_index": 2180 + }, + "base_name": { + "id": 2187, + "node_type": 52, + "src": { + "id": 2188, + "line": 800, + "column": 32, + "start": 28352, + "end": 28365, + "length": 14, + "parent_index": 2180 + }, + "name": "ERC1967Upgrade", + "referenced_declaration": 902 + } + } + ], + "contract_dependencies": [ + 160, + 902, + 2178, + 2179 + ] + } + ], + "src": { + "id": 2147, + "line": 800, + "column": 0, + "start": 28320, + "end": 29149, + "length": 830, + "parent_index": 118 + } } \ No newline at end of file diff --git a/data/tests/contracts/cheelee/ERC1967Upgrade.solgo.ast.json b/data/tests/contracts/cheelee/ERC1967Upgrade.solgo.ast.json index fb320e13..e828dcd6 100644 --- a/data/tests/contracts/cheelee/ERC1967Upgrade.solgo.ast.json +++ b/data/tests/contracts/cheelee/ERC1967Upgrade.solgo.ast.json @@ -1,6747 +1,6575 @@ { - "id": 902, - "base_contracts": [], - "license": "MIT", - "exported_symbols": [ - { - "id": 902, - "name": "ERC1967Upgrade", - "absolute_path": "ERC1967Upgrade.sol" - }, - { - "id": 767, - "name": "StorageSlot", - "absolute_path": "StorageSlot.sol" - }, - { - "id": 251, - "name": "Address", - "absolute_path": "Address.sol" - }, - { - "id": 119, - "name": "IBeacon", - "absolute_path": "IBeacon.sol" - } - ], - "absolute_path": "ERC1967Upgrade.sol", - "name": "ERC1967Upgrade", - "node_type": 1, - "nodes": [ - { - "id": 912, - "node_type": 10, - "src": { - "id": 913, - "line": 378, - "column": 0, - "start": 13854, - "end": 13876, - "length": 23, - "parent_index": 902 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "2", - ";" - ], - "text": "pragma solidity ^0.8.2;" - }, - { - "id": 914, - "node_type": 29, - "src": { - "id": 0, - "line": 380, - "column": 0, - "start": 13879, - "end": 13909, - "length": 31, - "parent_index": 902 - }, - "absolute_path": "IBeacon.sol", - "file": "../beacon/IBeacon.sol", - "scope": 902, - "unit_alias": "", - "source_unit": 767 - }, - { - "id": 915, - "node_type": 29, - "src": { - "id": 0, - "line": 381, - "column": 0, - "start": 13911, - "end": 13943, - "length": 33, - "parent_index": 902 - }, - "absolute_path": "Address.sol", - "file": "../../utils/Address.sol", - "scope": 902, - "unit_alias": "", - "source_unit": 767 - }, - { - "id": 916, - "node_type": 29, - "src": { - "id": 0, - "line": 382, - "column": 0, - "start": 13945, - "end": 13981, - "length": 37, - "parent_index": 902 - }, - "absolute_path": "StorageSlot.sol", - "file": "../../utils/StorageSlot.sol", - "scope": 902, - "unit_alias": "", - "source_unit": 767 - }, - { - "id": 917, - "name": "ERC1967Upgrade", - "node_type": 35, - "src": { - "id": 0, - "line": 392, - "column": 0, - "start": 14221, - "end": 20590, - "length": 6370, - "parent_index": 902 - }, - "abstract": false, - "kind": 36, - "fully_implemented": true, - "nodes": [ - { - "id": 919, - "name": "_ROLLBACK_SLOT", - "is_constant": true, - "is_state_variable": true, - "node_type": 44, - "src": { - "id": 920, - "line": 394, - "column": 4, - "start": 14339, - "end": 14447, - "length": 109, - "parent_index": 917 - }, - "scope": 917, - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "visibility": 2, - "storage_location": 1, - "mutability": 1, - "type_name": { - "id": 921, - "node_type": 30, - "src": { - "id": 922, - "line": 394, - "column": 4, - "start": 14339, - "end": 14345, - "length": 7, - "parent_index": 919 - }, - "name": "bytes32", - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "referenced_declaration": 0 - } - }, - { - "id": 924, - "name": "_IMPLEMENTATION_SLOT", - "is_constant": true, - "is_state_variable": true, - "node_type": 44, - "src": { - "id": 925, - "line": 401, - "column": 4, - "start": 14673, - "end": 14788, - "length": 116, - "parent_index": 917 - }, - "scope": 917, - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "visibility": 1, - "storage_location": 1, - "mutability": 1, - "type_name": { - "id": 926, - "node_type": 30, - "src": { - "id": 927, - "line": 401, - "column": 4, - "start": 14673, - "end": 14679, - "length": 7, - "parent_index": 924 - }, - "name": "bytes32", - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "referenced_declaration": 0 - } - }, - { - "id": 929, - "node_type": 57, - "src": { - "id": 930, - "line": 406, - "column": 4, - "start": 14868, - "end": 14914, - "length": 47, - "parent_index": 917 - }, - "parameters": { - "id": 931, - "node_type": 43, - "src": { - "id": 930, - "line": 406, - "column": 4, - "start": 14868, - "end": 14914, - "length": 47, - "parent_index": 929 - }, - "parameters": [ - { - "id": 932, - "node_type": 44, - "src": { - "id": 933, - "line": 406, - "column": 19, - "start": 14883, - "end": 14912, - "length": 30, - "parent_index": 931 - }, - "scope": 929, - "name": "implementation", - "type_name": { - "id": 934, - "node_type": 30, - "src": { - "id": 935, - "line": 406, - "column": 19, - "start": 14883, - "end": 14889, - "length": 7, - "parent_index": 932 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4, - "indexed": true - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "name": "Upgraded", - "anonymous": false - }, - { - "id": 937, - "name": "_getImplementation", - "node_type": 42, - "kind": 41, - "src": { - "id": 938, - "line": 411, - "column": 4, - "start": 14993, - "end": 15132, - "length": 140, - "parent_index": 917 - }, - "body": { - "id": 951, - "node_type": 46, - "kind": 0, - "src": { - "id": 952, - "line": 411, - "column": 66, - "start": 15055, - "end": 15132, - "length": 78, - "parent_index": 937 - }, - "implemented": true, - "statements": [ - { - "id": 953, - "node_type": 47, - "src": { - "id": 954, - "line": 412, - "column": 8, - "start": 15065, - "end": 15126, - "length": 62, - "parent_index": 937 - }, - "function_return_parameters": 937, - "expression": { - "id": 955, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 956, - "line": 412, - "column": 15, - "start": 15072, - "end": 15125, - "length": 54, - "parent_index": 951 - }, - "expression": { - "id": 957, - "node_type": 24, - "kind": 24, - "src": { - "id": 958, - "line": 412, - "column": 15, - "start": 15072, - "end": 15119, - "length": 48, - "parent_index": 955 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "arguments": [ - { - "id": 959, - "node_type": 16, - "src": { - "id": 960, - "line": 412, - "column": 42, - "start": 15099, - "end": 15118, - "length": 20, - "parent_index": 957 - }, - "name": "_IMPLEMENTATION_SLOT", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - } - ], - "expression": { - "id": 961, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 962, - "line": 412, - "column": 15, - "start": 15072, - "end": 15097, - "length": 26, - "parent_index": 957 - }, - "expression": { - "id": 963, - "node_type": 16, - "src": { - "id": 964, - "line": 412, - "column": 15, - "start": 15072, - "end": 15082, - "length": 11, - "parent_index": 961 - }, - "name": "StorageSlot", - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - }, - "overloaded_declarations": [], - "referenced_declaration": 767, - "is_pure": false - }, - "member_name": "getAddressSlot", - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - }, - "member_name": "value", - "argument_types": [], - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 5, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 939, - "node_type": 43, - "src": { - "id": 940, - "line": 411, - "column": 57, - "start": 15046, - "end": 15052, - "length": 7, - "parent_index": 937 - }, - "parameters": [ - { - "id": 941, - "node_type": 44, - "src": { - "id": 942, - "line": 411, - "column": 57, - "start": 15046, - "end": 15052, - "length": 7, - "parent_index": 939 - }, - "scope": 937, - "name": "", - "type_name": { - "id": 943, - "node_type": 30, - "src": { - "id": 944, - "line": 411, - "column": 57, - "start": 15046, - "end": 15052, - "length": 7, - "parent_index": 941 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 945, - "node_type": 43, - "src": { - "id": 946, - "line": 411, - "column": 57, - "start": 15046, - "end": 15052, - "length": 7, - "parent_index": 937 - }, - "parameters": [ - { - "id": 947, - "node_type": 44, - "src": { - "id": 948, - "line": 411, - "column": 57, - "start": 15046, - "end": 15052, - "length": 7, - "parent_index": 945 - }, - "scope": 937, - "name": "", - "type_name": { - "id": 949, - "node_type": 30, - "src": { - "id": 950, - "line": 411, - "column": 57, - "start": 15046, - "end": 15052, - "length": 7, - "parent_index": 947 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "scope": 917, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 966, - "name": "_setImplementation", - "node_type": 42, - "kind": 41, - "src": { - "id": 967, - "line": 418, - "column": 4, - "start": 15224, - "end": 15482, - "length": 259, - "parent_index": 917 - }, - "body": { - "id": 975, - "node_type": 46, - "kind": 0, - "src": { - "id": 976, - "line": 418, - "column": 67, - "start": 15287, - "end": 15482, - "length": 196, - "parent_index": 966 - }, - "implemented": true, - "statements": [ - { - "id": 977, - "node_type": 24, - "kind": 24, - "src": { - "id": 978, - "line": 419, - "column": 8, - "start": 15297, - "end": 15391, - "length": 95, - "parent_index": 975 - }, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC1967: new implementation is not a contract\"" - } - ], - "arguments": [ - { - "id": 979, - "node_type": 24, - "kind": 24, - "src": { - "id": 980, - "line": 419, - "column": 16, - "start": 15305, - "end": 15341, - "length": 37, - "parent_index": 977 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 981, - "node_type": 16, - "src": { - "id": 982, - "line": 419, - "column": 35, - "start": 15324, - "end": 15340, - "length": 17, - "parent_index": 979 - }, - "name": "newImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 981, - "is_pure": false - } - ], - "expression": { - "id": 983, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 984, - "line": 419, - "column": 16, - "start": 15305, - "end": 15322, - "length": 18, - "parent_index": 979 - }, - "expression": { - "id": 985, - "node_type": 16, - "src": { - "id": 986, - "line": 419, - "column": 16, - "start": 15305, - "end": 15311, - "length": 7, - "parent_index": 983 - }, - "name": "Address", - "type_description": { - "type_identifier": "t_contract$_Address_$251", - "type_string": "contract Address" - }, - "overloaded_declarations": [], - "referenced_declaration": 251, - "is_pure": false - }, - "member_name": "isContract", - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "type_description": { - "type_identifier": "t_contract$_Address_$251", - "type_string": "contract Address" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - }, - { - "id": 987, - "node_type": 17, - "kind": 50, - "value": "ERC1967: new implementation is not a contract", - "hex_value": "455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374", - "src": { - "id": 988, - "line": 419, - "column": 55, - "start": 15344, - "end": 15390, - "length": 47, - "parent_index": 977 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC1967: new implementation is not a contract\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - ] - } - ], - "expression": { - "id": 989, - "node_type": 16, - "src": { - "id": 990, - "line": 419, - "column": 8, - "start": 15297, - "end": 15303, - "length": 7, - "parent_index": 977 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$$_t_string_literal", - "type_string": "function(function(address),literal_string \"ERC1967: new implementation is not a contract\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC1967: new implementation is not a contract\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", - "type_string": "function(function(address),string memory)" - } - }, - { - "id": 991, - "node_type": 81, - "src": { - "id": 992, - "line": 420, - "column": 8, - "start": 15402, - "end": 15476, - "length": 75, - "parent_index": 975 - }, - "expression": { - "id": 993, - "node_type": 27, - "src": { - "id": 994, - "line": 420, - "column": 8, - "start": 15402, - "end": 15475, - "length": 74, - "parent_index": 975 - }, - "operator": 11, - "left_expression": { - "id": 995, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 996, - "line": 420, - "column": 8, - "start": 15402, - "end": 15455, - "length": 54, - "parent_index": 993 - }, - "expression": { - "id": 997, - "node_type": 24, - "kind": 24, - "src": { - "id": 998, - "line": 420, - "column": 8, - "start": 15402, - "end": 15449, - "length": 48, - "parent_index": 995 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "arguments": [ - { - "id": 999, - "node_type": 16, - "src": { - "id": 1000, - "line": 420, - "column": 35, - "start": 15429, - "end": 15448, - "length": 20, - "parent_index": 997 - }, - "name": "_IMPLEMENTATION_SLOT", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - } - ], - "expression": { - "id": 1001, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1002, - "line": 420, - "column": 8, - "start": 15402, - "end": 15427, - "length": 26, - "parent_index": 997 - }, - "expression": { - "id": 1003, - "node_type": 16, - "src": { - "id": 1004, - "line": 420, - "column": 8, - "start": 15402, - "end": 15412, - "length": 11, - "parent_index": 1001 - }, - "name": "StorageSlot", - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - }, - "overloaded_declarations": [], - "referenced_declaration": 767, - "is_pure": false - }, - "member_name": "getAddressSlot", - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - }, - "member_name": "value", - "argument_types": [], - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - }, - "right_expression": { - "id": 1005, - "node_type": 16, - "src": { - "id": 1006, - "line": 420, - "column": 65, - "start": 15459, - "end": 15475, - "length": 17, - "parent_index": 993 - }, - "name": "newImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1005, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - } - } - ] - }, - "implemented": true, - "visibility": 2, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 968, - "node_type": 43, - "src": { - "id": 969, - "line": 418, - "column": 32, - "start": 15252, - "end": 15276, - "length": 25, - "parent_index": 966 - }, - "parameters": [ - { - "id": 970, - "node_type": 44, - "src": { - "id": 971, - "line": 418, - "column": 32, - "start": 15252, - "end": 15276, - "length": 25, - "parent_index": 968 - }, - "scope": 966, - "name": "newImplementation", - "type_name": { - "id": 972, - "node_type": 30, - "src": { - "id": 973, - "line": 418, - "column": 32, - "start": 15252, - "end": 15258, - "length": 7, - "parent_index": 970 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 974, - "node_type": 43, - "src": { - "id": 967, - "line": 418, - "column": 4, - "start": 15224, - "end": 15482, - "length": 259, - "parent_index": 966 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 917, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 1008, - "name": "_upgradeTo", - "node_type": 42, - "kind": 41, - "src": { - "id": 1009, - "line": 428, - "column": 4, - "start": 15589, - "end": 15740, - "length": 152, - "parent_index": 917 - }, - "body": { - "id": 1017, - "node_type": 46, - "kind": 0, - "src": { - "id": 1018, - "line": 428, - "column": 60, - "start": 15645, - "end": 15740, - "length": 96, - "parent_index": 1008 - }, - "implemented": true, - "statements": [ - { - "id": 1019, - "node_type": 24, - "kind": 24, - "src": { - "id": 1020, - "line": 429, - "column": 8, - "start": 15655, - "end": 15691, - "length": 37, - "parent_index": 1017 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 1021, - "node_type": 16, - "src": { - "id": 1022, - "line": 429, - "column": 27, - "start": 15674, - "end": 15690, - "length": 17, - "parent_index": 1019 - }, - "name": "newImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1021, - "is_pure": false - } - ], - "expression": { - "id": 1023, - "node_type": 16, - "src": { - "id": 1024, - "line": 429, - "column": 8, - "start": 15655, - "end": 15672, - "length": 18, - "parent_index": 1019 - }, - "name": "_setImplementation", - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - }, - { - "id": 1025, - "node_type": 64, - "src": { - "id": 1026, - "line": 430, - "column": 8, - "start": 15702, - "end": 15734, - "length": 33, - "parent_index": 1008 - }, - "arguments": [ - { - "id": 1027, - "node_type": 16, - "src": { - "id": 1028, - "line": 430, - "column": 22, - "start": 15716, - "end": 15732, - "length": 17, - "parent_index": 1017 - }, - "name": "newImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1027, - "is_pure": false - } - ], - "expression": { - "id": 1029, - "node_type": 16, - "src": { - "id": 1030, - "line": 430, - "column": 13, - "start": 15707, - "end": 15714, - "length": 8, - "parent_index": 1017 - }, - "name": "Upgraded", - "type_description": { - "type_identifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", - "type_string": "event ERC1967Upgrade.Upgraded" - }, - "overloaded_declarations": [], - "referenced_declaration": 929, - "is_pure": false - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1010, - "node_type": 43, - "src": { - "id": 1011, - "line": 428, - "column": 24, - "start": 15609, - "end": 15633, - "length": 25, - "parent_index": 1008 - }, - "parameters": [ - { - "id": 1012, - "node_type": 44, - "src": { - "id": 1013, - "line": 428, - "column": 24, - "start": 15609, - "end": 15633, - "length": 25, - "parent_index": 1010 - }, - "scope": 1008, - "name": "newImplementation", - "type_name": { - "id": 1014, - "node_type": 30, - "src": { - "id": 1015, - "line": 428, - "column": 24, - "start": 15609, - "end": 15615, - "length": 7, - "parent_index": 1012 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 1016, - "node_type": 43, - "src": { - "id": 1009, - "line": 428, - "column": 4, - "start": 15589, - "end": 15740, - "length": 152, - "parent_index": 1008 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 917, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 1032, - "name": "_upgradeToAndCall", - "node_type": 42, - "kind": 41, - "src": { - "id": 1033, - "line": 438, - "column": 4, - "start": 15875, - "end": 16189, - "length": 315, - "parent_index": 917 - }, - "body": { - "id": 1049, - "node_type": 46, - "kind": 0, - "src": { - "id": 1050, - "line": 438, - "column": 102, - "start": 15973, - "end": 16189, - "length": 217, - "parent_index": 1032 - }, - "implemented": true, - "statements": [ - { - "id": 1051, - "node_type": 24, - "kind": 24, - "src": { - "id": 1052, - "line": 439, - "column": 8, - "start": 15983, - "end": 16019, - "length": 37, - "parent_index": 1049 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 1053, - "node_type": 16, - "src": { - "id": 1054, - "line": 439, - "column": 27, - "start": 16002, - "end": 16018, - "length": 17, - "parent_index": 1051 - }, - "name": "newImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1053, - "is_pure": false - } - ], - "expression": { - "id": 1055, - "node_type": 16, - "src": { - "id": 1056, - "line": 439, - "column": 8, - "start": 15983, - "end": 16000, - "length": 18, - "parent_index": 1051 - }, - "name": "_setImplementation", - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - }, - { - "id": 1057, - "node_type": 64, - "src": { - "id": 1058, - "line": 440, - "column": 8, - "start": 16030, - "end": 16062, - "length": 33, - "parent_index": 1032 - }, - "arguments": [ - { - "id": 1059, - "node_type": 16, - "src": { - "id": 1060, - "line": 440, - "column": 22, - "start": 16044, - "end": 16060, - "length": 17, - "parent_index": 1049 - }, - "name": "newImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1059, - "is_pure": false - } - ], - "expression": { - "id": 1061, - "node_type": 16, - "src": { - "id": 1062, - "line": 440, - "column": 13, - "start": 16035, - "end": 16042, - "length": 8, - "parent_index": 1049 - }, - "name": "Upgraded", - "type_description": { - "type_identifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", - "type_string": "event ERC1967Upgrade.Upgraded" - }, - "overloaded_declarations": [], - "referenced_declaration": 929, - "is_pure": false - } - }, - { - "id": 1063, - "node_type": 48, - "src": { - "id": 1064, - "line": 441, - "column": 0, - "start": 16072, - "end": 16183, - "length": 112, - "parent_index": 1049 - }, - "condition": { - "id": 1065, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1066, - "line": 441, - "column": 12, - "start": 16076, - "end": 16103, - "length": 28, - "parent_index": 1063 - }, - "operator": 33, - "left_expression": { - "id": 1067, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1068, - "line": 441, - "column": 12, - "start": 16076, - "end": 16090, - "length": 15, - "parent_index": 1065 - }, - "operator": 7, - "left_expression": { - "id": 1069, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1070, - "line": 441, - "column": 12, - "start": 16076, - "end": 16086, - "length": 11, - "parent_index": 1067 - }, - "expression": { - "id": 1071, - "node_type": 16, - "src": { - "id": 1072, - "line": 441, - "column": 12, - "start": 16076, - "end": 16079, - "length": 4, - "parent_index": 1069 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 1071, - "is_pure": false - }, - "member_name": "length", - "argument_types": [], - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - }, - "right_expression": { - "id": 1073, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1074, - "line": 441, - "column": 26, - "start": 16090, - "end": 16090, - "length": 1, - "parent_index": 1067 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - "right_expression": { - "id": 1075, - "node_type": 16, - "src": { - "id": 1076, - "line": 441, - "column": 31, - "start": 16095, - "end": 16103, - "length": 9, - "parent_index": 1065 - }, - "name": "forceCall", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 1075, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - "body": { - "id": 1077, - "node_type": 46, - "kind": 0, - "src": { - "id": 1078, - "line": 441, - "column": 42, - "start": 16106, - "end": 16183, - "length": 78, - "parent_index": 1032 - }, - "implemented": true, - "statements": [ - { - "id": 1079, - "node_type": 24, - "kind": 24, - "src": { - "id": 1080, - "line": 442, - "column": 12, - "start": 16120, - "end": 16172, - "length": 53, - "parent_index": 1077 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ], - "arguments": [ - { - "id": 1081, - "node_type": 16, - "src": { - "id": 1082, - "line": 442, - "column": 41, - "start": 16149, - "end": 16165, - "length": 17, - "parent_index": 1079 - }, - "name": "newImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1081, - "is_pure": false - }, - { - "id": 1083, - "node_type": 16, - "src": { - "id": 1084, - "line": 442, - "column": 60, - "start": 16168, - "end": 16171, - "length": 4, - "parent_index": 1079 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 1083, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - } - ], - "expression": { - "id": 1085, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1086, - "line": 442, - "column": 12, - "start": 16120, - "end": 16147, - "length": 28, - "parent_index": 1079 - }, - "expression": { - "id": 1087, - "node_type": 16, - "src": { - "id": 1088, - "line": 442, - "column": 12, - "start": 16120, - "end": 16126, - "length": 7, - "parent_index": 1085 - }, - "name": "Address", - "type_description": { - "type_identifier": "t_contract$_Address_$251", - "type_string": "contract Address" - }, - "overloaded_declarations": [], - "referenced_declaration": 251, - "is_pure": false - }, - "member_name": "functionDelegateCall", - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ], - "type_description": { - "type_identifier": "t_contract$_Address_$251", - "type_string": "contract Address" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$", - "type_string": "function(address,bytes)" - } - } - ] - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1034, - "node_type": 43, - "src": { - "id": 1035, - "line": 438, - "column": 31, - "start": 15902, - "end": 15961, - "length": 60, - "parent_index": 1032 - }, - "parameters": [ - { - "id": 1036, - "node_type": 44, - "src": { - "id": 1037, - "line": 438, - "column": 31, - "start": 15902, - "end": 15926, - "length": 25, - "parent_index": 1034 - }, - "scope": 1032, - "name": "newImplementation", - "type_name": { - "id": 1038, - "node_type": 30, - "src": { - "id": 1039, - "line": 438, - "column": 31, - "start": 15902, - "end": 15908, - "length": 7, - "parent_index": 1036 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 1040, - "node_type": 44, - "src": { - "id": 1041, - "line": 438, - "column": 58, - "start": 15929, - "end": 15945, - "length": 17, - "parent_index": 1034 - }, - "scope": 1032, - "name": "data", - "type_name": { - "id": 1042, - "node_type": 30, - "src": { - "id": 1043, - "line": 438, - "column": 58, - "start": 15929, - "end": 15933, - "length": 5, - "parent_index": 1040 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 1044, - "node_type": 44, - "src": { - "id": 1045, - "line": 438, - "column": 77, - "start": 15948, - "end": 15961, - "length": 14, - "parent_index": 1034 - }, - "scope": 1032, - "name": "forceCall", - "type_name": { - "id": 1046, - "node_type": 30, - "src": { - "id": 1047, - "line": 438, - "column": 77, - "start": 15948, - "end": 15951, - "length": 4, - "parent_index": 1044 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "return_parameters": { - "id": 1048, - "node_type": 43, - "src": { - "id": 1033, - "line": 438, - "column": 4, - "start": 15875, - "end": 16189, - "length": 315, - "parent_index": 1032 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 917, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_bool", - "type_string": "function(address,bytes,bool)" - } - }, - { - "id": 1090, - "name": "_upgradeToAndCallSecure", - "node_type": 42, - "kind": 41, - "src": { - "id": 1091, - "line": 451, - "column": 4, - "start": 16362, - "end": 17675, - "length": 1314, - "parent_index": 917 - }, - "body": { - "id": 1107, - "node_type": 46, - "kind": 0, - "src": { - "id": 1108, - "line": 451, - "column": 108, - "start": 16466, - "end": 17675, - "length": 1210, - "parent_index": 1090 - }, - "implemented": true, - "statements": [ - { - "id": 1109, - "node_type": 44, - "src": { - "id": 1110, - "line": 452, - "column": 8, - "start": 16476, - "end": 16524, - "length": 49, - "parent_index": 1107 - }, - "assignments": [ - 1111 - ], - "declarations": [ - { - "is_constant": false, - "id": 1111, - "state_mutability": 1, - "name": "oldImplementation", - "node_type": 44, - "scope": 1107, - "src": { - "id": 1112, - "line": 452, - "column": 8, - "start": 16476, - "end": 16500, - "length": 25, - "parent_index": 1109 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 1113, - "node_type": 30, - "src": { - "id": 1114, - "line": 452, - "column": 8, - "start": 16476, - "end": 16482, - "length": 7, - "parent_index": 1111 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 1115, - "node_type": 24, - "kind": 24, - "src": { - "id": 1116, - "line": 452, - "column": 36, - "start": 16504, - "end": 16523, - "length": 20, - "parent_index": 1109 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 1117, - "node_type": 16, - "src": { - "id": 1118, - "line": 452, - "column": 36, - "start": 16504, - "end": 16521, - "length": 18, - "parent_index": 1115 - }, - "name": "_getImplementation", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - } - }, - { - "id": 1119, - "node_type": 24, - "kind": 24, - "src": { - "id": 1120, - "line": 455, - "column": 8, - "start": 16577, - "end": 16613, - "length": 37, - "parent_index": 1107 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 1121, - "node_type": 16, - "src": { - "id": 1122, - "line": 455, - "column": 27, - "start": 16596, - "end": 16612, - "length": 17, - "parent_index": 1119 - }, - "name": "newImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1121, - "is_pure": false - } - ], - "expression": { - "id": 1123, - "node_type": 16, - "src": { - "id": 1124, - "line": 455, - "column": 8, - "start": 16577, - "end": 16594, - "length": 18, - "parent_index": 1119 - }, - "name": "_setImplementation", - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - }, - { - "id": 1125, - "node_type": 48, - "src": { - "id": 1126, - "line": 456, - "column": 0, - "start": 16624, - "end": 16735, - "length": 112, - "parent_index": 1107 - }, - "condition": { - "id": 1127, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1128, - "line": 456, - "column": 12, - "start": 16628, - "end": 16655, - "length": 28, - "parent_index": 1125 - }, - "operator": 33, - "left_expression": { - "id": 1129, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1130, - "line": 456, - "column": 12, - "start": 16628, - "end": 16642, - "length": 15, - "parent_index": 1127 - }, - "operator": 7, - "left_expression": { - "id": 1131, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1132, - "line": 456, - "column": 12, - "start": 16628, - "end": 16638, - "length": 11, - "parent_index": 1129 - }, - "expression": { - "id": 1133, - "node_type": 16, - "src": { - "id": 1134, - "line": 456, - "column": 12, - "start": 16628, - "end": 16631, - "length": 4, - "parent_index": 1131 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 1133, - "is_pure": false - }, - "member_name": "length", - "argument_types": [], - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - }, - "right_expression": { - "id": 1135, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1136, - "line": 456, - "column": 26, - "start": 16642, - "end": 16642, - "length": 1, - "parent_index": 1129 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - "right_expression": { - "id": 1137, - "node_type": 16, - "src": { - "id": 1138, - "line": 456, - "column": 31, - "start": 16647, - "end": 16655, - "length": 9, - "parent_index": 1127 - }, - "name": "forceCall", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 1137, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - "body": { - "id": 1139, - "node_type": 46, - "kind": 0, - "src": { - "id": 1140, - "line": 456, - "column": 42, - "start": 16658, - "end": 16735, - "length": 78, - "parent_index": 1090 - }, - "implemented": true, - "statements": [ - { - "id": 1141, - "node_type": 24, - "kind": 24, - "src": { - "id": 1142, - "line": 457, - "column": 12, - "start": 16672, - "end": 16724, - "length": 53, - "parent_index": 1139 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ], - "arguments": [ - { - "id": 1143, - "node_type": 16, - "src": { - "id": 1144, - "line": 457, - "column": 41, - "start": 16701, - "end": 16717, - "length": 17, - "parent_index": 1141 - }, - "name": "newImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1143, - "is_pure": false - }, - { - "id": 1145, - "node_type": 16, - "src": { - "id": 1146, - "line": 457, - "column": 60, - "start": 16720, - "end": 16723, - "length": 4, - "parent_index": 1141 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 1145, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - } - ], - "expression": { - "id": 1147, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1148, - "line": 457, - "column": 12, - "start": 16672, - "end": 16699, - "length": 28, - "parent_index": 1141 - }, - "expression": { - "id": 1149, - "node_type": 16, - "src": { - "id": 1150, - "line": 457, - "column": 12, - "start": 16672, - "end": 16678, - "length": 7, - "parent_index": 1147 - }, - "name": "Address", - "type_description": { - "type_identifier": "t_contract$_Address_$251", - "type_string": "contract Address" - }, - "overloaded_declarations": [], - "referenced_declaration": 251, - "is_pure": false - }, - "member_name": "functionDelegateCall", - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ], - "type_description": { - "type_identifier": "t_contract$_Address_$251", - "type_string": "contract Address" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$", - "type_string": "function(address,bytes)" - } - } - ] - } - }, - { - "id": 1151, - "node_type": 44, - "src": { - "id": 1152, - "line": 461, - "column": 8, - "start": 16806, - "end": 16898, - "length": 93, - "parent_index": 1107 - }, - "assignments": [ - 1153 - ], - "declarations": [ - { - "is_constant": false, - "id": 1153, - "state_mutability": 1, - "name": "rollbackTesting", - "node_type": 44, - "scope": 1107, - "src": { - "id": 1154, - "line": 461, - "column": 8, - "start": 16806, - "end": 16852, - "length": 47, - "parent_index": 1151 - }, - "is_state_variable": false, - "storage_location": 3, - "type_name": { - "id": 1155, - "node_type": 69, - "src": { - "id": 1156, - "line": 461, - "column": 8, - "start": 16806, - "end": 16828, - "length": 23, - "parent_index": 1153 - }, - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - }, - "path_node": { - "id": 1157, - "name": "StorageSlot", - "node_type": 52, - "referenced_declaration": 767, - "src": { - "id": 1158, - "line": 461, - "column": 8, - "start": 16806, - "end": 16816, - "length": 11, - "parent_index": 1155 - } - }, - "referenced_declaration": 767 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 1159, - "node_type": 24, - "kind": 24, - "src": { - "id": 1160, - "line": 461, - "column": 58, - "start": 16856, - "end": 16897, - "length": 42, - "parent_index": 1151 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "arguments": [ - { - "id": 1161, - "node_type": 16, - "src": { - "id": 1162, - "line": 461, - "column": 85, - "start": 16883, - "end": 16896, - "length": 14, - "parent_index": 1159 - }, - "name": "_ROLLBACK_SLOT", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - } - ], - "expression": { - "id": 1163, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1164, - "line": 461, - "column": 58, - "start": 16856, - "end": 16881, - "length": 26, - "parent_index": 1159 - }, - "expression": { - "id": 1165, - "node_type": 16, - "src": { - "id": 1166, - "line": 461, - "column": 58, - "start": 16856, - "end": 16866, - "length": 11, - "parent_index": 1163 - }, - "name": "StorageSlot", - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - }, - "overloaded_declarations": [], - "referenced_declaration": 767, - "is_pure": false - }, - "member_name": "getBooleanSlot", - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - } - }, - { - "id": 1167, - "node_type": 48, - "src": { - "id": 1168, - "line": 462, - "column": 0, - "start": 16908, - "end": 17669, - "length": 762, - "parent_index": 1107 - }, - "condition": { - "id": 1169, - "node_type": 18, - "src": { - "id": 1170, - "line": 462, - "column": 12, - "start": 16912, - "end": 16933, - "length": 22, - "parent_index": 1090 - }, - "operator": 31, - "prefix": false, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "expression": { - "id": 1171, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1172, - "line": 462, - "column": 13, - "start": 16913, - "end": 16933, - "length": 21, - "parent_index": 1169 - }, - "expression": { - "id": 1173, - "node_type": 16, - "src": { - "id": 1174, - "line": 462, - "column": 13, - "start": 16913, - "end": 16927, - "length": 15, - "parent_index": 1171 - }, - "name": "rollbackTesting", - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - }, - "overloaded_declarations": [], - "referenced_declaration": 1151, - "is_pure": false - }, - "member_name": "value", - "argument_types": [], - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - } - }, - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - } - }, - "body": { - "id": 1175, - "node_type": 46, - "kind": 0, - "src": { - "id": 1176, - "line": 462, - "column": 36, - "start": 16936, - "end": 17669, - "length": 734, - "parent_index": 1090 - }, - "implemented": true, - "statements": [ - { - "id": 1177, - "node_type": 81, - "src": { - "id": 1178, - "line": 464, - "column": 12, - "start": 17026, - "end": 17054, - "length": 29, - "parent_index": 1175 - }, - "expression": { - "id": 1179, - "node_type": 27, - "src": { - "id": 1180, - "line": 464, - "column": 12, - "start": 17026, - "end": 17053, - "length": 28, - "parent_index": 1175 - }, - "operator": 11, - "left_expression": { - "id": 1181, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1182, - "line": 464, - "column": 12, - "start": 17026, - "end": 17046, - "length": 21, - "parent_index": 1179 - }, - "expression": { - "id": 1183, - "node_type": 16, - "src": { - "id": 1184, - "line": 464, - "column": 12, - "start": 17026, - "end": 17040, - "length": 15, - "parent_index": 1181 - }, - "name": "rollbackTesting", - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - }, - "overloaded_declarations": [], - "referenced_declaration": 1151, - "is_pure": false - }, - "member_name": "value", - "argument_types": [], - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - } - }, - "right_expression": { - "id": 1185, - "node_type": 17, - "kind": 61, - "value": "true", - "hex_value": "74727565", - "src": { - "id": 1186, - "line": 464, - "column": 36, - "start": 17050, - "end": 17053, - "length": 4, - "parent_index": 1179 - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - } - } - }, - { - "id": 1187, - "node_type": 24, - "kind": 24, - "src": { - "id": 1188, - "line": 465, - "column": 12, - "start": 17068, - "end": 17284, - "length": 217, - "parent_index": 1175 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_function__t_string_literal$_t_function_$_t_string_literal$", - "type_string": "function(string memory,string memory)" - } - ], - "arguments": [ - { - "id": 1189, - "node_type": 16, - "src": { - "id": 1190, - "line": 466, - "column": 16, - "start": 17114, - "end": 17130, - "length": 17, - "parent_index": 1187 - }, - "name": "newImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1189, - "is_pure": false - }, - { - "id": 1191, - "node_type": 24, - "kind": 24, - "src": { - "id": 1192, - "line": 467, - "column": 16, - "start": 17149, - "end": 17270, - "length": 122, - "parent_index": 1187 - }, - "argument_types": [ - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"upgradeTo(address)\"" - }, - { - "type_identifier": "t_function_$_t_string_literal", - "type_string": "function(literal_string \"upgradeTo(address)\")" - } - ], - "arguments": [ - { - "id": 1193, - "node_type": 17, - "kind": 50, - "value": "upgradeTo(address)", - "hex_value": "75706772616465546f286164647265737329", - "src": { - "id": 1194, - "line": 468, - "column": 20, - "start": 17194, - "end": 17213, - "length": 20, - "parent_index": 1191 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"upgradeTo(address)\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - { - "id": 1195, - "node_type": 16, - "src": { - "id": 1196, - "line": 469, - "column": 20, - "start": 17236, - "end": 17252, - "length": 17, - "parent_index": 1191 - }, - "name": "oldImplementation", - "type_description": { - "type_identifier": "t_function_$_t_string_literal", - "type_string": "function(literal_string \"upgradeTo(address)\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"upgradeTo(address)\"" - } - ] - } - ], - "expression": { - "id": 1197, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1198, - "line": 467, - "column": 16, - "start": 17149, - "end": 17171, - "length": 23, - "parent_index": 1191 - }, - "expression": { - "id": 1199, - "node_type": 16, - "src": { - "id": 1200, - "line": 467, - "column": 16, - "start": 17149, - "end": 17151, - "length": 3, - "parent_index": 1197 - }, - "name": "abi", - "type_description": { - "type_identifier": "t_magic_abi", - "type_string": "abi" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "member_name": "encodeWithSignature", - "argument_types": [ - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"upgradeTo(address)\"" - }, - { - "type_identifier": "t_function_$_t_string_literal", - "type_string": "function(literal_string \"upgradeTo(address)\")" - } - ], - "type_description": { - "type_identifier": "t_magic_abi", - "type_string": "abi" - } - }, - "type_description": { - "type_identifier": "t_function__t_string_literal$_t_function_$_t_string_literal$", - "type_string": "function(string memory,string memory)" - } - } - ], - "expression": { - "id": 1201, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1202, - "line": 465, - "column": 12, - "start": 17068, - "end": 17095, - "length": 28, - "parent_index": 1187 - }, - "expression": { - "id": 1203, - "node_type": 16, - "src": { - "id": 1204, - "line": 465, - "column": 12, - "start": 17068, - "end": 17074, - "length": 7, - "parent_index": 1201 - }, - "name": "Address", - "type_description": { - "type_identifier": "t_contract$_Address_$251", - "type_string": "contract Address" - }, - "overloaded_declarations": [], - "referenced_declaration": 251, - "is_pure": false - }, - "member_name": "functionDelegateCall", - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_function__t_string_literal$_t_function_$_t_string_literal$", - "type_string": "function(string memory,string memory)" - } - ], - "type_description": { - "type_identifier": "t_contract$_Address_$251", - "type_string": "contract Address" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_function__t_string_literal$_t_function_$_t_string_literal$$", - "type_string": "function(address,function(string memory,string memory))" - } - }, - { - "id": 1205, - "node_type": 81, - "src": { - "id": 1206, - "line": 472, - "column": 12, - "start": 17299, - "end": 17328, - "length": 30, - "parent_index": 1175 - }, - "expression": { - "id": 1207, - "node_type": 27, - "src": { - "id": 1208, - "line": 472, - "column": 12, - "start": 17299, - "end": 17327, - "length": 29, - "parent_index": 1175 - }, - "operator": 11, - "left_expression": { - "id": 1209, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1210, - "line": 472, - "column": 12, - "start": 17299, - "end": 17319, - "length": 21, - "parent_index": 1207 - }, - "expression": { - "id": 1211, - "node_type": 16, - "src": { - "id": 1212, - "line": 472, - "column": 12, - "start": 17299, - "end": 17313, - "length": 15, - "parent_index": 1209 - }, - "name": "rollbackTesting", - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - }, - "overloaded_declarations": [], - "referenced_declaration": 1151, - "is_pure": false - }, - "member_name": "value", - "argument_types": [], - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - } - }, - "right_expression": { - "id": 1213, - "node_type": 17, - "kind": 61, - "value": "false", - "hex_value": "66616c7365", - "src": { - "id": 1214, - "line": 472, - "column": 36, - "start": 17323, - "end": 17327, - "length": 5, - "parent_index": 1207 - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - } - } - }, - { - "id": 1215, - "node_type": 24, - "kind": 24, - "src": { - "id": 1216, - "line": 474, - "column": 12, - "start": 17386, - "end": 17486, - "length": 101, - "parent_index": 1175 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\"" - } - ], - "arguments": [ - { - "id": 1217, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1218, - "line": 474, - "column": 20, - "start": 17394, - "end": 17434, - "length": 41, - "parent_index": 1215 - }, - "operator": 11, - "left_expression": { - "id": 1219, - "node_type": 16, - "src": { - "id": 1220, - "line": 474, - "column": 20, - "start": 17394, - "end": 17410, - "length": 17, - "parent_index": 1217 - }, - "name": "oldImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1109, - "is_pure": false - }, - "right_expression": { - "id": 1221, - "node_type": 24, - "kind": 24, - "src": { - "id": 1222, - "line": 474, - "column": 41, - "start": 17415, - "end": 17434, - "length": 20, - "parent_index": 1217 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 1223, - "node_type": 16, - "src": { - "id": 1224, - "line": 474, - "column": 41, - "start": 17415, - "end": 17432, - "length": 18, - "parent_index": 1221 - }, - "name": "_getImplementation", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 1225, - "node_type": 17, - "kind": 50, - "value": "ERC1967Upgrade: upgrade breaks further upgrades", - "hex_value": "45524331393637557067726164653a207570677261646520627265616b732066757274686572207570677261646573", - "src": { - "id": 1226, - "line": 474, - "column": 63, - "start": 17437, - "end": 17485, - "length": 49, - "parent_index": 1215 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 1227, - "node_type": 16, - "src": { - "id": 1228, - "line": 474, - "column": 12, - "start": 17386, - "end": 17392, - "length": 7, - "parent_index": 1215 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 1229, - "node_type": 24, - "kind": 24, - "src": { - "id": 1230, - "line": 476, - "column": 12, - "start": 17576, - "end": 17612, - "length": 37, - "parent_index": 1175 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 1231, - "node_type": 16, - "src": { - "id": 1232, - "line": 476, - "column": 31, - "start": 17595, - "end": 17611, - "length": 17, - "parent_index": 1229 - }, - "name": "newImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1231, - "is_pure": false - } - ], - "expression": { - "id": 1233, - "node_type": 16, - "src": { - "id": 1234, - "line": 476, - "column": 12, - "start": 17576, - "end": 17593, - "length": 18, - "parent_index": 1229 - }, - "name": "_setImplementation", - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - }, - { - "id": 1235, - "node_type": 64, - "src": { - "id": 1236, - "line": 477, - "column": 12, - "start": 17627, - "end": 17659, - "length": 33, - "parent_index": 1090 - }, - "arguments": [ - { - "id": 1237, - "node_type": 16, - "src": { - "id": 1238, - "line": 477, - "column": 26, - "start": 17641, - "end": 17657, - "length": 17, - "parent_index": 1175 - }, - "name": "newImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1237, - "is_pure": false - } - ], - "expression": { - "id": 1239, - "node_type": 16, - "src": { - "id": 1240, - "line": 477, - "column": 17, - "start": 17632, - "end": 17639, - "length": 8, - "parent_index": 1175 - }, - "name": "Upgraded", - "type_description": { - "type_identifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", - "type_string": "event ERC1967Upgrade.Upgraded" - }, - "overloaded_declarations": [], - "referenced_declaration": 929, - "is_pure": false - } - } - ] - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1092, - "node_type": 43, - "src": { - "id": 1093, - "line": 451, - "column": 37, - "start": 16395, - "end": 16454, - "length": 60, - "parent_index": 1090 - }, - "parameters": [ - { - "id": 1094, - "node_type": 44, - "src": { - "id": 1095, - "line": 451, - "column": 37, - "start": 16395, - "end": 16419, - "length": 25, - "parent_index": 1092 - }, - "scope": 1090, - "name": "newImplementation", - "type_name": { - "id": 1096, - "node_type": 30, - "src": { - "id": 1097, - "line": 451, - "column": 37, - "start": 16395, - "end": 16401, - "length": 7, - "parent_index": 1094 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 1098, - "node_type": 44, - "src": { - "id": 1099, - "line": 451, - "column": 64, - "start": 16422, - "end": 16438, - "length": 17, - "parent_index": 1092 - }, - "scope": 1090, - "name": "data", - "type_name": { - "id": 1100, - "node_type": 30, - "src": { - "id": 1101, - "line": 451, - "column": 64, - "start": 16422, - "end": 16426, - "length": 5, - "parent_index": 1098 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 1102, - "node_type": 44, - "src": { - "id": 1103, - "line": 451, - "column": 83, - "start": 16441, - "end": 16454, - "length": 14, - "parent_index": 1092 - }, - "scope": 1090, - "name": "forceCall", - "type_name": { - "id": 1104, - "node_type": 30, - "src": { - "id": 1105, - "line": 451, - "column": 83, - "start": 16441, - "end": 16444, - "length": 4, - "parent_index": 1102 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "return_parameters": { - "id": 1106, - "node_type": 43, - "src": { - "id": 1091, - "line": 451, - "column": 4, - "start": 16362, - "end": 17675, - "length": 1314, - "parent_index": 1090 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 917, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_bool", - "type_string": "function(address,bytes,bool)" - } - }, - { - "id": 1242, - "name": "_upgradeBeaconToAndCall", - "node_type": 42, - "kind": 41, - "src": { - "id": 1243, - "line": 487, - "column": 4, - "start": 17979, - "end": 18291, - "length": 313, - "parent_index": 917 - }, - "body": { - "id": 1259, - "node_type": 46, - "kind": 0, - "src": { - "id": 1260, - "line": 487, - "column": 100, - "start": 18075, - "end": 18291, - "length": 217, - "parent_index": 1242 - }, - "implemented": true, - "statements": [ - { - "id": 1261, - "node_type": 24, - "kind": 24, - "src": { - "id": 1262, - "line": 488, - "column": 8, - "start": 18085, - "end": 18105, - "length": 21, - "parent_index": 1259 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 1263, - "node_type": 16, - "src": { - "id": 1264, - "line": 488, - "column": 19, - "start": 18096, - "end": 18104, - "length": 9, - "parent_index": 1261 - }, - "name": "newBeacon", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1263, - "is_pure": false - } - ], - "expression": { - "id": 1265, - "node_type": 16, - "src": { - "id": 1266, - "line": 488, - "column": 8, - "start": 18085, - "end": 18094, - "length": 10, - "parent_index": 1261 - }, - "name": "_setBeacon", - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - }, - { - "id": 1267, - "node_type": 64, - "src": { - "id": 1268, - "line": 489, - "column": 8, - "start": 18116, - "end": 18146, - "length": 31, - "parent_index": 1242 - }, - "arguments": [ - { - "id": 1269, - "node_type": 16, - "src": { - "id": 1270, - "line": 489, - "column": 28, - "start": 18136, - "end": 18144, - "length": 9, - "parent_index": 1259 - }, - "name": "newBeacon", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1269, - "is_pure": false - } - ], - "expression": { - "id": 1271, - "node_type": 16, - "src": { - "id": 1272, - "line": 489, - "column": 13, - "start": 18121, - "end": 18134, - "length": 14, - "parent_index": 1259 - }, - "name": "BeaconUpgraded", - "type_description": { - "type_identifier": "t_event\u0026_ERC1967Upgrade_BeaconUpgraded_\u00261433", - "type_string": "event ERC1967Upgrade.BeaconUpgraded" - }, - "overloaded_declarations": [], - "referenced_declaration": 1433, - "is_pure": false - } - }, - { - "id": 1273, - "node_type": 48, - "src": { - "id": 1274, - "line": 490, - "column": 0, - "start": 18156, - "end": 18285, - "length": 130, - "parent_index": 1259 - }, - "condition": { - "id": 1275, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1276, - "line": 490, - "column": 12, - "start": 18160, - "end": 18187, - "length": 28, - "parent_index": 1273 - }, - "operator": 33, - "left_expression": { - "id": 1277, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1278, - "line": 490, - "column": 12, - "start": 18160, - "end": 18174, - "length": 15, - "parent_index": 1275 - }, - "operator": 7, - "left_expression": { - "id": 1279, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1280, - "line": 490, - "column": 12, - "start": 18160, - "end": 18170, - "length": 11, - "parent_index": 1277 - }, - "expression": { - "id": 1281, - "node_type": 16, - "src": { - "id": 1282, - "line": 490, - "column": 12, - "start": 18160, - "end": 18163, - "length": 4, - "parent_index": 1279 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 1281, - "is_pure": false - }, - "member_name": "length", - "argument_types": [], - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - }, - "right_expression": { - "id": 1283, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1284, - "line": 490, - "column": 26, - "start": 18174, - "end": 18174, - "length": 1, - "parent_index": 1277 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - "right_expression": { - "id": 1285, - "node_type": 16, - "src": { - "id": 1286, - "line": 490, - "column": 31, - "start": 18179, - "end": 18187, - "length": 9, - "parent_index": 1275 - }, - "name": "forceCall", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "overloaded_declarations": [], - "referenced_declaration": 1285, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - "body": { - "id": 1287, - "node_type": 46, - "kind": 0, - "src": { - "id": 1288, - "line": 490, - "column": 42, - "start": 18190, - "end": 18285, - "length": 96, - "parent_index": 1242 - }, - "implemented": true, - "statements": [ - { - "id": 1289, - "node_type": 24, - "kind": 24, - "src": { - "id": 1290, - "line": 491, - "column": 12, - "start": 18204, - "end": 18274, - "length": 71, - "parent_index": 1287 - }, - "argument_types": [ - { - "type_identifier": "t_function_$", - "type_string": "function()" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ], - "arguments": [ - { - "id": 1291, - "node_type": 24, - "kind": 24, - "src": { - "id": 1292, - "line": 491, - "column": 41, - "start": 18233, - "end": 18267, - "length": 35, - "parent_index": 1289 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 1293, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1294, - "line": 491, - "column": 41, - "start": 18233, - "end": 18265, - "length": 33, - "parent_index": 1291 - }, - "expression": { - "id": 1295, - "node_type": 24, - "kind": 24, - "src": { - "id": 1296, - "line": 491, - "column": 41, - "start": 18233, - "end": 18250, - "length": 18, - "parent_index": 1293 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 1297, - "node_type": 16, - "src": { - "id": 1298, - "line": 491, - "column": 49, - "start": 18241, - "end": 18249, - "length": 9, - "parent_index": 1295 - }, - "name": "newBeacon", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1297, - "is_pure": false - } - ], - "expression": { - "id": 1299, - "node_type": 16, - "src": { - "id": 1300, - "line": 491, - "column": 41, - "start": 18233, - "end": 18239, - "length": 7, - "parent_index": 1295 - }, - "name": "IBeacon", - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - }, - "member_name": "implementation", - "argument_types": [], - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - }, - { - "id": 1301, - "node_type": 16, - "src": { - "id": 1302, - "line": 491, - "column": 78, - "start": 18270, - "end": 18273, - "length": 4, - "parent_index": 1289 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 1301, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$", - "type_string": "function()" - } - ] - } - ], - "expression": { - "id": 1303, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1304, - "line": 491, - "column": 12, - "start": 18204, - "end": 18231, - "length": 28, - "parent_index": 1289 - }, - "expression": { - "id": 1305, - "node_type": 16, - "src": { - "id": 1306, - "line": 491, - "column": 12, - "start": 18204, - "end": 18210, - "length": 7, - "parent_index": 1303 - }, - "name": "Address", - "type_description": { - "type_identifier": "t_contract$_Address_$251", - "type_string": "contract Address" - }, - "overloaded_declarations": [], - "referenced_declaration": 251, - "is_pure": false - }, - "member_name": "functionDelegateCall", - "argument_types": [ - { - "type_identifier": "t_function_$", - "type_string": "function()" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ], - "type_description": { - "type_identifier": "t_contract$_Address_$251", - "type_string": "contract Address" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$$$_t_bytes$", - "type_string": "function(function(),bytes)" - } - } - ] - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1244, - "node_type": 43, - "src": { - "id": 1245, - "line": 487, - "column": 37, - "start": 18012, - "end": 18063, - "length": 52, - "parent_index": 1242 - }, - "parameters": [ - { - "id": 1246, - "node_type": 44, - "src": { - "id": 1247, - "line": 487, - "column": 37, - "start": 18012, - "end": 18028, - "length": 17, - "parent_index": 1244 - }, - "scope": 1242, - "name": "newBeacon", - "type_name": { - "id": 1248, - "node_type": 30, - "src": { - "id": 1249, - "line": 487, - "column": 37, - "start": 18012, - "end": 18018, - "length": 7, - "parent_index": 1246 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 1250, - "node_type": 44, - "src": { - "id": 1251, - "line": 487, - "column": 56, - "start": 18031, - "end": 18047, - "length": 17, - "parent_index": 1244 - }, - "scope": 1242, - "name": "data", - "type_name": { - "id": 1252, - "node_type": 30, - "src": { - "id": 1253, - "line": 487, - "column": 56, - "start": 18031, - "end": 18035, - "length": 5, - "parent_index": 1250 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 1254, - "node_type": 44, - "src": { - "id": 1255, - "line": 487, - "column": 75, - "start": 18050, - "end": 18063, - "length": 14, - "parent_index": 1244 - }, - "scope": 1242, - "name": "forceCall", - "type_name": { - "id": 1256, - "node_type": 30, - "src": { - "id": 1257, - "line": 487, - "column": 75, - "start": 18050, - "end": 18053, - "length": 4, - "parent_index": 1254 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - }, - "return_parameters": { - "id": 1258, - "node_type": 43, - "src": { - "id": 1243, - "line": 487, - "column": 4, - "start": 17979, - "end": 18291, - "length": 313, - "parent_index": 1242 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 917, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_bool", - "type_string": "function(address,bytes,bool)" - } - }, - { - "id": 1308, - "name": "_ADMIN_SLOT", - "is_constant": true, - "is_state_variable": true, - "node_type": 44, - "src": { - "id": 1309, - "line": 500, - "column": 4, - "start": 18492, - "end": 18598, - "length": 107, - "parent_index": 917 - }, - "scope": 917, - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "visibility": 1, - "storage_location": 1, - "mutability": 1, - "type_name": { - "id": 1310, - "node_type": 30, - "src": { - "id": 1311, - "line": 500, - "column": 4, - "start": 18492, - "end": 18498, - "length": 7, - "parent_index": 1308 - }, - "name": "bytes32", - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "referenced_declaration": 0 - } - }, - { - "id": 1313, - "node_type": 57, - "src": { - "id": 1314, - "line": 505, - "column": 4, - "start": 18677, - "end": 18736, - "length": 60, - "parent_index": 917 - }, - "parameters": { - "id": 1315, - "node_type": 43, - "src": { - "id": 1314, - "line": 505, - "column": 4, - "start": 18677, - "end": 18736, - "length": 60, - "parent_index": 1313 - }, - "parameters": [ - { - "id": 1316, - "node_type": 44, - "src": { - "id": 1317, - "line": 505, - "column": 23, - "start": 18696, - "end": 18716, - "length": 21, - "parent_index": 1315 - }, - "scope": 1313, - "name": "previousAdmin", - "type_name": { - "id": 1318, - "node_type": 30, - "src": { - "id": 1319, - "line": 505, - "column": 23, - "start": 18696, - "end": 18702, - "length": 7, - "parent_index": 1316 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 1320, - "node_type": 44, - "src": { - "id": 1321, - "line": 505, - "column": 46, - "start": 18719, - "end": 18734, - "length": 16, - "parent_index": 1315 - }, - "scope": 1313, - "name": "newAdmin", - "type_name": { - "id": 1322, - "node_type": 30, - "src": { - "id": 1323, - "line": 505, - "column": 46, - "start": 18719, - "end": 18725, - "length": 7, - "parent_index": 1320 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "name": "AdminChanged", - "anonymous": false - }, - { - "id": 1325, - "name": "_getAdmin", - "node_type": 42, - "kind": 41, - "src": { - "id": 1326, - "line": 510, - "column": 4, - "start": 18798, - "end": 18919, - "length": 122, - "parent_index": 917 - }, - "body": { - "id": 1339, - "node_type": 46, - "kind": 0, - "src": { - "id": 1340, - "line": 510, - "column": 57, - "start": 18851, - "end": 18919, - "length": 69, - "parent_index": 1325 - }, - "implemented": true, - "statements": [ - { - "id": 1341, - "node_type": 47, - "src": { - "id": 1342, - "line": 511, - "column": 8, - "start": 18861, - "end": 18913, - "length": 53, - "parent_index": 1325 - }, - "function_return_parameters": 1325, - "expression": { - "id": 1343, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1344, - "line": 511, - "column": 15, - "start": 18868, - "end": 18912, - "length": 45, - "parent_index": 1339 - }, - "expression": { - "id": 1345, - "node_type": 24, - "kind": 24, - "src": { - "id": 1346, - "line": 511, - "column": 15, - "start": 18868, - "end": 18906, - "length": 39, - "parent_index": 1343 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "arguments": [ - { - "id": 1347, - "node_type": 16, - "src": { - "id": 1348, - "line": 511, - "column": 42, - "start": 18895, - "end": 18905, - "length": 11, - "parent_index": 1345 - }, - "name": "_ADMIN_SLOT", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - } - ], - "expression": { - "id": 1349, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1350, - "line": 511, - "column": 15, - "start": 18868, - "end": 18893, - "length": 26, - "parent_index": 1345 - }, - "expression": { - "id": 1351, - "node_type": 16, - "src": { - "id": 1352, - "line": 511, - "column": 15, - "start": 18868, - "end": 18878, - "length": 11, - "parent_index": 1349 - }, - "name": "StorageSlot", - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - }, - "overloaded_declarations": [], - "referenced_declaration": 767, - "is_pure": false - }, - "member_name": "getAddressSlot", - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - }, - "member_name": "value", - "argument_types": [], - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 5, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1327, - "node_type": 43, - "src": { - "id": 1328, - "line": 510, - "column": 48, - "start": 18842, - "end": 18848, - "length": 7, - "parent_index": 1325 - }, - "parameters": [ - { - "id": 1329, - "node_type": 44, - "src": { - "id": 1330, - "line": 510, - "column": 48, - "start": 18842, - "end": 18848, - "length": 7, - "parent_index": 1327 - }, - "scope": 1325, - "name": "", - "type_name": { - "id": 1331, - "node_type": 30, - "src": { - "id": 1332, - "line": 510, - "column": 48, - "start": 18842, - "end": 18848, - "length": 7, - "parent_index": 1329 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 1333, - "node_type": 43, - "src": { - "id": 1334, - "line": 510, - "column": 48, - "start": 18842, - "end": 18848, - "length": 7, - "parent_index": 1325 - }, - "parameters": [ - { - "id": 1335, - "node_type": 44, - "src": { - "id": 1336, - "line": 510, - "column": 48, - "start": 18842, - "end": 18848, - "length": 7, - "parent_index": 1333 - }, - "scope": 1325, - "name": "", - "type_name": { - "id": 1337, - "node_type": 30, - "src": { - "id": 1338, - "line": 510, - "column": 48, - "start": 18842, - "end": 18848, - "length": 7, - "parent_index": 1335 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "scope": 917, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 1354, - "name": "_setAdmin", - "node_type": 42, - "kind": 41, - "src": { - "id": 1355, - "line": 517, - "column": 4, - "start": 19002, - "end": 19202, - "length": 201, - "parent_index": 917 - }, - "body": { - "id": 1363, - "node_type": 46, - "kind": 0, - "src": { - "id": 1364, - "line": 517, - "column": 49, - "start": 19047, - "end": 19202, - "length": 156, - "parent_index": 1354 - }, - "implemented": true, - "statements": [ - { - "id": 1365, - "node_type": 24, - "kind": 24, - "src": { - "id": 1366, - "line": 518, - "column": 8, - "start": 19057, - "end": 19129, - "length": 73, - "parent_index": 1363 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC1967: new admin is the zero address\"" - } - ], - "arguments": [ - { - "id": 1367, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1368, - "line": 518, - "column": 16, - "start": 19065, - "end": 19086, - "length": 22, - "parent_index": 1365 - }, - "operator": 12, - "left_expression": { - "id": 1369, - "node_type": 16, - "src": { - "id": 1370, - "line": 518, - "column": 16, - "start": 19065, - "end": 19072, - "length": 8, - "parent_index": 1367 - }, - "name": "newAdmin", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1369, - "is_pure": false - }, - "right_expression": { - "id": 1371, - "node_type": 24, - "kind": 24, - "src": { - "id": 1372, - "line": 518, - "column": 28, - "start": 19077, - "end": 19086, - "length": 10, - "parent_index": 1367 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 1373, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1374, - "line": 518, - "column": 36, - "start": 19085, - "end": 19085, - "length": 1, - "parent_index": 1371 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 1375, - "node_type": 16, - "src": { - "id": 1376, - "line": 518, - "column": 28, - "start": 19077, - "end": 19083, - "length": 7, - "parent_index": 1371 - }, - "type_name": { - "id": 1377, - "node_type": 30, - "src": { - "id": 1378, - "line": 518, - "column": 28, - "start": 19077, - "end": 19083, - "length": 7, - "parent_index": 1375 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 1379, - "node_type": 17, - "kind": 50, - "value": "ERC1967: new admin is the zero address", - "hex_value": "455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373", - "src": { - "id": 1380, - "line": 518, - "column": 40, - "start": 19089, - "end": 19128, - "length": 40, - "parent_index": 1365 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC1967: new admin is the zero address\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 1381, - "node_type": 16, - "src": { - "id": 1382, - "line": 518, - "column": 8, - "start": 19057, - "end": 19063, - "length": 7, - "parent_index": 1365 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"ERC1967: new admin is the zero address\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC1967: new admin is the zero address\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 1383, - "node_type": 81, - "src": { - "id": 1384, - "line": 519, - "column": 8, - "start": 19140, - "end": 19196, - "length": 57, - "parent_index": 1363 - }, - "expression": { - "id": 1385, - "node_type": 27, - "src": { - "id": 1386, - "line": 519, - "column": 8, - "start": 19140, - "end": 19195, - "length": 56, - "parent_index": 1363 - }, - "operator": 11, - "left_expression": { - "id": 1387, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1388, - "line": 519, - "column": 8, - "start": 19140, - "end": 19184, - "length": 45, - "parent_index": 1385 - }, - "expression": { - "id": 1389, - "node_type": 24, - "kind": 24, - "src": { - "id": 1390, - "line": 519, - "column": 8, - "start": 19140, - "end": 19178, - "length": 39, - "parent_index": 1387 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "arguments": [ - { - "id": 1391, - "node_type": 16, - "src": { - "id": 1392, - "line": 519, - "column": 35, - "start": 19167, - "end": 19177, - "length": 11, - "parent_index": 1389 - }, - "name": "_ADMIN_SLOT", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - } - ], - "expression": { - "id": 1393, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1394, - "line": 519, - "column": 8, - "start": 19140, - "end": 19165, - "length": 26, - "parent_index": 1389 - }, - "expression": { - "id": 1395, - "node_type": 16, - "src": { - "id": 1396, - "line": 519, - "column": 8, - "start": 19140, - "end": 19150, - "length": 11, - "parent_index": 1393 - }, - "name": "StorageSlot", - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - }, - "overloaded_declarations": [], - "referenced_declaration": 767, - "is_pure": false - }, - "member_name": "getAddressSlot", - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - }, - "member_name": "value", - "argument_types": [], - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - }, - "right_expression": { - "id": 1397, - "node_type": 16, - "src": { - "id": 1398, - "line": 519, - "column": 56, - "start": 19188, - "end": 19195, - "length": 8, - "parent_index": 1385 - }, - "name": "newAdmin", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1397, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - } - } - ] - }, - "implemented": true, - "visibility": 2, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1356, - "node_type": 43, - "src": { - "id": 1357, - "line": 517, - "column": 23, - "start": 19021, - "end": 19036, - "length": 16, - "parent_index": 1354 - }, - "parameters": [ - { - "id": 1358, - "node_type": 44, - "src": { - "id": 1359, - "line": 517, - "column": 23, - "start": 19021, - "end": 19036, - "length": 16, - "parent_index": 1356 - }, - "scope": 1354, - "name": "newAdmin", - "type_name": { - "id": 1360, - "node_type": 30, - "src": { - "id": 1361, - "line": 517, - "column": 23, - "start": 19021, - "end": 19027, - "length": 7, - "parent_index": 1358 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 1362, - "node_type": 43, - "src": { - "id": 1355, - "line": 517, - "column": 4, - "start": 19002, - "end": 19202, - "length": 201, - "parent_index": 1354 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 917, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 1400, - "name": "_changeAdmin", - "node_type": 42, - "kind": 41, - "src": { - "id": 1401, - "line": 527, - "column": 4, - "start": 19314, - "end": 19448, - "length": 135, - "parent_index": 917 - }, - "body": { - "id": 1409, - "node_type": 46, - "kind": 0, - "src": { - "id": 1410, - "line": 527, - "column": 53, - "start": 19363, - "end": 19448, - "length": 86, - "parent_index": 1400 - }, - "implemented": true, - "statements": [ - { - "id": 1411, - "node_type": 64, - "src": { - "id": 1412, - "line": 528, - "column": 8, - "start": 19373, - "end": 19413, - "length": 41, - "parent_index": 1400 - }, - "arguments": [ - { - "id": 1413, - "node_type": 24, - "kind": 24, - "src": { - "id": 1414, - "line": 528, - "column": 26, - "start": 19391, - "end": 19401, - "length": 11, - "parent_index": 1409 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 1415, - "node_type": 16, - "src": { - "id": 1416, - "line": 528, - "column": 26, - "start": 19391, - "end": 19399, - "length": 9, - "parent_index": 1413 - }, - "name": "_getAdmin", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - }, - { - "id": 1417, - "node_type": 16, - "src": { - "id": 1418, - "line": 528, - "column": 39, - "start": 19404, - "end": 19411, - "length": 8, - "parent_index": 1409 - }, - "name": "newAdmin", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1417, - "is_pure": false - } - ], - "expression": { - "id": 1419, - "node_type": 16, - "src": { - "id": 1420, - "line": 528, - "column": 13, - "start": 19378, - "end": 19389, - "length": 12, - "parent_index": 1409 - }, - "name": "AdminChanged", - "type_description": { - "type_identifier": "t_event\u0026_ERC1967Upgrade_AdminChanged_\u00261313", - "type_string": "event ERC1967Upgrade.AdminChanged" - }, - "overloaded_declarations": [], - "referenced_declaration": 1313, - "is_pure": false - } - }, - { - "id": 1421, - "node_type": 24, - "kind": 24, - "src": { - "id": 1422, - "line": 529, - "column": 8, - "start": 19423, - "end": 19441, - "length": 19, - "parent_index": 1409 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 1423, - "node_type": 16, - "src": { - "id": 1424, - "line": 529, - "column": 18, - "start": 19433, - "end": 19440, - "length": 8, - "parent_index": 1421 - }, - "name": "newAdmin", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1423, - "is_pure": false - } - ], - "expression": { - "id": 1425, - "node_type": 16, - "src": { - "id": 1426, - "line": 529, - "column": 8, - "start": 19423, - "end": 19431, - "length": 9, - "parent_index": 1421 - }, - "name": "_setAdmin", - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1402, - "node_type": 43, - "src": { - "id": 1403, - "line": 527, - "column": 26, - "start": 19336, - "end": 19351, - "length": 16, - "parent_index": 1400 - }, - "parameters": [ - { - "id": 1404, - "node_type": 44, - "src": { - "id": 1405, - "line": 527, - "column": 26, - "start": 19336, - "end": 19351, - "length": 16, - "parent_index": 1402 - }, - "scope": 1400, - "name": "newAdmin", - "type_name": { - "id": 1406, - "node_type": 30, - "src": { - "id": 1407, - "line": 527, - "column": 26, - "start": 19336, - "end": 19342, - "length": 7, - "parent_index": 1404 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 1408, - "node_type": 43, - "src": { - "id": 1401, - "line": 527, - "column": 4, - "start": 19314, - "end": 19448, - "length": 135, - "parent_index": 1400 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 917, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 1428, - "name": "_BEACON_SLOT", - "is_constant": true, - "is_state_variable": true, - "node_type": 44, - "src": { - "id": 1429, - "line": 536, - "column": 4, - "start": 19692, - "end": 19799, - "length": 108, - "parent_index": 917 - }, - "scope": 917, - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "visibility": 1, - "storage_location": 1, - "mutability": 1, - "type_name": { - "id": 1430, - "node_type": 30, - "src": { - "id": 1431, - "line": 536, - "column": 4, - "start": 19692, - "end": 19698, - "length": 7, - "parent_index": 1428 - }, - "name": "bytes32", - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "referenced_declaration": 0 - } - }, - { - "id": 1433, - "node_type": 57, - "src": { - "id": 1434, - "line": 541, - "column": 4, - "start": 19871, - "end": 19915, - "length": 45, - "parent_index": 917 - }, - "parameters": { - "id": 1435, - "node_type": 43, - "src": { - "id": 1434, - "line": 541, - "column": 4, - "start": 19871, - "end": 19915, - "length": 45, - "parent_index": 1433 - }, - "parameters": [ - { - "id": 1436, - "node_type": 44, - "src": { - "id": 1437, - "line": 541, - "column": 25, - "start": 19892, - "end": 19913, - "length": 22, - "parent_index": 1435 - }, - "scope": 1433, - "name": "beacon", - "type_name": { - "id": 1438, - "node_type": 30, - "src": { - "id": 1439, - "line": 541, - "column": 25, - "start": 19892, - "end": 19898, - "length": 7, - "parent_index": 1436 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4, - "indexed": true - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "name": "BeaconUpgraded", - "anonymous": false - }, - { - "id": 1441, - "name": "_getBeacon", - "node_type": 42, - "kind": 41, - "src": { - "id": 1442, - "line": 546, - "column": 4, - "start": 19978, - "end": 20101, - "length": 124, - "parent_index": 917 - }, - "body": { - "id": 1455, - "node_type": 46, - "kind": 0, - "src": { - "id": 1456, - "line": 546, - "column": 58, - "start": 20032, - "end": 20101, - "length": 70, - "parent_index": 1441 - }, - "implemented": true, - "statements": [ - { - "id": 1457, - "node_type": 47, - "src": { - "id": 1458, - "line": 547, - "column": 8, - "start": 20042, - "end": 20095, - "length": 54, - "parent_index": 1441 - }, - "function_return_parameters": 1441, - "expression": { - "id": 1459, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1460, - "line": 547, - "column": 15, - "start": 20049, - "end": 20094, - "length": 46, - "parent_index": 1455 - }, - "expression": { - "id": 1461, - "node_type": 24, - "kind": 24, - "src": { - "id": 1462, - "line": 547, - "column": 15, - "start": 20049, - "end": 20088, - "length": 40, - "parent_index": 1459 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "arguments": [ - { - "id": 1463, - "node_type": 16, - "src": { - "id": 1464, - "line": 547, - "column": 42, - "start": 20076, - "end": 20087, - "length": 12, - "parent_index": 1461 - }, - "name": "_BEACON_SLOT", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - } - ], - "expression": { - "id": 1465, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1466, - "line": 547, - "column": 15, - "start": 20049, - "end": 20074, - "length": 26, - "parent_index": 1461 - }, - "expression": { - "id": 1467, - "node_type": 16, - "src": { - "id": 1468, - "line": 547, - "column": 15, - "start": 20049, - "end": 20059, - "length": 11, - "parent_index": 1465 - }, - "name": "StorageSlot", - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - }, - "overloaded_declarations": [], - "referenced_declaration": 767, - "is_pure": false - }, - "member_name": "getAddressSlot", - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - }, - "member_name": "value", - "argument_types": [], - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 5, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1443, - "node_type": 43, - "src": { - "id": 1444, - "line": 546, - "column": 49, - "start": 20023, - "end": 20029, - "length": 7, - "parent_index": 1441 - }, - "parameters": [ - { - "id": 1445, - "node_type": 44, - "src": { - "id": 1446, - "line": 546, - "column": 49, - "start": 20023, - "end": 20029, - "length": 7, - "parent_index": 1443 - }, - "scope": 1441, - "name": "", - "type_name": { - "id": 1447, - "node_type": 30, - "src": { - "id": 1448, - "line": 546, - "column": 49, - "start": 20023, - "end": 20029, - "length": 7, - "parent_index": 1445 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 1449, - "node_type": 43, - "src": { - "id": 1450, - "line": 546, - "column": 49, - "start": 20023, - "end": 20029, - "length": 7, - "parent_index": 1441 - }, - "parameters": [ - { - "id": 1451, - "node_type": 44, - "src": { - "id": 1452, - "line": 546, - "column": 49, - "start": 20023, - "end": 20029, - "length": 7, - "parent_index": 1449 - }, - "scope": 1441, - "name": "", - "type_name": { - "id": 1453, - "node_type": 30, - "src": { - "id": 1454, - "line": 546, - "column": 49, - "start": 20023, - "end": 20029, - "length": 7, - "parent_index": 1451 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "scope": 917, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 1470, - "name": "_setBeacon", - "node_type": 42, - "kind": 41, - "src": { - "id": 1471, - "line": 553, - "column": 4, - "start": 20184, - "end": 20588, - "length": 405, - "parent_index": 917 - }, - "body": { - "id": 1479, - "node_type": 46, - "kind": 0, - "src": { - "id": 1480, - "line": 553, - "column": 51, - "start": 20231, - "end": 20588, - "length": 358, - "parent_index": 1470 - }, - "implemented": true, - "statements": [ - { - "id": 1481, - "node_type": 24, - "kind": 24, - "src": { - "id": 1482, - "line": 554, - "column": 8, - "start": 20241, - "end": 20353, - "length": 113, - "parent_index": 1479 - }, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC1967: new beacon is not a contract\"" - } - ], - "arguments": [ - { - "id": 1483, - "node_type": 24, - "kind": 24, - "src": { - "id": 1484, - "line": 555, - "column": 12, - "start": 20262, - "end": 20290, - "length": 29, - "parent_index": 1481 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 1485, - "node_type": 16, - "src": { - "id": 1486, - "line": 555, - "column": 31, - "start": 20281, - "end": 20289, - "length": 9, - "parent_index": 1483 - }, - "name": "newBeacon", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1485, - "is_pure": false - } - ], - "expression": { - "id": 1487, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1488, - "line": 555, - "column": 12, - "start": 20262, - "end": 20279, - "length": 18, - "parent_index": 1483 - }, - "expression": { - "id": 1489, - "node_type": 16, - "src": { - "id": 1490, - "line": 555, - "column": 12, - "start": 20262, - "end": 20268, - "length": 7, - "parent_index": 1487 - }, - "name": "Address", - "type_description": { - "type_identifier": "t_contract$_Address_$251", - "type_string": "contract Address" - }, - "overloaded_declarations": [], - "referenced_declaration": 251, - "is_pure": false - }, - "member_name": "isContract", - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "type_description": { - "type_identifier": "t_contract$_Address_$251", - "type_string": "contract Address" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - }, - { - "id": 1491, - "node_type": 17, - "kind": 50, - "value": "ERC1967: new beacon is not a contract", - "hex_value": "455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374", - "src": { - "id": 1492, - "line": 556, - "column": 12, - "start": 20305, - "end": 20343, - "length": 39, - "parent_index": 1481 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC1967: new beacon is not a contract\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - ] - } - ], - "expression": { - "id": 1493, - "node_type": 16, - "src": { - "id": 1494, - "line": 554, - "column": 8, - "start": 20241, - "end": 20247, - "length": 7, - "parent_index": 1481 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$$_t_string_literal", - "type_string": "function(function(address),literal_string \"ERC1967: new beacon is not a contract\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC1967: new beacon is not a contract\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", - "type_string": "function(function(address),string memory)" - } - }, - { - "id": 1495, - "node_type": 24, - "kind": 24, - "src": { - "id": 1496, - "line": 558, - "column": 8, - "start": 20364, - "end": 20513, - "length": 150, - "parent_index": 1479 - }, - "argument_types": [ - { - "type_identifier": "t_function_$_t_function_$$", - "type_string": "function(function())" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC1967: beacon implementation is not a contract\"" - } - ], - "arguments": [ - { - "id": 1497, - "node_type": 24, - "kind": 24, - "src": { - "id": 1498, - "line": 559, - "column": 12, - "start": 20385, - "end": 20439, - "length": 55, - "parent_index": 1495 - }, - "argument_types": [ - { - "type_identifier": "t_function_$", - "type_string": "function()" - } - ], - "arguments": [ - { - "id": 1499, - "node_type": 24, - "kind": 24, - "src": { - "id": 1500, - "line": 559, - "column": 31, - "start": 20404, - "end": 20438, - "length": 35, - "parent_index": 1497 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 1501, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1502, - "line": 559, - "column": 31, - "start": 20404, - "end": 20436, - "length": 33, - "parent_index": 1499 - }, - "expression": { - "id": 1503, - "node_type": 24, - "kind": 24, - "src": { - "id": 1504, - "line": 559, - "column": 31, - "start": 20404, - "end": 20421, - "length": 18, - "parent_index": 1501 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 1505, - "node_type": 16, - "src": { - "id": 1506, - "line": 559, - "column": 39, - "start": 20412, - "end": 20420, - "length": 9, - "parent_index": 1503 - }, - "name": "newBeacon", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1505, - "is_pure": false - } - ], - "expression": { - "id": 1507, - "node_type": 16, - "src": { - "id": 1508, - "line": 559, - "column": 31, - "start": 20404, - "end": 20410, - "length": 7, - "parent_index": 1503 - }, - "name": "IBeacon", - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - }, - "member_name": "implementation", - "argument_types": [], - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - } - ], - "expression": { - "id": 1509, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1510, - "line": 559, - "column": 12, - "start": 20385, - "end": 20402, - "length": 18, - "parent_index": 1497 - }, - "expression": { - "id": 1511, - "node_type": 16, - "src": { - "id": 1512, - "line": 559, - "column": 12, - "start": 20385, - "end": 20391, - "length": 7, - "parent_index": 1509 - }, - "name": "Address", - "type_description": { - "type_identifier": "t_contract$_Address_$251", - "type_string": "contract Address" - }, - "overloaded_declarations": [], - "referenced_declaration": 251, - "is_pure": false - }, - "member_name": "isContract", - "argument_types": [ - { - "type_identifier": "t_function_$", - "type_string": "function()" - } - ], - "type_description": { - "type_identifier": "t_contract$_Address_$251", - "type_string": "contract Address" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$$", - "type_string": "function(function())" - } - }, - { - "id": 1513, - "node_type": 17, - "kind": 50, - "value": "ERC1967: beacon implementation is not a contract", - "hex_value": "455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374", - "src": { - "id": 1514, - "line": 560, - "column": 12, - "start": 20454, - "end": 20503, - "length": 50, - "parent_index": 1495 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC1967: beacon implementation is not a contract\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_function_$_t_function_$$", - "type_string": "function(function())" - } - ] - } - ], - "expression": { - "id": 1515, - "node_type": 16, - "src": { - "id": 1516, - "line": 558, - "column": 8, - "start": 20364, - "end": 20370, - "length": 7, - "parent_index": 1495 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_function_$$$$_t_string_literal", - "type_string": "function(function(function()),literal_string \"ERC1967: beacon implementation is not a contract\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$_t_function_$$", - "type_string": "function(function())" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"ERC1967: beacon implementation is not a contract\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_function_$$$_t_string_literal$", - "type_string": "function(function(function()),string memory)" - } - }, - { - "id": 1517, - "node_type": 81, - "src": { - "id": 1518, - "line": 562, - "column": 8, - "start": 20524, - "end": 20582, - "length": 59, - "parent_index": 1479 - }, - "expression": { - "id": 1519, - "node_type": 27, - "src": { - "id": 1520, - "line": 562, - "column": 8, - "start": 20524, - "end": 20581, - "length": 58, - "parent_index": 1479 - }, - "operator": 11, - "left_expression": { - "id": 1521, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1522, - "line": 562, - "column": 8, - "start": 20524, - "end": 20569, - "length": 46, - "parent_index": 1519 - }, - "expression": { - "id": 1523, - "node_type": 24, - "kind": 24, - "src": { - "id": 1524, - "line": 562, - "column": 8, - "start": 20524, - "end": 20563, - "length": 40, - "parent_index": 1521 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "arguments": [ - { - "id": 1525, - "node_type": 16, - "src": { - "id": 1526, - "line": 562, - "column": 35, - "start": 20551, - "end": 20562, - "length": 12, - "parent_index": 1523 - }, - "name": "_BEACON_SLOT", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - } - ], - "expression": { - "id": 1527, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 1528, - "line": 562, - "column": 8, - "start": 20524, - "end": 20549, - "length": 26, - "parent_index": 1523 - }, - "expression": { - "id": 1529, - "node_type": 16, - "src": { - "id": 1530, - "line": 562, - "column": 8, - "start": 20524, - "end": 20534, - "length": 11, - "parent_index": 1527 - }, - "name": "StorageSlot", - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - }, - "overloaded_declarations": [], - "referenced_declaration": 767, - "is_pure": false - }, - "member_name": "getAddressSlot", - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "type_description": { - "type_identifier": "t_contract$_StorageSlot_$767", - "type_string": "contract StorageSlot" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - }, - "member_name": "value", - "argument_types": [], - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - }, - "right_expression": { - "id": 1531, - "node_type": 16, - "src": { - "id": 1532, - "line": 562, - "column": 57, - "start": 20573, - "end": 20581, - "length": 9, - "parent_index": 1519 - }, - "name": "newBeacon", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1531, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - } - } - ] - }, - "implemented": true, - "visibility": 2, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1472, - "node_type": 43, - "src": { - "id": 1473, - "line": 553, - "column": 24, - "start": 20204, - "end": 20220, - "length": 17, - "parent_index": 1470 - }, - "parameters": [ - { - "id": 1474, - "node_type": 44, - "src": { - "id": 1475, - "line": 553, - "column": 24, - "start": 20204, - "end": 20220, - "length": 17, - "parent_index": 1472 - }, - "scope": 1470, - "name": "newBeacon", - "type_name": { - "id": 1476, - "node_type": 30, - "src": { - "id": 1477, - "line": 553, - "column": 24, - "start": 20204, - "end": 20210, - "length": 7, - "parent_index": 1474 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 1478, - "node_type": 43, - "src": { - "id": 1471, - "line": 553, - "column": 4, - "start": 20184, - "end": 20588, - "length": 405, - "parent_index": 1470 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 917, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - } - ], - "linearized_base_contracts": [ - 917, - 914, - 915, - 916 - ], - "base_contracts": [], - "contract_dependencies": [ - 914, - 915, - 916 - ] - } - ], - "src": { - "id": 903, - "line": 392, - "column": 0, - "start": 14221, - "end": 20590, - "length": 6370, - "parent_index": 118 - } + "id": 902, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 902, + "name": "ERC1967Upgrade", + "absolute_path": "ERC1967Upgrade.sol" + }, + { + "id": 767, + "name": "StorageSlot", + "absolute_path": "StorageSlot.sol" + }, + { + "id": 251, + "name": "Address", + "absolute_path": "Address.sol" + }, + { + "id": 119, + "name": "IBeacon", + "absolute_path": "IBeacon.sol" + } + ], + "absolute_path": "ERC1967Upgrade.sol", + "name": "ERC1967Upgrade", + "node_type": 1, + "nodes": [ + { + "id": 912, + "node_type": 10, + "src": { + "id": 913, + "line": 378, + "column": 0, + "start": 13854, + "end": 13876, + "length": 23, + "parent_index": 902 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "2", + ";" + ], + "text": "pragma solidity ^0.8.2;" + }, + { + "id": 914, + "node_type": 29, + "src": { + "id": 0, + "line": 380, + "column": 0, + "start": 13879, + "end": 13909, + "length": 31, + "parent_index": 902 + }, + "absolute_path": "IBeacon.sol", + "file": "../beacon/IBeacon.sol", + "scope": 902, + "unit_alias": "", + "source_unit": 767 + }, + { + "id": 915, + "node_type": 29, + "src": { + "id": 0, + "line": 381, + "column": 0, + "start": 13911, + "end": 13943, + "length": 33, + "parent_index": 902 + }, + "absolute_path": "Address.sol", + "file": "../../utils/Address.sol", + "scope": 902, + "unit_alias": "", + "source_unit": 767 + }, + { + "id": 916, + "node_type": 29, + "src": { + "id": 0, + "line": 382, + "column": 0, + "start": 13945, + "end": 13981, + "length": 37, + "parent_index": 902 + }, + "absolute_path": "StorageSlot.sol", + "file": "../../utils/StorageSlot.sol", + "scope": 902, + "unit_alias": "", + "source_unit": 767 + }, + { + "id": 917, + "name": "ERC1967Upgrade", + "node_type": 35, + "src": { + "id": 0, + "line": 392, + "column": 0, + "start": 14221, + "end": 20590, + "length": 6370, + "parent_index": 902 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 919, + "name": "_ROLLBACK_SLOT", + "is_constant": true, + "is_state_variable": true, + "node_type": 44, + "src": { + "id": 920, + "line": 394, + "column": 4, + "start": 14339, + "end": 14447, + "length": 109, + "parent_index": 917 + }, + "scope": 917, + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "visibility": 2, + "storage_location": 1, + "mutability": 1, + "type_name": { + "id": 921, + "node_type": 30, + "src": { + "id": 922, + "line": 394, + "column": 4, + "start": 14339, + "end": 14345, + "length": 7, + "parent_index": 919 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + } + }, + { + "id": 924, + "name": "_IMPLEMENTATION_SLOT", + "is_constant": true, + "is_state_variable": true, + "node_type": 44, + "src": { + "id": 925, + "line": 401, + "column": 4, + "start": 14673, + "end": 14788, + "length": 116, + "parent_index": 917 + }, + "scope": 917, + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "visibility": 1, + "storage_location": 1, + "mutability": 1, + "type_name": { + "id": 926, + "node_type": 30, + "src": { + "id": 927, + "line": 401, + "column": 4, + "start": 14673, + "end": 14679, + "length": 7, + "parent_index": 924 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + } + }, + { + "id": 929, + "node_type": 57, + "src": { + "id": 930, + "line": 406, + "column": 4, + "start": 14868, + "end": 14914, + "length": 47, + "parent_index": 917 + }, + "parameters": { + "id": 931, + "node_type": 43, + "src": { + "id": 930, + "line": 406, + "column": 4, + "start": 14868, + "end": 14914, + "length": 47, + "parent_index": 929 + }, + "parameters": [ + { + "id": 932, + "node_type": 44, + "src": { + "id": 933, + "line": 406, + "column": 19, + "start": 14883, + "end": 14912, + "length": 30, + "parent_index": 931 + }, + "scope": 929, + "name": "implementation", + "type_name": { + "id": 934, + "node_type": 30, + "src": { + "id": 935, + "line": 406, + "column": 19, + "start": 14883, + "end": 14889, + "length": 7, + "parent_index": 932 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "name": "Upgraded", + "anonymous": false + }, + { + "id": 937, + "name": "_getImplementation", + "node_type": 42, + "kind": 41, + "src": { + "id": 938, + "line": 411, + "column": 4, + "start": 14993, + "end": 15132, + "length": 140, + "parent_index": 917 + }, + "body": { + "id": 951, + "node_type": 46, + "kind": 0, + "src": { + "id": 952, + "line": 411, + "column": 66, + "start": 15055, + "end": 15132, + "length": 78, + "parent_index": 937 + }, + "implemented": true, + "statements": [ + { + "id": 953, + "node_type": 47, + "src": { + "id": 954, + "line": 412, + "column": 8, + "start": 15065, + "end": 15126, + "length": 62, + "parent_index": 937 + }, + "function_return_parameters": 937, + "expression": { + "id": 955, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 956, + "line": 412, + "column": 15, + "start": 15072, + "end": 15125, + "length": 54, + "parent_index": 951 + }, + "expression": { + "id": 957, + "node_type": 24, + "kind": 24, + "src": { + "id": 958, + "line": 412, + "column": 15, + "start": 15072, + "end": 15119, + "length": 48, + "parent_index": 955 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 963, + "node_type": 16, + "src": { + "id": 964, + "line": 412, + "column": 42, + "start": 15099, + "end": 15118, + "length": 20, + "parent_index": 957 + }, + "name": "_IMPLEMENTATION_SLOT", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 959, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 960, + "line": 412, + "column": 15, + "start": 15072, + "end": 15097, + "length": 26, + "parent_index": 957 + }, + "expression": { + "id": 961, + "node_type": 16, + "src": { + "id": 962, + "line": 412, + "column": 15, + "start": 15072, + "end": 15082, + "length": 11, + "parent_index": 959 + }, + "name": "StorageSlot", + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + }, + "overloaded_declarations": [], + "referenced_declaration": 767, + "is_pure": false + }, + "member_name": "getAddressSlot", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "member_name": "value", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 939, + "node_type": 43, + "src": { + "id": 940, + "line": 411, + "column": 57, + "start": 15046, + "end": 15052, + "length": 7, + "parent_index": 937 + }, + "parameters": [ + { + "id": 941, + "node_type": 44, + "src": { + "id": 942, + "line": 411, + "column": 57, + "start": 15046, + "end": 15052, + "length": 7, + "parent_index": 939 + }, + "scope": 937, + "name": "", + "type_name": { + "id": 943, + "node_type": 30, + "src": { + "id": 944, + "line": 411, + "column": 57, + "start": 15046, + "end": 15052, + "length": 7, + "parent_index": 941 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 945, + "node_type": 43, + "src": { + "id": 946, + "line": 411, + "column": 57, + "start": 15046, + "end": 15052, + "length": 7, + "parent_index": 937 + }, + "parameters": [ + { + "id": 947, + "node_type": 44, + "src": { + "id": 948, + "line": 411, + "column": 57, + "start": 15046, + "end": 15052, + "length": 7, + "parent_index": 945 + }, + "scope": 937, + "name": "", + "type_name": { + "id": 949, + "node_type": 30, + "src": { + "id": 950, + "line": 411, + "column": 57, + "start": 15046, + "end": 15052, + "length": 7, + "parent_index": 947 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 917, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 966, + "name": "_setImplementation", + "node_type": 42, + "kind": 41, + "src": { + "id": 967, + "line": 418, + "column": 4, + "start": 15224, + "end": 15482, + "length": 259, + "parent_index": 917 + }, + "body": { + "id": 975, + "node_type": 46, + "kind": 0, + "src": { + "id": 976, + "line": 418, + "column": 67, + "start": 15287, + "end": 15482, + "length": 196, + "parent_index": 966 + }, + "implemented": true, + "statements": [ + { + "id": 977, + "node_type": 24, + "kind": 24, + "src": { + "id": 978, + "line": 419, + "column": 8, + "start": 15297, + "end": 15391, + "length": 95, + "parent_index": 975 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC1967: new implementation is not a contract\"" + } + ], + "arguments": [ + { + "id": 981, + "node_type": 24, + "kind": 24, + "src": { + "id": 982, + "line": 419, + "column": 16, + "start": 15305, + "end": 15341, + "length": 37, + "parent_index": 977 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 987, + "node_type": 16, + "src": { + "id": 988, + "line": 419, + "column": 35, + "start": 15324, + "end": 15340, + "length": 17, + "parent_index": 981 + }, + "name": "newImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 987, + "is_pure": false + } + ], + "expression": { + "id": 983, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 984, + "line": 419, + "column": 16, + "start": 15305, + "end": 15322, + "length": 18, + "parent_index": 981 + }, + "expression": { + "id": 985, + "node_type": 16, + "src": { + "id": 986, + "line": 419, + "column": 16, + "start": 15305, + "end": 15311, + "length": 7, + "parent_index": 983 + }, + "name": "Address", + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + }, + "overloaded_declarations": [], + "referenced_declaration": 251, + "is_pure": false + }, + "member_name": "isContract", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 989, + "node_type": 17, + "kind": 50, + "value": "ERC1967: new implementation is not a contract", + "hex_value": "455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374", + "src": { + "id": 990, + "line": 419, + "column": 55, + "start": 15344, + "end": 15390, + "length": 47, + "parent_index": 977 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC1967: new implementation is not a contract\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ] + } + ], + "expression": { + "id": 979, + "node_type": 16, + "src": { + "id": 980, + "line": 419, + "column": 8, + "start": 15297, + "end": 15303, + "length": 7, + "parent_index": 977 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "type_string": "function(function(address),string memory)" + } + }, + { + "id": 991, + "node_type": 81, + "src": { + "id": 992, + "line": 420, + "column": 8, + "start": 15402, + "end": 15476, + "length": 75, + "parent_index": 975 + }, + "expression": { + "id": 993, + "node_type": 27, + "src": { + "id": 994, + "line": 420, + "column": 8, + "start": 15402, + "end": 15475, + "length": 74, + "parent_index": 975 + }, + "operator": 11, + "left_expression": { + "id": 995, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 996, + "line": 420, + "column": 8, + "start": 15402, + "end": 15455, + "length": 54, + "parent_index": 993 + }, + "expression": { + "id": 997, + "node_type": 24, + "kind": 24, + "src": { + "id": 998, + "line": 420, + "column": 8, + "start": 15402, + "end": 15449, + "length": 48, + "parent_index": 995 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 1003, + "node_type": 16, + "src": { + "id": 1004, + "line": 420, + "column": 35, + "start": 15429, + "end": 15448, + "length": 20, + "parent_index": 997 + }, + "name": "_IMPLEMENTATION_SLOT", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 999, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1000, + "line": 420, + "column": 8, + "start": 15402, + "end": 15427, + "length": 26, + "parent_index": 997 + }, + "expression": { + "id": 1001, + "node_type": 16, + "src": { + "id": 1002, + "line": 420, + "column": 8, + "start": 15402, + "end": 15412, + "length": 11, + "parent_index": 999 + }, + "name": "StorageSlot", + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + }, + "overloaded_declarations": [], + "referenced_declaration": 767, + "is_pure": false + }, + "member_name": "getAddressSlot", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "member_name": "value", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "right_expression": { + "id": 1005, + "node_type": 16, + "src": { + "id": 1006, + "line": 420, + "column": 65, + "start": 15459, + "end": 15475, + "length": 17, + "parent_index": 993 + }, + "name": "newImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1005, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + } + ] + }, + "implemented": true, + "visibility": 2, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 968, + "node_type": 43, + "src": { + "id": 969, + "line": 418, + "column": 32, + "start": 15252, + "end": 15276, + "length": 25, + "parent_index": 966 + }, + "parameters": [ + { + "id": 970, + "node_type": 44, + "src": { + "id": 971, + "line": 418, + "column": 32, + "start": 15252, + "end": 15276, + "length": 25, + "parent_index": 968 + }, + "scope": 966, + "name": "newImplementation", + "type_name": { + "id": 972, + "node_type": 30, + "src": { + "id": 973, + "line": 418, + "column": 32, + "start": 15252, + "end": 15258, + "length": 7, + "parent_index": 970 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 974, + "node_type": 43, + "src": { + "id": 967, + "line": 418, + "column": 4, + "start": 15224, + "end": 15482, + "length": 259, + "parent_index": 966 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 917, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1008, + "name": "_upgradeTo", + "node_type": 42, + "kind": 41, + "src": { + "id": 1009, + "line": 428, + "column": 4, + "start": 15589, + "end": 15740, + "length": 152, + "parent_index": 917 + }, + "body": { + "id": 1017, + "node_type": 46, + "kind": 0, + "src": { + "id": 1018, + "line": 428, + "column": 60, + "start": 15645, + "end": 15740, + "length": 96, + "parent_index": 1008 + }, + "implemented": true, + "statements": [ + { + "id": 1019, + "node_type": 24, + "kind": 24, + "src": { + "id": 1020, + "line": 429, + "column": 8, + "start": 15655, + "end": 15691, + "length": 37, + "parent_index": 1017 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 1023, + "node_type": 16, + "src": { + "id": 1024, + "line": 429, + "column": 27, + "start": 15674, + "end": 15690, + "length": 17, + "parent_index": 1019 + }, + "name": "newImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1023, + "is_pure": false + } + ], + "expression": { + "id": 1021, + "node_type": 16, + "src": { + "id": 1022, + "line": 429, + "column": 8, + "start": 15655, + "end": 15672, + "length": 18, + "parent_index": 1019 + }, + "name": "_setImplementation", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1025, + "node_type": 64, + "src": { + "id": 1026, + "line": 430, + "column": 8, + "start": 15702, + "end": 15734, + "length": 33, + "parent_index": 1008 + }, + "arguments": [ + { + "id": 1027, + "node_type": 16, + "src": { + "id": 1028, + "line": 430, + "column": 22, + "start": 15716, + "end": 15732, + "length": 17, + "parent_index": 1017 + }, + "name": "newImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1027, + "is_pure": false + } + ], + "expression": { + "id": 1029, + "node_type": 16, + "src": { + "id": 1030, + "line": 430, + "column": 13, + "start": 15707, + "end": 15714, + "length": 8, + "parent_index": 1017 + }, + "name": "Upgraded", + "type_description": { + "type_identifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", + "type_string": "event ERC1967Upgrade.Upgraded" + }, + "overloaded_declarations": [], + "referenced_declaration": 929, + "is_pure": false + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1010, + "node_type": 43, + "src": { + "id": 1011, + "line": 428, + "column": 24, + "start": 15609, + "end": 15633, + "length": 25, + "parent_index": 1008 + }, + "parameters": [ + { + "id": 1012, + "node_type": 44, + "src": { + "id": 1013, + "line": 428, + "column": 24, + "start": 15609, + "end": 15633, + "length": 25, + "parent_index": 1010 + }, + "scope": 1008, + "name": "newImplementation", + "type_name": { + "id": 1014, + "node_type": 30, + "src": { + "id": 1015, + "line": 428, + "column": 24, + "start": 15609, + "end": 15615, + "length": 7, + "parent_index": 1012 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 1016, + "node_type": 43, + "src": { + "id": 1009, + "line": 428, + "column": 4, + "start": 15589, + "end": 15740, + "length": 152, + "parent_index": 1008 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 917, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1032, + "name": "_upgradeToAndCall", + "node_type": 42, + "kind": 41, + "src": { + "id": 1033, + "line": 438, + "column": 4, + "start": 15875, + "end": 16189, + "length": 315, + "parent_index": 917 + }, + "body": { + "id": 1049, + "node_type": 46, + "kind": 0, + "src": { + "id": 1050, + "line": 438, + "column": 102, + "start": 15973, + "end": 16189, + "length": 217, + "parent_index": 1032 + }, + "implemented": true, + "statements": [ + { + "id": 1051, + "node_type": 24, + "kind": 24, + "src": { + "id": 1052, + "line": 439, + "column": 8, + "start": 15983, + "end": 16019, + "length": 37, + "parent_index": 1049 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 1055, + "node_type": 16, + "src": { + "id": 1056, + "line": 439, + "column": 27, + "start": 16002, + "end": 16018, + "length": 17, + "parent_index": 1051 + }, + "name": "newImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1055, + "is_pure": false + } + ], + "expression": { + "id": 1053, + "node_type": 16, + "src": { + "id": 1054, + "line": 439, + "column": 8, + "start": 15983, + "end": 16000, + "length": 18, + "parent_index": 1051 + }, + "name": "_setImplementation", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1057, + "node_type": 64, + "src": { + "id": 1058, + "line": 440, + "column": 8, + "start": 16030, + "end": 16062, + "length": 33, + "parent_index": 1032 + }, + "arguments": [ + { + "id": 1059, + "node_type": 16, + "src": { + "id": 1060, + "line": 440, + "column": 22, + "start": 16044, + "end": 16060, + "length": 17, + "parent_index": 1049 + }, + "name": "newImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1059, + "is_pure": false + } + ], + "expression": { + "id": 1061, + "node_type": 16, + "src": { + "id": 1062, + "line": 440, + "column": 13, + "start": 16035, + "end": 16042, + "length": 8, + "parent_index": 1049 + }, + "name": "Upgraded", + "type_description": { + "type_identifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", + "type_string": "event ERC1967Upgrade.Upgraded" + }, + "overloaded_declarations": [], + "referenced_declaration": 929, + "is_pure": false + } + }, + { + "id": 1063, + "node_type": 48, + "src": { + "id": 1064, + "line": 441, + "column": 0, + "start": 16072, + "end": 16183, + "length": 112, + "parent_index": 1049 + }, + "condition": { + "id": 1065, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1066, + "line": 441, + "column": 12, + "start": 16076, + "end": 16103, + "length": 28, + "parent_index": 1063 + }, + "operator": 33, + "left_expression": { + "id": 1067, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1068, + "line": 441, + "column": 12, + "start": 16076, + "end": 16090, + "length": 15, + "parent_index": 1065 + }, + "operator": 7, + "left_expression": { + "id": 1069, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1070, + "line": 441, + "column": 12, + "start": 16076, + "end": 16086, + "length": 11, + "parent_index": 1067 + }, + "expression": { + "id": 1071, + "node_type": 16, + "src": { + "id": 1072, + "line": 441, + "column": 12, + "start": 16076, + "end": 16079, + "length": 4, + "parent_index": 1069 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 1071, + "is_pure": false + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + }, + "right_expression": { + "id": 1073, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1074, + "line": 441, + "column": 26, + "start": 16090, + "end": 16090, + "length": 1, + "parent_index": 1067 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "right_expression": { + "id": 1075, + "node_type": 16, + "src": { + "id": 1076, + "line": 441, + "column": 31, + "start": 16095, + "end": 16103, + "length": 9, + "parent_index": 1065 + }, + "name": "forceCall", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 1075, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 1077, + "node_type": 46, + "kind": 0, + "src": { + "id": 1078, + "line": 441, + "column": 42, + "start": 16106, + "end": 16183, + "length": 78, + "parent_index": 1032 + }, + "implemented": true, + "statements": [ + { + "id": 1079, + "node_type": 24, + "kind": 24, + "src": { + "id": 1080, + "line": 442, + "column": 12, + "start": 16120, + "end": 16172, + "length": 53, + "parent_index": 1077 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ], + "arguments": [ + { + "id": 1085, + "node_type": 16, + "src": { + "id": 1086, + "line": 442, + "column": 41, + "start": 16149, + "end": 16165, + "length": 17, + "parent_index": 1079 + }, + "name": "newImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1085, + "is_pure": false + }, + { + "id": 1087, + "node_type": 16, + "src": { + "id": 1088, + "line": 442, + "column": 60, + "start": 16168, + "end": 16171, + "length": 4, + "parent_index": 1079 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 1087, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 1081, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1082, + "line": 442, + "column": 12, + "start": 16120, + "end": 16147, + "length": 28, + "parent_index": 1079 + }, + "expression": { + "id": 1083, + "node_type": 16, + "src": { + "id": 1084, + "line": 442, + "column": 12, + "start": 16120, + "end": 16126, + "length": 7, + "parent_index": 1081 + }, + "name": "Address", + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + }, + "overloaded_declarations": [], + "referenced_declaration": 251, + "is_pure": false + }, + "member_name": "functionDelegateCall", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$", + "type_string": "function(address,bytes)" + } + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1034, + "node_type": 43, + "src": { + "id": 1035, + "line": 438, + "column": 31, + "start": 15902, + "end": 15961, + "length": 60, + "parent_index": 1032 + }, + "parameters": [ + { + "id": 1036, + "node_type": 44, + "src": { + "id": 1037, + "line": 438, + "column": 31, + "start": 15902, + "end": 15926, + "length": 25, + "parent_index": 1034 + }, + "scope": 1032, + "name": "newImplementation", + "type_name": { + "id": 1038, + "node_type": 30, + "src": { + "id": 1039, + "line": 438, + "column": 31, + "start": 15902, + "end": 15908, + "length": 7, + "parent_index": 1036 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1040, + "node_type": 44, + "src": { + "id": 1041, + "line": 438, + "column": 58, + "start": 15929, + "end": 15945, + "length": 17, + "parent_index": 1034 + }, + "scope": 1032, + "name": "data", + "type_name": { + "id": 1042, + "node_type": 30, + "src": { + "id": 1043, + "line": 438, + "column": 58, + "start": 15929, + "end": 15933, + "length": 5, + "parent_index": 1040 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1044, + "node_type": 44, + "src": { + "id": 1045, + "line": 438, + "column": 77, + "start": 15948, + "end": 15961, + "length": 14, + "parent_index": 1034 + }, + "scope": 1032, + "name": "forceCall", + "type_name": { + "id": 1046, + "node_type": 30, + "src": { + "id": 1047, + "line": 438, + "column": 77, + "start": 15948, + "end": 15951, + "length": 4, + "parent_index": 1044 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "return_parameters": { + "id": 1048, + "node_type": 43, + "src": { + "id": 1033, + "line": 438, + "column": 4, + "start": 15875, + "end": 16189, + "length": 315, + "parent_index": 1032 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 917, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_bool$", + "type_string": "function(address,bytes,bool)" + } + }, + { + "id": 1090, + "name": "_upgradeToAndCallSecure", + "node_type": 42, + "kind": 41, + "src": { + "id": 1091, + "line": 451, + "column": 4, + "start": 16362, + "end": 17675, + "length": 1314, + "parent_index": 917 + }, + "body": { + "id": 1107, + "node_type": 46, + "kind": 0, + "src": { + "id": 1108, + "line": 451, + "column": 108, + "start": 16466, + "end": 17675, + "length": 1210, + "parent_index": 1090 + }, + "implemented": true, + "statements": [ + { + "id": 1109, + "node_type": 44, + "src": { + "id": 1110, + "line": 452, + "column": 8, + "start": 16476, + "end": 16524, + "length": 49, + "parent_index": 1107 + }, + "assignments": [ + 1111 + ], + "declarations": [ + { + "is_constant": false, + "id": 1111, + "state_mutability": 1, + "name": "oldImplementation", + "node_type": 44, + "scope": 1107, + "src": { + "id": 1112, + "line": 452, + "column": 8, + "start": 16476, + "end": 16500, + "length": 25, + "parent_index": 1109 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 1113, + "node_type": 30, + "src": { + "id": 1114, + "line": 452, + "column": 8, + "start": 16476, + "end": 16482, + "length": 7, + "parent_index": 1111 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 1115, + "node_type": 24, + "kind": 24, + "src": { + "id": 1116, + "line": 452, + "column": 36, + "start": 16504, + "end": 16523, + "length": 20, + "parent_index": 1109 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 1117, + "node_type": 16, + "src": { + "id": 1118, + "line": 452, + "column": 36, + "start": 16504, + "end": 16521, + "length": 18, + "parent_index": 1115 + }, + "name": "_getImplementation", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + }, + { + "id": 1119, + "node_type": 24, + "kind": 24, + "src": { + "id": 1120, + "line": 455, + "column": 8, + "start": 16577, + "end": 16613, + "length": 37, + "parent_index": 1107 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 1123, + "node_type": 16, + "src": { + "id": 1124, + "line": 455, + "column": 27, + "start": 16596, + "end": 16612, + "length": 17, + "parent_index": 1119 + }, + "name": "newImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1123, + "is_pure": false + } + ], + "expression": { + "id": 1121, + "node_type": 16, + "src": { + "id": 1122, + "line": 455, + "column": 8, + "start": 16577, + "end": 16594, + "length": 18, + "parent_index": 1119 + }, + "name": "_setImplementation", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1125, + "node_type": 48, + "src": { + "id": 1126, + "line": 456, + "column": 0, + "start": 16624, + "end": 16735, + "length": 112, + "parent_index": 1107 + }, + "condition": { + "id": 1127, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1128, + "line": 456, + "column": 12, + "start": 16628, + "end": 16655, + "length": 28, + "parent_index": 1125 + }, + "operator": 33, + "left_expression": { + "id": 1129, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1130, + "line": 456, + "column": 12, + "start": 16628, + "end": 16642, + "length": 15, + "parent_index": 1127 + }, + "operator": 7, + "left_expression": { + "id": 1131, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1132, + "line": 456, + "column": 12, + "start": 16628, + "end": 16638, + "length": 11, + "parent_index": 1129 + }, + "expression": { + "id": 1133, + "node_type": 16, + "src": { + "id": 1134, + "line": 456, + "column": 12, + "start": 16628, + "end": 16631, + "length": 4, + "parent_index": 1131 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 1133, + "is_pure": false + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + }, + "right_expression": { + "id": 1135, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1136, + "line": 456, + "column": 26, + "start": 16642, + "end": 16642, + "length": 1, + "parent_index": 1129 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "right_expression": { + "id": 1137, + "node_type": 16, + "src": { + "id": 1138, + "line": 456, + "column": 31, + "start": 16647, + "end": 16655, + "length": 9, + "parent_index": 1127 + }, + "name": "forceCall", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 1137, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 1139, + "node_type": 46, + "kind": 0, + "src": { + "id": 1140, + "line": 456, + "column": 42, + "start": 16658, + "end": 16735, + "length": 78, + "parent_index": 1090 + }, + "implemented": true, + "statements": [ + { + "id": 1141, + "node_type": 24, + "kind": 24, + "src": { + "id": 1142, + "line": 457, + "column": 12, + "start": 16672, + "end": 16724, + "length": 53, + "parent_index": 1139 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ], + "arguments": [ + { + "id": 1147, + "node_type": 16, + "src": { + "id": 1148, + "line": 457, + "column": 41, + "start": 16701, + "end": 16717, + "length": 17, + "parent_index": 1141 + }, + "name": "newImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1147, + "is_pure": false + }, + { + "id": 1149, + "node_type": 16, + "src": { + "id": 1150, + "line": 457, + "column": 60, + "start": 16720, + "end": 16723, + "length": 4, + "parent_index": 1141 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 1149, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 1143, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1144, + "line": 457, + "column": 12, + "start": 16672, + "end": 16699, + "length": 28, + "parent_index": 1141 + }, + "expression": { + "id": 1145, + "node_type": 16, + "src": { + "id": 1146, + "line": 457, + "column": 12, + "start": 16672, + "end": 16678, + "length": 7, + "parent_index": 1143 + }, + "name": "Address", + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + }, + "overloaded_declarations": [], + "referenced_declaration": 251, + "is_pure": false + }, + "member_name": "functionDelegateCall", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$", + "type_string": "function(address,bytes)" + } + } + ] + } + }, + { + "id": 1151, + "node_type": 44, + "src": { + "id": 1152, + "line": 461, + "column": 8, + "start": 16806, + "end": 16898, + "length": 93, + "parent_index": 1107 + }, + "assignments": [ + 1153 + ], + "declarations": [ + { + "is_constant": false, + "id": 1153, + "state_mutability": 1, + "name": "rollbackTesting", + "node_type": 44, + "scope": 1107, + "src": { + "id": 1154, + "line": 461, + "column": 8, + "start": 16806, + "end": 16852, + "length": 47, + "parent_index": 1151 + }, + "is_state_variable": false, + "storage_location": 3, + "type_name": { + "id": 1155, + "node_type": 69, + "src": { + "id": 1156, + "line": 461, + "column": 8, + "start": 16806, + "end": 16828, + "length": 23, + "parent_index": 1153 + }, + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + }, + "path_node": { + "id": 1157, + "name": "StorageSlot", + "node_type": 52, + "referenced_declaration": 767, + "src": { + "id": 1158, + "line": 461, + "column": 8, + "start": 16806, + "end": 16816, + "length": 11, + "parent_index": 1155 + } + }, + "referenced_declaration": 767 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 1159, + "node_type": 24, + "kind": 24, + "src": { + "id": 1160, + "line": 461, + "column": 58, + "start": 16856, + "end": 16897, + "length": 42, + "parent_index": 1151 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 1165, + "node_type": 16, + "src": { + "id": 1166, + "line": 461, + "column": 85, + "start": 16883, + "end": 16896, + "length": 14, + "parent_index": 1159 + }, + "name": "_ROLLBACK_SLOT", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 1161, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1162, + "line": 461, + "column": 58, + "start": 16856, + "end": 16881, + "length": 26, + "parent_index": 1159 + }, + "expression": { + "id": 1163, + "node_type": 16, + "src": { + "id": 1164, + "line": 461, + "column": 58, + "start": 16856, + "end": 16866, + "length": 11, + "parent_index": 1161 + }, + "name": "StorageSlot", + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + }, + "overloaded_declarations": [], + "referenced_declaration": 767, + "is_pure": false + }, + "member_name": "getBooleanSlot", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + } + }, + { + "id": 1167, + "node_type": 48, + "src": { + "id": 1168, + "line": 462, + "column": 0, + "start": 16908, + "end": 17669, + "length": 762, + "parent_index": 1107 + }, + "condition": { + "id": 1169, + "node_type": 18, + "src": { + "id": 1170, + "line": 462, + "column": 12, + "start": 16912, + "end": 16933, + "length": 22, + "parent_index": 1090 + }, + "operator": 31, + "prefix": false, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "expression": { + "id": 1171, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1172, + "line": 462, + "column": 13, + "start": 16913, + "end": 16933, + "length": 21, + "parent_index": 1169 + }, + "expression": { + "id": 1173, + "node_type": 16, + "src": { + "id": 1174, + "line": 462, + "column": 13, + "start": 16913, + "end": 16927, + "length": 15, + "parent_index": 1171 + }, + "name": "rollbackTesting", + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + }, + "overloaded_declarations": [], + "referenced_declaration": 1151, + "is_pure": false + }, + "member_name": "value", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + } + }, + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + } + }, + "body": { + "id": 1175, + "node_type": 46, + "kind": 0, + "src": { + "id": 1176, + "line": 462, + "column": 36, + "start": 16936, + "end": 17669, + "length": 734, + "parent_index": 1090 + }, + "implemented": true, + "statements": [ + { + "id": 1177, + "node_type": 81, + "src": { + "id": 1178, + "line": 464, + "column": 12, + "start": 17026, + "end": 17054, + "length": 29, + "parent_index": 1175 + }, + "expression": { + "id": 1179, + "node_type": 27, + "src": { + "id": 1180, + "line": 464, + "column": 12, + "start": 17026, + "end": 17053, + "length": 28, + "parent_index": 1175 + }, + "operator": 11, + "left_expression": { + "id": 1181, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1182, + "line": 464, + "column": 12, + "start": 17026, + "end": 17046, + "length": 21, + "parent_index": 1179 + }, + "expression": { + "id": 1183, + "node_type": 16, + "src": { + "id": 1184, + "line": 464, + "column": 12, + "start": 17026, + "end": 17040, + "length": 15, + "parent_index": 1181 + }, + "name": "rollbackTesting", + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + }, + "overloaded_declarations": [], + "referenced_declaration": 1151, + "is_pure": false + }, + "member_name": "value", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + } + }, + "right_expression": { + "id": 1185, + "node_type": 17, + "kind": 61, + "value": "true", + "hex_value": "74727565", + "src": { + "id": 1186, + "line": 464, + "column": 36, + "start": 17050, + "end": 17053, + "length": 4, + "parent_index": 1179 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + } + }, + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + } + }, + { + "id": 1187, + "node_type": 24, + "kind": 24, + "src": { + "id": 1188, + "line": 465, + "column": 12, + "start": 17068, + "end": 17284, + "length": 217, + "parent_index": 1175 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_function__t_string_literal$_t_function_$_t_string_literal$", + "type_string": "function(string memory,string memory)" + } + ], + "arguments": [ + { + "id": 1193, + "node_type": 16, + "src": { + "id": 1194, + "line": 466, + "column": 16, + "start": 17114, + "end": 17130, + "length": 17, + "parent_index": 1187 + }, + "name": "newImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1193, + "is_pure": false + }, + { + "id": 1195, + "node_type": 24, + "kind": 24, + "src": { + "id": 1196, + "line": 467, + "column": 16, + "start": 17149, + "end": 17270, + "length": 122, + "parent_index": 1187 + }, + "argument_types": [ + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"upgradeTo(address)\"" + }, + { + "type_identifier": "t_function_$_t_string_literal$", + "type_string": "function(literal_string \"upgradeTo(address)\")" + } + ], + "arguments": [ + { + "id": 1201, + "node_type": 17, + "kind": 50, + "value": "upgradeTo(address)", + "hex_value": "75706772616465546f286164647265737329", + "src": { + "id": 1202, + "line": 468, + "column": 20, + "start": 17194, + "end": 17213, + "length": 20, + "parent_index": 1195 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"upgradeTo(address)\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + { + "id": 1203, + "node_type": 16, + "src": { + "id": 1204, + "line": 469, + "column": 20, + "start": 17236, + "end": 17252, + "length": 17, + "parent_index": 1195 + }, + "name": "oldImplementation", + "type_description": { + "type_identifier": "t_function_$_t_string_literal$", + "type_string": "function(literal_string \"upgradeTo(address)\")" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"upgradeTo(address)\"" + } + ] + } + ], + "expression": { + "id": 1197, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1198, + "line": 467, + "column": 16, + "start": 17149, + "end": 17171, + "length": 23, + "parent_index": 1195 + }, + "expression": { + "id": 1199, + "node_type": 16, + "src": { + "id": 1200, + "line": 467, + "column": 16, + "start": 17149, + "end": 17151, + "length": 3, + "parent_index": 1197 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "encodeWithSignature", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function__t_string_literal$_t_function_$_t_string_literal$", + "type_string": "function(string memory,string memory)" + } + } + ], + "expression": { + "id": 1189, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1190, + "line": 465, + "column": 12, + "start": 17068, + "end": 17095, + "length": 28, + "parent_index": 1187 + }, + "expression": { + "id": 1191, + "node_type": 16, + "src": { + "id": 1192, + "line": 465, + "column": 12, + "start": 17068, + "end": 17074, + "length": 7, + "parent_index": 1189 + }, + "name": "Address", + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + }, + "overloaded_declarations": [], + "referenced_declaration": 251, + "is_pure": false + }, + "member_name": "functionDelegateCall", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_function__t_string_literal$_t_function_$_t_string_literal$", + "type_string": "function(address,function(string memory,string memory))" + } + }, + { + "id": 1205, + "node_type": 81, + "src": { + "id": 1206, + "line": 472, + "column": 12, + "start": 17299, + "end": 17328, + "length": 30, + "parent_index": 1175 + }, + "expression": { + "id": 1207, + "node_type": 27, + "src": { + "id": 1208, + "line": 472, + "column": 12, + "start": 17299, + "end": 17327, + "length": 29, + "parent_index": 1175 + }, + "operator": 11, + "left_expression": { + "id": 1209, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1210, + "line": 472, + "column": 12, + "start": 17299, + "end": 17319, + "length": 21, + "parent_index": 1207 + }, + "expression": { + "id": 1211, + "node_type": 16, + "src": { + "id": 1212, + "line": 472, + "column": 12, + "start": 17299, + "end": 17313, + "length": 15, + "parent_index": 1209 + }, + "name": "rollbackTesting", + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + }, + "overloaded_declarations": [], + "referenced_declaration": 1151, + "is_pure": false + }, + "member_name": "value", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + } + }, + "right_expression": { + "id": 1213, + "node_type": 17, + "kind": 61, + "value": "false", + "hex_value": "66616c7365", + "src": { + "id": 1214, + "line": 472, + "column": 36, + "start": 17323, + "end": 17327, + "length": 5, + "parent_index": 1207 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + } + }, + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + } + }, + { + "id": 1215, + "node_type": 24, + "kind": 24, + "src": { + "id": 1216, + "line": 474, + "column": 12, + "start": 17386, + "end": 17486, + "length": 101, + "parent_index": 1175 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\"" + } + ], + "arguments": [ + { + "id": 1219, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1220, + "line": 474, + "column": 20, + "start": 17394, + "end": 17434, + "length": 41, + "parent_index": 1215 + }, + "operator": 11, + "left_expression": { + "id": 1221, + "node_type": 16, + "src": { + "id": 1222, + "line": 474, + "column": 20, + "start": 17394, + "end": 17410, + "length": 17, + "parent_index": 1219 + }, + "name": "oldImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1109, + "is_pure": false + }, + "right_expression": { + "id": 1223, + "node_type": 24, + "kind": 24, + "src": { + "id": 1224, + "line": 474, + "column": 41, + "start": 17415, + "end": 17434, + "length": 20, + "parent_index": 1219 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 1225, + "node_type": 16, + "src": { + "id": 1226, + "line": 474, + "column": 41, + "start": 17415, + "end": 17432, + "length": 18, + "parent_index": 1223 + }, + "name": "_getImplementation", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 1227, + "node_type": 17, + "kind": 50, + "value": "ERC1967Upgrade: upgrade breaks further upgrades", + "hex_value": "45524331393637557067726164653a207570677261646520627265616b732066757274686572207570677261646573", + "src": { + "id": 1228, + "line": 474, + "column": 63, + "start": 17437, + "end": 17485, + "length": 49, + "parent_index": 1215 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 1217, + "node_type": 16, + "src": { + "id": 1218, + "line": 474, + "column": 12, + "start": 17386, + "end": 17392, + "length": 7, + "parent_index": 1215 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 1229, + "node_type": 24, + "kind": 24, + "src": { + "id": 1230, + "line": 476, + "column": 12, + "start": 17576, + "end": 17612, + "length": 37, + "parent_index": 1175 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 1233, + "node_type": 16, + "src": { + "id": 1234, + "line": 476, + "column": 31, + "start": 17595, + "end": 17611, + "length": 17, + "parent_index": 1229 + }, + "name": "newImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1233, + "is_pure": false + } + ], + "expression": { + "id": 1231, + "node_type": 16, + "src": { + "id": 1232, + "line": 476, + "column": 12, + "start": 17576, + "end": 17593, + "length": 18, + "parent_index": 1229 + }, + "name": "_setImplementation", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1235, + "node_type": 64, + "src": { + "id": 1236, + "line": 477, + "column": 12, + "start": 17627, + "end": 17659, + "length": 33, + "parent_index": 1090 + }, + "arguments": [ + { + "id": 1237, + "node_type": 16, + "src": { + "id": 1238, + "line": 477, + "column": 26, + "start": 17641, + "end": 17657, + "length": 17, + "parent_index": 1175 + }, + "name": "newImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1237, + "is_pure": false + } + ], + "expression": { + "id": 1239, + "node_type": 16, + "src": { + "id": 1240, + "line": 477, + "column": 17, + "start": 17632, + "end": 17639, + "length": 8, + "parent_index": 1175 + }, + "name": "Upgraded", + "type_description": { + "type_identifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", + "type_string": "event ERC1967Upgrade.Upgraded" + }, + "overloaded_declarations": [], + "referenced_declaration": 929, + "is_pure": false + } + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1092, + "node_type": 43, + "src": { + "id": 1093, + "line": 451, + "column": 37, + "start": 16395, + "end": 16454, + "length": 60, + "parent_index": 1090 + }, + "parameters": [ + { + "id": 1094, + "node_type": 44, + "src": { + "id": 1095, + "line": 451, + "column": 37, + "start": 16395, + "end": 16419, + "length": 25, + "parent_index": 1092 + }, + "scope": 1090, + "name": "newImplementation", + "type_name": { + "id": 1096, + "node_type": 30, + "src": { + "id": 1097, + "line": 451, + "column": 37, + "start": 16395, + "end": 16401, + "length": 7, + "parent_index": 1094 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1098, + "node_type": 44, + "src": { + "id": 1099, + "line": 451, + "column": 64, + "start": 16422, + "end": 16438, + "length": 17, + "parent_index": 1092 + }, + "scope": 1090, + "name": "data", + "type_name": { + "id": 1100, + "node_type": 30, + "src": { + "id": 1101, + "line": 451, + "column": 64, + "start": 16422, + "end": 16426, + "length": 5, + "parent_index": 1098 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1102, + "node_type": 44, + "src": { + "id": 1103, + "line": 451, + "column": 83, + "start": 16441, + "end": 16454, + "length": 14, + "parent_index": 1092 + }, + "scope": 1090, + "name": "forceCall", + "type_name": { + "id": 1104, + "node_type": 30, + "src": { + "id": 1105, + "line": 451, + "column": 83, + "start": 16441, + "end": 16444, + "length": 4, + "parent_index": 1102 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "return_parameters": { + "id": 1106, + "node_type": 43, + "src": { + "id": 1091, + "line": 451, + "column": 4, + "start": 16362, + "end": 17675, + "length": 1314, + "parent_index": 1090 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 917, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_bool$", + "type_string": "function(address,bytes,bool)" + } + }, + { + "id": 1242, + "name": "_upgradeBeaconToAndCall", + "node_type": 42, + "kind": 41, + "src": { + "id": 1243, + "line": 487, + "column": 4, + "start": 17979, + "end": 18291, + "length": 313, + "parent_index": 917 + }, + "body": { + "id": 1259, + "node_type": 46, + "kind": 0, + "src": { + "id": 1260, + "line": 487, + "column": 100, + "start": 18075, + "end": 18291, + "length": 217, + "parent_index": 1242 + }, + "implemented": true, + "statements": [ + { + "id": 1261, + "node_type": 24, + "kind": 24, + "src": { + "id": 1262, + "line": 488, + "column": 8, + "start": 18085, + "end": 18105, + "length": 21, + "parent_index": 1259 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 1265, + "node_type": 16, + "src": { + "id": 1266, + "line": 488, + "column": 19, + "start": 18096, + "end": 18104, + "length": 9, + "parent_index": 1261 + }, + "name": "newBeacon", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1265, + "is_pure": false + } + ], + "expression": { + "id": 1263, + "node_type": 16, + "src": { + "id": 1264, + "line": 488, + "column": 8, + "start": 18085, + "end": 18094, + "length": 10, + "parent_index": 1261 + }, + "name": "_setBeacon", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1267, + "node_type": 64, + "src": { + "id": 1268, + "line": 489, + "column": 8, + "start": 18116, + "end": 18146, + "length": 31, + "parent_index": 1242 + }, + "arguments": [ + { + "id": 1269, + "node_type": 16, + "src": { + "id": 1270, + "line": 489, + "column": 28, + "start": 18136, + "end": 18144, + "length": 9, + "parent_index": 1259 + }, + "name": "newBeacon", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1269, + "is_pure": false + } + ], + "expression": { + "id": 1271, + "node_type": 16, + "src": { + "id": 1272, + "line": 489, + "column": 13, + "start": 18121, + "end": 18134, + "length": 14, + "parent_index": 1259 + }, + "name": "BeaconUpgraded", + "type_description": { + "type_identifier": "t_event\u0026_ERC1967Upgrade_BeaconUpgraded_\u00261433", + "type_string": "event ERC1967Upgrade.BeaconUpgraded" + }, + "overloaded_declarations": [], + "referenced_declaration": 1433, + "is_pure": false + } + }, + { + "id": 1273, + "node_type": 48, + "src": { + "id": 1274, + "line": 490, + "column": 0, + "start": 18156, + "end": 18285, + "length": 130, + "parent_index": 1259 + }, + "condition": { + "id": 1275, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1276, + "line": 490, + "column": 12, + "start": 18160, + "end": 18187, + "length": 28, + "parent_index": 1273 + }, + "operator": 33, + "left_expression": { + "id": 1277, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1278, + "line": 490, + "column": 12, + "start": 18160, + "end": 18174, + "length": 15, + "parent_index": 1275 + }, + "operator": 7, + "left_expression": { + "id": 1279, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1280, + "line": 490, + "column": 12, + "start": 18160, + "end": 18170, + "length": 11, + "parent_index": 1277 + }, + "expression": { + "id": 1281, + "node_type": 16, + "src": { + "id": 1282, + "line": 490, + "column": 12, + "start": 18160, + "end": 18163, + "length": 4, + "parent_index": 1279 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 1281, + "is_pure": false + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + }, + "right_expression": { + "id": 1283, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1284, + "line": 490, + "column": 26, + "start": 18174, + "end": 18174, + "length": 1, + "parent_index": 1277 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "right_expression": { + "id": 1285, + "node_type": 16, + "src": { + "id": 1286, + "line": 490, + "column": 31, + "start": 18179, + "end": 18187, + "length": 9, + "parent_index": 1275 + }, + "name": "forceCall", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 1285, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 1287, + "node_type": 46, + "kind": 0, + "src": { + "id": 1288, + "line": 490, + "column": 42, + "start": 18190, + "end": 18285, + "length": 96, + "parent_index": 1242 + }, + "implemented": true, + "statements": [ + { + "id": 1289, + "node_type": 24, + "kind": 24, + "src": { + "id": 1290, + "line": 491, + "column": 12, + "start": 18204, + "end": 18274, + "length": 71, + "parent_index": 1287 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ], + "arguments": [ + { + "id": 1295, + "node_type": 24, + "kind": 24, + "src": { + "id": 1296, + "line": 491, + "column": 41, + "start": 18233, + "end": 18267, + "length": 35, + "parent_index": 1289 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 1297, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1298, + "line": 491, + "column": 41, + "start": 18233, + "end": 18265, + "length": 33, + "parent_index": 1295 + }, + "expression": { + "id": 1299, + "node_type": 24, + "kind": 24, + "src": { + "id": 1300, + "line": 491, + "column": 41, + "start": 18233, + "end": 18250, + "length": 18, + "parent_index": 1297 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 1303, + "node_type": 16, + "src": { + "id": 1304, + "line": 491, + "column": 49, + "start": 18241, + "end": 18249, + "length": 9, + "parent_index": 1299 + }, + "name": "newBeacon", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1303, + "is_pure": false + } + ], + "expression": { + "id": 1301, + "node_type": 16, + "src": { + "id": 1302, + "line": 491, + "column": 41, + "start": 18233, + "end": 18239, + "length": 7, + "parent_index": 1299 + }, + "name": "IBeacon", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "member_name": "implementation", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + }, + { + "id": 1305, + "node_type": 16, + "src": { + "id": 1306, + "line": 491, + "column": 78, + "start": 18270, + "end": 18273, + "length": 4, + "parent_index": 1289 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 1305, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + } + ], + "expression": { + "id": 1291, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1292, + "line": 491, + "column": 12, + "start": 18204, + "end": 18231, + "length": 28, + "parent_index": 1289 + }, + "expression": { + "id": 1293, + "node_type": 16, + "src": { + "id": 1294, + "line": 491, + "column": 12, + "start": 18204, + "end": 18210, + "length": 7, + "parent_index": 1291 + }, + "name": "Address", + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + }, + "overloaded_declarations": [], + "referenced_declaration": 251, + "is_pure": false + }, + "member_name": "functionDelegateCall", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_bytes$", + "type_string": "function(function(),bytes)" + } + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1244, + "node_type": 43, + "src": { + "id": 1245, + "line": 487, + "column": 37, + "start": 18012, + "end": 18063, + "length": 52, + "parent_index": 1242 + }, + "parameters": [ + { + "id": 1246, + "node_type": 44, + "src": { + "id": 1247, + "line": 487, + "column": 37, + "start": 18012, + "end": 18028, + "length": 17, + "parent_index": 1244 + }, + "scope": 1242, + "name": "newBeacon", + "type_name": { + "id": 1248, + "node_type": 30, + "src": { + "id": 1249, + "line": 487, + "column": 37, + "start": 18012, + "end": 18018, + "length": 7, + "parent_index": 1246 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1250, + "node_type": 44, + "src": { + "id": 1251, + "line": 487, + "column": 56, + "start": 18031, + "end": 18047, + "length": 17, + "parent_index": 1244 + }, + "scope": 1242, + "name": "data", + "type_name": { + "id": 1252, + "node_type": 30, + "src": { + "id": 1253, + "line": 487, + "column": 56, + "start": 18031, + "end": 18035, + "length": 5, + "parent_index": 1250 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1254, + "node_type": 44, + "src": { + "id": 1255, + "line": 487, + "column": 75, + "start": 18050, + "end": 18063, + "length": 14, + "parent_index": 1244 + }, + "scope": 1242, + "name": "forceCall", + "type_name": { + "id": 1256, + "node_type": 30, + "src": { + "id": 1257, + "line": 487, + "column": 75, + "start": 18050, + "end": 18053, + "length": 4, + "parent_index": 1254 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "return_parameters": { + "id": 1258, + "node_type": 43, + "src": { + "id": 1243, + "line": 487, + "column": 4, + "start": 17979, + "end": 18291, + "length": 313, + "parent_index": 1242 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 917, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_bool$", + "type_string": "function(address,bytes,bool)" + } + }, + { + "id": 1308, + "name": "_ADMIN_SLOT", + "is_constant": true, + "is_state_variable": true, + "node_type": 44, + "src": { + "id": 1309, + "line": 500, + "column": 4, + "start": 18492, + "end": 18598, + "length": 107, + "parent_index": 917 + }, + "scope": 917, + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "visibility": 1, + "storage_location": 1, + "mutability": 1, + "type_name": { + "id": 1310, + "node_type": 30, + "src": { + "id": 1311, + "line": 500, + "column": 4, + "start": 18492, + "end": 18498, + "length": 7, + "parent_index": 1308 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + } + }, + { + "id": 1313, + "node_type": 57, + "src": { + "id": 1314, + "line": 505, + "column": 4, + "start": 18677, + "end": 18736, + "length": 60, + "parent_index": 917 + }, + "parameters": { + "id": 1315, + "node_type": 43, + "src": { + "id": 1314, + "line": 505, + "column": 4, + "start": 18677, + "end": 18736, + "length": 60, + "parent_index": 1313 + }, + "parameters": [ + { + "id": 1316, + "node_type": 44, + "src": { + "id": 1317, + "line": 505, + "column": 23, + "start": 18696, + "end": 18716, + "length": 21, + "parent_index": 1315 + }, + "scope": 1313, + "name": "previousAdmin", + "type_name": { + "id": 1318, + "node_type": 30, + "src": { + "id": 1319, + "line": 505, + "column": 23, + "start": 18696, + "end": 18702, + "length": 7, + "parent_index": 1316 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1320, + "node_type": 44, + "src": { + "id": 1321, + "line": 505, + "column": 46, + "start": 18719, + "end": 18734, + "length": 16, + "parent_index": 1315 + }, + "scope": 1313, + "name": "newAdmin", + "type_name": { + "id": 1322, + "node_type": 30, + "src": { + "id": 1323, + "line": 505, + "column": 46, + "start": 18719, + "end": 18725, + "length": 7, + "parent_index": 1320 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "name": "AdminChanged", + "anonymous": false + }, + { + "id": 1325, + "name": "_getAdmin", + "node_type": 42, + "kind": 41, + "src": { + "id": 1326, + "line": 510, + "column": 4, + "start": 18798, + "end": 18919, + "length": 122, + "parent_index": 917 + }, + "body": { + "id": 1339, + "node_type": 46, + "kind": 0, + "src": { + "id": 1340, + "line": 510, + "column": 57, + "start": 18851, + "end": 18919, + "length": 69, + "parent_index": 1325 + }, + "implemented": true, + "statements": [ + { + "id": 1341, + "node_type": 47, + "src": { + "id": 1342, + "line": 511, + "column": 8, + "start": 18861, + "end": 18913, + "length": 53, + "parent_index": 1325 + }, + "function_return_parameters": 1325, + "expression": { + "id": 1343, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1344, + "line": 511, + "column": 15, + "start": 18868, + "end": 18912, + "length": 45, + "parent_index": 1339 + }, + "expression": { + "id": 1345, + "node_type": 24, + "kind": 24, + "src": { + "id": 1346, + "line": 511, + "column": 15, + "start": 18868, + "end": 18906, + "length": 39, + "parent_index": 1343 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 1351, + "node_type": 16, + "src": { + "id": 1352, + "line": 511, + "column": 42, + "start": 18895, + "end": 18905, + "length": 11, + "parent_index": 1345 + }, + "name": "_ADMIN_SLOT", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 1347, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1348, + "line": 511, + "column": 15, + "start": 18868, + "end": 18893, + "length": 26, + "parent_index": 1345 + }, + "expression": { + "id": 1349, + "node_type": 16, + "src": { + "id": 1350, + "line": 511, + "column": 15, + "start": 18868, + "end": 18878, + "length": 11, + "parent_index": 1347 + }, + "name": "StorageSlot", + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + }, + "overloaded_declarations": [], + "referenced_declaration": 767, + "is_pure": false + }, + "member_name": "getAddressSlot", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "member_name": "value", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1327, + "node_type": 43, + "src": { + "id": 1328, + "line": 510, + "column": 48, + "start": 18842, + "end": 18848, + "length": 7, + "parent_index": 1325 + }, + "parameters": [ + { + "id": 1329, + "node_type": 44, + "src": { + "id": 1330, + "line": 510, + "column": 48, + "start": 18842, + "end": 18848, + "length": 7, + "parent_index": 1327 + }, + "scope": 1325, + "name": "", + "type_name": { + "id": 1331, + "node_type": 30, + "src": { + "id": 1332, + "line": 510, + "column": 48, + "start": 18842, + "end": 18848, + "length": 7, + "parent_index": 1329 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 1333, + "node_type": 43, + "src": { + "id": 1334, + "line": 510, + "column": 48, + "start": 18842, + "end": 18848, + "length": 7, + "parent_index": 1325 + }, + "parameters": [ + { + "id": 1335, + "node_type": 44, + "src": { + "id": 1336, + "line": 510, + "column": 48, + "start": 18842, + "end": 18848, + "length": 7, + "parent_index": 1333 + }, + "scope": 1325, + "name": "", + "type_name": { + "id": 1337, + "node_type": 30, + "src": { + "id": 1338, + "line": 510, + "column": 48, + "start": 18842, + "end": 18848, + "length": 7, + "parent_index": 1335 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 917, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1354, + "name": "_setAdmin", + "node_type": 42, + "kind": 41, + "src": { + "id": 1355, + "line": 517, + "column": 4, + "start": 19002, + "end": 19202, + "length": 201, + "parent_index": 917 + }, + "body": { + "id": 1363, + "node_type": 46, + "kind": 0, + "src": { + "id": 1364, + "line": 517, + "column": 49, + "start": 19047, + "end": 19202, + "length": 156, + "parent_index": 1354 + }, + "implemented": true, + "statements": [ + { + "id": 1365, + "node_type": 24, + "kind": 24, + "src": { + "id": 1366, + "line": 518, + "column": 8, + "start": 19057, + "end": 19129, + "length": 73, + "parent_index": 1363 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC1967: new admin is the zero address\"" + } + ], + "arguments": [ + { + "id": 1369, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1370, + "line": 518, + "column": 16, + "start": 19065, + "end": 19086, + "length": 22, + "parent_index": 1365 + }, + "operator": 12, + "left_expression": { + "id": 1371, + "node_type": 16, + "src": { + "id": 1372, + "line": 518, + "column": 16, + "start": 19065, + "end": 19072, + "length": 8, + "parent_index": 1369 + }, + "name": "newAdmin", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1371, + "is_pure": false + }, + "right_expression": { + "id": 1373, + "node_type": 24, + "kind": 24, + "src": { + "id": 1374, + "line": 518, + "column": 28, + "start": 19077, + "end": 19086, + "length": 10, + "parent_index": 1369 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 1379, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1380, + "line": 518, + "column": 36, + "start": 19085, + "end": 19085, + "length": 1, + "parent_index": 1373 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 1375, + "node_type": 16, + "src": { + "id": 1376, + "line": 518, + "column": 28, + "start": 19077, + "end": 19083, + "length": 7, + "parent_index": 1373 + }, + "name": "address", + "type_name": { + "id": 1377, + "node_type": 30, + "src": { + "id": 1378, + "line": 518, + "column": 28, + "start": 19077, + "end": 19083, + "length": 7, + "parent_index": 1375 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 1381, + "node_type": 17, + "kind": 50, + "value": "ERC1967: new admin is the zero address", + "hex_value": "455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373", + "src": { + "id": 1382, + "line": 518, + "column": 40, + "start": 19089, + "end": 19128, + "length": 40, + "parent_index": 1365 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC1967: new admin is the zero address\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 1367, + "node_type": 16, + "src": { + "id": 1368, + "line": 518, + "column": 8, + "start": 19057, + "end": 19063, + "length": 7, + "parent_index": 1365 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 1383, + "node_type": 81, + "src": { + "id": 1384, + "line": 519, + "column": 8, + "start": 19140, + "end": 19196, + "length": 57, + "parent_index": 1363 + }, + "expression": { + "id": 1385, + "node_type": 27, + "src": { + "id": 1386, + "line": 519, + "column": 8, + "start": 19140, + "end": 19195, + "length": 56, + "parent_index": 1363 + }, + "operator": 11, + "left_expression": { + "id": 1387, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1388, + "line": 519, + "column": 8, + "start": 19140, + "end": 19184, + "length": 45, + "parent_index": 1385 + }, + "expression": { + "id": 1389, + "node_type": 24, + "kind": 24, + "src": { + "id": 1390, + "line": 519, + "column": 8, + "start": 19140, + "end": 19178, + "length": 39, + "parent_index": 1387 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 1395, + "node_type": 16, + "src": { + "id": 1396, + "line": 519, + "column": 35, + "start": 19167, + "end": 19177, + "length": 11, + "parent_index": 1389 + }, + "name": "_ADMIN_SLOT", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 1391, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1392, + "line": 519, + "column": 8, + "start": 19140, + "end": 19165, + "length": 26, + "parent_index": 1389 + }, + "expression": { + "id": 1393, + "node_type": 16, + "src": { + "id": 1394, + "line": 519, + "column": 8, + "start": 19140, + "end": 19150, + "length": 11, + "parent_index": 1391 + }, + "name": "StorageSlot", + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + }, + "overloaded_declarations": [], + "referenced_declaration": 767, + "is_pure": false + }, + "member_name": "getAddressSlot", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "member_name": "value", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "right_expression": { + "id": 1397, + "node_type": 16, + "src": { + "id": 1398, + "line": 519, + "column": 56, + "start": 19188, + "end": 19195, + "length": 8, + "parent_index": 1385 + }, + "name": "newAdmin", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1397, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + } + ] + }, + "implemented": true, + "visibility": 2, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1356, + "node_type": 43, + "src": { + "id": 1357, + "line": 517, + "column": 23, + "start": 19021, + "end": 19036, + "length": 16, + "parent_index": 1354 + }, + "parameters": [ + { + "id": 1358, + "node_type": 44, + "src": { + "id": 1359, + "line": 517, + "column": 23, + "start": 19021, + "end": 19036, + "length": 16, + "parent_index": 1356 + }, + "scope": 1354, + "name": "newAdmin", + "type_name": { + "id": 1360, + "node_type": 30, + "src": { + "id": 1361, + "line": 517, + "column": 23, + "start": 19021, + "end": 19027, + "length": 7, + "parent_index": 1358 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 1362, + "node_type": 43, + "src": { + "id": 1355, + "line": 517, + "column": 4, + "start": 19002, + "end": 19202, + "length": 201, + "parent_index": 1354 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 917, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1400, + "name": "_changeAdmin", + "node_type": 42, + "kind": 41, + "src": { + "id": 1401, + "line": 527, + "column": 4, + "start": 19314, + "end": 19448, + "length": 135, + "parent_index": 917 + }, + "body": { + "id": 1409, + "node_type": 46, + "kind": 0, + "src": { + "id": 1410, + "line": 527, + "column": 53, + "start": 19363, + "end": 19448, + "length": 86, + "parent_index": 1400 + }, + "implemented": true, + "statements": [ + { + "id": 1411, + "node_type": 64, + "src": { + "id": 1412, + "line": 528, + "column": 8, + "start": 19373, + "end": 19413, + "length": 41, + "parent_index": 1400 + }, + "arguments": [ + { + "id": 1413, + "node_type": 24, + "kind": 24, + "src": { + "id": 1414, + "line": 528, + "column": 26, + "start": 19391, + "end": 19401, + "length": 11, + "parent_index": 1409 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 1415, + "node_type": 16, + "src": { + "id": 1416, + "line": 528, + "column": 26, + "start": 19391, + "end": 19399, + "length": 9, + "parent_index": 1413 + }, + "name": "_getAdmin", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + }, + { + "id": 1417, + "node_type": 16, + "src": { + "id": 1418, + "line": 528, + "column": 39, + "start": 19404, + "end": 19411, + "length": 8, + "parent_index": 1409 + }, + "name": "newAdmin", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1417, + "is_pure": false + } + ], + "expression": { + "id": 1419, + "node_type": 16, + "src": { + "id": 1420, + "line": 528, + "column": 13, + "start": 19378, + "end": 19389, + "length": 12, + "parent_index": 1409 + }, + "name": "AdminChanged", + "type_description": { + "type_identifier": "t_event\u0026_ERC1967Upgrade_AdminChanged_\u00261313", + "type_string": "event ERC1967Upgrade.AdminChanged" + }, + "overloaded_declarations": [], + "referenced_declaration": 1313, + "is_pure": false + } + }, + { + "id": 1421, + "node_type": 24, + "kind": 24, + "src": { + "id": 1422, + "line": 529, + "column": 8, + "start": 19423, + "end": 19441, + "length": 19, + "parent_index": 1409 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 1425, + "node_type": 16, + "src": { + "id": 1426, + "line": 529, + "column": 18, + "start": 19433, + "end": 19440, + "length": 8, + "parent_index": 1421 + }, + "name": "newAdmin", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1425, + "is_pure": false + } + ], + "expression": { + "id": 1423, + "node_type": 16, + "src": { + "id": 1424, + "line": 529, + "column": 8, + "start": 19423, + "end": 19431, + "length": 9, + "parent_index": 1421 + }, + "name": "_setAdmin", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1402, + "node_type": 43, + "src": { + "id": 1403, + "line": 527, + "column": 26, + "start": 19336, + "end": 19351, + "length": 16, + "parent_index": 1400 + }, + "parameters": [ + { + "id": 1404, + "node_type": 44, + "src": { + "id": 1405, + "line": 527, + "column": 26, + "start": 19336, + "end": 19351, + "length": 16, + "parent_index": 1402 + }, + "scope": 1400, + "name": "newAdmin", + "type_name": { + "id": 1406, + "node_type": 30, + "src": { + "id": 1407, + "line": 527, + "column": 26, + "start": 19336, + "end": 19342, + "length": 7, + "parent_index": 1404 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 1408, + "node_type": 43, + "src": { + "id": 1401, + "line": 527, + "column": 4, + "start": 19314, + "end": 19448, + "length": 135, + "parent_index": 1400 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 917, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1428, + "name": "_BEACON_SLOT", + "is_constant": true, + "is_state_variable": true, + "node_type": 44, + "src": { + "id": 1429, + "line": 536, + "column": 4, + "start": 19692, + "end": 19799, + "length": 108, + "parent_index": 917 + }, + "scope": 917, + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "visibility": 1, + "storage_location": 1, + "mutability": 1, + "type_name": { + "id": 1430, + "node_type": 30, + "src": { + "id": 1431, + "line": 536, + "column": 4, + "start": 19692, + "end": 19698, + "length": 7, + "parent_index": 1428 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + } + }, + { + "id": 1433, + "node_type": 57, + "src": { + "id": 1434, + "line": 541, + "column": 4, + "start": 19871, + "end": 19915, + "length": 45, + "parent_index": 917 + }, + "parameters": { + "id": 1435, + "node_type": 43, + "src": { + "id": 1434, + "line": 541, + "column": 4, + "start": 19871, + "end": 19915, + "length": 45, + "parent_index": 1433 + }, + "parameters": [ + { + "id": 1436, + "node_type": 44, + "src": { + "id": 1437, + "line": 541, + "column": 25, + "start": 19892, + "end": 19913, + "length": 22, + "parent_index": 1435 + }, + "scope": 1433, + "name": "beacon", + "type_name": { + "id": 1438, + "node_type": 30, + "src": { + "id": 1439, + "line": 541, + "column": 25, + "start": 19892, + "end": 19898, + "length": 7, + "parent_index": 1436 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "name": "BeaconUpgraded", + "anonymous": false + }, + { + "id": 1441, + "name": "_getBeacon", + "node_type": 42, + "kind": 41, + "src": { + "id": 1442, + "line": 546, + "column": 4, + "start": 19978, + "end": 20101, + "length": 124, + "parent_index": 917 + }, + "body": { + "id": 1455, + "node_type": 46, + "kind": 0, + "src": { + "id": 1456, + "line": 546, + "column": 58, + "start": 20032, + "end": 20101, + "length": 70, + "parent_index": 1441 + }, + "implemented": true, + "statements": [ + { + "id": 1457, + "node_type": 47, + "src": { + "id": 1458, + "line": 547, + "column": 8, + "start": 20042, + "end": 20095, + "length": 54, + "parent_index": 1441 + }, + "function_return_parameters": 1441, + "expression": { + "id": 1459, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1460, + "line": 547, + "column": 15, + "start": 20049, + "end": 20094, + "length": 46, + "parent_index": 1455 + }, + "expression": { + "id": 1461, + "node_type": 24, + "kind": 24, + "src": { + "id": 1462, + "line": 547, + "column": 15, + "start": 20049, + "end": 20088, + "length": 40, + "parent_index": 1459 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 1467, + "node_type": 16, + "src": { + "id": 1468, + "line": 547, + "column": 42, + "start": 20076, + "end": 20087, + "length": 12, + "parent_index": 1461 + }, + "name": "_BEACON_SLOT", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 1463, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1464, + "line": 547, + "column": 15, + "start": 20049, + "end": 20074, + "length": 26, + "parent_index": 1461 + }, + "expression": { + "id": 1465, + "node_type": 16, + "src": { + "id": 1466, + "line": 547, + "column": 15, + "start": 20049, + "end": 20059, + "length": 11, + "parent_index": 1463 + }, + "name": "StorageSlot", + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + }, + "overloaded_declarations": [], + "referenced_declaration": 767, + "is_pure": false + }, + "member_name": "getAddressSlot", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "member_name": "value", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1443, + "node_type": 43, + "src": { + "id": 1444, + "line": 546, + "column": 49, + "start": 20023, + "end": 20029, + "length": 7, + "parent_index": 1441 + }, + "parameters": [ + { + "id": 1445, + "node_type": 44, + "src": { + "id": 1446, + "line": 546, + "column": 49, + "start": 20023, + "end": 20029, + "length": 7, + "parent_index": 1443 + }, + "scope": 1441, + "name": "", + "type_name": { + "id": 1447, + "node_type": 30, + "src": { + "id": 1448, + "line": 546, + "column": 49, + "start": 20023, + "end": 20029, + "length": 7, + "parent_index": 1445 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 1449, + "node_type": 43, + "src": { + "id": 1450, + "line": 546, + "column": 49, + "start": 20023, + "end": 20029, + "length": 7, + "parent_index": 1441 + }, + "parameters": [ + { + "id": 1451, + "node_type": 44, + "src": { + "id": 1452, + "line": 546, + "column": 49, + "start": 20023, + "end": 20029, + "length": 7, + "parent_index": 1449 + }, + "scope": 1441, + "name": "", + "type_name": { + "id": 1453, + "node_type": 30, + "src": { + "id": 1454, + "line": 546, + "column": 49, + "start": 20023, + "end": 20029, + "length": 7, + "parent_index": 1451 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 917, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1470, + "name": "_setBeacon", + "node_type": 42, + "kind": 41, + "src": { + "id": 1471, + "line": 553, + "column": 4, + "start": 20184, + "end": 20588, + "length": 405, + "parent_index": 917 + }, + "body": { + "id": 1479, + "node_type": 46, + "kind": 0, + "src": { + "id": 1480, + "line": 553, + "column": 51, + "start": 20231, + "end": 20588, + "length": 358, + "parent_index": 1470 + }, + "implemented": true, + "statements": [ + { + "id": 1481, + "node_type": 24, + "kind": 24, + "src": { + "id": 1482, + "line": 554, + "column": 8, + "start": 20241, + "end": 20353, + "length": 113, + "parent_index": 1479 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC1967: new beacon is not a contract\"" + } + ], + "arguments": [ + { + "id": 1485, + "node_type": 24, + "kind": 24, + "src": { + "id": 1486, + "line": 555, + "column": 12, + "start": 20262, + "end": 20290, + "length": 29, + "parent_index": 1481 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 1491, + "node_type": 16, + "src": { + "id": 1492, + "line": 555, + "column": 31, + "start": 20281, + "end": 20289, + "length": 9, + "parent_index": 1485 + }, + "name": "newBeacon", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1491, + "is_pure": false + } + ], + "expression": { + "id": 1487, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1488, + "line": 555, + "column": 12, + "start": 20262, + "end": 20279, + "length": 18, + "parent_index": 1485 + }, + "expression": { + "id": 1489, + "node_type": 16, + "src": { + "id": 1490, + "line": 555, + "column": 12, + "start": 20262, + "end": 20268, + "length": 7, + "parent_index": 1487 + }, + "name": "Address", + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + }, + "overloaded_declarations": [], + "referenced_declaration": 251, + "is_pure": false + }, + "member_name": "isContract", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1493, + "node_type": 17, + "kind": 50, + "value": "ERC1967: new beacon is not a contract", + "hex_value": "455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374", + "src": { + "id": 1494, + "line": 556, + "column": 12, + "start": 20305, + "end": 20343, + "length": 39, + "parent_index": 1481 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC1967: new beacon is not a contract\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ] + } + ], + "expression": { + "id": 1483, + "node_type": 16, + "src": { + "id": 1484, + "line": 554, + "column": 8, + "start": 20241, + "end": 20247, + "length": 7, + "parent_index": 1481 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "type_string": "function(function(address),string memory)" + } + }, + { + "id": 1495, + "node_type": 24, + "kind": 24, + "src": { + "id": 1496, + "line": 558, + "column": 8, + "start": 20364, + "end": 20513, + "length": 150, + "parent_index": 1479 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC1967: beacon implementation is not a contract\"" + } + ], + "arguments": [ + { + "id": 1499, + "node_type": 24, + "kind": 24, + "src": { + "id": 1500, + "line": 559, + "column": 12, + "start": 20385, + "end": 20439, + "length": 55, + "parent_index": 1495 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 1505, + "node_type": 24, + "kind": 24, + "src": { + "id": 1506, + "line": 559, + "column": 31, + "start": 20404, + "end": 20438, + "length": 35, + "parent_index": 1499 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 1507, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1508, + "line": 559, + "column": 31, + "start": 20404, + "end": 20436, + "length": 33, + "parent_index": 1505 + }, + "expression": { + "id": 1509, + "node_type": 24, + "kind": 24, + "src": { + "id": 1510, + "line": 559, + "column": 31, + "start": 20404, + "end": 20421, + "length": 18, + "parent_index": 1507 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 1513, + "node_type": 16, + "src": { + "id": 1514, + "line": 559, + "column": 39, + "start": 20412, + "end": 20420, + "length": 9, + "parent_index": 1509 + }, + "name": "newBeacon", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1513, + "is_pure": false + } + ], + "expression": { + "id": 1511, + "node_type": 16, + "src": { + "id": 1512, + "line": 559, + "column": 31, + "start": 20404, + "end": 20410, + "length": 7, + "parent_index": 1509 + }, + "name": "IBeacon", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "member_name": "implementation", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + ], + "expression": { + "id": 1501, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1502, + "line": 559, + "column": 12, + "start": 20385, + "end": 20402, + "length": 18, + "parent_index": 1499 + }, + "expression": { + "id": 1503, + "node_type": 16, + "src": { + "id": 1504, + "line": 559, + "column": 12, + "start": 20385, + "end": 20391, + "length": 7, + "parent_index": 1501 + }, + "name": "Address", + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + }, + "overloaded_declarations": [], + "referenced_declaration": 251, + "is_pure": false + }, + "member_name": "isContract", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + { + "id": 1515, + "node_type": 17, + "kind": 50, + "value": "ERC1967: beacon implementation is not a contract", + "hex_value": "455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374", + "src": { + "id": 1516, + "line": 560, + "column": 12, + "start": 20454, + "end": 20503, + "length": 50, + "parent_index": 1495 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ERC1967: beacon implementation is not a contract\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + ] + } + ], + "expression": { + "id": 1497, + "node_type": 16, + "src": { + "id": 1498, + "line": 558, + "column": 8, + "start": 20364, + "end": 20370, + "length": 7, + "parent_index": 1495 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_string_literal$", + "type_string": "function(function(function()),string memory)" + } + }, + { + "id": 1517, + "node_type": 81, + "src": { + "id": 1518, + "line": 562, + "column": 8, + "start": 20524, + "end": 20582, + "length": 59, + "parent_index": 1479 + }, + "expression": { + "id": 1519, + "node_type": 27, + "src": { + "id": 1520, + "line": 562, + "column": 8, + "start": 20524, + "end": 20581, + "length": 58, + "parent_index": 1479 + }, + "operator": 11, + "left_expression": { + "id": 1521, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1522, + "line": 562, + "column": 8, + "start": 20524, + "end": 20569, + "length": 46, + "parent_index": 1519 + }, + "expression": { + "id": 1523, + "node_type": 24, + "kind": 24, + "src": { + "id": 1524, + "line": 562, + "column": 8, + "start": 20524, + "end": 20563, + "length": 40, + "parent_index": 1521 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 1529, + "node_type": 16, + "src": { + "id": 1530, + "line": 562, + "column": 35, + "start": 20551, + "end": 20562, + "length": 12, + "parent_index": 1523 + }, + "name": "_BEACON_SLOT", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 1525, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1526, + "line": 562, + "column": 8, + "start": 20524, + "end": 20549, + "length": 26, + "parent_index": 1523 + }, + "expression": { + "id": 1527, + "node_type": 16, + "src": { + "id": 1528, + "line": 562, + "column": 8, + "start": 20524, + "end": 20534, + "length": 11, + "parent_index": 1525 + }, + "name": "StorageSlot", + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + }, + "overloaded_declarations": [], + "referenced_declaration": 767, + "is_pure": false + }, + "member_name": "getAddressSlot", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_StorageSlot_$767", + "type_string": "contract StorageSlot" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "member_name": "value", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "right_expression": { + "id": 1531, + "node_type": 16, + "src": { + "id": 1532, + "line": 562, + "column": 57, + "start": 20573, + "end": 20581, + "length": 9, + "parent_index": 1519 + }, + "name": "newBeacon", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1531, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + } + ] + }, + "implemented": true, + "visibility": 2, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1472, + "node_type": 43, + "src": { + "id": 1473, + "line": 553, + "column": 24, + "start": 20204, + "end": 20220, + "length": 17, + "parent_index": 1470 + }, + "parameters": [ + { + "id": 1474, + "node_type": 44, + "src": { + "id": 1475, + "line": 553, + "column": 24, + "start": 20204, + "end": 20220, + "length": 17, + "parent_index": 1472 + }, + "scope": 1470, + "name": "newBeacon", + "type_name": { + "id": 1476, + "node_type": 30, + "src": { + "id": 1477, + "line": 553, + "column": 24, + "start": 20204, + "end": 20210, + "length": 7, + "parent_index": 1474 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 1478, + "node_type": 43, + "src": { + "id": 1471, + "line": 553, + "column": 4, + "start": 20184, + "end": 20588, + "length": 405, + "parent_index": 1470 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 917, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ], + "linearized_base_contracts": [ + 917, + 914, + 915, + 916 + ], + "base_contracts": [], + "contract_dependencies": [ + 914, + 915, + 916 + ] + } + ], + "src": { + "id": 903, + "line": 392, + "column": 0, + "start": 14221, + "end": 20590, + "length": 6370, + "parent_index": 118 + } } \ No newline at end of file diff --git a/data/tests/contracts/cheelee/IBeacon.solgo.ast.json b/data/tests/contracts/cheelee/IBeacon.solgo.ast.json index f7bae871..c6a10660 100644 --- a/data/tests/contracts/cheelee/IBeacon.solgo.ast.json +++ b/data/tests/contracts/cheelee/IBeacon.solgo.ast.json @@ -1,235 +1,235 @@ { - "id": 119, - "base_contracts": [], - "license": "MIT", - "exported_symbols": [ - { - "id": 119, - "name": "IBeacon", - "absolute_path": "IBeacon.sol" - } - ], - "absolute_path": "IBeacon.sol", - "name": "IBeacon", - "node_type": 1, - "nodes": [ - { - "id": 121, - "node_type": 10, - "src": { - "id": 122, - "line": 3, - "column": 0, - "start": 33, - "end": 55, - "length": 23, - "parent_index": 119 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 143, - "name": "IBeacon", - "node_type": 35, - "src": { - "id": 0, - "line": 8, - "column": 0, - "start": 138, - "end": 388, - "length": 251, - "parent_index": 119 - }, - "abstract": false, - "kind": 37, - "fully_implemented": true, - "nodes": [ - { - "id": 145, - "name": "implementation", - "node_type": 42, - "kind": 41, - "src": { - "id": 146, - "line": 14, - "column": 4, - "start": 329, - "end": 386, - "length": 58, - "parent_index": 143 - }, - "body": { - "id": 159, - "node_type": 46, - "kind": 0, - "src": { - "id": 146, - "line": 14, - "column": 4, - "start": 329, - "end": 386, - "length": 58, - "parent_index": 145 - }, - "implemented": false, - "statements": [] - }, - "implemented": false, - "visibility": 4, - "state_mutability": 5, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 147, - "node_type": 43, - "src": { - "id": 148, - "line": 14, - "column": 53, - "start": 378, - "end": 384, - "length": 7, - "parent_index": 145 - }, - "parameters": [ - { - "id": 149, - "node_type": 44, - "src": { - "id": 150, - "line": 14, - "column": 53, - "start": 378, - "end": 384, - "length": 7, - "parent_index": 147 - }, - "scope": 145, - "name": "", - "type_name": { - "id": 151, - "node_type": 30, - "src": { - "id": 152, - "line": 14, - "column": 53, - "start": 378, - "end": 384, - "length": 7, - "parent_index": 149 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 153, - "node_type": 43, - "src": { - "id": 154, - "line": 14, - "column": 53, - "start": 378, - "end": 384, - "length": 7, - "parent_index": 145 - }, - "parameters": [ - { - "id": 155, - "node_type": 44, - "src": { - "id": 156, - "line": 14, - "column": 53, - "start": 378, - "end": 384, - "length": 7, - "parent_index": 153 - }, - "scope": 145, - "name": "", - "type_name": { - "id": 157, - "node_type": 30, - "src": { - "id": 158, - "line": 14, - "column": 53, - "start": 378, - "end": 384, - "length": 7, - "parent_index": 155 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "scope": 143, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - } - ], - "linearized_base_contracts": [ - 143 - ], - "base_contracts": [], - "contract_dependencies": [] - } - ], - "src": { - "id": 120, - "line": 8, - "column": 0, - "start": 138, - "end": 388, - "length": 251, - "parent_index": 118 - } + "id": 119, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 119, + "name": "IBeacon", + "absolute_path": "IBeacon.sol" + } + ], + "absolute_path": "IBeacon.sol", + "name": "IBeacon", + "node_type": 1, + "nodes": [ + { + "id": 121, + "node_type": 10, + "src": { + "id": 122, + "line": 3, + "column": 0, + "start": 33, + "end": 55, + "length": 23, + "parent_index": 119 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 143, + "name": "IBeacon", + "node_type": 35, + "src": { + "id": 0, + "line": 8, + "column": 0, + "start": 138, + "end": 388, + "length": 251, + "parent_index": 119 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 145, + "name": "implementation", + "node_type": 42, + "kind": 41, + "src": { + "id": 146, + "line": 14, + "column": 4, + "start": 329, + "end": 386, + "length": 58, + "parent_index": 143 + }, + "body": { + "id": 159, + "node_type": 46, + "kind": 0, + "src": { + "id": 146, + "line": 14, + "column": 4, + "start": 329, + "end": 386, + "length": 58, + "parent_index": 145 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 147, + "node_type": 43, + "src": { + "id": 148, + "line": 14, + "column": 53, + "start": 378, + "end": 384, + "length": 7, + "parent_index": 145 + }, + "parameters": [ + { + "id": 149, + "node_type": 44, + "src": { + "id": 150, + "line": 14, + "column": 53, + "start": 378, + "end": 384, + "length": 7, + "parent_index": 147 + }, + "scope": 145, + "name": "", + "type_name": { + "id": 151, + "node_type": 30, + "src": { + "id": 152, + "line": 14, + "column": 53, + "start": 378, + "end": 384, + "length": 7, + "parent_index": 149 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 153, + "node_type": 43, + "src": { + "id": 154, + "line": 14, + "column": 53, + "start": 378, + "end": 384, + "length": 7, + "parent_index": 145 + }, + "parameters": [ + { + "id": 155, + "node_type": 44, + "src": { + "id": 156, + "line": 14, + "column": 53, + "start": 378, + "end": 384, + "length": 7, + "parent_index": 153 + }, + "scope": 145, + "name": "", + "type_name": { + "id": 157, + "node_type": 30, + "src": { + "id": 158, + "line": 14, + "column": 53, + "start": 378, + "end": 384, + "length": 7, + "parent_index": 155 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 143, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ], + "linearized_base_contracts": [ + 143 + ], + "base_contracts": [], + "contract_dependencies": [] + } + ], + "src": { + "id": 120, + "line": 8, + "column": 0, + "start": 138, + "end": 388, + "length": 251, + "parent_index": 118 + } } \ No newline at end of file diff --git a/data/tests/contracts/cheelee/Ownable.solgo.ast.json b/data/tests/contracts/cheelee/Ownable.solgo.ast.json index e1e565cb..6f2169dd 100644 --- a/data/tests/contracts/cheelee/Ownable.solgo.ast.json +++ b/data/tests/contracts/cheelee/Ownable.solgo.ast.json @@ -1,2100 +1,2096 @@ { - "id": 1771, - "base_contracts": [ - { - "id": 1797, - "node_type": 62, - "src": { - "id": 1798, - "line": 670, - "column": 29, - "start": 24238, - "end": 24244, - "length": 7, - "parent_index": 1796 - }, - "base_name": { - "id": 1799, - "node_type": 52, - "src": { - "id": 1800, - "line": 670, - "column": 29, - "start": 24238, - "end": 24244, - "length": 7, - "parent_index": 1796 - }, - "name": "Context", - "referenced_declaration": 1700 - } - } - ], - "license": "MIT", - "exported_symbols": [ - { - "id": 1771, - "name": "Ownable", - "absolute_path": "Ownable.sol" - }, - { - "id": 1700, - "name": "Context", - "absolute_path": "Context.sol" - } - ], - "absolute_path": "Ownable.sol", - "name": "Ownable", - "node_type": 1, - "nodes": [ - { - "id": 1787, - "node_type": 10, - "src": { - "id": 1788, - "line": 655, - "column": 0, - "start": 23658, - "end": 23680, - "length": 23, - "parent_index": 1771 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 1795, - "node_type": 29, - "src": { - "id": 0, - "line": 657, - "column": 0, - "start": 23683, - "end": 23712, - "length": 30, - "parent_index": 1771 - }, - "absolute_path": "Context.sol", - "file": "../utils/Context.sol", - "scope": 1771, - "unit_alias": "", - "source_unit": 1700 - }, - { - "id": 1796, - "name": "Ownable", - "node_type": 35, - "src": { - "id": 0, - "line": 670, - "column": 0, - "start": 24209, - "end": 25860, - "length": 1652, - "parent_index": 1771 - }, - "abstract": false, - "kind": 36, - "fully_implemented": true, - "nodes": [ - { - "id": 1802, - "name": "_owner", - "is_constant": false, - "is_state_variable": true, - "node_type": 44, - "src": { - "id": 1803, - "line": 671, - "column": 4, - "start": 24252, - "end": 24274, - "length": 23, - "parent_index": 1796 - }, - "scope": 1796, - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "visibility": 2, - "storage_location": 1, - "mutability": 1, - "type_name": { - "id": 1804, - "node_type": 30, - "src": { - "id": 1805, - "line": 671, - "column": 4, - "start": 24252, - "end": 24258, - "length": 7, - "parent_index": 1802 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - } - }, - { - "id": 1807, - "node_type": 57, - "src": { - "id": 1808, - "line": 673, - "column": 4, - "start": 24281, - "end": 24364, - "length": 84, - "parent_index": 1796 - }, - "parameters": { - "id": 1809, - "node_type": 43, - "src": { - "id": 1808, - "line": 673, - "column": 4, - "start": 24281, - "end": 24364, - "length": 84, - "parent_index": 1807 - }, - "parameters": [ - { - "id": 1810, - "node_type": 44, - "src": { - "id": 1811, - "line": 673, - "column": 31, - "start": 24308, - "end": 24336, - "length": 29, - "parent_index": 1809 - }, - "scope": 1807, - "name": "previousOwner", - "type_name": { - "id": 1812, - "node_type": 30, - "src": { - "id": 1813, - "line": 673, - "column": 31, - "start": 24308, - "end": 24314, - "length": 7, - "parent_index": 1810 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4, - "indexed": true - }, - { - "id": 1814, - "node_type": 44, - "src": { - "id": 1815, - "line": 673, - "column": 62, - "start": 24339, - "end": 24362, - "length": 24, - "parent_index": 1809 - }, - "scope": 1807, - "name": "newOwner", - "type_name": { - "id": 1816, - "node_type": 30, - "src": { - "id": 1817, - "line": 673, - "column": 62, - "start": 24339, - "end": 24345, - "length": 7, - "parent_index": 1814 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4, - "indexed": true - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "name": "OwnershipTransferred", - "anonymous": false - }, - { - "id": 1819, - "node_type": 42, - "src": { - "id": 1820, - "line": 678, - "column": 4, - "start": 24467, - "end": 24616, - "length": 150, - "parent_index": 1796 - }, - "kind": 11, - "state_mutability": 4, - "visibility": 1, - "implemented": true, - "modifiers": [], - "parameters": { - "id": 1821, - "node_type": 43, - "src": { - "id": 1820, - "line": 678, - "column": 4, - "start": 24467, - "end": 24616, - "length": 150, - "parent_index": 1819 - }, - "parameters": [], - "parameter_types": [] - }, - "return_parameters": { - "id": 1822, - "node_type": 43, - "src": { - "id": 1820, - "line": 678, - "column": 4, - "start": 24467, - "end": 24616, - "length": 150, - "parent_index": 1819 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 1796, - "body": { - "id": 1823, - "node_type": 46, - "kind": 0, - "src": { - "id": 1824, - "line": 678, - "column": 19, - "start": 24482, - "end": 24616, - "length": 135, - "parent_index": 1819 - }, - "implemented": true, - "statements": [ - { - "id": 1825, - "node_type": 44, - "src": { - "id": 1826, - "line": 679, - "column": 8, - "start": 24492, - "end": 24524, - "length": 33, - "parent_index": 1823 - }, - "assignments": [ - 1827 - ], - "declarations": [ - { - "is_constant": false, - "id": 1827, - "state_mutability": 1, - "name": "msgSender", - "node_type": 44, - "scope": 1823, - "src": { - "id": 1828, - "line": 679, - "column": 8, - "start": 24492, - "end": 24508, - "length": 17, - "parent_index": 1825 - }, - "is_state_variable": false, - "storage_location": 1, - "type_name": { - "id": 1829, - "node_type": 30, - "src": { - "id": 1830, - "line": 679, - "column": 8, - "start": 24492, - "end": 24498, - "length": 7, - "parent_index": 1827 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "visibility": 1 - } - ], - "initial_value": { - "id": 1831, - "node_type": 24, - "kind": 24, - "src": { - "id": 1832, - "line": 679, - "column": 28, - "start": 24512, - "end": 24523, - "length": 12, - "parent_index": 1825 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 1833, - "node_type": 16, - "src": { - "id": 1834, - "line": 679, - "column": 28, - "start": 24512, - "end": 24521, - "length": 10, - "parent_index": 1831 - }, - "name": "_msgSender", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - } - }, - { - "id": 1835, - "node_type": 81, - "src": { - "id": 1836, - "line": 680, - "column": 8, - "start": 24534, - "end": 24552, - "length": 19, - "parent_index": 1823 - }, - "expression": { - "id": 1837, - "node_type": 27, - "src": { - "id": 1838, - "line": 680, - "column": 8, - "start": 24534, - "end": 24551, - "length": 18, - "parent_index": 1823 - }, - "operator": 11, - "left_expression": { - "id": 1839, - "node_type": 16, - "src": { - "id": 1840, - "line": 680, - "column": 8, - "start": 24534, - "end": 24539, - "length": 6, - "parent_index": 1837 - }, - "name": "_owner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1802, - "is_pure": false - }, - "right_expression": { - "id": 1841, - "node_type": 16, - "src": { - "id": 1842, - "line": 680, - "column": 17, - "start": 24543, - "end": 24551, - "length": 9, - "parent_index": 1837 - }, - "name": "msgSender", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1825, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - } - } - }, - { - "id": 1843, - "node_type": 64, - "src": { - "id": 1844, - "line": 681, - "column": 8, - "start": 24562, - "end": 24610, - "length": 49, - "parent_index": 1819 - }, - "arguments": [ - { - "id": 1845, - "node_type": 24, - "kind": 24, - "src": { - "id": 1846, - "line": 681, - "column": 34, - "start": 24588, - "end": 24597, - "length": 10, - "parent_index": 1823 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 1847, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1848, - "line": 681, - "column": 42, - "start": 24596, - "end": 24596, - "length": 1, - "parent_index": 1845 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 1849, - "node_type": 16, - "src": { - "id": 1850, - "line": 681, - "column": 34, - "start": 24588, - "end": 24594, - "length": 7, - "parent_index": 1845 - }, - "type_name": { - "id": 1851, - "node_type": 30, - "src": { - "id": 1852, - "line": 681, - "column": 34, - "start": 24588, - "end": 24594, - "length": 7, - "parent_index": 1849 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - }, - { - "id": 1853, - "node_type": 16, - "src": { - "id": 1854, - "line": 681, - "column": 46, - "start": 24600, - "end": 24608, - "length": 9, - "parent_index": 1823 - }, - "name": "msgSender", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1825, - "is_pure": false - } - ], - "expression": { - "id": 1855, - "node_type": 16, - "src": { - "id": 1856, - "line": 681, - "column": 13, - "start": 24567, - "end": 24586, - "length": 20, - "parent_index": 1823 - }, - "name": "OwnershipTransferred", - "type_description": { - "type_identifier": "t_event\u0026_Ownable_OwnershipTransferred_\u00261807", - "type_string": "event Ownable.OwnershipTransferred" - }, - "overloaded_declarations": [], - "referenced_declaration": 1807, - "is_pure": false - } - } - ] - } - }, - { - "id": 1858, - "name": "owner", - "node_type": 42, - "kind": 41, - "src": { - "id": 1859, - "line": 687, - "column": 4, - "start": 24693, - "end": 24777, - "length": 85, - "parent_index": 1796 - }, - "body": { - "id": 1872, - "node_type": 46, - "kind": 0, - "src": { - "id": 1873, - "line": 687, - "column": 59, - "start": 24748, - "end": 24777, - "length": 30, - "parent_index": 1858 - }, - "implemented": true, - "statements": [ - { - "id": 1874, - "node_type": 47, - "src": { - "id": 1875, - "line": 688, - "column": 8, - "start": 24758, - "end": 24771, - "length": 14, - "parent_index": 1858 - }, - "function_return_parameters": 1858, - "expression": { - "id": 1876, - "node_type": 16, - "src": { - "id": 1877, - "line": 688, - "column": 15, - "start": 24765, - "end": 24770, - "length": 6, - "parent_index": 1872 - }, - "name": "_owner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1802, - "is_pure": false - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 1860, - "node_type": 43, - "src": { - "id": 1861, - "line": 687, - "column": 50, - "start": 24739, - "end": 24745, - "length": 7, - "parent_index": 1858 - }, - "parameters": [ - { - "id": 1862, - "node_type": 44, - "src": { - "id": 1863, - "line": 687, - "column": 50, - "start": 24739, - "end": 24745, - "length": 7, - "parent_index": 1860 - }, - "scope": 1858, - "name": "", - "type_name": { - "id": 1864, - "node_type": 30, - "src": { - "id": 1865, - "line": 687, - "column": 50, - "start": 24739, - "end": 24745, - "length": 7, - "parent_index": 1862 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 1866, - "node_type": 43, - "src": { - "id": 1867, - "line": 687, - "column": 50, - "start": 24739, - "end": 24745, - "length": 7, - "parent_index": 1858 - }, - "parameters": [ - { - "id": 1868, - "node_type": 44, - "src": { - "id": 1869, - "line": 687, - "column": 50, - "start": 24739, - "end": 24745, - "length": 7, - "parent_index": 1866 - }, - "scope": 1858, - "name": "", - "type_name": { - "id": 1870, - "node_type": 30, - "src": { - "id": 1871, - "line": 687, - "column": 50, - "start": 24739, - "end": 24745, - "length": 7, - "parent_index": 1868 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "scope": 1796, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 1879, - "name": "onlyOwner", - "node_type": 68, - "src": { - "id": 1880, - "line": 694, - "column": 4, - "start": 24866, - "end": 24982, - "length": 117, - "parent_index": 1796 - }, - "visibility": 1, - "virtual": false, - "parameters": { - "id": 1881, - "node_type": 43, - "src": { - "id": 1880, - "line": 694, - "column": 4, - "start": 24866, - "end": 24982, - "length": 117, - "parent_index": 1796 - }, - "parameters": [], - "parameter_types": [] - }, - "body": { - "id": 1882, - "node_type": 46, - "kind": 0, - "src": { - "id": 1883, - "line": 694, - "column": 25, - "start": 24887, - "end": 24982, - "length": 96, - "parent_index": 1879 - }, - "implemented": true, - "statements": [ - { - "id": 1884, - "node_type": 24, - "kind": 24, - "src": { - "id": 1885, - "line": 695, - "column": 8, - "start": 24897, - "end": 24964, - "length": 68, - "parent_index": 1882 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Ownable: caller is not the owner\"" - } - ], - "arguments": [ - { - "id": 1886, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1887, - "line": 695, - "column": 16, - "start": 24905, - "end": 24927, - "length": 23, - "parent_index": 1884 - }, - "operator": 11, - "left_expression": { - "id": 1888, - "node_type": 24, - "kind": 24, - "src": { - "id": 1889, - "line": 695, - "column": 16, - "start": 24905, - "end": 24911, - "length": 7, - "parent_index": 1886 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 1890, - "node_type": 16, - "src": { - "id": 1891, - "line": 695, - "column": 16, - "start": 24905, - "end": 24909, - "length": 5, - "parent_index": 1888 - }, - "name": "owner", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - }, - "right_expression": { - "id": 1892, - "node_type": 24, - "kind": 24, - "src": { - "id": 1893, - "line": 695, - "column": 27, - "start": 24916, - "end": 24927, - "length": 12, - "parent_index": 1886 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 1894, - "node_type": 16, - "src": { - "id": 1895, - "line": 695, - "column": 27, - "start": 24916, - "end": 24925, - "length": 10, - "parent_index": 1892 - }, - "name": "_msgSender", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 1896, - "node_type": 17, - "kind": 50, - "value": "Ownable: caller is not the owner", - "hex_value": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", - "src": { - "id": 1897, - "line": 695, - "column": 41, - "start": 24930, - "end": 24963, - "length": 34, - "parent_index": 1884 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Ownable: caller is not the owner\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 1898, - "node_type": 16, - "src": { - "id": 1899, - "line": 695, - "column": 8, - "start": 24897, - "end": 24903, - "length": 7, - "parent_index": 1884 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"Ownable: caller is not the owner\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Ownable: caller is not the owner\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 1900, - "node_type": 82, - "src": { - "id": 1901, - "line": 696, - "column": 8, - "start": 24975, - "end": 24975, - "length": 1, - "parent_index": 1882 - }, - "name": "_", - "type_description": { - "type_identifier": "t_placeholder_literal", - "type_string": "t_placeholder" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - } - ] - } - }, - { - "id": 1903, - "name": "renounceOwnership", - "node_type": 42, - "kind": 41, - "src": { - "id": 1904, - "line": 706, - "column": 4, - "start": 25325, - "end": 25469, - "length": 145, - "parent_index": 1796 - }, - "body": { - "id": 1911, - "node_type": 46, - "kind": 0, - "src": { - "id": 1912, - "line": 706, - "column": 58, - "start": 25379, - "end": 25469, - "length": 91, - "parent_index": 1903 - }, - "implemented": true, - "statements": [ - { - "id": 1913, - "node_type": 64, - "src": { - "id": 1914, - "line": 707, - "column": 8, - "start": 25389, - "end": 25434, - "length": 46, - "parent_index": 1903 - }, - "arguments": [ - { - "id": 1915, - "node_type": 16, - "src": { - "id": 1916, - "line": 707, - "column": 34, - "start": 25415, - "end": 25420, - "length": 6, - "parent_index": 1911 - }, - "name": "_owner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1802, - "is_pure": false - }, - { - "id": 1917, - "node_type": 24, - "kind": 24, - "src": { - "id": 1918, - "line": 707, - "column": 42, - "start": 25423, - "end": 25432, - "length": 10, - "parent_index": 1911 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 1919, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1920, - "line": 707, - "column": 50, - "start": 25431, - "end": 25431, - "length": 1, - "parent_index": 1917 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 1921, - "node_type": 16, - "src": { - "id": 1922, - "line": 707, - "column": 42, - "start": 25423, - "end": 25429, - "length": 7, - "parent_index": 1917 - }, - "type_name": { - "id": 1923, - "node_type": 30, - "src": { - "id": 1924, - "line": 707, - "column": 42, - "start": 25423, - "end": 25429, - "length": 7, - "parent_index": 1921 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - } - ], - "expression": { - "id": 1925, - "node_type": 16, - "src": { - "id": 1926, - "line": 707, - "column": 13, - "start": 25394, - "end": 25413, - "length": 20, - "parent_index": 1911 - }, - "name": "OwnershipTransferred", - "type_description": { - "type_identifier": "t_event\u0026_Ownable_OwnershipTransferred_\u00261807", - "type_string": "event Ownable.OwnershipTransferred" - }, - "overloaded_declarations": [], - "referenced_declaration": 1807, - "is_pure": false - } - }, - { - "id": 1927, - "node_type": 81, - "src": { - "id": 1928, - "line": 708, - "column": 8, - "start": 25444, - "end": 25463, - "length": 20, - "parent_index": 1911 - }, - "expression": { - "id": 1929, - "node_type": 27, - "src": { - "id": 1930, - "line": 708, - "column": 8, - "start": 25444, - "end": 25462, - "length": 19, - "parent_index": 1911 - }, - "operator": 11, - "left_expression": { - "id": 1931, - "node_type": 16, - "src": { - "id": 1932, - "line": 708, - "column": 8, - "start": 25444, - "end": 25449, - "length": 6, - "parent_index": 1929 - }, - "name": "_owner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1802, - "is_pure": false - }, - "right_expression": { - "id": 1933, - "node_type": 24, - "kind": 24, - "src": { - "id": 1934, - "line": 708, - "column": 17, - "start": 25453, - "end": 25462, - "length": 10, - "parent_index": 1929 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 1935, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1936, - "line": 708, - "column": 25, - "start": 25461, - "end": 25461, - "length": 1, - "parent_index": 1933 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 1937, - "node_type": 16, - "src": { - "id": 1938, - "line": 708, - "column": 17, - "start": 25453, - "end": 25459, - "length": 7, - "parent_index": 1933 - }, - "type_name": { - "id": 1939, - "node_type": 30, - "src": { - "id": 1940, - "line": 708, - "column": 17, - "start": 25453, - "end": 25459, - "length": 7, - "parent_index": 1937 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - }, - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - } - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 4, - "virtual": true, - "modifiers": [ - { - "id": 1905, - "name": "onlyOwner", - "node_type": 72, - "kind": 72, - "src": { - "id": 1906, - "line": 706, - "column": 48, - "start": 25369, - "end": 25377, - "length": 9, - "parent_index": 1903 - }, - "argument_types": [], - "arguments": [], - "modifier_name": { - "id": 1907, - "name": "onlyOwner", - "node_type": 0, - "src": { - "id": 1908, - "line": 706, - "column": 48, - "start": 25369, - "end": 25377, - "length": 9, - "parent_index": 1905 - } - } - } - ], - "overrides": [], - "parameters": { - "id": 1909, - "node_type": 43, - "src": { - "id": 1904, - "line": 706, - "column": 4, - "start": 25325, - "end": 25469, - "length": 145, - "parent_index": 1903 - }, - "parameters": [], - "parameter_types": [] - }, - "return_parameters": { - "id": 1910, - "node_type": 43, - "src": { - "id": 1904, - "line": 706, - "column": 4, - "start": 25325, - "end": 25469, - "length": 145, - "parent_index": 1903 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 1796, - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - } - }, - { - "id": 1942, - "name": "transferOwnership", - "node_type": 42, - "kind": 41, - "src": { - "id": 1943, - "line": 715, - "column": 4, - "start": 25619, - "end": 25858, - "length": 240, - "parent_index": 1796 - }, - "body": { - "id": 1955, - "node_type": 46, - "kind": 0, - "src": { - "id": 1956, - "line": 715, - "column": 74, - "start": 25689, - "end": 25858, - "length": 170, - "parent_index": 1942 - }, - "implemented": true, - "statements": [ - { - "id": 1957, - "node_type": 24, - "kind": 24, - "src": { - "id": 1958, - "line": 716, - "column": 8, - "start": 25699, - "end": 25771, - "length": 73, - "parent_index": 1955 - }, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Ownable: new owner is the zero address\"" - } - ], - "arguments": [ - { - "id": 1959, - "is_constant": false, - "is_pure": false, - "node_type": 19, - "src": { - "id": 1960, - "line": 716, - "column": 16, - "start": 25707, - "end": 25728, - "length": 22, - "parent_index": 1957 - }, - "operator": 12, - "left_expression": { - "id": 1961, - "node_type": 16, - "src": { - "id": 1962, - "line": 716, - "column": 16, - "start": 25707, - "end": 25714, - "length": 8, - "parent_index": 1959 - }, - "name": "newOwner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1961, - "is_pure": false - }, - "right_expression": { - "id": 1963, - "node_type": 24, - "kind": 24, - "src": { - "id": 1964, - "line": 716, - "column": 28, - "start": 25719, - "end": 25728, - "length": 10, - "parent_index": 1959 - }, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ], - "arguments": [ - { - "id": 1965, - "node_type": 17, - "kind": 49, - "value": "0", - "hex_value": "30", - "src": { - "id": 1966, - "line": 716, - "column": 36, - "start": 25727, - "end": 25727, - "length": 1, - "parent_index": 1963 - }, - "type_description": { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 1967, - "node_type": 16, - "src": { - "id": 1968, - "line": 716, - "column": 28, - "start": 25719, - "end": 25725, - "length": 7, - "parent_index": 1963 - }, - "type_name": { - "id": 1969, - "node_type": 30, - "src": { - "id": 1970, - "line": 716, - "column": 28, - "start": 25719, - "end": 25725, - "length": 7, - "parent_index": 1967 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1", - "type_string": "function(int_const 0)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_rational_0_by_1", - "type_string": "int_const 0" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_rational_0_by_1$", - "type_string": "function(int_const 0)" - } - }, - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - } - }, - { - "id": 1971, - "node_type": 17, - "kind": 50, - "value": "Ownable: new owner is the zero address", - "hex_value": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", - "src": { - "id": 1972, - "line": 716, - "column": 40, - "start": 25731, - "end": 25770, - "length": 40, - "parent_index": 1957 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Ownable: new owner is the zero address\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - } - ] - } - ], - "expression": { - "id": 1973, - "node_type": 16, - "src": { - "id": 1974, - "line": 716, - "column": 8, - "start": 25699, - "end": 25705, - "length": 7, - "parent_index": 1957 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_bool$$_t_string_literal", - "type_string": "function(bool,literal_string \"Ownable: new owner is the zero address\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_bool", - "type_string": "bool" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"Ownable: new owner is the zero address\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_bool$_t_string_literal$", - "type_string": "function(bool,string memory)" - } - }, - { - "id": 1975, - "node_type": 64, - "src": { - "id": 1976, - "line": 717, - "column": 8, - "start": 25782, - "end": 25825, - "length": 44, - "parent_index": 1942 - }, - "arguments": [ - { - "id": 1977, - "node_type": 16, - "src": { - "id": 1978, - "line": 717, - "column": 34, - "start": 25808, - "end": 25813, - "length": 6, - "parent_index": 1955 - }, - "name": "_owner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1802, - "is_pure": false - }, - { - "id": 1979, - "node_type": 16, - "src": { - "id": 1980, - "line": 717, - "column": 42, - "start": 25816, - "end": 25823, - "length": 8, - "parent_index": 1955 - }, - "name": "newOwner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1979, - "is_pure": false - } - ], - "expression": { - "id": 1981, - "node_type": 16, - "src": { - "id": 1982, - "line": 717, - "column": 13, - "start": 25787, - "end": 25806, - "length": 20, - "parent_index": 1955 - }, - "name": "OwnershipTransferred", - "type_description": { - "type_identifier": "t_event\u0026_Ownable_OwnershipTransferred_\u00261807", - "type_string": "event Ownable.OwnershipTransferred" - }, - "overloaded_declarations": [], - "referenced_declaration": 1807, - "is_pure": false - } - }, - { - "id": 1983, - "node_type": 81, - "src": { - "id": 1984, - "line": 718, - "column": 8, - "start": 25835, - "end": 25852, - "length": 18, - "parent_index": 1955 - }, - "expression": { - "id": 1985, - "node_type": 27, - "src": { - "id": 1986, - "line": 718, - "column": 8, - "start": 25835, - "end": 25851, - "length": 17, - "parent_index": 1955 - }, - "operator": 11, - "left_expression": { - "id": 1987, - "node_type": 16, - "src": { - "id": 1988, - "line": 718, - "column": 8, - "start": 25835, - "end": 25840, - "length": 6, - "parent_index": 1985 - }, - "name": "_owner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1802, - "is_pure": false - }, - "right_expression": { - "id": 1989, - "node_type": 16, - "src": { - "id": 1990, - "line": 718, - "column": 17, - "start": 25844, - "end": 25851, - "length": 8, - "parent_index": 1985 - }, - "name": "newOwner", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 1989, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - } - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 4, - "virtual": true, - "modifiers": [ - { - "id": 1944, - "name": "onlyOwner", - "node_type": 72, - "kind": 72, - "src": { - "id": 1945, - "line": 715, - "column": 64, - "start": 25679, - "end": 25687, - "length": 9, - "parent_index": 1942 - }, - "argument_types": [], - "arguments": [], - "modifier_name": { - "id": 1946, - "name": "onlyOwner", - "node_type": 0, - "src": { - "id": 1947, - "line": 715, - "column": 64, - "start": 25679, - "end": 25687, - "length": 9, - "parent_index": 1944 - } - } - } - ], - "overrides": [], - "parameters": { - "id": 1948, - "node_type": 43, - "src": { - "id": 1949, - "line": 715, - "column": 31, - "start": 25646, - "end": 25661, - "length": 16, - "parent_index": 1942 - }, - "parameters": [ - { - "id": 1950, - "node_type": 44, - "src": { - "id": 1951, - "line": 715, - "column": 31, - "start": 25646, - "end": 25661, - "length": 16, - "parent_index": 1948 - }, - "scope": 1942, - "name": "newOwner", - "type_name": { - "id": 1952, - "node_type": 30, - "src": { - "id": 1953, - "line": 715, - "column": 31, - "start": 25646, - "end": 25652, - "length": 7, - "parent_index": 1950 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 1954, - "node_type": 43, - "src": { - "id": 1943, - "line": 715, - "column": 4, - "start": 25619, - "end": 25858, - "length": 240, - "parent_index": 1942 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 1796, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - } - ], - "linearized_base_contracts": [ - 1700, - 1796, - 1795 - ], - "base_contracts": [ - { - "id": 1797, - "node_type": 62, - "src": { - "id": 1798, - "line": 670, - "column": 29, - "start": 24238, - "end": 24244, - "length": 7, - "parent_index": 1796 - }, - "base_name": { - "id": 1799, - "node_type": 52, - "src": { - "id": 1800, - "line": 670, - "column": 29, - "start": 24238, - "end": 24244, - "length": 7, - "parent_index": 1796 - }, - "name": "Context", - "referenced_declaration": 1700 - } - } - ], - "contract_dependencies": [ - 1700, - 1795 - ] - } - ], - "src": { - "id": 1772, - "line": 670, - "column": 0, - "start": 24209, - "end": 25860, - "length": 1652, - "parent_index": 118 - } + "id": 1771, + "base_contracts": [ + { + "id": 1797, + "node_type": 62, + "src": { + "id": 1798, + "line": 670, + "column": 29, + "start": 24238, + "end": 24244, + "length": 7, + "parent_index": 1796 + }, + "base_name": { + "id": 1799, + "node_type": 52, + "src": { + "id": 1800, + "line": 670, + "column": 29, + "start": 24238, + "end": 24244, + "length": 7, + "parent_index": 1796 + }, + "name": "Context", + "referenced_declaration": 1700 + } + } + ], + "license": "MIT", + "exported_symbols": [ + { + "id": 1771, + "name": "Ownable", + "absolute_path": "Ownable.sol" + }, + { + "id": 1700, + "name": "Context", + "absolute_path": "Context.sol" + } + ], + "absolute_path": "Ownable.sol", + "name": "Ownable", + "node_type": 1, + "nodes": [ + { + "id": 1787, + "node_type": 10, + "src": { + "id": 1788, + "line": 655, + "column": 0, + "start": 23658, + "end": 23680, + "length": 23, + "parent_index": 1771 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 1795, + "node_type": 29, + "src": { + "id": 0, + "line": 657, + "column": 0, + "start": 23683, + "end": 23712, + "length": 30, + "parent_index": 1771 + }, + "absolute_path": "Context.sol", + "file": "../utils/Context.sol", + "scope": 1771, + "unit_alias": "", + "source_unit": 1700 + }, + { + "id": 1796, + "name": "Ownable", + "node_type": 35, + "src": { + "id": 0, + "line": 670, + "column": 0, + "start": 24209, + "end": 25860, + "length": 1652, + "parent_index": 1771 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 1802, + "name": "_owner", + "is_constant": false, + "is_state_variable": true, + "node_type": 44, + "src": { + "id": 1803, + "line": 671, + "column": 4, + "start": 24252, + "end": 24274, + "length": 23, + "parent_index": 1796 + }, + "scope": 1796, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "visibility": 2, + "storage_location": 1, + "mutability": 1, + "type_name": { + "id": 1804, + "node_type": 30, + "src": { + "id": 1805, + "line": 671, + "column": 4, + "start": 24252, + "end": 24258, + "length": 7, + "parent_index": 1802 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + } + }, + { + "id": 1807, + "node_type": 57, + "src": { + "id": 1808, + "line": 673, + "column": 4, + "start": 24281, + "end": 24364, + "length": 84, + "parent_index": 1796 + }, + "parameters": { + "id": 1809, + "node_type": 43, + "src": { + "id": 1808, + "line": 673, + "column": 4, + "start": 24281, + "end": 24364, + "length": 84, + "parent_index": 1807 + }, + "parameters": [ + { + "id": 1810, + "node_type": 44, + "src": { + "id": 1811, + "line": 673, + "column": 31, + "start": 24308, + "end": 24336, + "length": 29, + "parent_index": 1809 + }, + "scope": 1807, + "name": "previousOwner", + "type_name": { + "id": 1812, + "node_type": 30, + "src": { + "id": 1813, + "line": 673, + "column": 31, + "start": 24308, + "end": 24314, + "length": 7, + "parent_index": 1810 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + }, + { + "id": 1814, + "node_type": 44, + "src": { + "id": 1815, + "line": 673, + "column": 62, + "start": 24339, + "end": 24362, + "length": 24, + "parent_index": 1809 + }, + "scope": 1807, + "name": "newOwner", + "type_name": { + "id": 1816, + "node_type": 30, + "src": { + "id": 1817, + "line": 673, + "column": 62, + "start": 24339, + "end": 24345, + "length": 7, + "parent_index": 1814 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "name": "OwnershipTransferred", + "anonymous": false + }, + { + "id": 1819, + "node_type": 42, + "src": { + "id": 1820, + "line": 678, + "column": 4, + "start": 24467, + "end": 24616, + "length": 150, + "parent_index": 1796 + }, + "kind": 11, + "state_mutability": 4, + "visibility": 1, + "implemented": true, + "modifiers": [], + "parameters": { + "id": 1821, + "node_type": 43, + "src": { + "id": 1820, + "line": 678, + "column": 4, + "start": 24467, + "end": 24616, + "length": 150, + "parent_index": 1819 + }, + "parameters": [], + "parameter_types": [] + }, + "return_parameters": { + "id": 1822, + "node_type": 43, + "src": { + "id": 1820, + "line": 678, + "column": 4, + "start": 24467, + "end": 24616, + "length": 150, + "parent_index": 1819 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 1796, + "body": { + "id": 1823, + "node_type": 46, + "kind": 0, + "src": { + "id": 1824, + "line": 678, + "column": 19, + "start": 24482, + "end": 24616, + "length": 135, + "parent_index": 1819 + }, + "implemented": true, + "statements": [ + { + "id": 1825, + "node_type": 44, + "src": { + "id": 1826, + "line": 679, + "column": 8, + "start": 24492, + "end": 24524, + "length": 33, + "parent_index": 1823 + }, + "assignments": [ + 1827 + ], + "declarations": [ + { + "is_constant": false, + "id": 1827, + "state_mutability": 1, + "name": "msgSender", + "node_type": 44, + "scope": 1823, + "src": { + "id": 1828, + "line": 679, + "column": 8, + "start": 24492, + "end": 24508, + "length": 17, + "parent_index": 1825 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 1829, + "node_type": 30, + "src": { + "id": 1830, + "line": 679, + "column": 8, + "start": 24492, + "end": 24498, + "length": 7, + "parent_index": 1827 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 1831, + "node_type": 24, + "kind": 24, + "src": { + "id": 1832, + "line": 679, + "column": 28, + "start": 24512, + "end": 24523, + "length": 12, + "parent_index": 1825 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 1833, + "node_type": 16, + "src": { + "id": 1834, + "line": 679, + "column": 28, + "start": 24512, + "end": 24521, + "length": 10, + "parent_index": 1831 + }, + "name": "_msgSender", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + }, + { + "id": 1835, + "node_type": 81, + "src": { + "id": 1836, + "line": 680, + "column": 8, + "start": 24534, + "end": 24552, + "length": 19, + "parent_index": 1823 + }, + "expression": { + "id": 1837, + "node_type": 27, + "src": { + "id": 1838, + "line": 680, + "column": 8, + "start": 24534, + "end": 24551, + "length": 18, + "parent_index": 1823 + }, + "operator": 11, + "left_expression": { + "id": 1839, + "node_type": 16, + "src": { + "id": 1840, + "line": 680, + "column": 8, + "start": 24534, + "end": 24539, + "length": 6, + "parent_index": 1837 + }, + "name": "_owner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1802, + "is_pure": false + }, + "right_expression": { + "id": 1841, + "node_type": 16, + "src": { + "id": 1842, + "line": 680, + "column": 17, + "start": 24543, + "end": 24551, + "length": 9, + "parent_index": 1837 + }, + "name": "msgSender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1825, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + { + "id": 1843, + "node_type": 64, + "src": { + "id": 1844, + "line": 681, + "column": 8, + "start": 24562, + "end": 24610, + "length": 49, + "parent_index": 1819 + }, + "arguments": [ + { + "id": 1845, + "node_type": 24, + "kind": 24, + "src": { + "id": 1846, + "line": 681, + "column": 34, + "start": 24588, + "end": 24597, + "length": 10, + "parent_index": 1823 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 1851, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1852, + "line": 681, + "column": 42, + "start": 24596, + "end": 24596, + "length": 1, + "parent_index": 1845 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 1847, + "node_type": 16, + "src": { + "id": 1848, + "line": 681, + "column": 34, + "start": 24588, + "end": 24594, + "length": 7, + "parent_index": 1845 + }, + "name": "address", + "type_name": { + "id": 1849, + "node_type": 30, + "src": { + "id": 1850, + "line": 681, + "column": 34, + "start": 24588, + "end": 24594, + "length": 7, + "parent_index": 1847 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + { + "id": 1853, + "node_type": 16, + "src": { + "id": 1854, + "line": 681, + "column": 46, + "start": 24600, + "end": 24608, + "length": 9, + "parent_index": 1823 + }, + "name": "msgSender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1825, + "is_pure": false + } + ], + "expression": { + "id": 1855, + "node_type": 16, + "src": { + "id": 1856, + "line": 681, + "column": 13, + "start": 24567, + "end": 24586, + "length": 20, + "parent_index": 1823 + }, + "name": "OwnershipTransferred", + "type_description": { + "type_identifier": "t_event\u0026_Ownable_OwnershipTransferred_\u00261807", + "type_string": "event Ownable.OwnershipTransferred" + }, + "overloaded_declarations": [], + "referenced_declaration": 1807, + "is_pure": false + } + } + ] + } + }, + { + "id": 1858, + "name": "owner", + "node_type": 42, + "kind": 41, + "src": { + "id": 1859, + "line": 687, + "column": 4, + "start": 24693, + "end": 24777, + "length": 85, + "parent_index": 1796 + }, + "body": { + "id": 1872, + "node_type": 46, + "kind": 0, + "src": { + "id": 1873, + "line": 687, + "column": 59, + "start": 24748, + "end": 24777, + "length": 30, + "parent_index": 1858 + }, + "implemented": true, + "statements": [ + { + "id": 1874, + "node_type": 47, + "src": { + "id": 1875, + "line": 688, + "column": 8, + "start": 24758, + "end": 24771, + "length": 14, + "parent_index": 1858 + }, + "function_return_parameters": 1858, + "expression": { + "id": 1876, + "node_type": 16, + "src": { + "id": 1877, + "line": 688, + "column": 15, + "start": 24765, + "end": 24770, + "length": 6, + "parent_index": 1872 + }, + "name": "_owner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1802, + "is_pure": false + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1860, + "node_type": 43, + "src": { + "id": 1861, + "line": 687, + "column": 50, + "start": 24739, + "end": 24745, + "length": 7, + "parent_index": 1858 + }, + "parameters": [ + { + "id": 1862, + "node_type": 44, + "src": { + "id": 1863, + "line": 687, + "column": 50, + "start": 24739, + "end": 24745, + "length": 7, + "parent_index": 1860 + }, + "scope": 1858, + "name": "", + "type_name": { + "id": 1864, + "node_type": 30, + "src": { + "id": 1865, + "line": 687, + "column": 50, + "start": 24739, + "end": 24745, + "length": 7, + "parent_index": 1862 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 1866, + "node_type": 43, + "src": { + "id": 1867, + "line": 687, + "column": 50, + "start": 24739, + "end": 24745, + "length": 7, + "parent_index": 1858 + }, + "parameters": [ + { + "id": 1868, + "node_type": 44, + "src": { + "id": 1869, + "line": 687, + "column": 50, + "start": 24739, + "end": 24745, + "length": 7, + "parent_index": 1866 + }, + "scope": 1858, + "name": "", + "type_name": { + "id": 1870, + "node_type": 30, + "src": { + "id": 1871, + "line": 687, + "column": 50, + "start": 24739, + "end": 24745, + "length": 7, + "parent_index": 1868 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 1796, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1879, + "name": "onlyOwner", + "node_type": 68, + "src": { + "id": 1880, + "line": 694, + "column": 4, + "start": 24866, + "end": 24982, + "length": 117, + "parent_index": 1796 + }, + "visibility": 1, + "virtual": false, + "parameters": { + "id": 1881, + "node_type": 43, + "src": { + "id": 1880, + "line": 694, + "column": 4, + "start": 24866, + "end": 24982, + "length": 117, + "parent_index": 1796 + }, + "parameters": [], + "parameter_types": [] + }, + "body": { + "id": 1882, + "node_type": 46, + "kind": 0, + "src": { + "id": 1883, + "line": 694, + "column": 25, + "start": 24887, + "end": 24982, + "length": 96, + "parent_index": 1879 + }, + "implemented": true, + "statements": [ + { + "id": 1884, + "node_type": 24, + "kind": 24, + "src": { + "id": 1885, + "line": 695, + "column": 8, + "start": 24897, + "end": 24964, + "length": 68, + "parent_index": 1882 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Ownable: caller is not the owner\"" + } + ], + "arguments": [ + { + "id": 1888, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1889, + "line": 695, + "column": 16, + "start": 24905, + "end": 24927, + "length": 23, + "parent_index": 1884 + }, + "operator": 11, + "left_expression": { + "id": 1890, + "node_type": 24, + "kind": 24, + "src": { + "id": 1891, + "line": 695, + "column": 16, + "start": 24905, + "end": 24911, + "length": 7, + "parent_index": 1888 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 1892, + "node_type": 16, + "src": { + "id": 1893, + "line": 695, + "column": 16, + "start": 24905, + "end": 24909, + "length": 5, + "parent_index": 1890 + }, + "name": "owner", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + }, + "right_expression": { + "id": 1894, + "node_type": 24, + "kind": 24, + "src": { + "id": 1895, + "line": 695, + "column": 27, + "start": 24916, + "end": 24927, + "length": 12, + "parent_index": 1888 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 1896, + "node_type": 16, + "src": { + "id": 1897, + "line": 695, + "column": 27, + "start": 24916, + "end": 24925, + "length": 10, + "parent_index": 1894 + }, + "name": "_msgSender", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 1898, + "node_type": 17, + "kind": 50, + "value": "Ownable: caller is not the owner", + "hex_value": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", + "src": { + "id": 1899, + "line": 695, + "column": 41, + "start": 24930, + "end": 24963, + "length": 34, + "parent_index": 1884 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Ownable: caller is not the owner\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 1886, + "node_type": 16, + "src": { + "id": 1887, + "line": 695, + "column": 8, + "start": 24897, + "end": 24903, + "length": 7, + "parent_index": 1884 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 1900, + "node_type": 82, + "src": { + "id": 1901, + "line": 696, + "column": 8, + "start": 24975, + "end": 24975, + "length": 1, + "parent_index": 1882 + }, + "name": "_", + "type_description": { + "type_identifier": "t_placeholder_literal", + "type_string": "t_placeholder" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ] + } + }, + { + "id": 1903, + "name": "renounceOwnership", + "node_type": 42, + "kind": 41, + "src": { + "id": 1904, + "line": 706, + "column": 4, + "start": 25325, + "end": 25469, + "length": 145, + "parent_index": 1796 + }, + "body": { + "id": 1911, + "node_type": 46, + "kind": 0, + "src": { + "id": 1912, + "line": 706, + "column": 58, + "start": 25379, + "end": 25469, + "length": 91, + "parent_index": 1903 + }, + "implemented": true, + "statements": [ + { + "id": 1913, + "node_type": 64, + "src": { + "id": 1914, + "line": 707, + "column": 8, + "start": 25389, + "end": 25434, + "length": 46, + "parent_index": 1903 + }, + "arguments": [ + { + "id": 1915, + "node_type": 16, + "src": { + "id": 1916, + "line": 707, + "column": 34, + "start": 25415, + "end": 25420, + "length": 6, + "parent_index": 1911 + }, + "name": "_owner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1802, + "is_pure": false + }, + { + "id": 1917, + "node_type": 24, + "kind": 24, + "src": { + "id": 1918, + "line": 707, + "column": 42, + "start": 25423, + "end": 25432, + "length": 10, + "parent_index": 1911 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 1923, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1924, + "line": 707, + "column": 50, + "start": 25431, + "end": 25431, + "length": 1, + "parent_index": 1917 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 1919, + "node_type": 16, + "src": { + "id": 1920, + "line": 707, + "column": 42, + "start": 25423, + "end": 25429, + "length": 7, + "parent_index": 1917 + }, + "name": "address", + "type_name": { + "id": 1921, + "node_type": 30, + "src": { + "id": 1922, + "line": 707, + "column": 42, + "start": 25423, + "end": 25429, + "length": 7, + "parent_index": 1919 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + } + ], + "expression": { + "id": 1925, + "node_type": 16, + "src": { + "id": 1926, + "line": 707, + "column": 13, + "start": 25394, + "end": 25413, + "length": 20, + "parent_index": 1911 + }, + "name": "OwnershipTransferred", + "type_description": { + "type_identifier": "t_event\u0026_Ownable_OwnershipTransferred_\u00261807", + "type_string": "event Ownable.OwnershipTransferred" + }, + "overloaded_declarations": [], + "referenced_declaration": 1807, + "is_pure": false + } + }, + { + "id": 1927, + "node_type": 81, + "src": { + "id": 1928, + "line": 708, + "column": 8, + "start": 25444, + "end": 25463, + "length": 20, + "parent_index": 1911 + }, + "expression": { + "id": 1929, + "node_type": 27, + "src": { + "id": 1930, + "line": 708, + "column": 8, + "start": 25444, + "end": 25462, + "length": 19, + "parent_index": 1911 + }, + "operator": 11, + "left_expression": { + "id": 1931, + "node_type": 16, + "src": { + "id": 1932, + "line": 708, + "column": 8, + "start": 25444, + "end": 25449, + "length": 6, + "parent_index": 1929 + }, + "name": "_owner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1802, + "is_pure": false + }, + "right_expression": { + "id": 1933, + "node_type": 24, + "kind": 24, + "src": { + "id": 1934, + "line": 708, + "column": 17, + "start": 25453, + "end": 25462, + "length": 10, + "parent_index": 1929 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 1939, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1940, + "line": 708, + "column": 25, + "start": 25461, + "end": 25461, + "length": 1, + "parent_index": 1933 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 1935, + "node_type": 16, + "src": { + "id": 1936, + "line": 708, + "column": 17, + "start": 25453, + "end": 25459, + "length": 7, + "parent_index": 1933 + }, + "name": "address", + "type_name": { + "id": 1937, + "node_type": 30, + "src": { + "id": 1938, + "line": 708, + "column": 17, + "start": 25453, + "end": 25459, + "length": 7, + "parent_index": 1935 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 4, + "virtual": true, + "modifiers": [ + { + "id": 1905, + "name": "onlyOwner", + "node_type": 72, + "kind": 72, + "src": { + "id": 1906, + "line": 706, + "column": 48, + "start": 25369, + "end": 25377, + "length": 9, + "parent_index": 1903 + }, + "argument_types": [], + "arguments": [], + "modifier_name": { + "id": 1907, + "name": "onlyOwner", + "node_type": 0, + "src": { + "id": 1908, + "line": 706, + "column": 48, + "start": 25369, + "end": 25377, + "length": 9, + "parent_index": 1905 + } + } + } + ], + "overrides": [], + "parameters": { + "id": 1909, + "node_type": 43, + "src": { + "id": 1904, + "line": 706, + "column": 4, + "start": 25325, + "end": 25469, + "length": 145, + "parent_index": 1903 + }, + "parameters": [], + "parameter_types": [] + }, + "return_parameters": { + "id": 1910, + "node_type": 43, + "src": { + "id": 1904, + "line": 706, + "column": 4, + "start": 25325, + "end": 25469, + "length": 145, + "parent_index": 1903 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 1796, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + }, + { + "id": 1942, + "name": "transferOwnership", + "node_type": 42, + "kind": 41, + "src": { + "id": 1943, + "line": 715, + "column": 4, + "start": 25619, + "end": 25858, + "length": 240, + "parent_index": 1796 + }, + "body": { + "id": 1955, + "node_type": 46, + "kind": 0, + "src": { + "id": 1956, + "line": 715, + "column": 74, + "start": 25689, + "end": 25858, + "length": 170, + "parent_index": 1942 + }, + "implemented": true, + "statements": [ + { + "id": 1957, + "node_type": 24, + "kind": 24, + "src": { + "id": 1958, + "line": 716, + "column": 8, + "start": 25699, + "end": 25771, + "length": 73, + "parent_index": 1955 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Ownable: new owner is the zero address\"" + } + ], + "arguments": [ + { + "id": 1961, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 1962, + "line": 716, + "column": 16, + "start": 25707, + "end": 25728, + "length": 22, + "parent_index": 1957 + }, + "operator": 12, + "left_expression": { + "id": 1963, + "node_type": 16, + "src": { + "id": 1964, + "line": 716, + "column": 16, + "start": 25707, + "end": 25714, + "length": 8, + "parent_index": 1961 + }, + "name": "newOwner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1963, + "is_pure": false + }, + "right_expression": { + "id": 1965, + "node_type": 24, + "kind": 24, + "src": { + "id": 1966, + "line": 716, + "column": 28, + "start": 25719, + "end": 25728, + "length": 10, + "parent_index": 1961 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 1971, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 1972, + "line": 716, + "column": 36, + "start": 25727, + "end": 25727, + "length": 1, + "parent_index": 1965 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 1967, + "node_type": 16, + "src": { + "id": 1968, + "line": 716, + "column": 28, + "start": 25719, + "end": 25725, + "length": 7, + "parent_index": 1965 + }, + "name": "address", + "type_name": { + "id": 1969, + "node_type": 30, + "src": { + "id": 1970, + "line": 716, + "column": 28, + "start": 25719, + "end": 25725, + "length": 7, + "parent_index": 1967 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 1973, + "node_type": 17, + "kind": 50, + "value": "Ownable: new owner is the zero address", + "hex_value": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", + "src": { + "id": 1974, + "line": 716, + "column": 40, + "start": 25731, + "end": 25770, + "length": 40, + "parent_index": 1957 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Ownable: new owner is the zero address\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 1959, + "node_type": 16, + "src": { + "id": 1960, + "line": 716, + "column": 8, + "start": 25699, + "end": 25705, + "length": 7, + "parent_index": 1957 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 1975, + "node_type": 64, + "src": { + "id": 1976, + "line": 717, + "column": 8, + "start": 25782, + "end": 25825, + "length": 44, + "parent_index": 1942 + }, + "arguments": [ + { + "id": 1977, + "node_type": 16, + "src": { + "id": 1978, + "line": 717, + "column": 34, + "start": 25808, + "end": 25813, + "length": 6, + "parent_index": 1955 + }, + "name": "_owner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1802, + "is_pure": false + }, + { + "id": 1979, + "node_type": 16, + "src": { + "id": 1980, + "line": 717, + "column": 42, + "start": 25816, + "end": 25823, + "length": 8, + "parent_index": 1955 + }, + "name": "newOwner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1979, + "is_pure": false + } + ], + "expression": { + "id": 1981, + "node_type": 16, + "src": { + "id": 1982, + "line": 717, + "column": 13, + "start": 25787, + "end": 25806, + "length": 20, + "parent_index": 1955 + }, + "name": "OwnershipTransferred", + "type_description": { + "type_identifier": "t_event\u0026_Ownable_OwnershipTransferred_\u00261807", + "type_string": "event Ownable.OwnershipTransferred" + }, + "overloaded_declarations": [], + "referenced_declaration": 1807, + "is_pure": false + } + }, + { + "id": 1983, + "node_type": 81, + "src": { + "id": 1984, + "line": 718, + "column": 8, + "start": 25835, + "end": 25852, + "length": 18, + "parent_index": 1955 + }, + "expression": { + "id": 1985, + "node_type": 27, + "src": { + "id": 1986, + "line": 718, + "column": 8, + "start": 25835, + "end": 25851, + "length": 17, + "parent_index": 1955 + }, + "operator": 11, + "left_expression": { + "id": 1987, + "node_type": 16, + "src": { + "id": 1988, + "line": 718, + "column": 8, + "start": 25835, + "end": 25840, + "length": 6, + "parent_index": 1985 + }, + "name": "_owner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1802, + "is_pure": false + }, + "right_expression": { + "id": 1989, + "node_type": 16, + "src": { + "id": 1990, + "line": 718, + "column": 17, + "start": 25844, + "end": 25851, + "length": 8, + "parent_index": 1985 + }, + "name": "newOwner", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1989, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 4, + "virtual": true, + "modifiers": [ + { + "id": 1944, + "name": "onlyOwner", + "node_type": 72, + "kind": 72, + "src": { + "id": 1945, + "line": 715, + "column": 64, + "start": 25679, + "end": 25687, + "length": 9, + "parent_index": 1942 + }, + "argument_types": [], + "arguments": [], + "modifier_name": { + "id": 1946, + "name": "onlyOwner", + "node_type": 0, + "src": { + "id": 1947, + "line": 715, + "column": 64, + "start": 25679, + "end": 25687, + "length": 9, + "parent_index": 1944 + } + } + } + ], + "overrides": [], + "parameters": { + "id": 1948, + "node_type": 43, + "src": { + "id": 1949, + "line": 715, + "column": 31, + "start": 25646, + "end": 25661, + "length": 16, + "parent_index": 1942 + }, + "parameters": [ + { + "id": 1950, + "node_type": 44, + "src": { + "id": 1951, + "line": 715, + "column": 31, + "start": 25646, + "end": 25661, + "length": 16, + "parent_index": 1948 + }, + "scope": 1942, + "name": "newOwner", + "type_name": { + "id": 1952, + "node_type": 30, + "src": { + "id": 1953, + "line": 715, + "column": 31, + "start": 25646, + "end": 25652, + "length": 7, + "parent_index": 1950 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 1954, + "node_type": 43, + "src": { + "id": 1943, + "line": 715, + "column": 4, + "start": 25619, + "end": 25858, + "length": 240, + "parent_index": 1942 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 1796, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ], + "linearized_base_contracts": [ + 1700, + 1796, + 1795 + ], + "base_contracts": [ + { + "id": 1797, + "node_type": 62, + "src": { + "id": 1798, + "line": 670, + "column": 29, + "start": 24238, + "end": 24244, + "length": 7, + "parent_index": 1796 + }, + "base_name": { + "id": 1799, + "node_type": 52, + "src": { + "id": 1800, + "line": 670, + "column": 29, + "start": 24238, + "end": 24244, + "length": 7, + "parent_index": 1796 + }, + "name": "Context", + "referenced_declaration": 1700 + } + } + ], + "contract_dependencies": [ + 1700, + 1795 + ] + } + ], + "src": { + "id": 1772, + "line": 670, + "column": 0, + "start": 24209, + "end": 25860, + "length": 1652, + "parent_index": 118 + } } \ No newline at end of file diff --git a/data/tests/contracts/cheelee/Proxy.solgo.ast.json b/data/tests/contracts/cheelee/Proxy.solgo.ast.json index ef237ef5..1439357e 100644 --- a/data/tests/contracts/cheelee/Proxy.solgo.ast.json +++ b/data/tests/contracts/cheelee/Proxy.solgo.ast.json @@ -1,935 +1,929 @@ { - "id": 160, - "base_contracts": [], - "license": "MIT", - "exported_symbols": [ - { - "id": 160, - "name": "Proxy", - "absolute_path": "Proxy.sol" - } - ], - "absolute_path": "Proxy.sol", - "name": "Proxy", - "node_type": 1, - "nodes": [ - { - "id": 164, - "node_type": 10, - "src": { - "id": 165, - "line": 19, - "column": 0, - "start": 424, - "end": 446, - "length": 23, - "parent_index": 160 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 166, - "name": "Proxy", - "node_type": 35, - "src": { - "id": 0, - "line": 31, - "column": 0, - "start": 1048, - "end": 3577, - "length": 2530, - "parent_index": 160 - }, - "abstract": false, - "kind": 36, - "fully_implemented": true, - "nodes": [ - { - "id": 168, - "name": "_delegate", - "node_type": 42, - "kind": 41, - "src": { - "id": 169, - "line": 37, - "column": 4, - "start": 1274, - "end": 2168, - "length": 895, - "parent_index": 166 - }, - "body": { - "id": 177, - "node_type": 46, - "kind": 0, - "src": { - "id": 178, - "line": 37, - "column": 64, - "start": 1334, - "end": 2168, - "length": 835, - "parent_index": 168 - }, - "implemented": true, - "statements": [ - { - "id": 179, - "node_type": 89, - "src": { - "id": 180, - "line": 39, - "column": 8, - "start": 1400, - "end": 2162, - "length": 763, - "parent_index": 177 - }, - "body": { - "id": 182, - "node_type": 90, - "kind": 0, - "src": { - "id": 180, - "line": 39, - "column": 8, - "start": 1400, - "end": 2162, - "length": 763, - "parent_index": 179 - }, - "implemented": false, - "statements": [ - { - "id": 181, - "node_type": 91, - "src": { - "id": 186, - "line": 52, - "column": 12, - "start": 1989, - "end": 2152, - "length": 164, - "parent_index": 179 - }, - "body": [] - }, - { - "id": 181, - "node_type": 91, - "src": { - "id": 186, - "line": 52, - "column": 12, - "start": 1989, - "end": 2152, - "length": 164, - "parent_index": 179 - }, - "body": [] - }, - { - "id": 181, - "node_type": 91, - "src": { - "id": 186, - "line": 52, - "column": 12, - "start": 1989, - "end": 2152, - "length": 164, - "parent_index": 179 - }, - "body": [] - }, - { - "id": 181, - "node_type": 91, - "src": { - "id": 186, - "line": 52, - "column": 12, - "start": 1989, - "end": 2152, - "length": 164, - "parent_index": 179 - }, - "body": [] - } - ] - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 170, - "node_type": 43, - "src": { - "id": 171, - "line": 37, - "column": 23, - "start": 1293, - "end": 1314, - "length": 22, - "parent_index": 168 - }, - "parameters": [ - { - "id": 172, - "node_type": 44, - "src": { - "id": 173, - "line": 37, - "column": 23, - "start": 1293, - "end": 1314, - "length": 22, - "parent_index": 170 - }, - "scope": 168, - "name": "implementation", - "type_name": { - "id": 174, - "node_type": 30, - "src": { - "id": 175, - "line": 37, - "column": 23, - "start": 1293, - "end": 1299, - "length": 7, - "parent_index": 172 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 176, - "node_type": 43, - "src": { - "id": 169, - "line": 37, - "column": 4, - "start": 1274, - "end": 2168, - "length": 895, - "parent_index": 168 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 166, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 188, - "name": "_implementation", - "node_type": 42, - "kind": 41, - "src": { - "id": 189, - "line": 63, - "column": 4, - "start": 2352, - "end": 2418, - "length": 67, - "parent_index": 166 - }, - "body": { - "id": 202, - "node_type": 46, - "kind": 0, - "src": { - "id": 189, - "line": 63, - "column": 4, - "start": 2352, - "end": 2418, - "length": 67, - "parent_index": 188 - }, - "implemented": false, - "statements": [] - }, - "implemented": false, - "visibility": 1, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 190, - "node_type": 43, - "src": { - "id": 191, - "line": 63, - "column": 62, - "start": 2410, - "end": 2416, - "length": 7, - "parent_index": 188 - }, - "parameters": [ - { - "id": 192, - "node_type": 44, - "src": { - "id": 193, - "line": 63, - "column": 62, - "start": 2410, - "end": 2416, - "length": 7, - "parent_index": 190 - }, - "scope": 188, - "name": "", - "type_name": { - "id": 194, - "node_type": 30, - "src": { - "id": 195, - "line": 63, - "column": 62, - "start": 2410, - "end": 2416, - "length": 7, - "parent_index": 192 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 196, - "node_type": 43, - "src": { - "id": 197, - "line": 63, - "column": 62, - "start": 2410, - "end": 2416, - "length": 7, - "parent_index": 188 - }, - "parameters": [ - { - "id": 198, - "node_type": 44, - "src": { - "id": 199, - "line": 63, - "column": 62, - "start": 2410, - "end": 2416, - "length": 7, - "parent_index": 196 - }, - "scope": 188, - "name": "", - "type_name": { - "id": 200, - "node_type": 30, - "src": { - "id": 201, - "line": 63, - "column": 62, - "start": 2410, - "end": 2416, - "length": 7, - "parent_index": 198 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "scope": 166, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 204, - "name": "_fallback", - "node_type": 42, - "kind": 41, - "src": { - "id": 205, - "line": 70, - "column": 4, - "start": 2648, - "end": 2757, - "length": 110, - "parent_index": 166 - }, - "body": { - "id": 208, - "node_type": 46, - "kind": 0, - "src": { - "id": 209, - "line": 70, - "column": 42, - "start": 2686, - "end": 2757, - "length": 72, - "parent_index": 204 - }, - "implemented": true, - "statements": [ - { - "id": 210, - "node_type": 24, - "kind": 24, - "src": { - "id": 211, - "line": 71, - "column": 8, - "start": 2696, - "end": 2712, - "length": 17, - "parent_index": 208 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 212, - "node_type": 16, - "src": { - "id": 213, - "line": 71, - "column": 8, - "start": 2696, - "end": 2710, - "length": 15, - "parent_index": 210 - }, - "name": "_beforeFallback", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - }, - { - "id": 214, - "node_type": 24, - "kind": 24, - "src": { - "id": 215, - "line": 72, - "column": 8, - "start": 2723, - "end": 2750, - "length": 28, - "parent_index": 208 - }, - "argument_types": [ - { - "type_identifier": "t_function_$", - "type_string": "function()" - } - ], - "arguments": [ - { - "id": 216, - "node_type": 24, - "kind": 24, - "src": { - "id": 217, - "line": 72, - "column": 18, - "start": 2733, - "end": 2749, - "length": 17, - "parent_index": 214 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 218, - "node_type": 16, - "src": { - "id": 219, - "line": 72, - "column": 18, - "start": 2733, - "end": 2747, - "length": 15, - "parent_index": 216 - }, - "name": "_implementation", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - } - ], - "expression": { - "id": 220, - "node_type": 16, - "src": { - "id": 221, - "line": 72, - "column": 8, - "start": 2723, - "end": 2731, - "length": 9, - "parent_index": 214 - }, - "name": "_delegate", - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$", - "type_string": "function()" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$$", - "type_string": "function(function())" - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 206, - "node_type": 43, - "src": { - "id": 205, - "line": 70, - "column": 4, - "start": 2648, - "end": 2757, - "length": 110, - "parent_index": 204 - }, - "parameters": [], - "parameter_types": [] - }, - "return_parameters": { - "id": 207, - "node_type": 43, - "src": { - "id": 205, - "line": 70, - "column": 4, - "start": 2648, - "end": 2757, - "length": 110, - "parent_index": 204 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 166, - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - } - }, - { - "id": 223, - "node_type": 42, - "kind": 70, - "src": { - "id": 224, - "line": 79, - "column": 4, - "start": 2955, - "end": 3019, - "length": 65, - "parent_index": 166 - }, - "implemented": true, - "visibility": 1, - "state_mutability": 3, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 225, - "node_type": 43, - "src": { - "id": 224, - "line": 79, - "column": 4, - "start": 2955, - "end": 3019, - "length": 65, - "parent_index": 223 - }, - "parameters": [], - "parameter_types": [] - }, - "return_parameters": { - "id": 226, - "node_type": 43, - "src": { - "id": 224, - "line": 79, - "column": 4, - "start": 2955, - "end": 3019, - "length": 65, - "parent_index": 223 - }, - "parameters": [], - "parameter_types": [] - }, - "body": { - "id": 227, - "node_type": 46, - "kind": 0, - "src": { - "id": 228, - "line": 79, - "column": 41, - "start": 2992, - "end": 3019, - "length": 28, - "parent_index": 223 - }, - "implemented": true, - "statements": [ - { - "id": 229, - "node_type": 24, - "kind": 24, - "src": { - "id": 230, - "line": 80, - "column": 8, - "start": 3002, - "end": 3012, - "length": 11, - "parent_index": 227 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 231, - "node_type": 16, - "src": { - "id": 232, - "line": 80, - "column": 8, - "start": 3002, - "end": 3010, - "length": 9, - "parent_index": 229 - }, - "name": "_fallback", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - } - ] - }, - "virtual": true - }, - { - "id": 234, - "node_type": 42, - "kind": 71, - "src": { - "id": 235, - "line": 87, - "column": 4, - "start": 3180, - "end": 3243, - "length": 64, - "parent_index": 166 - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 236, - "node_type": 43, - "src": { - "id": 235, - "line": 87, - "column": 4, - "start": 3180, - "end": 3243, - "length": 64, - "parent_index": 234 - }, - "parameters": [], - "parameter_types": [] - }, - "return_parameters": { - "id": 237, - "node_type": 43, - "src": { - "id": 235, - "line": 87, - "column": 4, - "start": 3180, - "end": 3243, - "length": 64, - "parent_index": 234 - }, - "parameters": [], - "parameter_types": [] - }, - "body": { - "id": 238, - "node_type": 46, - "kind": 0, - "src": { - "id": 239, - "line": 87, - "column": 40, - "start": 3216, - "end": 3243, - "length": 28, - "parent_index": 234 - }, - "implemented": true, - "statements": [ - { - "id": 240, - "node_type": 24, - "kind": 24, - "src": { - "id": 241, - "line": 88, - "column": 8, - "start": 3226, - "end": 3236, - "length": 11, - "parent_index": 238 - }, - "argument_types": [], - "arguments": [], - "expression": { - "id": 242, - "node_type": 16, - "src": { - "id": 243, - "line": 88, - "column": 8, - "start": 3226, - "end": 3234, - "length": 9, - "parent_index": 240 - }, - "name": "_fallback", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_function_$", - "type_string": "function()" - } - } - ] - }, - "virtual": true, - "payable": false - }, - { - "id": 245, - "name": "_beforeFallback", - "node_type": 42, - "kind": 41, - "src": { - "id": 246, - "line": 97, - "column": 4, - "start": 3525, - "end": 3575, - "length": 51, - "parent_index": 166 - }, - "body": { - "id": 249, - "node_type": 46, - "kind": 0, - "src": { - "id": 250, - "line": 97, - "column": 48, - "start": 3569, - "end": 3575, - "length": 7, - "parent_index": 245 - }, - "implemented": true, - "statements": [] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 4, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 247, - "node_type": 43, - "src": { - "id": 246, - "line": 97, - "column": 4, - "start": 3525, - "end": 3575, - "length": 51, - "parent_index": 245 - }, - "parameters": [], - "parameter_types": [] - }, - "return_parameters": { - "id": 248, - "node_type": 43, - "src": { - "id": 246, - "line": 97, - "column": 4, - "start": 3525, - "end": 3575, - "length": 51, - "parent_index": 245 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 166, - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - } - } - ], - "linearized_base_contracts": [ - 166 - ], - "base_contracts": [], - "contract_dependencies": [] - } - ], - "src": { - "id": 161, - "line": 31, - "column": 0, - "start": 1048, - "end": 3577, - "length": 2530, - "parent_index": 118 - } + "id": 160, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 160, + "name": "Proxy", + "absolute_path": "Proxy.sol" + } + ], + "absolute_path": "Proxy.sol", + "name": "Proxy", + "node_type": 1, + "nodes": [ + { + "id": 164, + "node_type": 10, + "src": { + "id": 165, + "line": 19, + "column": 0, + "start": 424, + "end": 446, + "length": 23, + "parent_index": 160 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 166, + "name": "Proxy", + "node_type": 35, + "src": { + "id": 0, + "line": 31, + "column": 0, + "start": 1048, + "end": 3577, + "length": 2530, + "parent_index": 160 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 168, + "name": "_delegate", + "node_type": 42, + "kind": 41, + "src": { + "id": 169, + "line": 37, + "column": 4, + "start": 1274, + "end": 2168, + "length": 895, + "parent_index": 166 + }, + "body": { + "id": 177, + "node_type": 46, + "kind": 0, + "src": { + "id": 178, + "line": 37, + "column": 64, + "start": 1334, + "end": 2168, + "length": 835, + "parent_index": 168 + }, + "implemented": true, + "statements": [ + { + "id": 179, + "node_type": 89, + "src": { + "id": 180, + "line": 39, + "column": 8, + "start": 1400, + "end": 2162, + "length": 763, + "parent_index": 177 + }, + "body": { + "id": 182, + "node_type": 90, + "kind": 0, + "src": { + "id": 180, + "line": 39, + "column": 8, + "start": 1400, + "end": 2162, + "length": 763, + "parent_index": 179 + }, + "implemented": false, + "statements": [ + { + "id": 181, + "node_type": 91, + "src": { + "id": 186, + "line": 52, + "column": 12, + "start": 1989, + "end": 2152, + "length": 164, + "parent_index": 179 + }, + "body": [] + }, + { + "id": 181, + "node_type": 91, + "src": { + "id": 186, + "line": 52, + "column": 12, + "start": 1989, + "end": 2152, + "length": 164, + "parent_index": 179 + }, + "body": [] + }, + { + "id": 181, + "node_type": 91, + "src": { + "id": 186, + "line": 52, + "column": 12, + "start": 1989, + "end": 2152, + "length": 164, + "parent_index": 179 + }, + "body": [] + }, + { + "id": 181, + "node_type": 91, + "src": { + "id": 186, + "line": 52, + "column": 12, + "start": 1989, + "end": 2152, + "length": 164, + "parent_index": 179 + }, + "body": [] + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 170, + "node_type": 43, + "src": { + "id": 171, + "line": 37, + "column": 23, + "start": 1293, + "end": 1314, + "length": 22, + "parent_index": 168 + }, + "parameters": [ + { + "id": 172, + "node_type": 44, + "src": { + "id": 173, + "line": 37, + "column": 23, + "start": 1293, + "end": 1314, + "length": 22, + "parent_index": 170 + }, + "scope": 168, + "name": "implementation", + "type_name": { + "id": 174, + "node_type": 30, + "src": { + "id": 175, + "line": 37, + "column": 23, + "start": 1293, + "end": 1299, + "length": 7, + "parent_index": 172 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 176, + "node_type": 43, + "src": { + "id": 169, + "line": 37, + "column": 4, + "start": 1274, + "end": 2168, + "length": 895, + "parent_index": 168 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 166, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 188, + "name": "_implementation", + "node_type": 42, + "kind": 41, + "src": { + "id": 189, + "line": 63, + "column": 4, + "start": 2352, + "end": 2418, + "length": 67, + "parent_index": 166 + }, + "body": { + "id": 202, + "node_type": 46, + "kind": 0, + "src": { + "id": 189, + "line": 63, + "column": 4, + "start": 2352, + "end": 2418, + "length": 67, + "parent_index": 188 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 1, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 190, + "node_type": 43, + "src": { + "id": 191, + "line": 63, + "column": 62, + "start": 2410, + "end": 2416, + "length": 7, + "parent_index": 188 + }, + "parameters": [ + { + "id": 192, + "node_type": 44, + "src": { + "id": 193, + "line": 63, + "column": 62, + "start": 2410, + "end": 2416, + "length": 7, + "parent_index": 190 + }, + "scope": 188, + "name": "", + "type_name": { + "id": 194, + "node_type": 30, + "src": { + "id": 195, + "line": 63, + "column": 62, + "start": 2410, + "end": 2416, + "length": 7, + "parent_index": 192 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 196, + "node_type": 43, + "src": { + "id": 197, + "line": 63, + "column": 62, + "start": 2410, + "end": 2416, + "length": 7, + "parent_index": 188 + }, + "parameters": [ + { + "id": 198, + "node_type": 44, + "src": { + "id": 199, + "line": 63, + "column": 62, + "start": 2410, + "end": 2416, + "length": 7, + "parent_index": 196 + }, + "scope": 188, + "name": "", + "type_name": { + "id": 200, + "node_type": 30, + "src": { + "id": 201, + "line": 63, + "column": 62, + "start": 2410, + "end": 2416, + "length": 7, + "parent_index": 198 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 166, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 204, + "name": "_fallback", + "node_type": 42, + "kind": 41, + "src": { + "id": 205, + "line": 70, + "column": 4, + "start": 2648, + "end": 2757, + "length": 110, + "parent_index": 166 + }, + "body": { + "id": 208, + "node_type": 46, + "kind": 0, + "src": { + "id": 209, + "line": 70, + "column": 42, + "start": 2686, + "end": 2757, + "length": 72, + "parent_index": 204 + }, + "implemented": true, + "statements": [ + { + "id": 210, + "node_type": 24, + "kind": 24, + "src": { + "id": 211, + "line": 71, + "column": 8, + "start": 2696, + "end": 2712, + "length": 17, + "parent_index": 208 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 212, + "node_type": 16, + "src": { + "id": 213, + "line": 71, + "column": 8, + "start": 2696, + "end": 2710, + "length": 15, + "parent_index": 210 + }, + "name": "_beforeFallback", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + }, + { + "id": 214, + "node_type": 24, + "kind": 24, + "src": { + "id": 215, + "line": 72, + "column": 8, + "start": 2723, + "end": 2750, + "length": 28, + "parent_index": 208 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 218, + "node_type": 24, + "kind": 24, + "src": { + "id": 219, + "line": 72, + "column": 18, + "start": 2733, + "end": 2749, + "length": 17, + "parent_index": 214 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 220, + "node_type": 16, + "src": { + "id": 221, + "line": 72, + "column": 18, + "start": 2733, + "end": 2747, + "length": 15, + "parent_index": 218 + }, + "name": "_implementation", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + ], + "expression": { + "id": 216, + "node_type": 16, + "src": { + "id": 217, + "line": 72, + "column": 8, + "start": 2723, + "end": 2731, + "length": 9, + "parent_index": 214 + }, + "name": "_delegate", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 206, + "node_type": 43, + "src": { + "id": 205, + "line": 70, + "column": 4, + "start": 2648, + "end": 2757, + "length": 110, + "parent_index": 204 + }, + "parameters": [], + "parameter_types": [] + }, + "return_parameters": { + "id": 207, + "node_type": 43, + "src": { + "id": 205, + "line": 70, + "column": 4, + "start": 2648, + "end": 2757, + "length": 110, + "parent_index": 204 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 166, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + }, + { + "id": 223, + "node_type": 42, + "kind": 70, + "src": { + "id": 224, + "line": 79, + "column": 4, + "start": 2955, + "end": 3019, + "length": 65, + "parent_index": 166 + }, + "implemented": true, + "visibility": 1, + "state_mutability": 3, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 225, + "node_type": 43, + "src": { + "id": 224, + "line": 79, + "column": 4, + "start": 2955, + "end": 3019, + "length": 65, + "parent_index": 223 + }, + "parameters": [], + "parameter_types": [] + }, + "return_parameters": { + "id": 226, + "node_type": 43, + "src": { + "id": 224, + "line": 79, + "column": 4, + "start": 2955, + "end": 3019, + "length": 65, + "parent_index": 223 + }, + "parameters": [], + "parameter_types": [] + }, + "body": { + "id": 227, + "node_type": 46, + "kind": 0, + "src": { + "id": 228, + "line": 79, + "column": 41, + "start": 2992, + "end": 3019, + "length": 28, + "parent_index": 223 + }, + "implemented": true, + "statements": [ + { + "id": 229, + "node_type": 24, + "kind": 24, + "src": { + "id": 230, + "line": 80, + "column": 8, + "start": 3002, + "end": 3012, + "length": 11, + "parent_index": 227 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 231, + "node_type": 16, + "src": { + "id": 232, + "line": 80, + "column": 8, + "start": 3002, + "end": 3010, + "length": 9, + "parent_index": 229 + }, + "name": "_fallback", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + ] + }, + "virtual": true + }, + { + "id": 234, + "node_type": 42, + "kind": 71, + "src": { + "id": 235, + "line": 87, + "column": 4, + "start": 3180, + "end": 3243, + "length": 64, + "parent_index": 166 + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 236, + "node_type": 43, + "src": { + "id": 235, + "line": 87, + "column": 4, + "start": 3180, + "end": 3243, + "length": 64, + "parent_index": 234 + }, + "parameters": [], + "parameter_types": [] + }, + "return_parameters": { + "id": 237, + "node_type": 43, + "src": { + "id": 235, + "line": 87, + "column": 4, + "start": 3180, + "end": 3243, + "length": 64, + "parent_index": 234 + }, + "parameters": [], + "parameter_types": [] + }, + "body": { + "id": 238, + "node_type": 46, + "kind": 0, + "src": { + "id": 239, + "line": 87, + "column": 40, + "start": 3216, + "end": 3243, + "length": 28, + "parent_index": 234 + }, + "implemented": true, + "statements": [ + { + "id": 240, + "node_type": 24, + "kind": 24, + "src": { + "id": 241, + "line": 88, + "column": 8, + "start": 3226, + "end": 3236, + "length": 11, + "parent_index": 238 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 242, + "node_type": 16, + "src": { + "id": 243, + "line": 88, + "column": 8, + "start": 3226, + "end": 3234, + "length": 9, + "parent_index": 240 + }, + "name": "_fallback", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + ] + }, + "virtual": true, + "payable": false + }, + { + "id": 245, + "name": "_beforeFallback", + "node_type": 42, + "kind": 41, + "src": { + "id": 246, + "line": 97, + "column": 4, + "start": 3525, + "end": 3575, + "length": 51, + "parent_index": 166 + }, + "body": { + "id": 249, + "node_type": 46, + "kind": 0, + "src": { + "id": 250, + "line": 97, + "column": 48, + "start": 3569, + "end": 3575, + "length": 7, + "parent_index": 245 + }, + "implemented": true, + "statements": [] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 247, + "node_type": 43, + "src": { + "id": 246, + "line": 97, + "column": 4, + "start": 3525, + "end": 3575, + "length": 51, + "parent_index": 245 + }, + "parameters": [], + "parameter_types": [] + }, + "return_parameters": { + "id": 248, + "node_type": 43, + "src": { + "id": 246, + "line": 97, + "column": 4, + "start": 3525, + "end": 3575, + "length": 51, + "parent_index": 245 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 166, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + ], + "linearized_base_contracts": [ + 166 + ], + "base_contracts": [], + "contract_dependencies": [] + } + ], + "src": { + "id": 161, + "line": 31, + "column": 0, + "start": 1048, + "end": 3577, + "length": 2530, + "parent_index": 118 + } } \ No newline at end of file diff --git a/data/tests/contracts/cheelee/ProxyAdmin.solgo.ast.json b/data/tests/contracts/cheelee/ProxyAdmin.solgo.ast.json index 369bf2da..36acb62c 100644 --- a/data/tests/contracts/cheelee/ProxyAdmin.solgo.ast.json +++ b/data/tests/contracts/cheelee/ProxyAdmin.solgo.ast.json @@ -1,2400 +1,2354 @@ { - "id": 2600, - "base_contracts": [ - { - "id": 2642, - "node_type": 62, - "src": { - "id": 2643, - "line": 952, - "column": 23, - "start": 34619, - "end": 34625, - "length": 7, - "parent_index": 2641 - }, - "base_name": { - "id": 2644, - "node_type": 52, - "src": { - "id": 2645, - "line": 952, - "column": 23, - "start": 34619, - "end": 34625, - "length": 7, - "parent_index": 2641 - }, - "name": "Ownable", - "referenced_declaration": 1771 - } - } - ], - "license": "MIT", - "exported_symbols": [ - { - "id": 2600, - "name": "ProxyAdmin", - "absolute_path": "ProxyAdmin.sol" - }, - { - "id": 1771, - "name": "Ownable", - "absolute_path": "Ownable.sol" - }, - { - "id": 1771, - "name": "Ownable", - "absolute_path": "Ownable.sol" - }, - { - "id": 2272, - "name": "TransparentUpgradeableProxy", - "absolute_path": "TransparentUpgradeableProxy.sol" - } - ], - "absolute_path": "ProxyAdmin.sol", - "name": "ProxyAdmin", - "node_type": 1, - "nodes": [ - { - "id": 2624, - "node_type": 10, - "src": { - "id": 2625, - "line": 943, - "column": 0, - "start": 34262, - "end": 34284, - "length": 23, - "parent_index": 2600 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 2639, - "node_type": 29, - "src": { - "id": 0, - "line": 945, - "column": 0, - "start": 34287, - "end": 34329, - "length": 43, - "parent_index": 2600 - }, - "absolute_path": "TransparentUpgradeableProxy.sol", - "file": "./TransparentUpgradeableProxy.sol", - "scope": 2600, - "unit_alias": "", - "source_unit": 2272 - }, - { - "id": 2640, - "node_type": 29, - "src": { - "id": 0, - "line": 946, - "column": 0, - "start": 34331, - "end": 34364, - "length": 34, - "parent_index": 2600 - }, - "absolute_path": "Ownable.sol", - "file": "../../access/Ownable.sol", - "scope": 2600, - "unit_alias": "", - "source_unit": 2272 - }, - { - "id": 2641, - "name": "ProxyAdmin", - "node_type": 35, - "src": { - "id": 0, - "line": 952, - "column": 0, - "start": 34596, - "end": 36970, - "length": 2375, - "parent_index": 2600 - }, - "abstract": false, - "kind": 36, - "fully_implemented": true, - "nodes": [ - { - "id": 2647, - "name": "getProxyImplementation", - "node_type": 42, - "kind": 41, - "src": { - "id": 2648, - "line": 961, - "column": 4, - "start": 34797, - "end": 35233, - "length": 437, - "parent_index": 2641 - }, - "body": { - "id": 2663, - "node_type": 46, - "kind": 0, - "src": { - "id": 2664, - "line": 961, - "column": 109, - "start": 34902, - "end": 35233, - "length": 332, - "parent_index": 2647 - }, - "implemented": true, - "statements": [ - { - "id": 2665, - "node_type": 44, - "src": { - "id": 2666, - "line": 964, - "column": 8, - "start": 35069, - "end": 35151, - "length": 83, - "parent_index": 2663 - }, - "assignments": [], - "declarations": [], - "initial_value": { - "id": 2667, - "node_type": 24, - "kind": 24, - "src": { - "id": 2668, - "line": 964, - "column": 50, - "start": 35111, - "end": 35150, - "length": 40, - "parent_index": 2665 - }, - "argument_types": [ - { - "type_identifier": "t_string_hex_literal", - "type_string": "literal_hex_string hex\"5c60da1b\"" - } - ], - "arguments": [ - { - "id": 2669, - "node_type": 17, - "kind": 65, - "value": "hex5c60da1b", - "hex_value": "6865783563363064613162", - "src": { - "id": 2670, - "line": 964, - "column": 76, - "start": 35137, - "end": 35149, - "length": 13, - "parent_index": 2667 - }, - "type_description": { - "type_identifier": "t_string_hex_literal", - "type_string": "literal_hex_string hex\"5c60da1b\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 2671, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 2672, - "line": 964, - "column": 50, - "start": 35111, - "end": 35135, - "length": 25, - "parent_index": 2667 - }, - "expression": { - "id": 2673, - "node_type": 24, - "kind": 24, - "src": { - "id": 2674, - "line": 964, - "column": 50, - "start": 35111, - "end": 35124, - "length": 14, - "parent_index": 2671 - }, - "argument_types": [ - { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - } - ], - "arguments": [ - { - "id": 2675, - "node_type": 16, - "src": { - "id": 2676, - "line": 964, - "column": 58, - "start": 35119, - "end": 35123, - "length": 5, - "parent_index": 2673 - }, - "name": "proxy", - "type_description": { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - }, - "overloaded_declarations": [], - "referenced_declaration": 2675, - "is_pure": false - } - ], - "expression": { - "id": 2677, - "node_type": 16, - "src": { - "id": 2678, - "line": 964, - "column": 50, - "start": 35111, - "end": 35117, - "length": 7, - "parent_index": 2673 - }, - "type_name": { - "id": 2679, - "node_type": 30, - "src": { - "id": 2680, - "line": 964, - "column": 50, - "start": 35111, - "end": 35117, - "length": 7, - "parent_index": 2677 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "function(contract TransparentUpgradeableProxy)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$", - "type_string": "function(contract TransparentUpgradeableProxy)" - } - }, - "member_name": "staticcall", - "argument_types": [ - { - "type_identifier": "t_string_hex_literal", - "type_string": "literal_hex_string hex\"5c60da1b\"" - } - ], - "type_description": { - "type_identifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$", - "type_string": "function(contract TransparentUpgradeableProxy)" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_string_hex_literal$", - "type_string": "function(literal_hex_string hex\"5c60da1b\")" - } - } - }, - { - "id": 2681, - "node_type": 24, - "kind": 24, - "src": { - "id": 2682, - "line": 965, - "column": 8, - "start": 35161, - "end": 35176, - "length": 16, - "parent_index": 2663 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "arguments": [ - { - "id": 2683, - "node_type": 16, - "src": { - "id": 2684, - "line": 965, - "column": 16, - "start": 35169, - "end": 35175, - "length": 7, - "parent_index": 2681 - }, - "name": "success", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - } - ], - "expression": { - "id": 2685, - "node_type": 16, - "src": { - "id": 2686, - "line": 965, - "column": 8, - "start": 35161, - "end": 35167, - "length": 7, - "parent_index": 2681 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_function_", - "type_string": "function(function())" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - }, - { - "id": 2687, - "node_type": 47, - "src": { - "id": 2688, - "line": 966, - "column": 8, - "start": 35187, - "end": 35227, - "length": 41, - "parent_index": 2647 - }, - "function_return_parameters": 2647, - "expression": { - "id": 2689, - "node_type": 24, - "kind": 24, - "src": { - "id": 2690, - "line": 966, - "column": 15, - "start": 35194, - "end": 35226, - "length": 33, - "parent_index": 2663 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_tuple_$_t_address$", - "type_string": "tuple(address)" - } - ], - "arguments": [ - { - "id": 2691, - "node_type": 16, - "src": { - "id": 2692, - "line": 966, - "column": 26, - "start": 35205, - "end": 35214, - "length": 10, - "parent_index": 2689 - }, - "name": "returndata", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - { - "id": 2693, - "node_type": 60, - "src": { - "id": 2694, - "line": 966, - "column": 38, - "start": 35217, - "end": 35225, - "length": 9, - "parent_index": 2689 - }, - "is_constant": false, - "is_pure": false, - "components": [ - { - "id": 2695, - "node_type": 16, - "src": { - "id": 2696, - "line": 966, - "column": 39, - "start": 35218, - "end": 35224, - "length": 7, - "parent_index": 2693 - }, - "type_name": { - "id": 2697, - "node_type": 30, - "src": { - "id": 2698, - "line": 966, - "column": 39, - "start": 35218, - "end": 35224, - "length": 7, - "parent_index": 2695 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - } - ], - "type_description": { - "type_identifier": "t_tuple_$_t_address$", - "type_string": "tuple(address)" - } - } - ], - "expression": { - "id": 2699, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 2700, - "line": 966, - "column": 15, - "start": 35194, - "end": 35203, - "length": 10, - "parent_index": 2689 - }, - "expression": { - "id": 2701, - "node_type": 16, - "src": { - "id": 2702, - "line": 966, - "column": 15, - "start": 35194, - "end": 35196, - "length": 3, - "parent_index": 2699 - }, - "name": "abi", - "type_description": { - "type_identifier": "t_magic_abi", - "type_string": "abi" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "member_name": "decode", - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_tuple_$_t_address$", - "type_string": "tuple(address)" - } - ], - "type_description": { - "type_identifier": "t_magic_abi", - "type_string": "abi" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$$_t_tuple_$_t_address$$", - "type_string": "function(function(),tuple(address))" - } - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 2649, - "node_type": 43, - "src": { - "id": 2650, - "line": 961, - "column": 36, - "start": 34829, - "end": 34861, - "length": 33, - "parent_index": 2647 - }, - "parameters": [ - { - "id": 2651, - "node_type": 44, - "src": { - "id": 2652, - "line": 961, - "column": 36, - "start": 34829, - "end": 34861, - "length": 33, - "parent_index": 2649 - }, - "scope": 2647, - "name": "proxy", - "type_name": { - "id": 2653, - "node_type": 69, - "src": { - "id": 2654, - "line": 961, - "column": 36, - "start": 34829, - "end": 34855, - "length": 27, - "parent_index": 2651 - }, - "type_description": { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - }, - "path_node": { - "id": 2655, - "name": "TransparentUpgradeableProxy", - "node_type": 52, - "referenced_declaration": 2272, - "src": { - "id": 2656, - "line": 961, - "column": 36, - "start": 34829, - "end": 34855, - "length": 27, - "parent_index": 2653 - } - }, - "referenced_declaration": 2272 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - } - ] - }, - "return_parameters": { - "id": 2657, - "node_type": 43, - "src": { - "id": 2658, - "line": 961, - "column": 100, - "start": 34893, - "end": 34899, - "length": 7, - "parent_index": 2647 - }, - "parameters": [ - { - "id": 2659, - "node_type": 44, - "src": { - "id": 2660, - "line": 961, - "column": 100, - "start": 34893, - "end": 34899, - "length": 7, - "parent_index": 2657 - }, - "scope": 2647, - "name": "", - "type_name": { - "id": 2661, - "node_type": 30, - "src": { - "id": 2662, - "line": 961, - "column": 100, - "start": 34893, - "end": 34899, - "length": 7, - "parent_index": 2659 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "scope": 2641, - "type_description": { - "type_identifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "function(contract TransparentUpgradeableProxy)" - } - }, - { - "id": 2704, - "name": "getProxyAdmin", - "node_type": 42, - "kind": 41, - "src": { - "id": 2705, - "line": 976, - "column": 4, - "start": 35394, - "end": 35812, - "length": 419, - "parent_index": 2641 - }, - "body": { - "id": 2720, - "node_type": 46, - "kind": 0, - "src": { - "id": 2721, - "line": 976, - "column": 100, - "start": 35490, - "end": 35812, - "length": 323, - "parent_index": 2704 - }, - "implemented": true, - "statements": [ - { - "id": 2722, - "node_type": 44, - "src": { - "id": 2723, - "line": 979, - "column": 8, - "start": 35648, - "end": 35730, - "length": 83, - "parent_index": 2720 - }, - "assignments": [], - "declarations": [], - "initial_value": { - "id": 2724, - "node_type": 24, - "kind": 24, - "src": { - "id": 2725, - "line": 979, - "column": 50, - "start": 35690, - "end": 35729, - "length": 40, - "parent_index": 2722 - }, - "argument_types": [ - { - "type_identifier": "t_string_hex_literal", - "type_string": "literal_hex_string hex\"f851a440\"" - } - ], - "arguments": [ - { - "id": 2726, - "node_type": 17, - "kind": 65, - "value": "hexf851a440", - "hex_value": "6865786638353161343430", - "src": { - "id": 2727, - "line": 979, - "column": 76, - "start": 35716, - "end": 35728, - "length": 13, - "parent_index": 2724 - }, - "type_description": { - "type_identifier": "t_string_hex_literal", - "type_string": "literal_hex_string hex\"f851a440\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true - } - ], - "expression": { - "id": 2728, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 2729, - "line": 979, - "column": 50, - "start": 35690, - "end": 35714, - "length": 25, - "parent_index": 2724 - }, - "expression": { - "id": 2730, - "node_type": 24, - "kind": 24, - "src": { - "id": 2731, - "line": 979, - "column": 50, - "start": 35690, - "end": 35703, - "length": 14, - "parent_index": 2728 - }, - "argument_types": [ - { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - } - ], - "arguments": [ - { - "id": 2732, - "node_type": 16, - "src": { - "id": 2733, - "line": 979, - "column": 58, - "start": 35698, - "end": 35702, - "length": 5, - "parent_index": 2730 - }, - "name": "proxy", - "type_description": { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - }, - "overloaded_declarations": [], - "referenced_declaration": 2732, - "is_pure": false - } - ], - "expression": { - "id": 2734, - "node_type": 16, - "src": { - "id": 2735, - "line": 979, - "column": 50, - "start": 35690, - "end": 35696, - "length": 7, - "parent_index": 2730 - }, - "type_name": { - "id": 2736, - "node_type": 30, - "src": { - "id": 2737, - "line": 979, - "column": 50, - "start": 35690, - "end": 35696, - "length": 7, - "parent_index": 2734 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "function(contract TransparentUpgradeableProxy)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$", - "type_string": "function(contract TransparentUpgradeableProxy)" - } - }, - "member_name": "staticcall", - "argument_types": [ - { - "type_identifier": "t_string_hex_literal", - "type_string": "literal_hex_string hex\"f851a440\"" - } - ], - "type_description": { - "type_identifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$", - "type_string": "function(contract TransparentUpgradeableProxy)" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_string_hex_literal$", - "type_string": "function(literal_hex_string hex\"f851a440\")" - } - } - }, - { - "id": 2738, - "node_type": 24, - "kind": 24, - "src": { - "id": 2739, - "line": 980, - "column": 8, - "start": 35740, - "end": 35755, - "length": 16, - "parent_index": 2720 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ], - "arguments": [ - { - "id": 2740, - "node_type": 16, - "src": { - "id": 2741, - "line": 980, - "column": 16, - "start": 35748, - "end": 35754, - "length": 7, - "parent_index": 2738 - }, - "name": "success", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - } - ], - "expression": { - "id": 2742, - "node_type": 16, - "src": { - "id": 2743, - "line": 980, - "column": 8, - "start": 35740, - "end": 35746, - "length": 7, - "parent_index": 2738 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_function_", - "type_string": "function(function())" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$", - "type_string": "function(function())" - } - }, - { - "id": 2744, - "node_type": 47, - "src": { - "id": 2745, - "line": 981, - "column": 8, - "start": 35766, - "end": 35806, - "length": 41, - "parent_index": 2704 - }, - "function_return_parameters": 2704, - "expression": { - "id": 2746, - "node_type": 24, - "kind": 24, - "src": { - "id": 2747, - "line": 981, - "column": 15, - "start": 35773, - "end": 35805, - "length": 33, - "parent_index": 2720 - }, - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_tuple_$_t_address$", - "type_string": "tuple(address)" - } - ], - "arguments": [ - { - "id": 2748, - "node_type": 16, - "src": { - "id": 2749, - "line": 981, - "column": 26, - "start": 35784, - "end": 35793, - "length": 10, - "parent_index": 2746 - }, - "name": "returndata", - "type_description": { - "type_identifier": "t_function_", - "type_string": "function()" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - { - "id": 2750, - "node_type": 60, - "src": { - "id": 2751, - "line": 981, - "column": 38, - "start": 35796, - "end": 35804, - "length": 9, - "parent_index": 2746 - }, - "is_constant": false, - "is_pure": false, - "components": [ - { - "id": 2752, - "node_type": 16, - "src": { - "id": 2753, - "line": 981, - "column": 39, - "start": 35797, - "end": 35803, - "length": 7, - "parent_index": 2750 - }, - "type_name": { - "id": 2754, - "node_type": 30, - "src": { - "id": 2755, - "line": 981, - "column": 39, - "start": 35797, - "end": 35803, - "length": 7, - "parent_index": 2752 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - } - ], - "type_description": { - "type_identifier": "t_tuple_$_t_address$", - "type_string": "tuple(address)" - } - } - ], - "expression": { - "id": 2756, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 2757, - "line": 981, - "column": 15, - "start": 35773, - "end": 35782, - "length": 10, - "parent_index": 2746 - }, - "expression": { - "id": 2758, - "node_type": 16, - "src": { - "id": 2759, - "line": 981, - "column": 15, - "start": 35773, - "end": 35775, - "length": 3, - "parent_index": 2756 - }, - "name": "abi", - "type_description": { - "type_identifier": "t_magic_abi", - "type_string": "abi" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false - }, - "member_name": "decode", - "argument_types": [ - { - "type_identifier": "t_function_", - "type_string": "function()" - }, - { - "type_identifier": "t_tuple_$_t_address$", - "type_string": "tuple(address)" - } - ], - "type_description": { - "type_identifier": "t_magic_abi", - "type_string": "abi" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$$_t_tuple_$_t_address$$", - "type_string": "function(function(),tuple(address))" - } - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 2706, - "node_type": 43, - "src": { - "id": 2707, - "line": 976, - "column": 27, - "start": 35417, - "end": 35449, - "length": 33, - "parent_index": 2704 - }, - "parameters": [ - { - "id": 2708, - "node_type": 44, - "src": { - "id": 2709, - "line": 976, - "column": 27, - "start": 35417, - "end": 35449, - "length": 33, - "parent_index": 2706 - }, - "scope": 2704, - "name": "proxy", - "type_name": { - "id": 2710, - "node_type": 69, - "src": { - "id": 2711, - "line": 976, - "column": 27, - "start": 35417, - "end": 35443, - "length": 27, - "parent_index": 2708 - }, - "type_description": { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - }, - "path_node": { - "id": 2712, - "name": "TransparentUpgradeableProxy", - "node_type": 52, - "referenced_declaration": 2272, - "src": { - "id": 2713, - "line": 976, - "column": 27, - "start": 35417, - "end": 35443, - "length": 27, - "parent_index": 2710 - } - }, - "referenced_declaration": 2272 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - } - ] - }, - "return_parameters": { - "id": 2714, - "node_type": 43, - "src": { - "id": 2715, - "line": 976, - "column": 91, - "start": 35481, - "end": 35487, - "length": 7, - "parent_index": 2704 - }, - "parameters": [ - { - "id": 2716, - "node_type": 44, - "src": { - "id": 2717, - "line": 976, - "column": 91, - "start": 35481, - "end": 35487, - "length": 7, - "parent_index": 2714 - }, - "scope": 2704, - "name": "", - "type_name": { - "id": 2718, - "node_type": 30, - "src": { - "id": 2719, - "line": 976, - "column": 91, - "start": 35481, - "end": 35487, - "length": 7, - "parent_index": 2716 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "scope": 2641, - "type_description": { - "type_identifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "function(contract TransparentUpgradeableProxy)" - } - }, - { - "id": 2761, - "name": "changeProxyAdmin", - "node_type": 42, - "kind": 41, - "src": { - "id": 2762, - "line": 991, - "column": 4, - "start": 35987, - "end": 36134, - "length": 148, - "parent_index": 2641 - }, - "body": { - "id": 2780, - "node_type": 46, - "kind": 0, - "src": { - "id": 2781, - "line": 991, - "column": 108, - "start": 36091, - "end": 36134, - "length": 44, - "parent_index": 2761 - }, - "implemented": true, - "statements": [ - { - "id": 2782, - "node_type": 24, - "kind": 24, - "src": { - "id": 2783, - "line": 992, - "column": 8, - "start": 36101, - "end": 36127, - "length": 27, - "parent_index": 2780 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 2784, - "node_type": 16, - "src": { - "id": 2785, - "line": 992, - "column": 26, - "start": 36119, - "end": 36126, - "length": 8, - "parent_index": 2782 - }, - "name": "newAdmin", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 2784, - "is_pure": false - } - ], - "expression": { - "id": 2786, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 2787, - "line": 992, - "column": 8, - "start": 36101, - "end": 36117, - "length": 17, - "parent_index": 2782 - }, - "expression": { - "id": 2788, - "node_type": 16, - "src": { - "id": 2789, - "line": 992, - "column": 8, - "start": 36101, - "end": 36105, - "length": 5, - "parent_index": 2786 - }, - "name": "proxy", - "type_description": { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - }, - "overloaded_declarations": [], - "referenced_declaration": 2788, - "is_pure": false - }, - "member_name": "changeAdmin", - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "type_description": { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 4, - "virtual": true, - "modifiers": [ - { - "id": 2763, - "name": "onlyOwner", - "node_type": 72, - "kind": 72, - "src": { - "id": 2764, - "line": 991, - "column": 98, - "start": 36081, - "end": 36089, - "length": 9, - "parent_index": 2761 - }, - "argument_types": [], - "arguments": [], - "modifier_name": { - "id": 2765, - "name": "onlyOwner", - "node_type": 0, - "src": { - "id": 2766, - "line": 991, - "column": 98, - "start": 36081, - "end": 36089, - "length": 9, - "parent_index": 2763 - } - } - } - ], - "overrides": [], - "parameters": { - "id": 2767, - "node_type": 43, - "src": { - "id": 2768, - "line": 991, - "column": 30, - "start": 36013, - "end": 36063, - "length": 51, - "parent_index": 2761 - }, - "parameters": [ - { - "id": 2769, - "node_type": 44, - "src": { - "id": 2770, - "line": 991, - "column": 30, - "start": 36013, - "end": 36045, - "length": 33, - "parent_index": 2767 - }, - "scope": 2761, - "name": "proxy", - "type_name": { - "id": 2771, - "node_type": 69, - "src": { - "id": 2772, - "line": 991, - "column": 30, - "start": 36013, - "end": 36039, - "length": 27, - "parent_index": 2769 - }, - "type_description": { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - }, - "path_node": { - "id": 2773, - "name": "TransparentUpgradeableProxy", - "node_type": 52, - "referenced_declaration": 2272, - "src": { - "id": 2774, - "line": 991, - "column": 30, - "start": 36013, - "end": 36039, - "length": 27, - "parent_index": 2771 - } - }, - "referenced_declaration": 2272 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 2775, - "node_type": 44, - "src": { - "id": 2776, - "line": 991, - "column": 65, - "start": 36048, - "end": 36063, - "length": 16, - "parent_index": 2767 - }, - "scope": 2761, - "name": "newAdmin", - "type_name": { - "id": 2777, - "node_type": 30, - "src": { - "id": 2778, - "line": 991, - "column": 65, - "start": 36048, - "end": 36054, - "length": 7, - "parent_index": 2775 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 2779, - "node_type": 43, - "src": { - "id": 2762, - "line": 991, - "column": 4, - "start": 35987, - "end": 36134, - "length": 148, - "parent_index": 2761 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 2641, - "type_description": { - "type_identifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$$_t_address", - "type_string": "function(contract TransparentUpgradeableProxy,address)" - } - }, - { - "id": 2791, - "name": "upgrade", - "node_type": 42, - "kind": 41, - "src": { - "id": 2792, - "line": 1002, - "column": 4, - "start": 36340, - "end": 36488, - "length": 149, - "parent_index": 2641 - }, - "body": { - "id": 2810, - "node_type": 46, - "kind": 0, - "src": { - "id": 2811, - "line": 1002, - "column": 105, - "start": 36441, - "end": 36488, - "length": 48, - "parent_index": 2791 - }, - "implemented": true, - "statements": [ - { - "id": 2812, - "node_type": 24, - "kind": 24, - "src": { - "id": 2813, - "line": 1003, - "column": 8, - "start": 36451, - "end": 36481, - "length": 31, - "parent_index": 2810 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 2814, - "node_type": 16, - "src": { - "id": 2815, - "line": 1003, - "column": 24, - "start": 36467, - "end": 36480, - "length": 14, - "parent_index": 2812 - }, - "name": "implementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 2814, - "is_pure": false - } - ], - "expression": { - "id": 2816, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 2817, - "line": 1003, - "column": 8, - "start": 36451, - "end": 36465, - "length": 15, - "parent_index": 2812 - }, - "expression": { - "id": 2818, - "node_type": 16, - "src": { - "id": 2819, - "line": 1003, - "column": 8, - "start": 36451, - "end": 36455, - "length": 5, - "parent_index": 2816 - }, - "name": "proxy", - "type_description": { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - }, - "overloaded_declarations": [], - "referenced_declaration": 2818, - "is_pure": false - }, - "member_name": "upgradeTo", - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "type_description": { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 4, - "virtual": true, - "modifiers": [ - { - "id": 2793, - "name": "onlyOwner", - "node_type": 72, - "kind": 72, - "src": { - "id": 2794, - "line": 1002, - "column": 95, - "start": 36431, - "end": 36439, - "length": 9, - "parent_index": 2791 - }, - "argument_types": [], - "arguments": [], - "modifier_name": { - "id": 2795, - "name": "onlyOwner", - "node_type": 0, - "src": { - "id": 2796, - "line": 1002, - "column": 95, - "start": 36431, - "end": 36439, - "length": 9, - "parent_index": 2793 - } - } - } - ], - "overrides": [], - "parameters": { - "id": 2797, - "node_type": 43, - "src": { - "id": 2798, - "line": 1002, - "column": 21, - "start": 36357, - "end": 36413, - "length": 57, - "parent_index": 2791 - }, - "parameters": [ - { - "id": 2799, - "node_type": 44, - "src": { - "id": 2800, - "line": 1002, - "column": 21, - "start": 36357, - "end": 36389, - "length": 33, - "parent_index": 2797 - }, - "scope": 2791, - "name": "proxy", - "type_name": { - "id": 2801, - "node_type": 69, - "src": { - "id": 2802, - "line": 1002, - "column": 21, - "start": 36357, - "end": 36383, - "length": 27, - "parent_index": 2799 - }, - "type_description": { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - }, - "path_node": { - "id": 2803, - "name": "TransparentUpgradeableProxy", - "node_type": 52, - "referenced_declaration": 2272, - "src": { - "id": 2804, - "line": 1002, - "column": 21, - "start": 36357, - "end": 36383, - "length": 27, - "parent_index": 2801 - } - }, - "referenced_declaration": 2272 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 2805, - "node_type": 44, - "src": { - "id": 2806, - "line": 1002, - "column": 56, - "start": 36392, - "end": 36413, - "length": 22, - "parent_index": 2797 - }, - "scope": 2791, - "name": "implementation", - "type_name": { - "id": 2807, - "node_type": 30, - "src": { - "id": 2808, - "line": 1002, - "column": 56, - "start": 36392, - "end": 36398, - "length": 7, - "parent_index": 2805 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - }, - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 2809, - "node_type": 43, - "src": { - "id": 2792, - "line": 1002, - "column": 4, - "start": 36340, - "end": 36488, - "length": 149, - "parent_index": 2791 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 2641, - "type_description": { - "type_identifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$$_t_address", - "type_string": "function(contract TransparentUpgradeableProxy,address)" - } - }, - { - "id": 2821, - "name": "upgradeAndCall", - "node_type": 42, - "kind": 41, - "src": { - "id": 2822, - "line": 1014, - "column": 4, - "start": 36755, - "end": 36968, - "length": 214, - "parent_index": 2641 - }, - "body": { - "id": 2844, - "node_type": 46, - "kind": 0, - "src": { - "id": 2845, - "line": 1014, - "column": 139, - "start": 36890, - "end": 36968, - "length": 79, - "parent_index": 2821 - }, - "implemented": true, - "statements": [ - { - "id": 2846, - "node_type": 24, - "kind": 24, - "src": { - "id": 2847, - "line": 1015, - "column": 8, - "start": 36900, - "end": 36961, - "length": 62, - "parent_index": 2844 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ], - "arguments": [ - { - "id": 2848, - "node_type": 16, - "src": { - "id": 2849, - "line": 1015, - "column": 49, - "start": 36941, - "end": 36954, - "length": 14, - "parent_index": 2846 - }, - "name": "implementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 2848, - "is_pure": false - }, - { - "id": 2850, - "node_type": 16, - "src": { - "id": 2851, - "line": 1015, - "column": 65, - "start": 36957, - "end": 36960, - "length": 4, - "parent_index": 2846 - }, - "name": "data", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "overloaded_declarations": [], - "referenced_declaration": 2850, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - } - ], - "expression": { - "id": 2852, - "node_type": 93, - "kind": 93, - "src": { - "id": 2853, - "line": 1015, - "column": 8, - "start": 36900, - "end": 36939, - "length": 40, - "parent_index": 2846 - }, - "expression": { - "id": 2854, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 2855, - "line": 1015, - "column": 8, - "start": 36900, - "end": 36921, - "length": 22, - "parent_index": 2852 - }, - "expression": { - "id": 2856, - "node_type": 16, - "src": { - "id": 2857, - "line": 1015, - "column": 8, - "start": 36900, - "end": 36904, - "length": 5, - "parent_index": 2854 - }, - "name": "proxy", - "type_description": { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - }, - "overloaded_declarations": [], - "referenced_declaration": 2856, - "is_pure": false - }, - "member_name": "upgradeToAndCall", - "argument_types": [], - "type_description": { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - } - }, - "type_description": { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$", - "type_string": "function(address,bytes)" - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 3, - "virtual": true, - "modifiers": [ - { - "id": 2823, - "name": "onlyOwner", - "node_type": 72, - "kind": 72, - "src": { - "id": 2824, - "line": 1014, - "column": 129, - "start": 36880, - "end": 36888, - "length": 9, - "parent_index": 2821 - }, - "argument_types": [], - "arguments": [], - "modifier_name": { - "id": 2825, - "name": "onlyOwner", - "node_type": 0, - "src": { - "id": 2826, - "line": 1014, - "column": 129, - "start": 36880, - "end": 36888, - "length": 9, - "parent_index": 2823 - } - } - } - ], - "overrides": [], - "parameters": { - "id": 2827, - "node_type": 43, - "src": { - "id": 2828, - "line": 1014, - "column": 28, - "start": 36779, - "end": 36854, - "length": 76, - "parent_index": 2821 - }, - "parameters": [ - { - "id": 2829, - "node_type": 44, - "src": { - "id": 2830, - "line": 1014, - "column": 28, - "start": 36779, - "end": 36811, - "length": 33, - "parent_index": 2827 - }, - "scope": 2821, - "name": "proxy", - "type_name": { - "id": 2831, - "node_type": 69, - "src": { - "id": 2832, - "line": 1014, - "column": 28, - "start": 36779, - "end": 36805, - "length": 27, - "parent_index": 2829 - }, - "type_description": { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - }, - "path_node": { - "id": 2833, - "name": "TransparentUpgradeableProxy", - "node_type": 52, - "referenced_declaration": 2272, - "src": { - "id": 2834, - "line": 1014, - "column": 28, - "start": 36779, - "end": 36805, - "length": 27, - "parent_index": 2831 - } - }, - "referenced_declaration": 2272 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - }, - { - "id": 2835, - "node_type": 44, - "src": { - "id": 2836, - "line": 1014, - "column": 63, - "start": 36814, - "end": 36835, - "length": 22, - "parent_index": 2827 - }, - "scope": 2821, - "name": "implementation", - "type_name": { - "id": 2837, - "node_type": 30, - "src": { - "id": 2838, - "line": 1014, - "column": 63, - "start": 36814, - "end": 36820, - "length": 7, - "parent_index": 2835 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - }, - { - "id": 2839, - "node_type": 44, - "src": { - "id": 2840, - "line": 1014, - "column": 87, - "start": 36838, - "end": 36854, - "length": 17, - "parent_index": 2827 - }, - "scope": 2821, - "name": "data", - "type_name": { - "id": 2841, - "node_type": 30, - "src": { - "id": 2842, - "line": 1014, - "column": 87, - "start": 36838, - "end": 36842, - "length": 5, - "parent_index": 2839 - }, - "name": "bytes", - "type_description": { - "type_identifier": "t_bytes", - "type_string": "bytes" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "type_string": "contract TransparentUpgradeableProxy" - }, - { - "type_identifier": "t_address", - "type_string": "address" - }, - { - "type_identifier": "t_bytes", - "type_string": "bytes" - } - ] - }, - "return_parameters": { - "id": 2843, - "node_type": 43, - "src": { - "id": 2822, - "line": 1014, - "column": 4, - "start": 36755, - "end": 36968, - "length": 214, - "parent_index": 2821 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 2641, - "type_description": { - "type_identifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$$_t_address$$_t_bytes", - "type_string": "function(contract TransparentUpgradeableProxy,address,bytes)" - } - } - ], - "linearized_base_contracts": [ - 1771, - 2641, - 2639, - 2640 - ], - "base_contracts": [ - { - "id": 2642, - "node_type": 62, - "src": { - "id": 2643, - "line": 952, - "column": 23, - "start": 34619, - "end": 34625, - "length": 7, - "parent_index": 2641 - }, - "base_name": { - "id": 2644, - "node_type": 52, - "src": { - "id": 2645, - "line": 952, - "column": 23, - "start": 34619, - "end": 34625, - "length": 7, - "parent_index": 2641 - }, - "name": "Ownable", - "referenced_declaration": 1771 - } - } - ], - "contract_dependencies": [ - 1771, - 2639, - 2640 - ] - } - ], - "src": { - "id": 2601, - "line": 952, - "column": 0, - "start": 34596, - "end": 36970, - "length": 2375, - "parent_index": 118 - } + "id": 2600, + "base_contracts": [ + { + "id": 2642, + "node_type": 62, + "src": { + "id": 2643, + "line": 952, + "column": 23, + "start": 34619, + "end": 34625, + "length": 7, + "parent_index": 2641 + }, + "base_name": { + "id": 2644, + "node_type": 52, + "src": { + "id": 2645, + "line": 952, + "column": 23, + "start": 34619, + "end": 34625, + "length": 7, + "parent_index": 2641 + }, + "name": "Ownable", + "referenced_declaration": 1771 + } + } + ], + "license": "MIT", + "exported_symbols": [ + { + "id": 2600, + "name": "ProxyAdmin", + "absolute_path": "ProxyAdmin.sol" + }, + { + "id": 1771, + "name": "Ownable", + "absolute_path": "Ownable.sol" + }, + { + "id": 1771, + "name": "Ownable", + "absolute_path": "Ownable.sol" + }, + { + "id": 2272, + "name": "TransparentUpgradeableProxy", + "absolute_path": "TransparentUpgradeableProxy.sol" + } + ], + "absolute_path": "ProxyAdmin.sol", + "name": "ProxyAdmin", + "node_type": 1, + "nodes": [ + { + "id": 2624, + "node_type": 10, + "src": { + "id": 2625, + "line": 943, + "column": 0, + "start": 34262, + "end": 34284, + "length": 23, + "parent_index": 2600 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 2639, + "node_type": 29, + "src": { + "id": 0, + "line": 945, + "column": 0, + "start": 34287, + "end": 34329, + "length": 43, + "parent_index": 2600 + }, + "absolute_path": "TransparentUpgradeableProxy.sol", + "file": "./TransparentUpgradeableProxy.sol", + "scope": 2600, + "unit_alias": "", + "source_unit": 2272 + }, + { + "id": 2640, + "node_type": 29, + "src": { + "id": 0, + "line": 946, + "column": 0, + "start": 34331, + "end": 34364, + "length": 34, + "parent_index": 2600 + }, + "absolute_path": "Ownable.sol", + "file": "../../access/Ownable.sol", + "scope": 2600, + "unit_alias": "", + "source_unit": 2272 + }, + { + "id": 2641, + "name": "ProxyAdmin", + "node_type": 35, + "src": { + "id": 0, + "line": 952, + "column": 0, + "start": 34596, + "end": 36970, + "length": 2375, + "parent_index": 2600 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 2647, + "name": "getProxyImplementation", + "node_type": 42, + "kind": 41, + "src": { + "id": 2648, + "line": 961, + "column": 4, + "start": 34797, + "end": 35233, + "length": 437, + "parent_index": 2641 + }, + "body": { + "id": 2663, + "node_type": 46, + "kind": 0, + "src": { + "id": 2664, + "line": 961, + "column": 109, + "start": 34902, + "end": 35233, + "length": 332, + "parent_index": 2647 + }, + "implemented": true, + "statements": [ + { + "id": 2665, + "node_type": 44, + "src": { + "id": 2666, + "line": 964, + "column": 8, + "start": 35069, + "end": 35151, + "length": 83, + "parent_index": 2663 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 2667, + "node_type": 24, + "kind": 24, + "src": { + "id": 2668, + "line": 964, + "column": 50, + "start": 35111, + "end": 35150, + "length": 40, + "parent_index": 2665 + }, + "argument_types": [ + { + "type_identifier": "t_string_hex_literal", + "type_string": "literal_hex_string hex\"5c60da1b\"" + } + ], + "arguments": [ + { + "id": 2679, + "node_type": 17, + "kind": 65, + "value": "hex5c60da1b", + "hex_value": "6865783563363064613162", + "src": { + "id": 2680, + "line": 964, + "column": 76, + "start": 35137, + "end": 35149, + "length": 13, + "parent_index": 2667 + }, + "type_description": { + "type_identifier": "t_string_hex_literal", + "type_string": "literal_hex_string hex\"5c60da1b\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 2669, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2670, + "line": 964, + "column": 50, + "start": 35111, + "end": 35135, + "length": 25, + "parent_index": 2667 + }, + "expression": { + "id": 2671, + "node_type": 24, + "kind": 24, + "src": { + "id": 2672, + "line": 964, + "column": 50, + "start": 35111, + "end": 35124, + "length": 14, + "parent_index": 2669 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + } + ], + "arguments": [ + { + "id": 2677, + "node_type": 16, + "src": { + "id": 2678, + "line": 964, + "column": 58, + "start": 35119, + "end": 35123, + "length": 5, + "parent_index": 2671 + }, + "name": "proxy", + "type_description": { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + }, + "overloaded_declarations": [], + "referenced_declaration": 2677, + "is_pure": false + } + ], + "expression": { + "id": 2673, + "node_type": 16, + "src": { + "id": 2674, + "line": 964, + "column": 50, + "start": 35111, + "end": 35117, + "length": 7, + "parent_index": 2671 + }, + "name": "address", + "type_name": { + "id": 2675, + "node_type": 30, + "src": { + "id": 2676, + "line": 964, + "column": 50, + "start": 35111, + "end": 35117, + "length": 7, + "parent_index": 2673 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "member_name": "staticcall", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_string_hex_literal$", + "type_string": "function(literal_hex_string hex\"5c60da1b\")" + } + } + }, + { + "id": 2681, + "node_type": 24, + "kind": 24, + "src": { + "id": 2682, + "line": 965, + "column": 8, + "start": 35161, + "end": 35176, + "length": 16, + "parent_index": 2663 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 2685, + "node_type": 16, + "src": { + "id": 2686, + "line": 965, + "column": 16, + "start": 35169, + "end": 35175, + "length": 7, + "parent_index": 2681 + }, + "name": "success", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 2683, + "node_type": 16, + "src": { + "id": 2684, + "line": 965, + "column": 8, + "start": 35161, + "end": 35167, + "length": 7, + "parent_index": 2681 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + { + "id": 2687, + "node_type": 47, + "src": { + "id": 2688, + "line": 966, + "column": 8, + "start": 35187, + "end": 35227, + "length": 41, + "parent_index": 2647 + }, + "function_return_parameters": 2647, + "expression": { + "id": 2689, + "node_type": 24, + "kind": 24, + "src": { + "id": 2690, + "line": 966, + "column": 15, + "start": 35194, + "end": 35226, + "length": 33, + "parent_index": 2663 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_tuple_$_t_address$", + "type_string": "tuple(address)" + } + ], + "arguments": [ + { + "id": 2695, + "node_type": 16, + "src": { + "id": 2696, + "line": 966, + "column": 26, + "start": 35205, + "end": 35214, + "length": 10, + "parent_index": 2689 + }, + "name": "returndata", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 2697, + "node_type": 60, + "src": { + "id": 2698, + "line": 966, + "column": 38, + "start": 35217, + "end": 35225, + "length": 9, + "parent_index": 2689 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 2699, + "node_type": 16, + "src": { + "id": 2700, + "line": 966, + "column": 39, + "start": 35218, + "end": 35224, + "length": 7, + "parent_index": 2697 + }, + "name": "address", + "type_name": { + "id": 2701, + "node_type": 30, + "src": { + "id": 2702, + "line": 966, + "column": 39, + "start": 35218, + "end": 35224, + "length": 7, + "parent_index": 2699 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_address$", + "type_string": "tuple(address)" + } + } + ], + "expression": { + "id": 2691, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2692, + "line": 966, + "column": 15, + "start": 35194, + "end": 35203, + "length": 10, + "parent_index": 2689 + }, + "expression": { + "id": 2693, + "node_type": 16, + "src": { + "id": 2694, + "line": 966, + "column": 15, + "start": 35194, + "end": 35196, + "length": 3, + "parent_index": 2691 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "decode", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_tuple_$_t_address$", + "type_string": "function(function(),tuple(address))" + } + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2649, + "node_type": 43, + "src": { + "id": 2650, + "line": 961, + "column": 36, + "start": 34829, + "end": 34861, + "length": 33, + "parent_index": 2647 + }, + "parameters": [ + { + "id": 2651, + "node_type": 44, + "src": { + "id": 2652, + "line": 961, + "column": 36, + "start": 34829, + "end": 34861, + "length": 33, + "parent_index": 2649 + }, + "scope": 2647, + "name": "proxy", + "type_name": { + "id": 2653, + "node_type": 69, + "src": { + "id": 2654, + "line": 961, + "column": 36, + "start": 34829, + "end": 34855, + "length": 27, + "parent_index": 2651 + }, + "type_description": { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + }, + "path_node": { + "id": 2655, + "name": "TransparentUpgradeableProxy", + "node_type": 52, + "referenced_declaration": 2272, + "src": { + "id": 2656, + "line": 961, + "column": 36, + "start": 34829, + "end": 34855, + "length": 27, + "parent_index": 2653 + } + }, + "referenced_declaration": 2272 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + } + ] + }, + "return_parameters": { + "id": 2657, + "node_type": 43, + "src": { + "id": 2658, + "line": 961, + "column": 100, + "start": 34893, + "end": 34899, + "length": 7, + "parent_index": 2647 + }, + "parameters": [ + { + "id": 2659, + "node_type": 44, + "src": { + "id": 2660, + "line": 961, + "column": 100, + "start": 34893, + "end": 34899, + "length": 7, + "parent_index": 2657 + }, + "scope": 2647, + "name": "", + "type_name": { + "id": 2661, + "node_type": 30, + "src": { + "id": 2662, + "line": 961, + "column": 100, + "start": 34893, + "end": 34899, + "length": 7, + "parent_index": 2659 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 2641, + "type_description": { + "type_identifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$", + "type_string": "function(contract TransparentUpgradeableProxy)" + } + }, + { + "id": 2704, + "name": "getProxyAdmin", + "node_type": 42, + "kind": 41, + "src": { + "id": 2705, + "line": 976, + "column": 4, + "start": 35394, + "end": 35812, + "length": 419, + "parent_index": 2641 + }, + "body": { + "id": 2720, + "node_type": 46, + "kind": 0, + "src": { + "id": 2721, + "line": 976, + "column": 100, + "start": 35490, + "end": 35812, + "length": 323, + "parent_index": 2704 + }, + "implemented": true, + "statements": [ + { + "id": 2722, + "node_type": 44, + "src": { + "id": 2723, + "line": 979, + "column": 8, + "start": 35648, + "end": 35730, + "length": 83, + "parent_index": 2720 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 2724, + "node_type": 24, + "kind": 24, + "src": { + "id": 2725, + "line": 979, + "column": 50, + "start": 35690, + "end": 35729, + "length": 40, + "parent_index": 2722 + }, + "argument_types": [ + { + "type_identifier": "t_string_hex_literal", + "type_string": "literal_hex_string hex\"f851a440\"" + } + ], + "arguments": [ + { + "id": 2736, + "node_type": 17, + "kind": 65, + "value": "hexf851a440", + "hex_value": "6865786638353161343430", + "src": { + "id": 2737, + "line": 979, + "column": 76, + "start": 35716, + "end": 35728, + "length": 13, + "parent_index": 2724 + }, + "type_description": { + "type_identifier": "t_string_hex_literal", + "type_string": "literal_hex_string hex\"f851a440\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 2726, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2727, + "line": 979, + "column": 50, + "start": 35690, + "end": 35714, + "length": 25, + "parent_index": 2724 + }, + "expression": { + "id": 2728, + "node_type": 24, + "kind": 24, + "src": { + "id": 2729, + "line": 979, + "column": 50, + "start": 35690, + "end": 35703, + "length": 14, + "parent_index": 2726 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + } + ], + "arguments": [ + { + "id": 2734, + "node_type": 16, + "src": { + "id": 2735, + "line": 979, + "column": 58, + "start": 35698, + "end": 35702, + "length": 5, + "parent_index": 2728 + }, + "name": "proxy", + "type_description": { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + }, + "overloaded_declarations": [], + "referenced_declaration": 2734, + "is_pure": false + } + ], + "expression": { + "id": 2730, + "node_type": 16, + "src": { + "id": 2731, + "line": 979, + "column": 50, + "start": 35690, + "end": 35696, + "length": 7, + "parent_index": 2728 + }, + "name": "address", + "type_name": { + "id": 2732, + "node_type": 30, + "src": { + "id": 2733, + "line": 979, + "column": 50, + "start": 35690, + "end": 35696, + "length": 7, + "parent_index": 2730 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "member_name": "staticcall", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_string_hex_literal$", + "type_string": "function(literal_hex_string hex\"f851a440\")" + } + } + }, + { + "id": 2738, + "node_type": 24, + "kind": 24, + "src": { + "id": 2739, + "line": 980, + "column": 8, + "start": 35740, + "end": 35755, + "length": 16, + "parent_index": 2720 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 2742, + "node_type": 16, + "src": { + "id": 2743, + "line": 980, + "column": 16, + "start": 35748, + "end": 35754, + "length": 7, + "parent_index": 2738 + }, + "name": "success", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 2740, + "node_type": 16, + "src": { + "id": 2741, + "line": 980, + "column": 8, + "start": 35740, + "end": 35746, + "length": 7, + "parent_index": 2738 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + { + "id": 2744, + "node_type": 47, + "src": { + "id": 2745, + "line": 981, + "column": 8, + "start": 35766, + "end": 35806, + "length": 41, + "parent_index": 2704 + }, + "function_return_parameters": 2704, + "expression": { + "id": 2746, + "node_type": 24, + "kind": 24, + "src": { + "id": 2747, + "line": 981, + "column": 15, + "start": 35773, + "end": 35805, + "length": 33, + "parent_index": 2720 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_tuple_$_t_address$", + "type_string": "tuple(address)" + } + ], + "arguments": [ + { + "id": 2752, + "node_type": 16, + "src": { + "id": 2753, + "line": 981, + "column": 26, + "start": 35784, + "end": 35793, + "length": 10, + "parent_index": 2746 + }, + "name": "returndata", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 2754, + "node_type": 60, + "src": { + "id": 2755, + "line": 981, + "column": 38, + "start": 35796, + "end": 35804, + "length": 9, + "parent_index": 2746 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 2756, + "node_type": 16, + "src": { + "id": 2757, + "line": 981, + "column": 39, + "start": 35797, + "end": 35803, + "length": 7, + "parent_index": 2754 + }, + "name": "address", + "type_name": { + "id": 2758, + "node_type": 30, + "src": { + "id": 2759, + "line": 981, + "column": 39, + "start": 35797, + "end": 35803, + "length": 7, + "parent_index": 2756 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_address$", + "type_string": "tuple(address)" + } + } + ], + "expression": { + "id": 2748, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2749, + "line": 981, + "column": 15, + "start": 35773, + "end": 35782, + "length": 10, + "parent_index": 2746 + }, + "expression": { + "id": 2750, + "node_type": 16, + "src": { + "id": 2751, + "line": 981, + "column": 15, + "start": 35773, + "end": 35775, + "length": 3, + "parent_index": 2748 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "decode", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_tuple_$_t_address$", + "type_string": "function(function(),tuple(address))" + } + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2706, + "node_type": 43, + "src": { + "id": 2707, + "line": 976, + "column": 27, + "start": 35417, + "end": 35449, + "length": 33, + "parent_index": 2704 + }, + "parameters": [ + { + "id": 2708, + "node_type": 44, + "src": { + "id": 2709, + "line": 976, + "column": 27, + "start": 35417, + "end": 35449, + "length": 33, + "parent_index": 2706 + }, + "scope": 2704, + "name": "proxy", + "type_name": { + "id": 2710, + "node_type": 69, + "src": { + "id": 2711, + "line": 976, + "column": 27, + "start": 35417, + "end": 35443, + "length": 27, + "parent_index": 2708 + }, + "type_description": { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + }, + "path_node": { + "id": 2712, + "name": "TransparentUpgradeableProxy", + "node_type": 52, + "referenced_declaration": 2272, + "src": { + "id": 2713, + "line": 976, + "column": 27, + "start": 35417, + "end": 35443, + "length": 27, + "parent_index": 2710 + } + }, + "referenced_declaration": 2272 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + } + ] + }, + "return_parameters": { + "id": 2714, + "node_type": 43, + "src": { + "id": 2715, + "line": 976, + "column": 91, + "start": 35481, + "end": 35487, + "length": 7, + "parent_index": 2704 + }, + "parameters": [ + { + "id": 2716, + "node_type": 44, + "src": { + "id": 2717, + "line": 976, + "column": 91, + "start": 35481, + "end": 35487, + "length": 7, + "parent_index": 2714 + }, + "scope": 2704, + "name": "", + "type_name": { + "id": 2718, + "node_type": 30, + "src": { + "id": 2719, + "line": 976, + "column": 91, + "start": 35481, + "end": 35487, + "length": 7, + "parent_index": 2716 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 2641, + "type_description": { + "type_identifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$", + "type_string": "function(contract TransparentUpgradeableProxy)" + } + }, + { + "id": 2761, + "name": "changeProxyAdmin", + "node_type": 42, + "kind": 41, + "src": { + "id": 2762, + "line": 991, + "column": 4, + "start": 35987, + "end": 36134, + "length": 148, + "parent_index": 2641 + }, + "body": { + "id": 2780, + "node_type": 46, + "kind": 0, + "src": { + "id": 2781, + "line": 991, + "column": 108, + "start": 36091, + "end": 36134, + "length": 44, + "parent_index": 2761 + }, + "implemented": true, + "statements": [ + { + "id": 2782, + "node_type": 24, + "kind": 24, + "src": { + "id": 2783, + "line": 992, + "column": 8, + "start": 36101, + "end": 36127, + "length": 27, + "parent_index": 2780 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 2788, + "node_type": 16, + "src": { + "id": 2789, + "line": 992, + "column": 26, + "start": 36119, + "end": 36126, + "length": 8, + "parent_index": 2782 + }, + "name": "newAdmin", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2788, + "is_pure": false + } + ], + "expression": { + "id": 2784, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2785, + "line": 992, + "column": 8, + "start": 36101, + "end": 36117, + "length": 17, + "parent_index": 2782 + }, + "expression": { + "id": 2786, + "node_type": 16, + "src": { + "id": 2787, + "line": 992, + "column": 8, + "start": 36101, + "end": 36105, + "length": 5, + "parent_index": 2784 + }, + "name": "proxy", + "type_description": { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + }, + "overloaded_declarations": [], + "referenced_declaration": 2786, + "is_pure": false + }, + "member_name": "changeAdmin", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 4, + "virtual": true, + "modifiers": [ + { + "id": 2763, + "name": "onlyOwner", + "node_type": 72, + "kind": 72, + "src": { + "id": 2764, + "line": 991, + "column": 98, + "start": 36081, + "end": 36089, + "length": 9, + "parent_index": 2761 + }, + "argument_types": [], + "arguments": [], + "modifier_name": { + "id": 2765, + "name": "onlyOwner", + "node_type": 0, + "src": { + "id": 2766, + "line": 991, + "column": 98, + "start": 36081, + "end": 36089, + "length": 9, + "parent_index": 2763 + } + } + } + ], + "overrides": [], + "parameters": { + "id": 2767, + "node_type": 43, + "src": { + "id": 2768, + "line": 991, + "column": 30, + "start": 36013, + "end": 36063, + "length": 51, + "parent_index": 2761 + }, + "parameters": [ + { + "id": 2769, + "node_type": 44, + "src": { + "id": 2770, + "line": 991, + "column": 30, + "start": 36013, + "end": 36045, + "length": 33, + "parent_index": 2767 + }, + "scope": 2761, + "name": "proxy", + "type_name": { + "id": 2771, + "node_type": 69, + "src": { + "id": 2772, + "line": 991, + "column": 30, + "start": 36013, + "end": 36039, + "length": 27, + "parent_index": 2769 + }, + "type_description": { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + }, + "path_node": { + "id": 2773, + "name": "TransparentUpgradeableProxy", + "node_type": 52, + "referenced_declaration": 2272, + "src": { + "id": 2774, + "line": 991, + "column": 30, + "start": 36013, + "end": 36039, + "length": 27, + "parent_index": 2771 + } + }, + "referenced_declaration": 2272 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 2775, + "node_type": 44, + "src": { + "id": 2776, + "line": 991, + "column": 65, + "start": 36048, + "end": 36063, + "length": 16, + "parent_index": 2767 + }, + "scope": 2761, + "name": "newAdmin", + "type_name": { + "id": 2777, + "node_type": 30, + "src": { + "id": 2778, + "line": 991, + "column": 65, + "start": 36048, + "end": 36054, + "length": 7, + "parent_index": 2775 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 2779, + "node_type": 43, + "src": { + "id": 2762, + "line": 991, + "column": 4, + "start": 35987, + "end": 36134, + "length": 148, + "parent_index": 2761 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2641, + "type_description": { + "type_identifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$_t_address$", + "type_string": "function(contract TransparentUpgradeableProxy,address)" + } + }, + { + "id": 2791, + "name": "upgrade", + "node_type": 42, + "kind": 41, + "src": { + "id": 2792, + "line": 1002, + "column": 4, + "start": 36340, + "end": 36488, + "length": 149, + "parent_index": 2641 + }, + "body": { + "id": 2810, + "node_type": 46, + "kind": 0, + "src": { + "id": 2811, + "line": 1002, + "column": 105, + "start": 36441, + "end": 36488, + "length": 48, + "parent_index": 2791 + }, + "implemented": true, + "statements": [ + { + "id": 2812, + "node_type": 24, + "kind": 24, + "src": { + "id": 2813, + "line": 1003, + "column": 8, + "start": 36451, + "end": 36481, + "length": 31, + "parent_index": 2810 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 2818, + "node_type": 16, + "src": { + "id": 2819, + "line": 1003, + "column": 24, + "start": 36467, + "end": 36480, + "length": 14, + "parent_index": 2812 + }, + "name": "implementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2818, + "is_pure": false + } + ], + "expression": { + "id": 2814, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2815, + "line": 1003, + "column": 8, + "start": 36451, + "end": 36465, + "length": 15, + "parent_index": 2812 + }, + "expression": { + "id": 2816, + "node_type": 16, + "src": { + "id": 2817, + "line": 1003, + "column": 8, + "start": 36451, + "end": 36455, + "length": 5, + "parent_index": 2814 + }, + "name": "proxy", + "type_description": { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + }, + "overloaded_declarations": [], + "referenced_declaration": 2816, + "is_pure": false + }, + "member_name": "upgradeTo", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 4, + "virtual": true, + "modifiers": [ + { + "id": 2793, + "name": "onlyOwner", + "node_type": 72, + "kind": 72, + "src": { + "id": 2794, + "line": 1002, + "column": 95, + "start": 36431, + "end": 36439, + "length": 9, + "parent_index": 2791 + }, + "argument_types": [], + "arguments": [], + "modifier_name": { + "id": 2795, + "name": "onlyOwner", + "node_type": 0, + "src": { + "id": 2796, + "line": 1002, + "column": 95, + "start": 36431, + "end": 36439, + "length": 9, + "parent_index": 2793 + } + } + } + ], + "overrides": [], + "parameters": { + "id": 2797, + "node_type": 43, + "src": { + "id": 2798, + "line": 1002, + "column": 21, + "start": 36357, + "end": 36413, + "length": 57, + "parent_index": 2791 + }, + "parameters": [ + { + "id": 2799, + "node_type": 44, + "src": { + "id": 2800, + "line": 1002, + "column": 21, + "start": 36357, + "end": 36389, + "length": 33, + "parent_index": 2797 + }, + "scope": 2791, + "name": "proxy", + "type_name": { + "id": 2801, + "node_type": 69, + "src": { + "id": 2802, + "line": 1002, + "column": 21, + "start": 36357, + "end": 36383, + "length": 27, + "parent_index": 2799 + }, + "type_description": { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + }, + "path_node": { + "id": 2803, + "name": "TransparentUpgradeableProxy", + "node_type": 52, + "referenced_declaration": 2272, + "src": { + "id": 2804, + "line": 1002, + "column": 21, + "start": 36357, + "end": 36383, + "length": 27, + "parent_index": 2801 + } + }, + "referenced_declaration": 2272 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 2805, + "node_type": 44, + "src": { + "id": 2806, + "line": 1002, + "column": 56, + "start": 36392, + "end": 36413, + "length": 22, + "parent_index": 2797 + }, + "scope": 2791, + "name": "implementation", + "type_name": { + "id": 2807, + "node_type": 30, + "src": { + "id": 2808, + "line": 1002, + "column": 56, + "start": 36392, + "end": 36398, + "length": 7, + "parent_index": 2805 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 2809, + "node_type": 43, + "src": { + "id": 2792, + "line": 1002, + "column": 4, + "start": 36340, + "end": 36488, + "length": 149, + "parent_index": 2791 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2641, + "type_description": { + "type_identifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$_t_address$", + "type_string": "function(contract TransparentUpgradeableProxy,address)" + } + }, + { + "id": 2821, + "name": "upgradeAndCall", + "node_type": 42, + "kind": 41, + "src": { + "id": 2822, + "line": 1014, + "column": 4, + "start": 36755, + "end": 36968, + "length": 214, + "parent_index": 2641 + }, + "body": { + "id": 2844, + "node_type": 46, + "kind": 0, + "src": { + "id": 2845, + "line": 1014, + "column": 139, + "start": 36890, + "end": 36968, + "length": 79, + "parent_index": 2821 + }, + "implemented": true, + "statements": [ + { + "id": 2846, + "node_type": 24, + "kind": 24, + "src": { + "id": 2847, + "line": 1015, + "column": 8, + "start": 36900, + "end": 36961, + "length": 62, + "parent_index": 2844 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ], + "arguments": [ + { + "id": 2854, + "node_type": 16, + "src": { + "id": 2855, + "line": 1015, + "column": 49, + "start": 36941, + "end": 36954, + "length": 14, + "parent_index": 2846 + }, + "name": "implementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2854, + "is_pure": false + }, + { + "id": 2856, + "node_type": 16, + "src": { + "id": 2857, + "line": 1015, + "column": 65, + "start": 36957, + "end": 36960, + "length": 4, + "parent_index": 2846 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 2856, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 2848, + "node_type": 93, + "kind": 93, + "src": { + "id": 2849, + "line": 1015, + "column": 8, + "start": 36900, + "end": 36939, + "length": 40, + "parent_index": 2846 + }, + "expression": { + "id": 2850, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2851, + "line": 1015, + "column": 8, + "start": 36900, + "end": 36921, + "length": 22, + "parent_index": 2848 + }, + "expression": { + "id": 2852, + "node_type": 16, + "src": { + "id": 2853, + "line": 1015, + "column": 8, + "start": 36900, + "end": 36904, + "length": 5, + "parent_index": 2850 + }, + "name": "proxy", + "type_description": { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + }, + "overloaded_declarations": [], + "referenced_declaration": 2852, + "is_pure": false + }, + "member_name": "upgradeToAndCall", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + } + }, + "type_description": { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$", + "type_string": "function(address,bytes)" + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 3, + "virtual": true, + "modifiers": [ + { + "id": 2823, + "name": "onlyOwner", + "node_type": 72, + "kind": 72, + "src": { + "id": 2824, + "line": 1014, + "column": 129, + "start": 36880, + "end": 36888, + "length": 9, + "parent_index": 2821 + }, + "argument_types": [], + "arguments": [], + "modifier_name": { + "id": 2825, + "name": "onlyOwner", + "node_type": 0, + "src": { + "id": 2826, + "line": 1014, + "column": 129, + "start": 36880, + "end": 36888, + "length": 9, + "parent_index": 2823 + } + } + } + ], + "overrides": [], + "parameters": { + "id": 2827, + "node_type": 43, + "src": { + "id": 2828, + "line": 1014, + "column": 28, + "start": 36779, + "end": 36854, + "length": 76, + "parent_index": 2821 + }, + "parameters": [ + { + "id": 2829, + "node_type": 44, + "src": { + "id": 2830, + "line": 1014, + "column": 28, + "start": 36779, + "end": 36811, + "length": 33, + "parent_index": 2827 + }, + "scope": 2821, + "name": "proxy", + "type_name": { + "id": 2831, + "node_type": 69, + "src": { + "id": 2832, + "line": 1014, + "column": 28, + "start": 36779, + "end": 36805, + "length": 27, + "parent_index": 2829 + }, + "type_description": { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + }, + "path_node": { + "id": 2833, + "name": "TransparentUpgradeableProxy", + "node_type": 52, + "referenced_declaration": 2272, + "src": { + "id": 2834, + "line": 1014, + "column": 28, + "start": 36779, + "end": 36805, + "length": 27, + "parent_index": 2831 + } + }, + "referenced_declaration": 2272 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 2835, + "node_type": 44, + "src": { + "id": 2836, + "line": 1014, + "column": 63, + "start": 36814, + "end": 36835, + "length": 22, + "parent_index": 2827 + }, + "scope": 2821, + "name": "implementation", + "type_name": { + "id": 2837, + "node_type": 30, + "src": { + "id": 2838, + "line": 1014, + "column": 63, + "start": 36814, + "end": 36820, + "length": 7, + "parent_index": 2835 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2839, + "node_type": 44, + "src": { + "id": 2840, + "line": 1014, + "column": 87, + "start": 36838, + "end": 36854, + "length": 17, + "parent_index": 2827 + }, + "scope": 2821, + "name": "data", + "type_name": { + "id": 2841, + "node_type": 30, + "src": { + "id": 2842, + "line": 1014, + "column": 87, + "start": 36838, + "end": 36842, + "length": 5, + "parent_index": 2839 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "type_string": "contract TransparentUpgradeableProxy" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 2843, + "node_type": 43, + "src": { + "id": 2822, + "line": 1014, + "column": 4, + "start": 36755, + "end": 36968, + "length": 214, + "parent_index": 2821 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2641, + "type_description": { + "type_identifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$_t_address$_t_bytes$", + "type_string": "function(contract TransparentUpgradeableProxy,address,bytes)" + } + } + ], + "linearized_base_contracts": [ + 1771, + 2641, + 2639, + 2640 + ], + "base_contracts": [ + { + "id": 2642, + "node_type": 62, + "src": { + "id": 2643, + "line": 952, + "column": 23, + "start": 34619, + "end": 34625, + "length": 7, + "parent_index": 2641 + }, + "base_name": { + "id": 2644, + "node_type": 52, + "src": { + "id": 2645, + "line": 952, + "column": 23, + "start": 34619, + "end": 34625, + "length": 7, + "parent_index": 2641 + }, + "name": "Ownable", + "referenced_declaration": 1771 + } + } + ], + "contract_dependencies": [ + 1771, + 2639, + 2640 + ] + } + ], + "src": { + "id": 2601, + "line": 952, + "column": 0, + "start": 34596, + "end": 36970, + "length": 2375, + "parent_index": 118 + } } \ No newline at end of file diff --git a/data/tests/contracts/cheelee/StorageSlot.solgo.ast.json b/data/tests/contracts/cheelee/StorageSlot.solgo.ast.json index 9e070b67..7af3f4cb 100644 --- a/data/tests/contracts/cheelee/StorageSlot.solgo.ast.json +++ b/data/tests/contracts/cheelee/StorageSlot.solgo.ast.json @@ -1,1181 +1,1181 @@ { - "id": 767, - "base_contracts": [], - "license": "MIT", - "exported_symbols": [ - { - "id": 767, - "name": "StorageSlot", - "absolute_path": "StorageSlot.sol" - } - ], - "absolute_path": "StorageSlot.sol", - "name": "StorageSlot", - "node_type": 1, - "nodes": [ - { - "id": 775, - "node_type": 10, - "src": { - "id": 776, - "line": 293, - "column": 0, - "start": 11425, - "end": 11447, - "length": 23, - "parent_index": 767 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 777, - "name": "StorageSlot", - "node_type": 35, - "src": { - "id": 0, - "line": 321, - "column": 0, - "start": 12599, - "end": 13817, - "length": 1219, - "parent_index": 767 - }, - "abstract": false, - "kind": 37, - "fully_implemented": true, - "nodes": [ - { - "id": 779, - "node_type": 67, - "src": { - "id": 780, - "line": 322, - "column": 4, - "start": 12625, - "end": 12673, - "length": 49, - "parent_index": 767 - }, - "name": "AddressSlot", - "canonical_name": "StorageSlot.AddressSlot", - "type_description": { - "type_identifier": "t_struct$_StorageSlot_AddressSlot_$779", - "type_string": "struct StorageSlot.AddressSlot" - }, - "members": [ - { - "id": 781, - "node_type": 44, - "src": { - "id": 782, - "line": 323, - "column": 8, - "start": 12654, - "end": 12667, - "length": 14, - "parent_index": 779 - }, - "scope": 777, - "name": "value", - "type_name": { - "id": 783, - "node_type": 30, - "src": { - "id": 784, - "line": 323, - "column": 8, - "start": 12654, - "end": 12660, - "length": 7, - "parent_index": 781 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "visibility": 1, - "state_mutability": 4 - } - ], - "visibility": 3, - "storage_location": 1 - }, - { - "id": 786, - "node_type": 67, - "src": { - "id": 787, - "line": 326, - "column": 4, - "start": 12680, - "end": 12725, - "length": 46, - "parent_index": 767 - }, - "name": "BooleanSlot", - "canonical_name": "StorageSlot.BooleanSlot", - "type_description": { - "type_identifier": "t_struct$_StorageSlot_BooleanSlot_$786", - "type_string": "struct StorageSlot.BooleanSlot" - }, - "members": [ - { - "id": 788, - "node_type": 44, - "src": { - "id": 789, - "line": 327, - "column": 8, - "start": 12709, - "end": 12719, - "length": 11, - "parent_index": 786 - }, - "scope": 777, - "name": "value", - "type_name": { - "id": 790, - "node_type": 30, - "src": { - "id": 791, - "line": 327, - "column": 8, - "start": 12709, - "end": 12712, - "length": 4, - "parent_index": 788 - }, - "name": "bool", - "type_description": { - "type_identifier": "t_bool", - "type_string": "bool" - }, - "referenced_declaration": 0 - }, - "visibility": 1, - "state_mutability": 1 - } - ], - "visibility": 3, - "storage_location": 1 - }, - { - "id": 793, - "node_type": 67, - "src": { - "id": 794, - "line": 330, - "column": 4, - "start": 12732, - "end": 12780, - "length": 49, - "parent_index": 767 - }, - "name": "Bytes32Slot", - "canonical_name": "StorageSlot.Bytes32Slot", - "type_description": { - "type_identifier": "t_struct$_StorageSlot_Bytes32Slot_$793", - "type_string": "struct StorageSlot.Bytes32Slot" - }, - "members": [ - { - "id": 795, - "node_type": 44, - "src": { - "id": 796, - "line": 331, - "column": 8, - "start": 12761, - "end": 12774, - "length": 14, - "parent_index": 793 - }, - "scope": 777, - "name": "value", - "type_name": { - "id": 797, - "node_type": 30, - "src": { - "id": 798, - "line": 331, - "column": 8, - "start": 12761, - "end": 12767, - "length": 7, - "parent_index": 795 - }, - "name": "bytes32", - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "referenced_declaration": 0 - }, - "visibility": 1, - "state_mutability": 1 - } - ], - "visibility": 3, - "storage_location": 1 - }, - { - "id": 800, - "node_type": 67, - "src": { - "id": 801, - "line": 334, - "column": 4, - "start": 12787, - "end": 12835, - "length": 49, - "parent_index": 767 - }, - "name": "Uint256Slot", - "canonical_name": "StorageSlot.Uint256Slot", - "type_description": { - "type_identifier": "t_struct$_StorageSlot_Uint256Slot_$800", - "type_string": "struct StorageSlot.Uint256Slot" - }, - "members": [ - { - "id": 802, - "node_type": 44, - "src": { - "id": 803, - "line": 335, - "column": 8, - "start": 12816, - "end": 12829, - "length": 14, - "parent_index": 800 - }, - "scope": 777, - "name": "value", - "type_name": { - "id": 804, - "node_type": 30, - "src": { - "id": 805, - "line": 335, - "column": 8, - "start": 12816, - "end": 12822, - "length": 7, - "parent_index": 802 - }, - "name": "uint256", - "type_description": { - "type_identifier": "t_uint256", - "type_string": "uint256" - }, - "referenced_declaration": 0 - }, - "visibility": 1, - "state_mutability": 1 - } - ], - "visibility": 3, - "storage_location": 1 - }, - { - "id": 807, - "name": "getAddressSlot", - "node_type": 42, - "kind": 41, - "src": { - "id": 808, - "line": 341, - "column": 4, - "start": 12934, - "end": 13080, - "length": 147, - "parent_index": 777 - }, - "body": { - "id": 823, - "node_type": 46, - "kind": 0, - "src": { - "id": 824, - "line": 341, - "column": 88, - "start": 13018, - "end": 13080, - "length": 63, - "parent_index": 807 - }, - "implemented": true, - "statements": [ - { - "id": 825, - "node_type": 89, - "src": { - "id": 826, - "line": 342, - "column": 8, - "start": 13028, - "end": 13074, - "length": 47, - "parent_index": 823 - }, - "body": { - "id": 828, - "node_type": 90, - "kind": 0, - "src": { - "id": 826, - "line": 342, - "column": 8, - "start": 13028, - "end": 13074, - "length": 47, - "parent_index": 825 - }, - "implemented": false, - "statements": [ - { - "id": 827, - "node_type": 91, - "src": { - "id": 829, - "line": 343, - "column": 12, - "start": 13051, - "end": 13064, - "length": 14, - "parent_index": 825 - }, - "body": [] - } - ] - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 809, - "node_type": 43, - "src": { - "id": 810, - "line": 341, - "column": 28, - "start": 12958, - "end": 12969, - "length": 12, - "parent_index": 807 - }, - "parameters": [ - { - "id": 811, - "node_type": 44, - "src": { - "id": 812, - "line": 341, - "column": 28, - "start": 12958, - "end": 12969, - "length": 12, - "parent_index": 809 - }, - "scope": 807, - "name": "slot", - "type_name": { - "id": 813, - "node_type": 30, - "src": { - "id": 814, - "line": 341, - "column": 28, - "start": 12958, - "end": 12964, - "length": 7, - "parent_index": 811 - }, - "name": "bytes32", - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - } - ] - }, - "return_parameters": { - "id": 815, - "node_type": 43, - "src": { - "id": 816, - "line": 341, - "column": 65, - "start": 12995, - "end": 13015, - "length": 21, - "parent_index": 807 - }, - "parameters": [ - { - "id": 817, - "node_type": 44, - "src": { - "id": 818, - "line": 341, - "column": 65, - "start": 12995, - "end": 13015, - "length": 21, - "parent_index": 815 - }, - "scope": 807, - "name": "r", - "type_name": { - "id": 819, - "node_type": 69, - "src": { - "id": 820, - "line": 341, - "column": 65, - "start": 12995, - "end": 13005, - "length": 11, - "parent_index": 817 - }, - "type_description": { - "type_identifier": "t_struct$_StorageSlot_AddressSlot_$779", - "type_string": "struct StorageSlot.AddressSlot" - }, - "path_node": { - "id": 821, - "name": "AddressSlot", - "node_type": 52, - "referenced_declaration": 779, - "src": { - "id": 822, - "line": 341, - "column": 65, - "start": 12995, - "end": 13005, - "length": 11, - "parent_index": 819 - } - }, - "referenced_declaration": 779 - }, - "storage_location": 3, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_struct$_StorageSlot_AddressSlot_$779", - "type_string": "struct StorageSlot.AddressSlot" - } - ] - }, - "scope": 777, - "type_description": { - "type_identifier": "t_function_$_t_bytes32", - "type_string": "function(bytes32)" - } - }, - { - "id": 831, - "name": "getBooleanSlot", - "node_type": 42, - "kind": 41, - "src": { - "id": 832, - "line": 350, - "column": 4, - "start": 13179, - "end": 13325, - "length": 147, - "parent_index": 777 - }, - "body": { - "id": 847, - "node_type": 46, - "kind": 0, - "src": { - "id": 848, - "line": 350, - "column": 88, - "start": 13263, - "end": 13325, - "length": 63, - "parent_index": 831 - }, - "implemented": true, - "statements": [ - { - "id": 849, - "node_type": 89, - "src": { - "id": 850, - "line": 351, - "column": 8, - "start": 13273, - "end": 13319, - "length": 47, - "parent_index": 847 - }, - "body": { - "id": 852, - "node_type": 90, - "kind": 0, - "src": { - "id": 850, - "line": 351, - "column": 8, - "start": 13273, - "end": 13319, - "length": 47, - "parent_index": 849 - }, - "implemented": false, - "statements": [ - { - "id": 851, - "node_type": 91, - "src": { - "id": 853, - "line": 352, - "column": 12, - "start": 13296, - "end": 13309, - "length": 14, - "parent_index": 849 - }, - "body": [] - } - ] - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 833, - "node_type": 43, - "src": { - "id": 834, - "line": 350, - "column": 28, - "start": 13203, - "end": 13214, - "length": 12, - "parent_index": 831 - }, - "parameters": [ - { - "id": 835, - "node_type": 44, - "src": { - "id": 836, - "line": 350, - "column": 28, - "start": 13203, - "end": 13214, - "length": 12, - "parent_index": 833 - }, - "scope": 831, - "name": "slot", - "type_name": { - "id": 837, - "node_type": 30, - "src": { - "id": 838, - "line": 350, - "column": 28, - "start": 13203, - "end": 13209, - "length": 7, - "parent_index": 835 - }, - "name": "bytes32", - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - } - ] - }, - "return_parameters": { - "id": 839, - "node_type": 43, - "src": { - "id": 840, - "line": 350, - "column": 65, - "start": 13240, - "end": 13260, - "length": 21, - "parent_index": 831 - }, - "parameters": [ - { - "id": 841, - "node_type": 44, - "src": { - "id": 842, - "line": 350, - "column": 65, - "start": 13240, - "end": 13260, - "length": 21, - "parent_index": 839 - }, - "scope": 831, - "name": "r", - "type_name": { - "id": 843, - "node_type": 69, - "src": { - "id": 844, - "line": 350, - "column": 65, - "start": 13240, - "end": 13250, - "length": 11, - "parent_index": 841 - }, - "type_description": { - "type_identifier": "t_struct$_StorageSlot_BooleanSlot_$786", - "type_string": "struct StorageSlot.BooleanSlot" - }, - "path_node": { - "id": 845, - "name": "BooleanSlot", - "node_type": 52, - "referenced_declaration": 786, - "src": { - "id": 846, - "line": 350, - "column": 65, - "start": 13240, - "end": 13250, - "length": 11, - "parent_index": 843 - } - }, - "referenced_declaration": 786 - }, - "storage_location": 3, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_struct$_StorageSlot_BooleanSlot_$786", - "type_string": "struct StorageSlot.BooleanSlot" - } - ] - }, - "scope": 777, - "type_description": { - "type_identifier": "t_function_$_t_bytes32", - "type_string": "function(bytes32)" - } - }, - { - "id": 855, - "name": "getBytes32Slot", - "node_type": 42, - "kind": 41, - "src": { - "id": 856, - "line": 359, - "column": 4, - "start": 13424, - "end": 13570, - "length": 147, - "parent_index": 777 - }, - "body": { - "id": 871, - "node_type": 46, - "kind": 0, - "src": { - "id": 872, - "line": 359, - "column": 88, - "start": 13508, - "end": 13570, - "length": 63, - "parent_index": 855 - }, - "implemented": true, - "statements": [ - { - "id": 873, - "node_type": 89, - "src": { - "id": 874, - "line": 360, - "column": 8, - "start": 13518, - "end": 13564, - "length": 47, - "parent_index": 871 - }, - "body": { - "id": 876, - "node_type": 90, - "kind": 0, - "src": { - "id": 874, - "line": 360, - "column": 8, - "start": 13518, - "end": 13564, - "length": 47, - "parent_index": 873 - }, - "implemented": false, - "statements": [ - { - "id": 875, - "node_type": 91, - "src": { - "id": 877, - "line": 361, - "column": 12, - "start": 13541, - "end": 13554, - "length": 14, - "parent_index": 873 - }, - "body": [] - } - ] - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 857, - "node_type": 43, - "src": { - "id": 858, - "line": 359, - "column": 28, - "start": 13448, - "end": 13459, - "length": 12, - "parent_index": 855 - }, - "parameters": [ - { - "id": 859, - "node_type": 44, - "src": { - "id": 860, - "line": 359, - "column": 28, - "start": 13448, - "end": 13459, - "length": 12, - "parent_index": 857 - }, - "scope": 855, - "name": "slot", - "type_name": { - "id": 861, - "node_type": 30, - "src": { - "id": 862, - "line": 359, - "column": 28, - "start": 13448, - "end": 13454, - "length": 7, - "parent_index": 859 - }, - "name": "bytes32", - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - } - ] - }, - "return_parameters": { - "id": 863, - "node_type": 43, - "src": { - "id": 864, - "line": 359, - "column": 65, - "start": 13485, - "end": 13505, - "length": 21, - "parent_index": 855 - }, - "parameters": [ - { - "id": 865, - "node_type": 44, - "src": { - "id": 866, - "line": 359, - "column": 65, - "start": 13485, - "end": 13505, - "length": 21, - "parent_index": 863 - }, - "scope": 855, - "name": "r", - "type_name": { - "id": 867, - "node_type": 69, - "src": { - "id": 868, - "line": 359, - "column": 65, - "start": 13485, - "end": 13495, - "length": 11, - "parent_index": 865 - }, - "type_description": { - "type_identifier": "t_struct$_StorageSlot_Bytes32Slot_$793", - "type_string": "struct StorageSlot.Bytes32Slot" - }, - "path_node": { - "id": 869, - "name": "Bytes32Slot", - "node_type": 52, - "referenced_declaration": 793, - "src": { - "id": 870, - "line": 359, - "column": 65, - "start": 13485, - "end": 13495, - "length": 11, - "parent_index": 867 - } - }, - "referenced_declaration": 793 - }, - "storage_location": 3, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_struct$_StorageSlot_Bytes32Slot_$793", - "type_string": "struct StorageSlot.Bytes32Slot" - } - ] - }, - "scope": 777, - "type_description": { - "type_identifier": "t_function_$_t_bytes32", - "type_string": "function(bytes32)" - } - }, - { - "id": 879, - "name": "getUint256Slot", - "node_type": 42, - "kind": 41, - "src": { - "id": 880, - "line": 368, - "column": 4, - "start": 13669, - "end": 13815, - "length": 147, - "parent_index": 777 - }, - "body": { - "id": 895, - "node_type": 46, - "kind": 0, - "src": { - "id": 896, - "line": 368, - "column": 88, - "start": 13753, - "end": 13815, - "length": 63, - "parent_index": 879 - }, - "implemented": true, - "statements": [ - { - "id": 897, - "node_type": 89, - "src": { - "id": 898, - "line": 369, - "column": 8, - "start": 13763, - "end": 13809, - "length": 47, - "parent_index": 895 - }, - "body": { - "id": 900, - "node_type": 90, - "kind": 0, - "src": { - "id": 898, - "line": 369, - "column": 8, - "start": 13763, - "end": 13809, - "length": 47, - "parent_index": 897 - }, - "implemented": false, - "statements": [ - { - "id": 899, - "node_type": 91, - "src": { - "id": 901, - "line": 370, - "column": 12, - "start": 13786, - "end": 13799, - "length": 14, - "parent_index": 897 - }, - "body": [] - } - ] - } - } - ] - }, - "implemented": true, - "visibility": 1, - "state_mutability": 6, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 881, - "node_type": 43, - "src": { - "id": 882, - "line": 368, - "column": 28, - "start": 13693, - "end": 13704, - "length": 12, - "parent_index": 879 - }, - "parameters": [ - { - "id": 883, - "node_type": 44, - "src": { - "id": 884, - "line": 368, - "column": 28, - "start": 13693, - "end": 13704, - "length": 12, - "parent_index": 881 - }, - "scope": 879, - "name": "slot", - "type_name": { - "id": 885, - "node_type": 30, - "src": { - "id": 886, - "line": 368, - "column": 28, - "start": 13693, - "end": 13699, - "length": 7, - "parent_index": 883 - }, - "name": "bytes32", - "type_description": { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - }, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_bytes32", - "type_string": "bytes32" - } - ] - }, - "return_parameters": { - "id": 887, - "node_type": 43, - "src": { - "id": 888, - "line": 368, - "column": 65, - "start": 13730, - "end": 13750, - "length": 21, - "parent_index": 879 - }, - "parameters": [ - { - "id": 889, - "node_type": 44, - "src": { - "id": 890, - "line": 368, - "column": 65, - "start": 13730, - "end": 13750, - "length": 21, - "parent_index": 887 - }, - "scope": 879, - "name": "r", - "type_name": { - "id": 891, - "node_type": 69, - "src": { - "id": 892, - "line": 368, - "column": 65, - "start": 13730, - "end": 13740, - "length": 11, - "parent_index": 889 - }, - "type_description": { - "type_identifier": "t_struct$_StorageSlot_Uint256Slot_$800", - "type_string": "struct StorageSlot.Uint256Slot" - }, - "path_node": { - "id": 893, - "name": "Uint256Slot", - "node_type": 52, - "referenced_declaration": 800, - "src": { - "id": 894, - "line": 368, - "column": 65, - "start": 13730, - "end": 13740, - "length": 11, - "parent_index": 891 - } - }, - "referenced_declaration": 800 - }, - "storage_location": 3, - "visibility": 1, - "state_mutability": 1 - } - ], - "parameter_types": [ - { - "type_identifier": "t_struct$_StorageSlot_Uint256Slot_$800", - "type_string": "struct StorageSlot.Uint256Slot" - } - ] - }, - "scope": 777, - "type_description": { - "type_identifier": "t_function_$_t_bytes32", - "type_string": "function(bytes32)" - } - } - ], - "linearized_base_contracts": [ - 777 - ], - "base_contracts": [], - "contract_dependencies": [], - "scope": 767 - } - ], - "src": { - "id": 768, - "line": 321, - "column": 0, - "start": 12599, - "end": 13817, - "length": 1219, - "parent_index": 118 - } + "id": 767, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 767, + "name": "StorageSlot", + "absolute_path": "StorageSlot.sol" + } + ], + "absolute_path": "StorageSlot.sol", + "name": "StorageSlot", + "node_type": 1, + "nodes": [ + { + "id": 775, + "node_type": 10, + "src": { + "id": 776, + "line": 293, + "column": 0, + "start": 11425, + "end": 11447, + "length": 23, + "parent_index": 767 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 777, + "name": "StorageSlot", + "node_type": 35, + "src": { + "id": 0, + "line": 321, + "column": 0, + "start": 12599, + "end": 13817, + "length": 1219, + "parent_index": 767 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 779, + "node_type": 67, + "src": { + "id": 780, + "line": 322, + "column": 4, + "start": 12625, + "end": 12673, + "length": 49, + "parent_index": 767 + }, + "name": "AddressSlot", + "canonical_name": "StorageSlot.AddressSlot", + "type_description": { + "type_identifier": "t_struct$_StorageSlot_AddressSlot_$779", + "type_string": "struct StorageSlot.AddressSlot" + }, + "members": [ + { + "id": 781, + "node_type": 44, + "src": { + "id": 782, + "line": 323, + "column": 8, + "start": 12654, + "end": 12667, + "length": 14, + "parent_index": 779 + }, + "scope": 777, + "name": "value", + "type_name": { + "id": 783, + "node_type": 30, + "src": { + "id": 784, + "line": 323, + "column": 8, + "start": 12654, + "end": 12660, + "length": 7, + "parent_index": 781 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 4 + } + ], + "visibility": 3, + "storage_location": 1 + }, + { + "id": 786, + "node_type": 67, + "src": { + "id": 787, + "line": 326, + "column": 4, + "start": 12680, + "end": 12725, + "length": 46, + "parent_index": 767 + }, + "name": "BooleanSlot", + "canonical_name": "StorageSlot.BooleanSlot", + "type_description": { + "type_identifier": "t_struct$_StorageSlot_BooleanSlot_$786", + "type_string": "struct StorageSlot.BooleanSlot" + }, + "members": [ + { + "id": 788, + "node_type": 44, + "src": { + "id": 789, + "line": 327, + "column": 8, + "start": 12709, + "end": 12719, + "length": 11, + "parent_index": 786 + }, + "scope": 777, + "name": "value", + "type_name": { + "id": 790, + "node_type": 30, + "src": { + "id": 791, + "line": 327, + "column": 8, + "start": 12709, + "end": 12712, + "length": 4, + "parent_index": 788 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + } + ], + "visibility": 3, + "storage_location": 1 + }, + { + "id": 793, + "node_type": 67, + "src": { + "id": 794, + "line": 330, + "column": 4, + "start": 12732, + "end": 12780, + "length": 49, + "parent_index": 767 + }, + "name": "Bytes32Slot", + "canonical_name": "StorageSlot.Bytes32Slot", + "type_description": { + "type_identifier": "t_struct$_StorageSlot_Bytes32Slot_$793", + "type_string": "struct StorageSlot.Bytes32Slot" + }, + "members": [ + { + "id": 795, + "node_type": 44, + "src": { + "id": 796, + "line": 331, + "column": 8, + "start": 12761, + "end": 12774, + "length": 14, + "parent_index": 793 + }, + "scope": 777, + "name": "value", + "type_name": { + "id": 797, + "node_type": 30, + "src": { + "id": 798, + "line": 331, + "column": 8, + "start": 12761, + "end": 12767, + "length": 7, + "parent_index": 795 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + } + ], + "visibility": 3, + "storage_location": 1 + }, + { + "id": 800, + "node_type": 67, + "src": { + "id": 801, + "line": 334, + "column": 4, + "start": 12787, + "end": 12835, + "length": 49, + "parent_index": 767 + }, + "name": "Uint256Slot", + "canonical_name": "StorageSlot.Uint256Slot", + "type_description": { + "type_identifier": "t_struct$_StorageSlot_Uint256Slot_$800", + "type_string": "struct StorageSlot.Uint256Slot" + }, + "members": [ + { + "id": 802, + "node_type": 44, + "src": { + "id": 803, + "line": 335, + "column": 8, + "start": 12816, + "end": 12829, + "length": 14, + "parent_index": 800 + }, + "scope": 777, + "name": "value", + "type_name": { + "id": 804, + "node_type": 30, + "src": { + "id": 805, + "line": 335, + "column": 8, + "start": 12816, + "end": 12822, + "length": 7, + "parent_index": 802 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + } + ], + "visibility": 3, + "storage_location": 1 + }, + { + "id": 807, + "name": "getAddressSlot", + "node_type": 42, + "kind": 41, + "src": { + "id": 808, + "line": 341, + "column": 4, + "start": 12934, + "end": 13080, + "length": 147, + "parent_index": 777 + }, + "body": { + "id": 823, + "node_type": 46, + "kind": 0, + "src": { + "id": 824, + "line": 341, + "column": 88, + "start": 13018, + "end": 13080, + "length": 63, + "parent_index": 807 + }, + "implemented": true, + "statements": [ + { + "id": 825, + "node_type": 89, + "src": { + "id": 826, + "line": 342, + "column": 8, + "start": 13028, + "end": 13074, + "length": 47, + "parent_index": 823 + }, + "body": { + "id": 828, + "node_type": 90, + "kind": 0, + "src": { + "id": 826, + "line": 342, + "column": 8, + "start": 13028, + "end": 13074, + "length": 47, + "parent_index": 825 + }, + "implemented": false, + "statements": [ + { + "id": 827, + "node_type": 91, + "src": { + "id": 829, + "line": 343, + "column": 12, + "start": 13051, + "end": 13064, + "length": 14, + "parent_index": 825 + }, + "body": [] + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 809, + "node_type": 43, + "src": { + "id": 810, + "line": 341, + "column": 28, + "start": 12958, + "end": 12969, + "length": 12, + "parent_index": 807 + }, + "parameters": [ + { + "id": 811, + "node_type": 44, + "src": { + "id": 812, + "line": 341, + "column": 28, + "start": 12958, + "end": 12969, + "length": 12, + "parent_index": 809 + }, + "scope": 807, + "name": "slot", + "type_name": { + "id": 813, + "node_type": 30, + "src": { + "id": 814, + "line": 341, + "column": 28, + "start": 12958, + "end": 12964, + "length": 7, + "parent_index": 811 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "return_parameters": { + "id": 815, + "node_type": 43, + "src": { + "id": 816, + "line": 341, + "column": 65, + "start": 12995, + "end": 13015, + "length": 21, + "parent_index": 807 + }, + "parameters": [ + { + "id": 817, + "node_type": 44, + "src": { + "id": 818, + "line": 341, + "column": 65, + "start": 12995, + "end": 13015, + "length": 21, + "parent_index": 815 + }, + "scope": 807, + "name": "r", + "type_name": { + "id": 819, + "node_type": 69, + "src": { + "id": 820, + "line": 341, + "column": 65, + "start": 12995, + "end": 13005, + "length": 11, + "parent_index": 817 + }, + "type_description": { + "type_identifier": "t_struct$_StorageSlot_AddressSlot_$779", + "type_string": "struct StorageSlot.AddressSlot" + }, + "path_node": { + "id": 821, + "name": "AddressSlot", + "node_type": 52, + "referenced_declaration": 779, + "src": { + "id": 822, + "line": 341, + "column": 65, + "start": 12995, + "end": 13005, + "length": 11, + "parent_index": 819 + } + }, + "referenced_declaration": 779 + }, + "storage_location": 3, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_struct$_StorageSlot_AddressSlot_$779", + "type_string": "struct StorageSlot.AddressSlot" + } + ] + }, + "scope": 777, + "type_description": { + "type_identifier": "t_function_$_t_bytes32$", + "type_string": "function(bytes32)" + } + }, + { + "id": 831, + "name": "getBooleanSlot", + "node_type": 42, + "kind": 41, + "src": { + "id": 832, + "line": 350, + "column": 4, + "start": 13179, + "end": 13325, + "length": 147, + "parent_index": 777 + }, + "body": { + "id": 847, + "node_type": 46, + "kind": 0, + "src": { + "id": 848, + "line": 350, + "column": 88, + "start": 13263, + "end": 13325, + "length": 63, + "parent_index": 831 + }, + "implemented": true, + "statements": [ + { + "id": 849, + "node_type": 89, + "src": { + "id": 850, + "line": 351, + "column": 8, + "start": 13273, + "end": 13319, + "length": 47, + "parent_index": 847 + }, + "body": { + "id": 852, + "node_type": 90, + "kind": 0, + "src": { + "id": 850, + "line": 351, + "column": 8, + "start": 13273, + "end": 13319, + "length": 47, + "parent_index": 849 + }, + "implemented": false, + "statements": [ + { + "id": 851, + "node_type": 91, + "src": { + "id": 853, + "line": 352, + "column": 12, + "start": 13296, + "end": 13309, + "length": 14, + "parent_index": 849 + }, + "body": [] + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 833, + "node_type": 43, + "src": { + "id": 834, + "line": 350, + "column": 28, + "start": 13203, + "end": 13214, + "length": 12, + "parent_index": 831 + }, + "parameters": [ + { + "id": 835, + "node_type": 44, + "src": { + "id": 836, + "line": 350, + "column": 28, + "start": 13203, + "end": 13214, + "length": 12, + "parent_index": 833 + }, + "scope": 831, + "name": "slot", + "type_name": { + "id": 837, + "node_type": 30, + "src": { + "id": 838, + "line": 350, + "column": 28, + "start": 13203, + "end": 13209, + "length": 7, + "parent_index": 835 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "return_parameters": { + "id": 839, + "node_type": 43, + "src": { + "id": 840, + "line": 350, + "column": 65, + "start": 13240, + "end": 13260, + "length": 21, + "parent_index": 831 + }, + "parameters": [ + { + "id": 841, + "node_type": 44, + "src": { + "id": 842, + "line": 350, + "column": 65, + "start": 13240, + "end": 13260, + "length": 21, + "parent_index": 839 + }, + "scope": 831, + "name": "r", + "type_name": { + "id": 843, + "node_type": 69, + "src": { + "id": 844, + "line": 350, + "column": 65, + "start": 13240, + "end": 13250, + "length": 11, + "parent_index": 841 + }, + "type_description": { + "type_identifier": "t_struct$_StorageSlot_BooleanSlot_$786", + "type_string": "struct StorageSlot.BooleanSlot" + }, + "path_node": { + "id": 845, + "name": "BooleanSlot", + "node_type": 52, + "referenced_declaration": 786, + "src": { + "id": 846, + "line": 350, + "column": 65, + "start": 13240, + "end": 13250, + "length": 11, + "parent_index": 843 + } + }, + "referenced_declaration": 786 + }, + "storage_location": 3, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_struct$_StorageSlot_BooleanSlot_$786", + "type_string": "struct StorageSlot.BooleanSlot" + } + ] + }, + "scope": 777, + "type_description": { + "type_identifier": "t_function_$_t_bytes32$", + "type_string": "function(bytes32)" + } + }, + { + "id": 855, + "name": "getBytes32Slot", + "node_type": 42, + "kind": 41, + "src": { + "id": 856, + "line": 359, + "column": 4, + "start": 13424, + "end": 13570, + "length": 147, + "parent_index": 777 + }, + "body": { + "id": 871, + "node_type": 46, + "kind": 0, + "src": { + "id": 872, + "line": 359, + "column": 88, + "start": 13508, + "end": 13570, + "length": 63, + "parent_index": 855 + }, + "implemented": true, + "statements": [ + { + "id": 873, + "node_type": 89, + "src": { + "id": 874, + "line": 360, + "column": 8, + "start": 13518, + "end": 13564, + "length": 47, + "parent_index": 871 + }, + "body": { + "id": 876, + "node_type": 90, + "kind": 0, + "src": { + "id": 874, + "line": 360, + "column": 8, + "start": 13518, + "end": 13564, + "length": 47, + "parent_index": 873 + }, + "implemented": false, + "statements": [ + { + "id": 875, + "node_type": 91, + "src": { + "id": 877, + "line": 361, + "column": 12, + "start": 13541, + "end": 13554, + "length": 14, + "parent_index": 873 + }, + "body": [] + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 857, + "node_type": 43, + "src": { + "id": 858, + "line": 359, + "column": 28, + "start": 13448, + "end": 13459, + "length": 12, + "parent_index": 855 + }, + "parameters": [ + { + "id": 859, + "node_type": 44, + "src": { + "id": 860, + "line": 359, + "column": 28, + "start": 13448, + "end": 13459, + "length": 12, + "parent_index": 857 + }, + "scope": 855, + "name": "slot", + "type_name": { + "id": 861, + "node_type": 30, + "src": { + "id": 862, + "line": 359, + "column": 28, + "start": 13448, + "end": 13454, + "length": 7, + "parent_index": 859 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "return_parameters": { + "id": 863, + "node_type": 43, + "src": { + "id": 864, + "line": 359, + "column": 65, + "start": 13485, + "end": 13505, + "length": 21, + "parent_index": 855 + }, + "parameters": [ + { + "id": 865, + "node_type": 44, + "src": { + "id": 866, + "line": 359, + "column": 65, + "start": 13485, + "end": 13505, + "length": 21, + "parent_index": 863 + }, + "scope": 855, + "name": "r", + "type_name": { + "id": 867, + "node_type": 69, + "src": { + "id": 868, + "line": 359, + "column": 65, + "start": 13485, + "end": 13495, + "length": 11, + "parent_index": 865 + }, + "type_description": { + "type_identifier": "t_struct$_StorageSlot_Bytes32Slot_$793", + "type_string": "struct StorageSlot.Bytes32Slot" + }, + "path_node": { + "id": 869, + "name": "Bytes32Slot", + "node_type": 52, + "referenced_declaration": 793, + "src": { + "id": 870, + "line": 359, + "column": 65, + "start": 13485, + "end": 13495, + "length": 11, + "parent_index": 867 + } + }, + "referenced_declaration": 793 + }, + "storage_location": 3, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_struct$_StorageSlot_Bytes32Slot_$793", + "type_string": "struct StorageSlot.Bytes32Slot" + } + ] + }, + "scope": 777, + "type_description": { + "type_identifier": "t_function_$_t_bytes32$", + "type_string": "function(bytes32)" + } + }, + { + "id": 879, + "name": "getUint256Slot", + "node_type": 42, + "kind": 41, + "src": { + "id": 880, + "line": 368, + "column": 4, + "start": 13669, + "end": 13815, + "length": 147, + "parent_index": 777 + }, + "body": { + "id": 895, + "node_type": 46, + "kind": 0, + "src": { + "id": 896, + "line": 368, + "column": 88, + "start": 13753, + "end": 13815, + "length": 63, + "parent_index": 879 + }, + "implemented": true, + "statements": [ + { + "id": 897, + "node_type": 89, + "src": { + "id": 898, + "line": 369, + "column": 8, + "start": 13763, + "end": 13809, + "length": 47, + "parent_index": 895 + }, + "body": { + "id": 900, + "node_type": 90, + "kind": 0, + "src": { + "id": 898, + "line": 369, + "column": 8, + "start": 13763, + "end": 13809, + "length": 47, + "parent_index": 897 + }, + "implemented": false, + "statements": [ + { + "id": 899, + "node_type": 91, + "src": { + "id": 901, + "line": 370, + "column": 12, + "start": 13786, + "end": 13799, + "length": 14, + "parent_index": 897 + }, + "body": [] + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 881, + "node_type": 43, + "src": { + "id": 882, + "line": 368, + "column": 28, + "start": 13693, + "end": 13704, + "length": 12, + "parent_index": 879 + }, + "parameters": [ + { + "id": 883, + "node_type": 44, + "src": { + "id": 884, + "line": 368, + "column": 28, + "start": 13693, + "end": 13704, + "length": 12, + "parent_index": 881 + }, + "scope": 879, + "name": "slot", + "type_name": { + "id": 885, + "node_type": 30, + "src": { + "id": 886, + "line": 368, + "column": 28, + "start": 13693, + "end": 13699, + "length": 7, + "parent_index": 883 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "return_parameters": { + "id": 887, + "node_type": 43, + "src": { + "id": 888, + "line": 368, + "column": 65, + "start": 13730, + "end": 13750, + "length": 21, + "parent_index": 879 + }, + "parameters": [ + { + "id": 889, + "node_type": 44, + "src": { + "id": 890, + "line": 368, + "column": 65, + "start": 13730, + "end": 13750, + "length": 21, + "parent_index": 887 + }, + "scope": 879, + "name": "r", + "type_name": { + "id": 891, + "node_type": 69, + "src": { + "id": 892, + "line": 368, + "column": 65, + "start": 13730, + "end": 13740, + "length": 11, + "parent_index": 889 + }, + "type_description": { + "type_identifier": "t_struct$_StorageSlot_Uint256Slot_$800", + "type_string": "struct StorageSlot.Uint256Slot" + }, + "path_node": { + "id": 893, + "name": "Uint256Slot", + "node_type": 52, + "referenced_declaration": 800, + "src": { + "id": 894, + "line": 368, + "column": 65, + "start": 13730, + "end": 13740, + "length": 11, + "parent_index": 891 + } + }, + "referenced_declaration": 800 + }, + "storage_location": 3, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_struct$_StorageSlot_Uint256Slot_$800", + "type_string": "struct StorageSlot.Uint256Slot" + } + ] + }, + "scope": 777, + "type_description": { + "type_identifier": "t_function_$_t_bytes32$", + "type_string": "function(bytes32)" + } + } + ], + "linearized_base_contracts": [ + 777 + ], + "base_contracts": [], + "contract_dependencies": [], + "scope": 767 + } + ], + "src": { + "id": 768, + "line": 321, + "column": 0, + "start": 12599, + "end": 13817, + "length": 1219, + "parent_index": 118 + } } \ No newline at end of file diff --git a/data/tests/contracts/cheelee/TransparentUpgradeableProxy.solgo.ast.json b/data/tests/contracts/cheelee/TransparentUpgradeableProxy.solgo.ast.json index 3cfb6848..05ac5403 100644 --- a/data/tests/contracts/cheelee/TransparentUpgradeableProxy.solgo.ast.json +++ b/data/tests/contracts/cheelee/TransparentUpgradeableProxy.solgo.ast.json @@ -1 +1 @@ -{"id":118,"node_type":80,"entry_source_unit":2272,"root":[{"id":119,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":119,"name":"IBeacon","absolute_path":"IBeacon.sol"}],"absolute_path":"IBeacon.sol","name":"IBeacon","node_type":1,"nodes":[{"id":121,"node_type":10,"src":{"id":122,"line":3,"column":0,"start":33,"end":55,"length":23,"parent_index":119},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":143,"name":"IBeacon","node_type":35,"src":{"id":0,"line":8,"column":0,"start":138,"end":388,"length":251,"parent_index":119},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":145,"name":"implementation","node_type":42,"kind":41,"src":{"id":146,"line":14,"column":4,"start":329,"end":386,"length":58,"parent_index":143},"body":{"id":159,"node_type":46,"kind":0,"src":{"id":146,"line":14,"column":4,"start":329,"end":386,"length":58,"parent_index":145},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":147,"node_type":43,"src":{"id":148,"line":14,"column":53,"start":378,"end":384,"length":7,"parent_index":145},"parameters":[{"id":149,"node_type":44,"src":{"id":150,"line":14,"column":53,"start":378,"end":384,"length":7,"parent_index":147},"scope":145,"name":"","type_name":{"id":151,"node_type":30,"src":{"id":152,"line":14,"column":53,"start":378,"end":384,"length":7,"parent_index":149},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":153,"node_type":43,"src":{"id":154,"line":14,"column":53,"start":378,"end":384,"length":7,"parent_index":145},"parameters":[{"id":155,"node_type":44,"src":{"id":156,"line":14,"column":53,"start":378,"end":384,"length":7,"parent_index":153},"scope":145,"name":"","type_name":{"id":157,"node_type":30,"src":{"id":158,"line":14,"column":53,"start":378,"end":384,"length":7,"parent_index":155},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":143,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}}],"linearized_base_contracts":[143],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":120,"line":8,"column":0,"start":138,"end":388,"length":251,"parent_index":118}},{"id":160,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":160,"name":"Proxy","absolute_path":"Proxy.sol"}],"absolute_path":"Proxy.sol","name":"Proxy","node_type":1,"nodes":[{"id":164,"node_type":10,"src":{"id":165,"line":19,"column":0,"start":424,"end":446,"length":23,"parent_index":160},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":166,"name":"Proxy","node_type":35,"src":{"id":0,"line":31,"column":0,"start":1048,"end":3577,"length":2530,"parent_index":160},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":168,"name":"_delegate","node_type":42,"kind":41,"src":{"id":169,"line":37,"column":4,"start":1274,"end":2168,"length":895,"parent_index":166},"body":{"id":177,"node_type":46,"kind":0,"src":{"id":178,"line":37,"column":64,"start":1334,"end":2168,"length":835,"parent_index":168},"implemented":true,"statements":[{"id":179,"node_type":89,"src":{"id":180,"line":39,"column":8,"start":1400,"end":2162,"length":763,"parent_index":177},"body":{"id":182,"node_type":90,"kind":0,"src":{"id":180,"line":39,"column":8,"start":1400,"end":2162,"length":763,"parent_index":179},"implemented":false,"statements":[{"id":181,"node_type":91,"src":{"id":186,"line":52,"column":12,"start":1989,"end":2152,"length":164,"parent_index":179},"body":[]},{"id":181,"node_type":91,"src":{"id":186,"line":52,"column":12,"start":1989,"end":2152,"length":164,"parent_index":179},"body":[]},{"id":181,"node_type":91,"src":{"id":186,"line":52,"column":12,"start":1989,"end":2152,"length":164,"parent_index":179},"body":[]},{"id":181,"node_type":91,"src":{"id":186,"line":52,"column":12,"start":1989,"end":2152,"length":164,"parent_index":179},"body":[]}]}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":170,"node_type":43,"src":{"id":171,"line":37,"column":23,"start":1293,"end":1314,"length":22,"parent_index":168},"parameters":[{"id":172,"node_type":44,"src":{"id":173,"line":37,"column":23,"start":1293,"end":1314,"length":22,"parent_index":170},"scope":168,"name":"implementation","type_name":{"id":174,"node_type":30,"src":{"id":175,"line":37,"column":23,"start":1293,"end":1299,"length":7,"parent_index":172},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":176,"node_type":43,"src":{"id":169,"line":37,"column":4,"start":1274,"end":2168,"length":895,"parent_index":168},"parameters":[],"parameter_types":[]},"scope":166,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":188,"name":"_implementation","node_type":42,"kind":41,"src":{"id":189,"line":63,"column":4,"start":2352,"end":2418,"length":67,"parent_index":166},"body":{"id":202,"node_type":46,"kind":0,"src":{"id":189,"line":63,"column":4,"start":2352,"end":2418,"length":67,"parent_index":188},"implemented":false,"statements":[]},"implemented":false,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":190,"node_type":43,"src":{"id":191,"line":63,"column":62,"start":2410,"end":2416,"length":7,"parent_index":188},"parameters":[{"id":192,"node_type":44,"src":{"id":193,"line":63,"column":62,"start":2410,"end":2416,"length":7,"parent_index":190},"scope":188,"name":"","type_name":{"id":194,"node_type":30,"src":{"id":195,"line":63,"column":62,"start":2410,"end":2416,"length":7,"parent_index":192},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":196,"node_type":43,"src":{"id":197,"line":63,"column":62,"start":2410,"end":2416,"length":7,"parent_index":188},"parameters":[{"id":198,"node_type":44,"src":{"id":199,"line":63,"column":62,"start":2410,"end":2416,"length":7,"parent_index":196},"scope":188,"name":"","type_name":{"id":200,"node_type":30,"src":{"id":201,"line":63,"column":62,"start":2410,"end":2416,"length":7,"parent_index":198},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":166,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":204,"name":"_fallback","node_type":42,"kind":41,"src":{"id":205,"line":70,"column":4,"start":2648,"end":2757,"length":110,"parent_index":166},"body":{"id":208,"node_type":46,"kind":0,"src":{"id":209,"line":70,"column":42,"start":2686,"end":2757,"length":72,"parent_index":204},"implemented":true,"statements":[{"id":210,"node_type":24,"kind":24,"src":{"id":211,"line":71,"column":8,"start":2696,"end":2712,"length":17,"parent_index":208},"argument_types":[],"arguments":[],"expression":{"id":212,"node_type":16,"src":{"id":213,"line":71,"column":8,"start":2696,"end":2710,"length":15,"parent_index":210},"name":"_beforeFallback","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},{"id":214,"node_type":24,"kind":24,"src":{"id":215,"line":72,"column":8,"start":2723,"end":2750,"length":28,"parent_index":208},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":216,"node_type":24,"kind":24,"src":{"id":217,"line":72,"column":18,"start":2733,"end":2749,"length":17,"parent_index":214},"argument_types":[],"arguments":[],"expression":{"id":218,"node_type":16,"src":{"id":219,"line":72,"column":18,"start":2733,"end":2747,"length":15,"parent_index":216},"name":"_implementation","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}],"expression":{"id":220,"node_type":16,"src":{"id":221,"line":72,"column":8,"start":2723,"end":2731,"length":9,"parent_index":214},"name":"_delegate","type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]},"type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":206,"node_type":43,"src":{"id":205,"line":70,"column":4,"start":2648,"end":2757,"length":110,"parent_index":204},"parameters":[],"parameter_types":[]},"return_parameters":{"id":207,"node_type":43,"src":{"id":205,"line":70,"column":4,"start":2648,"end":2757,"length":110,"parent_index":204},"parameters":[],"parameter_types":[]},"scope":166,"type_description":{"type_identifier":"t_function_","type_string":"function()"}},{"id":223,"node_type":42,"kind":70,"src":{"id":224,"line":79,"column":4,"start":2955,"end":3019,"length":65,"parent_index":166},"implemented":true,"visibility":1,"state_mutability":3,"modifiers":[],"overrides":[],"parameters":{"id":225,"node_type":43,"src":{"id":224,"line":79,"column":4,"start":2955,"end":3019,"length":65,"parent_index":223},"parameters":[],"parameter_types":[]},"return_parameters":{"id":226,"node_type":43,"src":{"id":224,"line":79,"column":4,"start":2955,"end":3019,"length":65,"parent_index":223},"parameters":[],"parameter_types":[]},"body":{"id":227,"node_type":46,"kind":0,"src":{"id":228,"line":79,"column":41,"start":2992,"end":3019,"length":28,"parent_index":223},"implemented":true,"statements":[{"id":229,"node_type":24,"kind":24,"src":{"id":230,"line":80,"column":8,"start":3002,"end":3012,"length":11,"parent_index":227},"argument_types":[],"arguments":[],"expression":{"id":231,"node_type":16,"src":{"id":232,"line":80,"column":8,"start":3002,"end":3010,"length":9,"parent_index":229},"name":"_fallback","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}]},"virtual":true},{"id":234,"node_type":42,"kind":71,"src":{"id":235,"line":87,"column":4,"start":3180,"end":3243,"length":64,"parent_index":166},"implemented":true,"visibility":1,"state_mutability":4,"modifiers":[],"overrides":[],"parameters":{"id":236,"node_type":43,"src":{"id":235,"line":87,"column":4,"start":3180,"end":3243,"length":64,"parent_index":234},"parameters":[],"parameter_types":[]},"return_parameters":{"id":237,"node_type":43,"src":{"id":235,"line":87,"column":4,"start":3180,"end":3243,"length":64,"parent_index":234},"parameters":[],"parameter_types":[]},"body":{"id":238,"node_type":46,"kind":0,"src":{"id":239,"line":87,"column":40,"start":3216,"end":3243,"length":28,"parent_index":234},"implemented":true,"statements":[{"id":240,"node_type":24,"kind":24,"src":{"id":241,"line":88,"column":8,"start":3226,"end":3236,"length":11,"parent_index":238},"argument_types":[],"arguments":[],"expression":{"id":242,"node_type":16,"src":{"id":243,"line":88,"column":8,"start":3226,"end":3234,"length":9,"parent_index":240},"name":"_fallback","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}]},"virtual":true,"payable":false},{"id":245,"name":"_beforeFallback","node_type":42,"kind":41,"src":{"id":246,"line":97,"column":4,"start":3525,"end":3575,"length":51,"parent_index":166},"body":{"id":249,"node_type":46,"kind":0,"src":{"id":250,"line":97,"column":48,"start":3569,"end":3575,"length":7,"parent_index":245},"implemented":true,"statements":[]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":247,"node_type":43,"src":{"id":246,"line":97,"column":4,"start":3525,"end":3575,"length":51,"parent_index":245},"parameters":[],"parameter_types":[]},"return_parameters":{"id":248,"node_type":43,"src":{"id":246,"line":97,"column":4,"start":3525,"end":3575,"length":51,"parent_index":245},"parameters":[],"parameter_types":[]},"scope":166,"type_description":{"type_identifier":"t_function_","type_string":"function()"}}],"linearized_base_contracts":[166],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":161,"line":31,"column":0,"start":1048,"end":3577,"length":2530,"parent_index":118}},{"id":251,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":251,"name":"Address","absolute_path":"Address.sol"}],"absolute_path":"Address.sol","name":"Address","node_type":1,"nodes":[{"id":257,"node_type":10,"src":{"id":258,"line":103,"column":0,"start":3613,"end":3635,"length":23,"parent_index":251},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":259,"name":"Address","node_type":35,"src":{"id":0,"line":108,"column":0,"start":3706,"end":11389,"length":7684,"parent_index":251},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":261,"name":"isContract","node_type":42,"kind":41,"src":{"id":262,"line":126,"column":4,"start":4298,"end":4710,"length":413,"parent_index":259},"body":{"id":275,"node_type":46,"kind":0,"src":{"id":276,"line":126,"column":70,"start":4364,"end":4710,"length":347,"parent_index":261},"implemented":true,"statements":[{"id":277,"node_type":44,"src":{"id":278,"line":131,"column":8,"start":4561,"end":4573,"length":13,"parent_index":275},"assignments":[279],"declarations":[{"is_constant":false,"id":279,"state_mutability":1,"name":"size","node_type":44,"scope":275,"src":{"id":280,"line":131,"column":8,"start":4561,"end":4572,"length":12,"parent_index":277},"is_state_variable":false,"storage_location":1,"type_name":{"id":281,"node_type":30,"src":{"id":282,"line":131,"column":8,"start":4561,"end":4567,"length":7,"parent_index":279},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}]},{"id":283,"node_type":89,"src":{"id":284,"line":133,"column":8,"start":4639,"end":4679,"length":41,"parent_index":275},"body":{"id":286,"node_type":90,"kind":0,"src":{"id":284,"line":133,"column":8,"start":4639,"end":4679,"length":41,"parent_index":283},"implemented":false,"statements":[{"id":285,"node_type":91,"src":{"id":287,"line":133,"column":19,"start":4650,"end":4677,"length":28,"parent_index":283},"body":[]}]}},{"id":288,"node_type":47,"src":{"id":289,"line":134,"column":8,"start":4689,"end":4704,"length":16,"parent_index":261},"function_return_parameters":261,"expression":{"id":290,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":291,"line":134,"column":15,"start":4696,"end":4703,"length":8,"parent_index":275},"operator":7,"left_expression":{"id":292,"node_type":16,"src":{"id":293,"line":134,"column":15,"start":4696,"end":4699,"length":4,"parent_index":290},"name":"size","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":277,"is_pure":false},"right_expression":{"id":294,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":295,"line":134,"column":22,"start":4703,"end":4703,"length":1,"parent_index":290},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":263,"node_type":43,"src":{"id":264,"line":126,"column":24,"start":4318,"end":4332,"length":15,"parent_index":261},"parameters":[{"id":265,"node_type":44,"src":{"id":266,"line":126,"column":24,"start":4318,"end":4332,"length":15,"parent_index":263},"scope":261,"name":"account","type_name":{"id":267,"node_type":30,"src":{"id":268,"line":126,"column":24,"start":4318,"end":4324,"length":7,"parent_index":265},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":269,"node_type":43,"src":{"id":270,"line":126,"column":64,"start":4358,"end":4361,"length":4,"parent_index":261},"parameters":[{"id":271,"node_type":44,"src":{"id":272,"line":126,"column":64,"start":4358,"end":4361,"length":4,"parent_index":269},"scope":261,"name":"","type_name":{"id":273,"node_type":30,"src":{"id":274,"line":126,"column":64,"start":4358,"end":4361,"length":4,"parent_index":271},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":297,"name":"sendValue","node_type":42,"kind":41,"src":{"id":298,"line":153,"column":4,"start":5628,"end":6018,"length":391,"parent_index":259},"body":{"id":310,"node_type":46,"kind":0,"src":{"id":311,"line":153,"column":75,"start":5699,"end":6018,"length":320,"parent_index":297},"implemented":true,"statements":[{"id":312,"node_type":24,"kind":24,"src":{"id":313,"line":154,"column":8,"start":5709,"end":5781,"length":73,"parent_index":310},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: insufficient balance\""}],"arguments":[{"id":314,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":315,"line":154,"column":16,"start":5717,"end":5747,"length":31,"parent_index":312},"operator":8,"left_expression":{"id":316,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":317,"line":154,"column":16,"start":5717,"end":5737,"length":21,"parent_index":314},"expression":{"id":318,"node_type":24,"kind":24,"src":{"id":319,"line":154,"column":16,"start":5717,"end":5729,"length":13,"parent_index":316},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"arguments":[{"id":320,"node_type":16,"src":{"id":321,"line":154,"column":24,"start":5725,"end":5728,"length":4,"parent_index":318},"name":"this","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":322,"node_type":16,"src":{"id":323,"line":154,"column":16,"start":5717,"end":5723,"length":7,"parent_index":318},"type_name":{"id":324,"node_type":30,"src":{"id":325,"line":154,"column":16,"start":5717,"end":5723,"length":7,"parent_index":322},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}]},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"balance","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"right_expression":{"id":326,"node_type":16,"src":{"id":327,"line":154,"column":41,"start":5742,"end":5747,"length":6,"parent_index":314},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":326,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":328,"node_type":17,"kind":50,"value":"Address: insufficient balance","hex_value":"416464726573733a20696e73756666696369656e742062616c616e6365","src":{"id":329,"line":154,"column":49,"start":5750,"end":5780,"length":31,"parent_index":312},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: insufficient balance\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":330,"node_type":16,"src":{"id":331,"line":154,"column":8,"start":5709,"end":5715,"length":7,"parent_index":312},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"Address: insufficient balance\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: insufficient balance\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":332,"node_type":44,"src":{"id":333,"line":157,"column":8,"start":5870,"end":5924,"length":55,"parent_index":310},"assignments":[],"declarations":[],"initial_value":{"id":334,"node_type":24,"kind":24,"src":{"id":335,"line":157,"column":27,"start":5889,"end":5923,"length":35,"parent_index":332},"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"\""}],"arguments":[{"id":336,"node_type":17,"kind":50,"src":{"id":337,"line":157,"column":59,"start":5921,"end":5922,"length":2,"parent_index":334},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":338,"node_type":93,"kind":93,"src":{"id":339,"line":157,"column":27,"start":5889,"end":5919,"length":31,"parent_index":334},"expression":{"id":340,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":341,"line":157,"column":27,"start":5889,"end":5902,"length":14,"parent_index":338},"expression":{"id":342,"node_type":16,"src":{"id":343,"line":157,"column":27,"start":5889,"end":5897,"length":9,"parent_index":340},"name":"recipient","type_description":{"type_identifier":"t_address_payable","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":342,"is_pure":false},"member_name":"call","argument_types":[],"type_description":{"type_identifier":"t_address_payable","type_string":"address"}},"type_description":{"type_identifier":"t_address_payable","type_string":"address"}},"type_description":{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}}},{"id":344,"node_type":24,"kind":24,"src":{"id":345,"line":158,"column":8,"start":5934,"end":6011,"length":78,"parent_index":310},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"arguments":[{"id":346,"node_type":16,"src":{"id":347,"line":158,"column":16,"start":5942,"end":5948,"length":7,"parent_index":344},"name":"success","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":348,"node_type":17,"kind":50,"value":"Address: unable to send value, recipient may have reverted","hex_value":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","src":{"id":349,"line":158,"column":25,"start":5951,"end":6010,"length":60,"parent_index":344},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: unable to send value, recipient may have reverted\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}]}],"expression":{"id":350,"node_type":16,"src":{"id":351,"line":158,"column":8,"start":5934,"end":5940,"length":7,"parent_index":344},"name":"require","type_description":{"type_identifier":"t_function_$_t_function_$$_t_string_literal","type_string":"function(function(),literal_string \"Address: unable to send value, recipient may have reverted\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: unable to send value, recipient may have reverted\""}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_string_literal$","type_string":"function(function(),string memory)"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":299,"node_type":43,"src":{"id":300,"line":153,"column":23,"start":5647,"end":5687,"length":41,"parent_index":297},"parameters":[{"id":301,"node_type":44,"src":{"id":302,"line":153,"column":23,"start":5647,"end":5671,"length":25,"parent_index":299},"scope":297,"name":"recipient","type_name":{"id":303,"node_type":30,"src":{"id":304,"line":153,"column":23,"start":5647,"end":5661,"length":15,"parent_index":301},"name":"addresspayable","type_description":{"type_identifier":"t_address_payable","type_string":"address"},"state_mutability":3,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":3},{"id":305,"node_type":44,"src":{"id":306,"line":153,"column":50,"start":5674,"end":5687,"length":14,"parent_index":299},"scope":297,"name":"amount","type_name":{"id":307,"node_type":30,"src":{"id":308,"line":153,"column":50,"start":5674,"end":5680,"length":7,"parent_index":305},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address_payable","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":309,"node_type":43,"src":{"id":298,"line":153,"column":4,"start":5628,"end":6018,"length":391,"parent_index":297},"parameters":[],"parameter_types":[]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address_payable$$_t_uint256","type_string":"function(address,uint256)"}},{"id":353,"name":"functionCall","node_type":42,"kind":41,"src":{"id":354,"line":179,"column":4,"start":6760,"end":6930,"length":171,"parent_index":259},"body":{"id":371,"node_type":46,"kind":0,"src":{"id":372,"line":179,"column":93,"start":6849,"end":6930,"length":82,"parent_index":353},"implemented":true,"statements":[{"id":373,"node_type":47,"src":{"id":374,"line":180,"column":6,"start":6857,"end":6924,"length":68,"parent_index":353},"function_return_parameters":353,"expression":{"id":375,"node_type":24,"kind":24,"src":{"id":376,"line":180,"column":13,"start":6864,"end":6923,"length":60,"parent_index":371},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level call failed\""}],"arguments":[{"id":377,"node_type":16,"src":{"id":378,"line":180,"column":26,"start":6877,"end":6882,"length":6,"parent_index":375},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":377,"is_pure":false},{"id":379,"node_type":16,"src":{"id":380,"line":180,"column":34,"start":6885,"end":6888,"length":4,"parent_index":375},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":379,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":381,"node_type":17,"kind":50,"value":"Address: low-level call failed","hex_value":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","src":{"id":382,"line":180,"column":40,"start":6891,"end":6922,"length":32,"parent_index":375},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level call failed\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":383,"node_type":16,"src":{"id":384,"line":180,"column":13,"start":6864,"end":6875,"length":12,"parent_index":375},"name":"functionCall","type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_string_literal","type_string":"function(address,bytes,literal_string \"Address: low-level call failed\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level call failed\""}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$_t_string_literal$","type_string":"function(address,bytes,string memory)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":355,"node_type":43,"src":{"id":356,"line":179,"column":26,"start":6782,"end":6814,"length":33,"parent_index":353},"parameters":[{"id":357,"node_type":44,"src":{"id":358,"line":179,"column":26,"start":6782,"end":6795,"length":14,"parent_index":355},"scope":353,"name":"target","type_name":{"id":359,"node_type":30,"src":{"id":360,"line":179,"column":26,"start":6782,"end":6788,"length":7,"parent_index":357},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":361,"node_type":44,"src":{"id":362,"line":179,"column":42,"start":6798,"end":6814,"length":17,"parent_index":355},"scope":353,"name":"data","type_name":{"id":363,"node_type":30,"src":{"id":364,"line":179,"column":42,"start":6798,"end":6802,"length":5,"parent_index":361},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":365,"node_type":43,"src":{"id":366,"line":179,"column":79,"start":6835,"end":6846,"length":12,"parent_index":353},"parameters":[{"id":367,"node_type":44,"src":{"id":368,"line":179,"column":79,"start":6835,"end":6846,"length":12,"parent_index":365},"scope":353,"name":"","type_name":{"id":369,"node_type":30,"src":{"id":370,"line":179,"column":79,"start":6835,"end":6839,"length":5,"parent_index":367},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes","type_string":"function(address,bytes)"}},{"id":386,"name":"functionCall","node_type":42,"kind":41,"src":{"id":387,"line":189,"column":4,"start":7153,"end":7345,"length":193,"parent_index":259},"body":{"id":408,"node_type":46,"kind":0,"src":{"id":409,"line":189,"column":121,"start":7270,"end":7345,"length":76,"parent_index":386},"implemented":true,"statements":[{"id":410,"node_type":47,"src":{"id":411,"line":190,"column":8,"start":7280,"end":7339,"length":60,"parent_index":386},"function_return_parameters":386,"expression":{"id":412,"node_type":24,"kind":24,"src":{"id":413,"line":190,"column":15,"start":7287,"end":7338,"length":52,"parent_index":408},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":414,"node_type":16,"src":{"id":415,"line":190,"column":37,"start":7309,"end":7314,"length":6,"parent_index":412},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":414,"is_pure":false},{"id":416,"node_type":16,"src":{"id":417,"line":190,"column":45,"start":7317,"end":7320,"length":4,"parent_index":412},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":416,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":418,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":419,"line":190,"column":51,"start":7323,"end":7323,"length":1,"parent_index":412},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},{"id":420,"node_type":16,"src":{"id":421,"line":190,"column":54,"start":7326,"end":7337,"length":12,"parent_index":412},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":420,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]}],"expression":{"id":422,"node_type":16,"src":{"id":423,"line":190,"column":15,"start":7287,"end":7307,"length":21,"parent_index":412},"name":"functionCallWithValue","type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_rational_0_by_1$$_t_string","type_string":"function(address,bytes,int_const 0,string)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},{"type_identifier":"t_string","type_string":"string"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_rational_0_by_1$$_t_string$","type_string":"function(address,bytes,int_const 0,string)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":388,"node_type":43,"src":{"id":389,"line":189,"column":26,"start":7175,"end":7235,"length":61,"parent_index":386},"parameters":[{"id":390,"node_type":44,"src":{"id":391,"line":189,"column":26,"start":7175,"end":7188,"length":14,"parent_index":388},"scope":386,"name":"target","type_name":{"id":392,"node_type":30,"src":{"id":393,"line":189,"column":26,"start":7175,"end":7181,"length":7,"parent_index":390},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":394,"node_type":44,"src":{"id":395,"line":189,"column":42,"start":7191,"end":7207,"length":17,"parent_index":388},"scope":386,"name":"data","type_name":{"id":396,"node_type":30,"src":{"id":397,"line":189,"column":42,"start":7191,"end":7195,"length":5,"parent_index":394},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":398,"node_type":44,"src":{"id":399,"line":189,"column":61,"start":7210,"end":7235,"length":26,"parent_index":388},"scope":386,"name":"errorMessage","type_name":{"id":400,"node_type":30,"src":{"id":401,"line":189,"column":61,"start":7210,"end":7215,"length":6,"parent_index":398},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":402,"node_type":43,"src":{"id":403,"line":189,"column":107,"start":7256,"end":7267,"length":12,"parent_index":386},"parameters":[{"id":404,"node_type":44,"src":{"id":405,"line":189,"column":107,"start":7256,"end":7267,"length":12,"parent_index":402},"scope":386,"name":"","type_name":{"id":406,"node_type":30,"src":{"id":407,"line":189,"column":107,"start":7256,"end":7260,"length":5,"parent_index":404},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_string","type_string":"function(address,bytes,string)"}},{"id":425,"name":"functionCallWithValue","node_type":42,"kind":41,"src":{"id":426,"line":204,"column":4,"start":7708,"end":7931,"length":224,"parent_index":259},"body":{"id":447,"node_type":46,"kind":0,"src":{"id":448,"line":204,"column":117,"start":7821,"end":7931,"length":111,"parent_index":425},"implemented":true,"statements":[{"id":449,"node_type":47,"src":{"id":450,"line":205,"column":8,"start":7831,"end":7925,"length":95,"parent_index":425},"function_return_parameters":425,"expression":{"id":451,"node_type":24,"kind":24,"src":{"id":452,"line":205,"column":15,"start":7838,"end":7924,"length":87,"parent_index":447},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level call with value failed\""}],"arguments":[{"id":453,"node_type":16,"src":{"id":454,"line":205,"column":37,"start":7860,"end":7865,"length":6,"parent_index":451},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":453,"is_pure":false},{"id":455,"node_type":16,"src":{"id":456,"line":205,"column":45,"start":7868,"end":7871,"length":4,"parent_index":451},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":455,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":457,"node_type":16,"src":{"id":458,"line":205,"column":51,"start":7874,"end":7878,"length":5,"parent_index":451},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":457,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},{"id":459,"node_type":17,"kind":50,"value":"Address: low-level call with value failed","hex_value":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","src":{"id":460,"line":205,"column":58,"start":7881,"end":7923,"length":43,"parent_index":451},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level call with value failed\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"}]}],"expression":{"id":461,"node_type":16,"src":{"id":462,"line":205,"column":15,"start":7838,"end":7858,"length":21,"parent_index":451},"name":"functionCallWithValue","type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_uint256$$_t_string_literal","type_string":"function(address,bytes,uint256,literal_string \"Address: low-level call with value failed\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level call with value failed\""}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_uint256$_t_string_literal$","type_string":"function(address,bytes,uint256,string memory)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":427,"node_type":43,"src":{"id":428,"line":204,"column":35,"start":7739,"end":7786,"length":48,"parent_index":425},"parameters":[{"id":429,"node_type":44,"src":{"id":430,"line":204,"column":35,"start":7739,"end":7752,"length":14,"parent_index":427},"scope":425,"name":"target","type_name":{"id":431,"node_type":30,"src":{"id":432,"line":204,"column":35,"start":7739,"end":7745,"length":7,"parent_index":429},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":433,"node_type":44,"src":{"id":434,"line":204,"column":51,"start":7755,"end":7771,"length":17,"parent_index":427},"scope":425,"name":"data","type_name":{"id":435,"node_type":30,"src":{"id":436,"line":204,"column":51,"start":7755,"end":7759,"length":5,"parent_index":433},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":437,"node_type":44,"src":{"id":438,"line":204,"column":70,"start":7774,"end":7786,"length":13,"parent_index":427},"scope":425,"name":"value","type_name":{"id":439,"node_type":30,"src":{"id":440,"line":204,"column":70,"start":7774,"end":7780,"length":7,"parent_index":437},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":441,"node_type":43,"src":{"id":442,"line":204,"column":103,"start":7807,"end":7818,"length":12,"parent_index":425},"parameters":[{"id":443,"node_type":44,"src":{"id":444,"line":204,"column":103,"start":7807,"end":7818,"length":12,"parent_index":441},"scope":425,"name":"","type_name":{"id":445,"node_type":30,"src":{"id":446,"line":204,"column":103,"start":7807,"end":7811,"length":5,"parent_index":443},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_uint256","type_string":"function(address,bytes,uint256)"}},{"id":464,"name":"functionCallWithValue","node_type":42,"kind":41,"src":{"id":465,"line":214,"column":4,"start":8180,"end":8702,"length":523,"parent_index":259},"body":{"id":490,"node_type":46,"kind":0,"src":{"id":491,"line":214,"column":145,"start":8321,"end":8702,"length":382,"parent_index":464},"implemented":true,"statements":[{"id":492,"node_type":24,"kind":24,"src":{"id":493,"line":215,"column":8,"start":8331,"end":8411,"length":81,"parent_index":490},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: insufficient balance for call\""}],"arguments":[{"id":494,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":495,"line":215,"column":16,"start":8339,"end":8368,"length":30,"parent_index":492},"operator":8,"left_expression":{"id":496,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":497,"line":215,"column":16,"start":8339,"end":8359,"length":21,"parent_index":494},"expression":{"id":498,"node_type":24,"kind":24,"src":{"id":499,"line":215,"column":16,"start":8339,"end":8351,"length":13,"parent_index":496},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"arguments":[{"id":500,"node_type":16,"src":{"id":501,"line":215,"column":24,"start":8347,"end":8350,"length":4,"parent_index":498},"name":"this","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":502,"node_type":16,"src":{"id":503,"line":215,"column":16,"start":8339,"end":8345,"length":7,"parent_index":498},"type_name":{"id":504,"node_type":30,"src":{"id":505,"line":215,"column":16,"start":8339,"end":8345,"length":7,"parent_index":502},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}]},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"balance","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"right_expression":{"id":506,"node_type":16,"src":{"id":507,"line":215,"column":41,"start":8364,"end":8368,"length":5,"parent_index":494},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":506,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":508,"node_type":17,"kind":50,"value":"Address: insufficient balance for call","hex_value":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","src":{"id":509,"line":215,"column":48,"start":8371,"end":8410,"length":40,"parent_index":492},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: insufficient balance for call\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":510,"node_type":16,"src":{"id":511,"line":215,"column":8,"start":8331,"end":8337,"length":7,"parent_index":492},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"Address: insufficient balance for call\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: insufficient balance for call\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":512,"node_type":24,"kind":24,"src":{"id":513,"line":216,"column":8,"start":8422,"end":8481,"length":60,"parent_index":490},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: call to non-contract\""}],"arguments":[{"id":514,"node_type":24,"kind":24,"src":{"id":515,"line":216,"column":16,"start":8430,"end":8447,"length":18,"parent_index":512},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":516,"node_type":16,"src":{"id":517,"line":216,"column":27,"start":8441,"end":8446,"length":6,"parent_index":514},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":516,"is_pure":false}],"expression":{"id":518,"node_type":16,"src":{"id":519,"line":216,"column":16,"start":8430,"end":8439,"length":10,"parent_index":514},"name":"isContract","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":520,"node_type":17,"kind":50,"value":"Address: call to non-contract","hex_value":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","src":{"id":521,"line":216,"column":36,"start":8450,"end":8480,"length":31,"parent_index":512},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: call to non-contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":522,"node_type":16,"src":{"id":523,"line":216,"column":8,"start":8422,"end":8428,"length":7,"parent_index":512},"name":"require","type_description":{"type_identifier":"t_function_$_t_function_$_t_address$$$_t_string_literal","type_string":"function(function(address),literal_string \"Address: call to non-contract\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: call to non-contract\""}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$$_t_string_literal$","type_string":"function(function(address),string memory)"}},{"id":524,"node_type":44,"src":{"id":525,"line":219,"column":8,"start":8552,"end":8627,"length":76,"parent_index":490},"assignments":[],"declarations":[],"initial_value":{"id":526,"node_type":24,"kind":24,"src":{"id":527,"line":219,"column":50,"start":8594,"end":8626,"length":33,"parent_index":524},"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":528,"node_type":16,"src":{"id":529,"line":219,"column":78,"start":8622,"end":8625,"length":4,"parent_index":526},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":528,"is_pure":false}],"expression":{"id":530,"node_type":93,"kind":93,"src":{"id":531,"line":219,"column":50,"start":8594,"end":8620,"length":27,"parent_index":526},"expression":{"id":532,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":533,"line":219,"column":50,"start":8594,"end":8604,"length":11,"parent_index":530},"expression":{"id":534,"node_type":16,"src":{"id":535,"line":219,"column":50,"start":8594,"end":8599,"length":6,"parent_index":532},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":534,"is_pure":false},"member_name":"call","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}}},{"id":536,"node_type":47,"src":{"id":537,"line":220,"column":8,"start":8637,"end":8696,"length":60,"parent_index":464},"function_return_parameters":464,"expression":{"id":538,"node_type":24,"kind":24,"src":{"id":539,"line":220,"column":15,"start":8644,"end":8695,"length":52,"parent_index":490},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":540,"node_type":16,"src":{"id":541,"line":220,"column":33,"start":8662,"end":8668,"length":7,"parent_index":538},"name":"success","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":542,"node_type":16,"src":{"id":543,"line":220,"column":42,"start":8671,"end":8680,"length":10,"parent_index":538},"name":"returndata","type_description":{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}]},{"id":544,"node_type":16,"src":{"id":545,"line":220,"column":54,"start":8683,"end":8694,"length":12,"parent_index":538},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":544,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"}]}],"expression":{"id":546,"node_type":16,"src":{"id":547,"line":220,"column":15,"start":8644,"end":8660,"length":17,"parent_index":538},"name":"_verifyCallResult","type_description":{"type_identifier":"t_function_$_t_function_$$_t_function_$_t_function_$$_t_string","type_string":"function(function(),function(function()),string)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"},{"type_identifier":"t_string","type_string":"string"}]},"type_description":{"type_identifier":"t_function_$_t_function_$$_t_function_$_t_function_$$_t_string$","type_string":"function(function(),function(function()),string)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":466,"node_type":43,"src":{"id":467,"line":214,"column":35,"start":8211,"end":8286,"length":76,"parent_index":464},"parameters":[{"id":468,"node_type":44,"src":{"id":469,"line":214,"column":35,"start":8211,"end":8224,"length":14,"parent_index":466},"scope":464,"name":"target","type_name":{"id":470,"node_type":30,"src":{"id":471,"line":214,"column":35,"start":8211,"end":8217,"length":7,"parent_index":468},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":472,"node_type":44,"src":{"id":473,"line":214,"column":51,"start":8227,"end":8243,"length":17,"parent_index":466},"scope":464,"name":"data","type_name":{"id":474,"node_type":30,"src":{"id":475,"line":214,"column":51,"start":8227,"end":8231,"length":5,"parent_index":472},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":476,"node_type":44,"src":{"id":477,"line":214,"column":70,"start":8246,"end":8258,"length":13,"parent_index":466},"scope":464,"name":"value","type_name":{"id":478,"node_type":30,"src":{"id":479,"line":214,"column":70,"start":8246,"end":8252,"length":7,"parent_index":476},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":480,"node_type":44,"src":{"id":481,"line":214,"column":85,"start":8261,"end":8286,"length":26,"parent_index":466},"scope":464,"name":"errorMessage","type_name":{"id":482,"node_type":30,"src":{"id":483,"line":214,"column":85,"start":8261,"end":8266,"length":6,"parent_index":480},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":484,"node_type":43,"src":{"id":485,"line":214,"column":131,"start":8307,"end":8318,"length":12,"parent_index":464},"parameters":[{"id":486,"node_type":44,"src":{"id":487,"line":214,"column":131,"start":8307,"end":8318,"length":12,"parent_index":484},"scope":464,"name":"","type_name":{"id":488,"node_type":30,"src":{"id":489,"line":214,"column":131,"start":8307,"end":8311,"length":5,"parent_index":486},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_uint256$$_t_string","type_string":"function(address,bytes,uint256,string)"}},{"id":549,"name":"functionStaticCall","node_type":42,"kind":41,"src":{"id":550,"line":229,"column":4,"start":8880,"end":9076,"length":197,"parent_index":259},"body":{"id":567,"node_type":46,"kind":0,"src":{"id":568,"line":229,"column":104,"start":8980,"end":9076,"length":97,"parent_index":549},"implemented":true,"statements":[{"id":569,"node_type":47,"src":{"id":570,"line":230,"column":8,"start":8990,"end":9070,"length":81,"parent_index":549},"function_return_parameters":549,"expression":{"id":571,"node_type":24,"kind":24,"src":{"id":572,"line":230,"column":15,"start":8997,"end":9069,"length":73,"parent_index":567},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level static call failed\""}],"arguments":[{"id":573,"node_type":16,"src":{"id":574,"line":230,"column":34,"start":9016,"end":9021,"length":6,"parent_index":571},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":573,"is_pure":false},{"id":575,"node_type":16,"src":{"id":576,"line":230,"column":42,"start":9024,"end":9027,"length":4,"parent_index":571},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":575,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":577,"node_type":17,"kind":50,"value":"Address: low-level static call failed","hex_value":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","src":{"id":578,"line":230,"column":48,"start":9030,"end":9068,"length":39,"parent_index":571},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level static call failed\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":579,"node_type":16,"src":{"id":580,"line":230,"column":15,"start":8997,"end":9014,"length":18,"parent_index":571},"name":"functionStaticCall","type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_string_literal","type_string":"function(address,bytes,literal_string \"Address: low-level static call failed\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level static call failed\""}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$_t_string_literal$","type_string":"function(address,bytes,string memory)"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":551,"node_type":43,"src":{"id":552,"line":229,"column":32,"start":8908,"end":8940,"length":33,"parent_index":549},"parameters":[{"id":553,"node_type":44,"src":{"id":554,"line":229,"column":32,"start":8908,"end":8921,"length":14,"parent_index":551},"scope":549,"name":"target","type_name":{"id":555,"node_type":30,"src":{"id":556,"line":229,"column":32,"start":8908,"end":8914,"length":7,"parent_index":553},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":557,"node_type":44,"src":{"id":558,"line":229,"column":48,"start":8924,"end":8940,"length":17,"parent_index":551},"scope":549,"name":"data","type_name":{"id":559,"node_type":30,"src":{"id":560,"line":229,"column":48,"start":8924,"end":8928,"length":5,"parent_index":557},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":561,"node_type":43,"src":{"id":562,"line":229,"column":90,"start":8966,"end":8977,"length":12,"parent_index":549},"parameters":[{"id":563,"node_type":44,"src":{"id":564,"line":229,"column":90,"start":8966,"end":8977,"length":12,"parent_index":561},"scope":549,"name":"","type_name":{"id":565,"node_type":30,"src":{"id":566,"line":229,"column":90,"start":8966,"end":8970,"length":5,"parent_index":563},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes","type_string":"function(address,bytes)"}},{"id":582,"name":"functionStaticCall","node_type":42,"kind":41,"src":{"id":583,"line":239,"column":4,"start":9261,"end":9676,"length":416,"parent_index":259},"body":{"id":604,"node_type":46,"kind":0,"src":{"id":605,"line":239,"column":132,"start":9389,"end":9676,"length":288,"parent_index":582},"implemented":true,"statements":[{"id":606,"node_type":24,"kind":24,"src":{"id":607,"line":240,"column":8,"start":9399,"end":9465,"length":67,"parent_index":604},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: static call to non-contract\""}],"arguments":[{"id":608,"node_type":24,"kind":24,"src":{"id":609,"line":240,"column":16,"start":9407,"end":9424,"length":18,"parent_index":606},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":610,"node_type":16,"src":{"id":611,"line":240,"column":27,"start":9418,"end":9423,"length":6,"parent_index":608},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":610,"is_pure":false}],"expression":{"id":612,"node_type":16,"src":{"id":613,"line":240,"column":16,"start":9407,"end":9416,"length":10,"parent_index":608},"name":"isContract","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":614,"node_type":17,"kind":50,"value":"Address: static call to non-contract","hex_value":"416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374","src":{"id":615,"line":240,"column":36,"start":9427,"end":9464,"length":38,"parent_index":606},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: static call to non-contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":616,"node_type":16,"src":{"id":617,"line":240,"column":8,"start":9399,"end":9405,"length":7,"parent_index":606},"name":"require","type_description":{"type_identifier":"t_function_$_t_function_$_t_address$$$_t_string_literal","type_string":"function(function(address),literal_string \"Address: static call to non-contract\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: static call to non-contract\""}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$$_t_string_literal$","type_string":"function(function(address),string memory)"}},{"id":618,"node_type":44,"src":{"id":619,"line":243,"column":8,"start":9536,"end":9601,"length":66,"parent_index":604},"assignments":[],"declarations":[],"initial_value":{"id":620,"node_type":24,"kind":24,"src":{"id":621,"line":243,"column":50,"start":9578,"end":9600,"length":23,"parent_index":618},"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":622,"node_type":16,"src":{"id":623,"line":243,"column":68,"start":9596,"end":9599,"length":4,"parent_index":620},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":622,"is_pure":false}],"expression":{"id":624,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":625,"line":243,"column":50,"start":9578,"end":9594,"length":17,"parent_index":620},"expression":{"id":626,"node_type":16,"src":{"id":627,"line":243,"column":50,"start":9578,"end":9583,"length":6,"parent_index":624},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":626,"is_pure":false},"member_name":"staticcall","argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}}},{"id":628,"node_type":47,"src":{"id":629,"line":244,"column":8,"start":9611,"end":9670,"length":60,"parent_index":582},"function_return_parameters":582,"expression":{"id":630,"node_type":24,"kind":24,"src":{"id":631,"line":244,"column":15,"start":9618,"end":9669,"length":52,"parent_index":604},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":632,"node_type":16,"src":{"id":633,"line":244,"column":33,"start":9636,"end":9642,"length":7,"parent_index":630},"name":"success","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":634,"node_type":16,"src":{"id":635,"line":244,"column":42,"start":9645,"end":9654,"length":10,"parent_index":630},"name":"returndata","type_description":{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}]},{"id":636,"node_type":16,"src":{"id":637,"line":244,"column":54,"start":9657,"end":9668,"length":12,"parent_index":630},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":636,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"}]}],"expression":{"id":638,"node_type":16,"src":{"id":639,"line":244,"column":15,"start":9618,"end":9634,"length":17,"parent_index":630},"name":"_verifyCallResult","type_description":{"type_identifier":"t_function_$_t_function_$$_t_function_$_t_function_$$_t_string","type_string":"function(function(),function(function()),string)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"},{"type_identifier":"t_string","type_string":"string"}]},"type_description":{"type_identifier":"t_function_$_t_function_$$_t_function_$_t_function_$$_t_string$","type_string":"function(function(),function(function()),string)"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":584,"node_type":43,"src":{"id":585,"line":239,"column":32,"start":9289,"end":9349,"length":61,"parent_index":582},"parameters":[{"id":586,"node_type":44,"src":{"id":587,"line":239,"column":32,"start":9289,"end":9302,"length":14,"parent_index":584},"scope":582,"name":"target","type_name":{"id":588,"node_type":30,"src":{"id":589,"line":239,"column":32,"start":9289,"end":9295,"length":7,"parent_index":586},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":590,"node_type":44,"src":{"id":591,"line":239,"column":48,"start":9305,"end":9321,"length":17,"parent_index":584},"scope":582,"name":"data","type_name":{"id":592,"node_type":30,"src":{"id":593,"line":239,"column":48,"start":9305,"end":9309,"length":5,"parent_index":590},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":594,"node_type":44,"src":{"id":595,"line":239,"column":67,"start":9324,"end":9349,"length":26,"parent_index":584},"scope":582,"name":"errorMessage","type_name":{"id":596,"node_type":30,"src":{"id":597,"line":239,"column":67,"start":9324,"end":9329,"length":6,"parent_index":594},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":598,"node_type":43,"src":{"id":599,"line":239,"column":118,"start":9375,"end":9386,"length":12,"parent_index":582},"parameters":[{"id":600,"node_type":44,"src":{"id":601,"line":239,"column":118,"start":9375,"end":9386,"length":12,"parent_index":598},"scope":582,"name":"","type_name":{"id":602,"node_type":30,"src":{"id":603,"line":239,"column":118,"start":9375,"end":9379,"length":5,"parent_index":600},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_string","type_string":"function(address,bytes,string)"}},{"id":641,"name":"functionDelegateCall","node_type":42,"kind":41,"src":{"id":642,"line":253,"column":4,"start":9856,"end":10053,"length":198,"parent_index":259},"body":{"id":659,"node_type":46,"kind":0,"src":{"id":660,"line":253,"column":101,"start":9953,"end":10053,"length":101,"parent_index":641},"implemented":true,"statements":[{"id":661,"node_type":47,"src":{"id":662,"line":254,"column":8,"start":9963,"end":10047,"length":85,"parent_index":641},"function_return_parameters":641,"expression":{"id":663,"node_type":24,"kind":24,"src":{"id":664,"line":254,"column":15,"start":9970,"end":10046,"length":77,"parent_index":659},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level delegate call failed\""}],"arguments":[{"id":665,"node_type":16,"src":{"id":666,"line":254,"column":36,"start":9991,"end":9996,"length":6,"parent_index":663},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":665,"is_pure":false},{"id":667,"node_type":16,"src":{"id":668,"line":254,"column":44,"start":9999,"end":10002,"length":4,"parent_index":663},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":667,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":669,"node_type":17,"kind":50,"value":"Address: low-level delegate call failed","hex_value":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","src":{"id":670,"line":254,"column":50,"start":10005,"end":10045,"length":41,"parent_index":663},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level delegate call failed\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":671,"node_type":16,"src":{"id":672,"line":254,"column":15,"start":9970,"end":9989,"length":20,"parent_index":663},"name":"functionDelegateCall","type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_string_literal","type_string":"function(address,bytes,literal_string \"Address: low-level delegate call failed\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level delegate call failed\""}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$_t_string_literal$","type_string":"function(address,bytes,string memory)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":643,"node_type":43,"src":{"id":644,"line":253,"column":34,"start":9886,"end":9918,"length":33,"parent_index":641},"parameters":[{"id":645,"node_type":44,"src":{"id":646,"line":253,"column":34,"start":9886,"end":9899,"length":14,"parent_index":643},"scope":641,"name":"target","type_name":{"id":647,"node_type":30,"src":{"id":648,"line":253,"column":34,"start":9886,"end":9892,"length":7,"parent_index":645},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":649,"node_type":44,"src":{"id":650,"line":253,"column":50,"start":9902,"end":9918,"length":17,"parent_index":643},"scope":641,"name":"data","type_name":{"id":651,"node_type":30,"src":{"id":652,"line":253,"column":50,"start":9902,"end":9906,"length":5,"parent_index":649},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":653,"node_type":43,"src":{"id":654,"line":253,"column":87,"start":9939,"end":9950,"length":12,"parent_index":641},"parameters":[{"id":655,"node_type":44,"src":{"id":656,"line":253,"column":87,"start":9939,"end":9950,"length":12,"parent_index":653},"scope":641,"name":"","type_name":{"id":657,"node_type":30,"src":{"id":658,"line":253,"column":87,"start":9939,"end":9943,"length":5,"parent_index":655},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes","type_string":"function(address,bytes)"}},{"id":674,"name":"functionDelegateCall","node_type":42,"kind":41,"src":{"id":675,"line":263,"column":4,"start":10240,"end":10656,"length":417,"parent_index":259},"body":{"id":696,"node_type":46,"kind":0,"src":{"id":697,"line":263,"column":129,"start":10365,"end":10656,"length":292,"parent_index":674},"implemented":true,"statements":[{"id":698,"node_type":24,"kind":24,"src":{"id":699,"line":264,"column":8,"start":10375,"end":10443,"length":69,"parent_index":696},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: delegate call to non-contract\""}],"arguments":[{"id":700,"node_type":24,"kind":24,"src":{"id":701,"line":264,"column":16,"start":10383,"end":10400,"length":18,"parent_index":698},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":702,"node_type":16,"src":{"id":703,"line":264,"column":27,"start":10394,"end":10399,"length":6,"parent_index":700},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":702,"is_pure":false}],"expression":{"id":704,"node_type":16,"src":{"id":705,"line":264,"column":16,"start":10383,"end":10392,"length":10,"parent_index":700},"name":"isContract","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":706,"node_type":17,"kind":50,"value":"Address: delegate call to non-contract","hex_value":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374","src":{"id":707,"line":264,"column":36,"start":10403,"end":10442,"length":40,"parent_index":698},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: delegate call to non-contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":708,"node_type":16,"src":{"id":709,"line":264,"column":8,"start":10375,"end":10381,"length":7,"parent_index":698},"name":"require","type_description":{"type_identifier":"t_function_$_t_function_$_t_address$$$_t_string_literal","type_string":"function(function(address),literal_string \"Address: delegate call to non-contract\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: delegate call to non-contract\""}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$$_t_string_literal$","type_string":"function(function(address),string memory)"}},{"id":710,"node_type":44,"src":{"id":711,"line":267,"column":8,"start":10514,"end":10581,"length":68,"parent_index":696},"assignments":[],"declarations":[],"initial_value":{"id":712,"node_type":24,"kind":24,"src":{"id":713,"line":267,"column":50,"start":10556,"end":10580,"length":25,"parent_index":710},"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":714,"node_type":16,"src":{"id":715,"line":267,"column":70,"start":10576,"end":10579,"length":4,"parent_index":712},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":714,"is_pure":false}],"expression":{"id":716,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":717,"line":267,"column":50,"start":10556,"end":10574,"length":19,"parent_index":712},"expression":{"id":718,"node_type":16,"src":{"id":719,"line":267,"column":50,"start":10556,"end":10561,"length":6,"parent_index":716},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":718,"is_pure":false},"member_name":"delegatecall","argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}}},{"id":720,"node_type":47,"src":{"id":721,"line":268,"column":8,"start":10591,"end":10650,"length":60,"parent_index":674},"function_return_parameters":674,"expression":{"id":722,"node_type":24,"kind":24,"src":{"id":723,"line":268,"column":15,"start":10598,"end":10649,"length":52,"parent_index":696},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":724,"node_type":16,"src":{"id":725,"line":268,"column":33,"start":10616,"end":10622,"length":7,"parent_index":722},"name":"success","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":726,"node_type":16,"src":{"id":727,"line":268,"column":42,"start":10625,"end":10634,"length":10,"parent_index":722},"name":"returndata","type_description":{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}]},{"id":728,"node_type":16,"src":{"id":729,"line":268,"column":54,"start":10637,"end":10648,"length":12,"parent_index":722},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":728,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"}]}],"expression":{"id":730,"node_type":16,"src":{"id":731,"line":268,"column":15,"start":10598,"end":10614,"length":17,"parent_index":722},"name":"_verifyCallResult","type_description":{"type_identifier":"t_function_$_t_function_$$_t_function_$_t_function_$$_t_string","type_string":"function(function(),function(function()),string)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"},{"type_identifier":"t_string","type_string":"string"}]},"type_description":{"type_identifier":"t_function_$_t_function_$$_t_function_$_t_function_$$_t_string$","type_string":"function(function(),function(function()),string)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":676,"node_type":43,"src":{"id":677,"line":263,"column":34,"start":10270,"end":10330,"length":61,"parent_index":674},"parameters":[{"id":678,"node_type":44,"src":{"id":679,"line":263,"column":34,"start":10270,"end":10283,"length":14,"parent_index":676},"scope":674,"name":"target","type_name":{"id":680,"node_type":30,"src":{"id":681,"line":263,"column":34,"start":10270,"end":10276,"length":7,"parent_index":678},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":682,"node_type":44,"src":{"id":683,"line":263,"column":50,"start":10286,"end":10302,"length":17,"parent_index":676},"scope":674,"name":"data","type_name":{"id":684,"node_type":30,"src":{"id":685,"line":263,"column":50,"start":10286,"end":10290,"length":5,"parent_index":682},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":686,"node_type":44,"src":{"id":687,"line":263,"column":69,"start":10305,"end":10330,"length":26,"parent_index":676},"scope":674,"name":"errorMessage","type_name":{"id":688,"node_type":30,"src":{"id":689,"line":263,"column":69,"start":10305,"end":10310,"length":6,"parent_index":686},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":690,"node_type":43,"src":{"id":691,"line":263,"column":115,"start":10351,"end":10362,"length":12,"parent_index":674},"parameters":[{"id":692,"node_type":44,"src":{"id":693,"line":263,"column":115,"start":10351,"end":10362,"length":12,"parent_index":690},"scope":674,"name":"","type_name":{"id":694,"node_type":30,"src":{"id":695,"line":263,"column":115,"start":10351,"end":10355,"length":5,"parent_index":692},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_string","type_string":"function(address,bytes,string)"}},{"id":733,"name":"_verifyCallResult","node_type":42,"kind":41,"src":{"id":734,"line":271,"column":4,"start":10663,"end":11387,"length":725,"parent_index":259},"body":{"id":755,"node_type":46,"kind":0,"src":{"id":756,"line":271,"column":133,"start":10792,"end":11387,"length":596,"parent_index":733},"implemented":true,"statements":[{"id":757,"node_type":48,"src":{"id":758,"line":272,"column":0,"start":10802,"end":11381,"length":580,"parent_index":755},"condition":{"id":759,"node_type":16,"src":{"id":760,"line":272,"column":12,"start":10806,"end":10812,"length":7,"parent_index":757},"name":"success","type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":759,"is_pure":false},"body":{"id":761,"node_type":46,"kind":0,"src":{"id":762,"line":272,"column":21,"start":10815,"end":10856,"length":42,"parent_index":733},"implemented":true,"statements":[{"id":763,"node_type":47,"src":{"id":764,"line":273,"column":12,"start":10829,"end":10846,"length":18,"parent_index":733},"function_return_parameters":733,"expression":{"id":765,"node_type":16,"src":{"id":766,"line":273,"column":19,"start":10836,"end":10845,"length":10,"parent_index":761},"name":"returndata","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":765,"is_pure":false}}]}}]},"implemented":true,"visibility":2,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":735,"node_type":43,"src":{"id":736,"line":271,"column":31,"start":10690,"end":10754,"length":65,"parent_index":733},"parameters":[{"id":737,"node_type":44,"src":{"id":738,"line":271,"column":31,"start":10690,"end":10701,"length":12,"parent_index":735},"scope":733,"name":"success","type_name":{"id":739,"node_type":30,"src":{"id":740,"line":271,"column":31,"start":10690,"end":10693,"length":4,"parent_index":737},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":741,"node_type":44,"src":{"id":742,"line":271,"column":45,"start":10704,"end":10726,"length":23,"parent_index":735},"scope":733,"name":"returndata","type_name":{"id":743,"node_type":30,"src":{"id":744,"line":271,"column":45,"start":10704,"end":10708,"length":5,"parent_index":741},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":745,"node_type":44,"src":{"id":746,"line":271,"column":70,"start":10729,"end":10754,"length":26,"parent_index":735},"scope":733,"name":"errorMessage","type_name":{"id":747,"node_type":30,"src":{"id":748,"line":271,"column":70,"start":10729,"end":10734,"length":6,"parent_index":745},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":749,"node_type":43,"src":{"id":750,"line":271,"column":119,"start":10778,"end":10789,"length":12,"parent_index":733},"parameters":[{"id":751,"node_type":44,"src":{"id":752,"line":271,"column":119,"start":10778,"end":10789,"length":12,"parent_index":749},"scope":733,"name":"","type_name":{"id":753,"node_type":30,"src":{"id":754,"line":271,"column":119,"start":10778,"end":10782,"length":5,"parent_index":751},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_bool$$_t_bytes$$_t_string","type_string":"function(bool,bytes,string)"}}],"linearized_base_contracts":[259],"base_contracts":[],"contract_dependencies":[],"scope":251}],"src":{"id":252,"line":108,"column":0,"start":3706,"end":11389,"length":7684,"parent_index":118}},{"id":767,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":767,"name":"StorageSlot","absolute_path":"StorageSlot.sol"}],"absolute_path":"StorageSlot.sol","name":"StorageSlot","node_type":1,"nodes":[{"id":775,"node_type":10,"src":{"id":776,"line":293,"column":0,"start":11425,"end":11447,"length":23,"parent_index":767},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":777,"name":"StorageSlot","node_type":35,"src":{"id":0,"line":321,"column":0,"start":12599,"end":13817,"length":1219,"parent_index":767},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":779,"node_type":67,"src":{"id":780,"line":322,"column":4,"start":12625,"end":12673,"length":49,"parent_index":767},"name":"AddressSlot","canonical_name":"StorageSlot.AddressSlot","type_description":{"type_identifier":"t_struct$_StorageSlot_AddressSlot_$779","type_string":"struct StorageSlot.AddressSlot"},"members":[{"id":781,"node_type":44,"src":{"id":782,"line":323,"column":8,"start":12654,"end":12667,"length":14,"parent_index":779},"scope":777,"name":"value","type_name":{"id":783,"node_type":30,"src":{"id":784,"line":323,"column":8,"start":12654,"end":12660,"length":7,"parent_index":781},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4}],"visibility":3,"storage_location":1},{"id":786,"node_type":67,"src":{"id":787,"line":326,"column":4,"start":12680,"end":12725,"length":46,"parent_index":767},"name":"BooleanSlot","canonical_name":"StorageSlot.BooleanSlot","type_description":{"type_identifier":"t_struct$_StorageSlot_BooleanSlot_$786","type_string":"struct StorageSlot.BooleanSlot"},"members":[{"id":788,"node_type":44,"src":{"id":789,"line":327,"column":8,"start":12709,"end":12719,"length":11,"parent_index":786},"scope":777,"name":"value","type_name":{"id":790,"node_type":30,"src":{"id":791,"line":327,"column":8,"start":12709,"end":12712,"length":4,"parent_index":788},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":793,"node_type":67,"src":{"id":794,"line":330,"column":4,"start":12732,"end":12780,"length":49,"parent_index":767},"name":"Bytes32Slot","canonical_name":"StorageSlot.Bytes32Slot","type_description":{"type_identifier":"t_struct$_StorageSlot_Bytes32Slot_$793","type_string":"struct StorageSlot.Bytes32Slot"},"members":[{"id":795,"node_type":44,"src":{"id":796,"line":331,"column":8,"start":12761,"end":12774,"length":14,"parent_index":793},"scope":777,"name":"value","type_name":{"id":797,"node_type":30,"src":{"id":798,"line":331,"column":8,"start":12761,"end":12767,"length":7,"parent_index":795},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":800,"node_type":67,"src":{"id":801,"line":334,"column":4,"start":12787,"end":12835,"length":49,"parent_index":767},"name":"Uint256Slot","canonical_name":"StorageSlot.Uint256Slot","type_description":{"type_identifier":"t_struct$_StorageSlot_Uint256Slot_$800","type_string":"struct StorageSlot.Uint256Slot"},"members":[{"id":802,"node_type":44,"src":{"id":803,"line":335,"column":8,"start":12816,"end":12829,"length":14,"parent_index":800},"scope":777,"name":"value","type_name":{"id":804,"node_type":30,"src":{"id":805,"line":335,"column":8,"start":12816,"end":12822,"length":7,"parent_index":802},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":807,"name":"getAddressSlot","node_type":42,"kind":41,"src":{"id":808,"line":341,"column":4,"start":12934,"end":13080,"length":147,"parent_index":777},"body":{"id":823,"node_type":46,"kind":0,"src":{"id":824,"line":341,"column":88,"start":13018,"end":13080,"length":63,"parent_index":807},"implemented":true,"statements":[{"id":825,"node_type":89,"src":{"id":826,"line":342,"column":8,"start":13028,"end":13074,"length":47,"parent_index":823},"body":{"id":828,"node_type":90,"kind":0,"src":{"id":826,"line":342,"column":8,"start":13028,"end":13074,"length":47,"parent_index":825},"implemented":false,"statements":[{"id":827,"node_type":91,"src":{"id":829,"line":343,"column":12,"start":13051,"end":13064,"length":14,"parent_index":825},"body":[]}]}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":809,"node_type":43,"src":{"id":810,"line":341,"column":28,"start":12958,"end":12969,"length":12,"parent_index":807},"parameters":[{"id":811,"node_type":44,"src":{"id":812,"line":341,"column":28,"start":12958,"end":12969,"length":12,"parent_index":809},"scope":807,"name":"slot","type_name":{"id":813,"node_type":30,"src":{"id":814,"line":341,"column":28,"start":12958,"end":12964,"length":7,"parent_index":811},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":815,"node_type":43,"src":{"id":816,"line":341,"column":65,"start":12995,"end":13015,"length":21,"parent_index":807},"parameters":[{"id":817,"node_type":44,"src":{"id":818,"line":341,"column":65,"start":12995,"end":13015,"length":21,"parent_index":815},"scope":807,"name":"r","type_name":{"id":819,"node_type":69,"src":{"id":820,"line":341,"column":65,"start":12995,"end":13005,"length":11,"parent_index":817},"type_description":{"type_identifier":"t_struct$_StorageSlot_AddressSlot_$779","type_string":"struct StorageSlot.AddressSlot"},"path_node":{"id":821,"name":"AddressSlot","node_type":52,"referenced_declaration":779,"src":{"id":822,"line":341,"column":65,"start":12995,"end":13005,"length":11,"parent_index":819}},"referenced_declaration":779},"storage_location":3,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_struct$_StorageSlot_AddressSlot_$779","type_string":"struct StorageSlot.AddressSlot"}]},"scope":777,"type_description":{"type_identifier":"t_function_$_t_bytes32","type_string":"function(bytes32)"}},{"id":831,"name":"getBooleanSlot","node_type":42,"kind":41,"src":{"id":832,"line":350,"column":4,"start":13179,"end":13325,"length":147,"parent_index":777},"body":{"id":847,"node_type":46,"kind":0,"src":{"id":848,"line":350,"column":88,"start":13263,"end":13325,"length":63,"parent_index":831},"implemented":true,"statements":[{"id":849,"node_type":89,"src":{"id":850,"line":351,"column":8,"start":13273,"end":13319,"length":47,"parent_index":847},"body":{"id":852,"node_type":90,"kind":0,"src":{"id":850,"line":351,"column":8,"start":13273,"end":13319,"length":47,"parent_index":849},"implemented":false,"statements":[{"id":851,"node_type":91,"src":{"id":853,"line":352,"column":12,"start":13296,"end":13309,"length":14,"parent_index":849},"body":[]}]}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":833,"node_type":43,"src":{"id":834,"line":350,"column":28,"start":13203,"end":13214,"length":12,"parent_index":831},"parameters":[{"id":835,"node_type":44,"src":{"id":836,"line":350,"column":28,"start":13203,"end":13214,"length":12,"parent_index":833},"scope":831,"name":"slot","type_name":{"id":837,"node_type":30,"src":{"id":838,"line":350,"column":28,"start":13203,"end":13209,"length":7,"parent_index":835},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":839,"node_type":43,"src":{"id":840,"line":350,"column":65,"start":13240,"end":13260,"length":21,"parent_index":831},"parameters":[{"id":841,"node_type":44,"src":{"id":842,"line":350,"column":65,"start":13240,"end":13260,"length":21,"parent_index":839},"scope":831,"name":"r","type_name":{"id":843,"node_type":69,"src":{"id":844,"line":350,"column":65,"start":13240,"end":13250,"length":11,"parent_index":841},"type_description":{"type_identifier":"t_struct$_StorageSlot_BooleanSlot_$786","type_string":"struct StorageSlot.BooleanSlot"},"path_node":{"id":845,"name":"BooleanSlot","node_type":52,"referenced_declaration":786,"src":{"id":846,"line":350,"column":65,"start":13240,"end":13250,"length":11,"parent_index":843}},"referenced_declaration":786},"storage_location":3,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_struct$_StorageSlot_BooleanSlot_$786","type_string":"struct StorageSlot.BooleanSlot"}]},"scope":777,"type_description":{"type_identifier":"t_function_$_t_bytes32","type_string":"function(bytes32)"}},{"id":855,"name":"getBytes32Slot","node_type":42,"kind":41,"src":{"id":856,"line":359,"column":4,"start":13424,"end":13570,"length":147,"parent_index":777},"body":{"id":871,"node_type":46,"kind":0,"src":{"id":872,"line":359,"column":88,"start":13508,"end":13570,"length":63,"parent_index":855},"implemented":true,"statements":[{"id":873,"node_type":89,"src":{"id":874,"line":360,"column":8,"start":13518,"end":13564,"length":47,"parent_index":871},"body":{"id":876,"node_type":90,"kind":0,"src":{"id":874,"line":360,"column":8,"start":13518,"end":13564,"length":47,"parent_index":873},"implemented":false,"statements":[{"id":875,"node_type":91,"src":{"id":877,"line":361,"column":12,"start":13541,"end":13554,"length":14,"parent_index":873},"body":[]}]}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":857,"node_type":43,"src":{"id":858,"line":359,"column":28,"start":13448,"end":13459,"length":12,"parent_index":855},"parameters":[{"id":859,"node_type":44,"src":{"id":860,"line":359,"column":28,"start":13448,"end":13459,"length":12,"parent_index":857},"scope":855,"name":"slot","type_name":{"id":861,"node_type":30,"src":{"id":862,"line":359,"column":28,"start":13448,"end":13454,"length":7,"parent_index":859},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":863,"node_type":43,"src":{"id":864,"line":359,"column":65,"start":13485,"end":13505,"length":21,"parent_index":855},"parameters":[{"id":865,"node_type":44,"src":{"id":866,"line":359,"column":65,"start":13485,"end":13505,"length":21,"parent_index":863},"scope":855,"name":"r","type_name":{"id":867,"node_type":69,"src":{"id":868,"line":359,"column":65,"start":13485,"end":13495,"length":11,"parent_index":865},"type_description":{"type_identifier":"t_struct$_StorageSlot_Bytes32Slot_$793","type_string":"struct StorageSlot.Bytes32Slot"},"path_node":{"id":869,"name":"Bytes32Slot","node_type":52,"referenced_declaration":793,"src":{"id":870,"line":359,"column":65,"start":13485,"end":13495,"length":11,"parent_index":867}},"referenced_declaration":793},"storage_location":3,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_struct$_StorageSlot_Bytes32Slot_$793","type_string":"struct StorageSlot.Bytes32Slot"}]},"scope":777,"type_description":{"type_identifier":"t_function_$_t_bytes32","type_string":"function(bytes32)"}},{"id":879,"name":"getUint256Slot","node_type":42,"kind":41,"src":{"id":880,"line":368,"column":4,"start":13669,"end":13815,"length":147,"parent_index":777},"body":{"id":895,"node_type":46,"kind":0,"src":{"id":896,"line":368,"column":88,"start":13753,"end":13815,"length":63,"parent_index":879},"implemented":true,"statements":[{"id":897,"node_type":89,"src":{"id":898,"line":369,"column":8,"start":13763,"end":13809,"length":47,"parent_index":895},"body":{"id":900,"node_type":90,"kind":0,"src":{"id":898,"line":369,"column":8,"start":13763,"end":13809,"length":47,"parent_index":897},"implemented":false,"statements":[{"id":899,"node_type":91,"src":{"id":901,"line":370,"column":12,"start":13786,"end":13799,"length":14,"parent_index":897},"body":[]}]}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":881,"node_type":43,"src":{"id":882,"line":368,"column":28,"start":13693,"end":13704,"length":12,"parent_index":879},"parameters":[{"id":883,"node_type":44,"src":{"id":884,"line":368,"column":28,"start":13693,"end":13704,"length":12,"parent_index":881},"scope":879,"name":"slot","type_name":{"id":885,"node_type":30,"src":{"id":886,"line":368,"column":28,"start":13693,"end":13699,"length":7,"parent_index":883},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":887,"node_type":43,"src":{"id":888,"line":368,"column":65,"start":13730,"end":13750,"length":21,"parent_index":879},"parameters":[{"id":889,"node_type":44,"src":{"id":890,"line":368,"column":65,"start":13730,"end":13750,"length":21,"parent_index":887},"scope":879,"name":"r","type_name":{"id":891,"node_type":69,"src":{"id":892,"line":368,"column":65,"start":13730,"end":13740,"length":11,"parent_index":889},"type_description":{"type_identifier":"t_struct$_StorageSlot_Uint256Slot_$800","type_string":"struct StorageSlot.Uint256Slot"},"path_node":{"id":893,"name":"Uint256Slot","node_type":52,"referenced_declaration":800,"src":{"id":894,"line":368,"column":65,"start":13730,"end":13740,"length":11,"parent_index":891}},"referenced_declaration":800},"storage_location":3,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_struct$_StorageSlot_Uint256Slot_$800","type_string":"struct StorageSlot.Uint256Slot"}]},"scope":777,"type_description":{"type_identifier":"t_function_$_t_bytes32","type_string":"function(bytes32)"}}],"linearized_base_contracts":[777],"base_contracts":[],"contract_dependencies":[],"scope":767}],"src":{"id":768,"line":321,"column":0,"start":12599,"end":13817,"length":1219,"parent_index":118}},{"id":902,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":902,"name":"ERC1967Upgrade","absolute_path":"ERC1967Upgrade.sol"},{"id":767,"name":"StorageSlot","absolute_path":"StorageSlot.sol"},{"id":251,"name":"Address","absolute_path":"Address.sol"},{"id":119,"name":"IBeacon","absolute_path":"IBeacon.sol"}],"absolute_path":"ERC1967Upgrade.sol","name":"ERC1967Upgrade","node_type":1,"nodes":[{"id":912,"node_type":10,"src":{"id":913,"line":378,"column":0,"start":13854,"end":13876,"length":23,"parent_index":902},"literals":["pragma","solidity","^","0",".","8",".","2",";"],"text":"pragma solidity ^0.8.2;"},{"id":914,"node_type":29,"src":{"id":0,"line":380,"column":0,"start":13879,"end":13909,"length":31,"parent_index":902},"absolute_path":"IBeacon.sol","file":"../beacon/IBeacon.sol","scope":902,"unit_alias":"","source_unit":767},{"id":915,"node_type":29,"src":{"id":0,"line":381,"column":0,"start":13911,"end":13943,"length":33,"parent_index":902},"absolute_path":"Address.sol","file":"../../utils/Address.sol","scope":902,"unit_alias":"","source_unit":767},{"id":916,"node_type":29,"src":{"id":0,"line":382,"column":0,"start":13945,"end":13981,"length":37,"parent_index":902},"absolute_path":"StorageSlot.sol","file":"../../utils/StorageSlot.sol","scope":902,"unit_alias":"","source_unit":767},{"id":917,"name":"ERC1967Upgrade","node_type":35,"src":{"id":0,"line":392,"column":0,"start":14221,"end":20590,"length":6370,"parent_index":902},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":919,"name":"_ROLLBACK_SLOT","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":920,"line":394,"column":4,"start":14339,"end":14447,"length":109,"parent_index":917},"scope":917,"type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":921,"node_type":30,"src":{"id":922,"line":394,"column":4,"start":14339,"end":14345,"length":7,"parent_index":919},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0}},{"id":924,"name":"_IMPLEMENTATION_SLOT","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":925,"line":401,"column":4,"start":14673,"end":14788,"length":116,"parent_index":917},"scope":917,"type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":926,"node_type":30,"src":{"id":927,"line":401,"column":4,"start":14673,"end":14679,"length":7,"parent_index":924},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0}},{"id":929,"node_type":57,"src":{"id":930,"line":406,"column":4,"start":14868,"end":14914,"length":47,"parent_index":917},"parameters":{"id":931,"node_type":43,"src":{"id":930,"line":406,"column":4,"start":14868,"end":14914,"length":47,"parent_index":929},"parameters":[{"id":932,"node_type":44,"src":{"id":933,"line":406,"column":19,"start":14883,"end":14912,"length":30,"parent_index":931},"scope":929,"name":"implementation","type_name":{"id":934,"node_type":30,"src":{"id":935,"line":406,"column":19,"start":14883,"end":14889,"length":7,"parent_index":932},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"name":"Upgraded","anonymous":false},{"id":937,"name":"_getImplementation","node_type":42,"kind":41,"src":{"id":938,"line":411,"column":4,"start":14993,"end":15132,"length":140,"parent_index":917},"body":{"id":951,"node_type":46,"kind":0,"src":{"id":952,"line":411,"column":66,"start":15055,"end":15132,"length":78,"parent_index":937},"implemented":true,"statements":[{"id":953,"node_type":47,"src":{"id":954,"line":412,"column":8,"start":15065,"end":15126,"length":62,"parent_index":937},"function_return_parameters":937,"expression":{"id":955,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":956,"line":412,"column":15,"start":15072,"end":15125,"length":54,"parent_index":951},"expression":{"id":957,"node_type":24,"kind":24,"src":{"id":958,"line":412,"column":15,"start":15072,"end":15119,"length":48,"parent_index":955},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"arguments":[{"id":959,"node_type":16,"src":{"id":960,"line":412,"column":42,"start":15099,"end":15118,"length":20,"parent_index":957},"name":"_IMPLEMENTATION_SLOT","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":961,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":962,"line":412,"column":15,"start":15072,"end":15097,"length":26,"parent_index":957},"expression":{"id":963,"node_type":16,"src":{"id":964,"line":412,"column":15,"start":15072,"end":15082,"length":11,"parent_index":961},"name":"StorageSlot","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"member_name":"getAddressSlot","argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":939,"node_type":43,"src":{"id":940,"line":411,"column":57,"start":15046,"end":15052,"length":7,"parent_index":937},"parameters":[{"id":941,"node_type":44,"src":{"id":942,"line":411,"column":57,"start":15046,"end":15052,"length":7,"parent_index":939},"scope":937,"name":"","type_name":{"id":943,"node_type":30,"src":{"id":944,"line":411,"column":57,"start":15046,"end":15052,"length":7,"parent_index":941},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":945,"node_type":43,"src":{"id":946,"line":411,"column":57,"start":15046,"end":15052,"length":7,"parent_index":937},"parameters":[{"id":947,"node_type":44,"src":{"id":948,"line":411,"column":57,"start":15046,"end":15052,"length":7,"parent_index":945},"scope":937,"name":"","type_name":{"id":949,"node_type":30,"src":{"id":950,"line":411,"column":57,"start":15046,"end":15052,"length":7,"parent_index":947},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":966,"name":"_setImplementation","node_type":42,"kind":41,"src":{"id":967,"line":418,"column":4,"start":15224,"end":15482,"length":259,"parent_index":917},"body":{"id":975,"node_type":46,"kind":0,"src":{"id":976,"line":418,"column":67,"start":15287,"end":15482,"length":196,"parent_index":966},"implemented":true,"statements":[{"id":977,"node_type":24,"kind":24,"src":{"id":978,"line":419,"column":8,"start":15297,"end":15391,"length":95,"parent_index":975},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: new implementation is not a contract\""}],"arguments":[{"id":979,"node_type":24,"kind":24,"src":{"id":980,"line":419,"column":16,"start":15305,"end":15341,"length":37,"parent_index":977},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":981,"node_type":16,"src":{"id":982,"line":419,"column":35,"start":15324,"end":15340,"length":17,"parent_index":979},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":981,"is_pure":false}],"expression":{"id":983,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":984,"line":419,"column":16,"start":15305,"end":15322,"length":18,"parent_index":979},"expression":{"id":985,"node_type":16,"src":{"id":986,"line":419,"column":16,"start":15305,"end":15311,"length":7,"parent_index":983},"name":"Address","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":251,"is_pure":false},"member_name":"isContract","argument_types":[{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":987,"node_type":17,"kind":50,"value":"ERC1967: new implementation is not a contract","hex_value":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","src":{"id":988,"line":419,"column":55,"start":15344,"end":15390,"length":47,"parent_index":977},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: new implementation is not a contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":989,"node_type":16,"src":{"id":990,"line":419,"column":8,"start":15297,"end":15303,"length":7,"parent_index":977},"name":"require","type_description":{"type_identifier":"t_function_$_t_function_$_t_address$$$_t_string_literal","type_string":"function(function(address),literal_string \"ERC1967: new implementation is not a contract\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: new implementation is not a contract\""}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$$_t_string_literal$","type_string":"function(function(address),string memory)"}},{"id":991,"node_type":81,"src":{"id":992,"line":420,"column":8,"start":15402,"end":15476,"length":75,"parent_index":975},"expression":{"id":993,"node_type":27,"src":{"id":994,"line":420,"column":8,"start":15402,"end":15475,"length":74,"parent_index":975},"operator":11,"left_expression":{"id":995,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":996,"line":420,"column":8,"start":15402,"end":15455,"length":54,"parent_index":993},"expression":{"id":997,"node_type":24,"kind":24,"src":{"id":998,"line":420,"column":8,"start":15402,"end":15449,"length":48,"parent_index":995},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"arguments":[{"id":999,"node_type":16,"src":{"id":1000,"line":420,"column":35,"start":15429,"end":15448,"length":20,"parent_index":997},"name":"_IMPLEMENTATION_SLOT","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":1001,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1002,"line":420,"column":8,"start":15402,"end":15427,"length":26,"parent_index":997},"expression":{"id":1003,"node_type":16,"src":{"id":1004,"line":420,"column":8,"start":15402,"end":15412,"length":11,"parent_index":1001},"name":"StorageSlot","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"member_name":"getAddressSlot","argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"right_expression":{"id":1005,"node_type":16,"src":{"id":1006,"line":420,"column":65,"start":15459,"end":15475,"length":17,"parent_index":993},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1005,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}}]},"implemented":true,"visibility":2,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":968,"node_type":43,"src":{"id":969,"line":418,"column":32,"start":15252,"end":15276,"length":25,"parent_index":966},"parameters":[{"id":970,"node_type":44,"src":{"id":971,"line":418,"column":32,"start":15252,"end":15276,"length":25,"parent_index":968},"scope":966,"name":"newImplementation","type_name":{"id":972,"node_type":30,"src":{"id":973,"line":418,"column":32,"start":15252,"end":15258,"length":7,"parent_index":970},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":974,"node_type":43,"src":{"id":967,"line":418,"column":4,"start":15224,"end":15482,"length":259,"parent_index":966},"parameters":[],"parameter_types":[]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":1008,"name":"_upgradeTo","node_type":42,"kind":41,"src":{"id":1009,"line":428,"column":4,"start":15589,"end":15740,"length":152,"parent_index":917},"body":{"id":1017,"node_type":46,"kind":0,"src":{"id":1018,"line":428,"column":60,"start":15645,"end":15740,"length":96,"parent_index":1008},"implemented":true,"statements":[{"id":1019,"node_type":24,"kind":24,"src":{"id":1020,"line":429,"column":8,"start":15655,"end":15691,"length":37,"parent_index":1017},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1021,"node_type":16,"src":{"id":1022,"line":429,"column":27,"start":15674,"end":15690,"length":17,"parent_index":1019},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1021,"is_pure":false}],"expression":{"id":1023,"node_type":16,"src":{"id":1024,"line":429,"column":8,"start":15655,"end":15672,"length":18,"parent_index":1019},"name":"_setImplementation","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1025,"node_type":64,"src":{"id":1026,"line":430,"column":8,"start":15702,"end":15734,"length":33,"parent_index":1008},"arguments":[{"id":1027,"node_type":16,"src":{"id":1028,"line":430,"column":22,"start":15716,"end":15732,"length":17,"parent_index":1017},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1027,"is_pure":false}],"expression":{"id":1029,"node_type":16,"src":{"id":1030,"line":430,"column":13,"start":15707,"end":15714,"length":8,"parent_index":1017},"name":"Upgraded","type_description":{"type_identifier":"t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929","type_string":"event ERC1967Upgrade.Upgraded"},"overloaded_declarations":[],"referenced_declaration":929,"is_pure":false}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1010,"node_type":43,"src":{"id":1011,"line":428,"column":24,"start":15609,"end":15633,"length":25,"parent_index":1008},"parameters":[{"id":1012,"node_type":44,"src":{"id":1013,"line":428,"column":24,"start":15609,"end":15633,"length":25,"parent_index":1010},"scope":1008,"name":"newImplementation","type_name":{"id":1014,"node_type":30,"src":{"id":1015,"line":428,"column":24,"start":15609,"end":15615,"length":7,"parent_index":1012},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1016,"node_type":43,"src":{"id":1009,"line":428,"column":4,"start":15589,"end":15740,"length":152,"parent_index":1008},"parameters":[],"parameter_types":[]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":1032,"name":"_upgradeToAndCall","node_type":42,"kind":41,"src":{"id":1033,"line":438,"column":4,"start":15875,"end":16189,"length":315,"parent_index":917},"body":{"id":1049,"node_type":46,"kind":0,"src":{"id":1050,"line":438,"column":102,"start":15973,"end":16189,"length":217,"parent_index":1032},"implemented":true,"statements":[{"id":1051,"node_type":24,"kind":24,"src":{"id":1052,"line":439,"column":8,"start":15983,"end":16019,"length":37,"parent_index":1049},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1053,"node_type":16,"src":{"id":1054,"line":439,"column":27,"start":16002,"end":16018,"length":17,"parent_index":1051},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1053,"is_pure":false}],"expression":{"id":1055,"node_type":16,"src":{"id":1056,"line":439,"column":8,"start":15983,"end":16000,"length":18,"parent_index":1051},"name":"_setImplementation","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1057,"node_type":64,"src":{"id":1058,"line":440,"column":8,"start":16030,"end":16062,"length":33,"parent_index":1032},"arguments":[{"id":1059,"node_type":16,"src":{"id":1060,"line":440,"column":22,"start":16044,"end":16060,"length":17,"parent_index":1049},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1059,"is_pure":false}],"expression":{"id":1061,"node_type":16,"src":{"id":1062,"line":440,"column":13,"start":16035,"end":16042,"length":8,"parent_index":1049},"name":"Upgraded","type_description":{"type_identifier":"t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929","type_string":"event ERC1967Upgrade.Upgraded"},"overloaded_declarations":[],"referenced_declaration":929,"is_pure":false}},{"id":1063,"node_type":48,"src":{"id":1064,"line":441,"column":0,"start":16072,"end":16183,"length":112,"parent_index":1049},"condition":{"id":1065,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1066,"line":441,"column":12,"start":16076,"end":16103,"length":28,"parent_index":1063},"operator":33,"left_expression":{"id":1067,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1068,"line":441,"column":12,"start":16076,"end":16090,"length":15,"parent_index":1065},"operator":7,"left_expression":{"id":1069,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1070,"line":441,"column":12,"start":16076,"end":16086,"length":11,"parent_index":1067},"expression":{"id":1071,"node_type":16,"src":{"id":1072,"line":441,"column":12,"start":16076,"end":16079,"length":4,"parent_index":1069},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1071,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_bytes","type_string":"bytes"}},"right_expression":{"id":1073,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1074,"line":441,"column":26,"start":16090,"end":16090,"length":1,"parent_index":1067},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"right_expression":{"id":1075,"node_type":16,"src":{"id":1076,"line":441,"column":31,"start":16095,"end":16103,"length":9,"parent_index":1065},"name":"forceCall","type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":1075,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":1077,"node_type":46,"kind":0,"src":{"id":1078,"line":441,"column":42,"start":16106,"end":16183,"length":78,"parent_index":1032},"implemented":true,"statements":[{"id":1079,"node_type":24,"kind":24,"src":{"id":1080,"line":442,"column":12,"start":16120,"end":16172,"length":53,"parent_index":1077},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":1081,"node_type":16,"src":{"id":1082,"line":442,"column":41,"start":16149,"end":16165,"length":17,"parent_index":1079},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1081,"is_pure":false},{"id":1083,"node_type":16,"src":{"id":1084,"line":442,"column":60,"start":16168,"end":16171,"length":4,"parent_index":1079},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1083,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":1085,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1086,"line":442,"column":12,"start":16120,"end":16147,"length":28,"parent_index":1079},"expression":{"id":1087,"node_type":16,"src":{"id":1088,"line":442,"column":12,"start":16120,"end":16126,"length":7,"parent_index":1085},"name":"Address","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":251,"is_pure":false},"member_name":"functionDelegateCall","argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}],"type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}},"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$","type_string":"function(address,bytes)"}}]}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1034,"node_type":43,"src":{"id":1035,"line":438,"column":31,"start":15902,"end":15961,"length":60,"parent_index":1032},"parameters":[{"id":1036,"node_type":44,"src":{"id":1037,"line":438,"column":31,"start":15902,"end":15926,"length":25,"parent_index":1034},"scope":1032,"name":"newImplementation","type_name":{"id":1038,"node_type":30,"src":{"id":1039,"line":438,"column":31,"start":15902,"end":15908,"length":7,"parent_index":1036},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1040,"node_type":44,"src":{"id":1041,"line":438,"column":58,"start":15929,"end":15945,"length":17,"parent_index":1034},"scope":1032,"name":"data","type_name":{"id":1042,"node_type":30,"src":{"id":1043,"line":438,"column":58,"start":15929,"end":15933,"length":5,"parent_index":1040},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1044,"node_type":44,"src":{"id":1045,"line":438,"column":77,"start":15948,"end":15961,"length":14,"parent_index":1034},"scope":1032,"name":"forceCall","type_name":{"id":1046,"node_type":30,"src":{"id":1047,"line":438,"column":77,"start":15948,"end":15951,"length":4,"parent_index":1044},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}]},"return_parameters":{"id":1048,"node_type":43,"src":{"id":1033,"line":438,"column":4,"start":15875,"end":16189,"length":315,"parent_index":1032},"parameters":[],"parameter_types":[]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_bool","type_string":"function(address,bytes,bool)"}},{"id":1090,"name":"_upgradeToAndCallSecure","node_type":42,"kind":41,"src":{"id":1091,"line":451,"column":4,"start":16362,"end":17675,"length":1314,"parent_index":917},"body":{"id":1107,"node_type":46,"kind":0,"src":{"id":1108,"line":451,"column":108,"start":16466,"end":17675,"length":1210,"parent_index":1090},"implemented":true,"statements":[{"id":1109,"node_type":44,"src":{"id":1110,"line":452,"column":8,"start":16476,"end":16524,"length":49,"parent_index":1107},"assignments":[1111],"declarations":[{"is_constant":false,"id":1111,"state_mutability":1,"name":"oldImplementation","node_type":44,"scope":1107,"src":{"id":1112,"line":452,"column":8,"start":16476,"end":16500,"length":25,"parent_index":1109},"is_state_variable":false,"storage_location":1,"type_name":{"id":1113,"node_type":30,"src":{"id":1114,"line":452,"column":8,"start":16476,"end":16482,"length":7,"parent_index":1111},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":1115,"node_type":24,"kind":24,"src":{"id":1116,"line":452,"column":36,"start":16504,"end":16523,"length":20,"parent_index":1109},"argument_types":[],"arguments":[],"expression":{"id":1117,"node_type":16,"src":{"id":1118,"line":452,"column":36,"start":16504,"end":16521,"length":18,"parent_index":1115},"name":"_getImplementation","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}},{"id":1119,"node_type":24,"kind":24,"src":{"id":1120,"line":455,"column":8,"start":16577,"end":16613,"length":37,"parent_index":1107},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1121,"node_type":16,"src":{"id":1122,"line":455,"column":27,"start":16596,"end":16612,"length":17,"parent_index":1119},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1121,"is_pure":false}],"expression":{"id":1123,"node_type":16,"src":{"id":1124,"line":455,"column":8,"start":16577,"end":16594,"length":18,"parent_index":1119},"name":"_setImplementation","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1125,"node_type":48,"src":{"id":1126,"line":456,"column":0,"start":16624,"end":16735,"length":112,"parent_index":1107},"condition":{"id":1127,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1128,"line":456,"column":12,"start":16628,"end":16655,"length":28,"parent_index":1125},"operator":33,"left_expression":{"id":1129,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1130,"line":456,"column":12,"start":16628,"end":16642,"length":15,"parent_index":1127},"operator":7,"left_expression":{"id":1131,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1132,"line":456,"column":12,"start":16628,"end":16638,"length":11,"parent_index":1129},"expression":{"id":1133,"node_type":16,"src":{"id":1134,"line":456,"column":12,"start":16628,"end":16631,"length":4,"parent_index":1131},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1133,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_bytes","type_string":"bytes"}},"right_expression":{"id":1135,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1136,"line":456,"column":26,"start":16642,"end":16642,"length":1,"parent_index":1129},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"right_expression":{"id":1137,"node_type":16,"src":{"id":1138,"line":456,"column":31,"start":16647,"end":16655,"length":9,"parent_index":1127},"name":"forceCall","type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":1137,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":1139,"node_type":46,"kind":0,"src":{"id":1140,"line":456,"column":42,"start":16658,"end":16735,"length":78,"parent_index":1090},"implemented":true,"statements":[{"id":1141,"node_type":24,"kind":24,"src":{"id":1142,"line":457,"column":12,"start":16672,"end":16724,"length":53,"parent_index":1139},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":1143,"node_type":16,"src":{"id":1144,"line":457,"column":41,"start":16701,"end":16717,"length":17,"parent_index":1141},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1143,"is_pure":false},{"id":1145,"node_type":16,"src":{"id":1146,"line":457,"column":60,"start":16720,"end":16723,"length":4,"parent_index":1141},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1145,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":1147,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1148,"line":457,"column":12,"start":16672,"end":16699,"length":28,"parent_index":1141},"expression":{"id":1149,"node_type":16,"src":{"id":1150,"line":457,"column":12,"start":16672,"end":16678,"length":7,"parent_index":1147},"name":"Address","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":251,"is_pure":false},"member_name":"functionDelegateCall","argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}],"type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}},"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$","type_string":"function(address,bytes)"}}]}},{"id":1151,"node_type":44,"src":{"id":1152,"line":461,"column":8,"start":16806,"end":16898,"length":93,"parent_index":1107},"assignments":[1153],"declarations":[{"is_constant":false,"id":1153,"state_mutability":1,"name":"rollbackTesting","node_type":44,"scope":1107,"src":{"id":1154,"line":461,"column":8,"start":16806,"end":16852,"length":47,"parent_index":1151},"is_state_variable":false,"storage_location":3,"type_name":{"id":1155,"node_type":69,"src":{"id":1156,"line":461,"column":8,"start":16806,"end":16828,"length":23,"parent_index":1153},"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"path_node":{"id":1157,"name":"StorageSlot","node_type":52,"referenced_declaration":767,"src":{"id":1158,"line":461,"column":8,"start":16806,"end":16816,"length":11,"parent_index":1155}},"referenced_declaration":767},"visibility":1}],"initial_value":{"id":1159,"node_type":24,"kind":24,"src":{"id":1160,"line":461,"column":58,"start":16856,"end":16897,"length":42,"parent_index":1151},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"arguments":[{"id":1161,"node_type":16,"src":{"id":1162,"line":461,"column":85,"start":16883,"end":16896,"length":14,"parent_index":1159},"name":"_ROLLBACK_SLOT","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":1163,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1164,"line":461,"column":58,"start":16856,"end":16881,"length":26,"parent_index":1159},"expression":{"id":1165,"node_type":16,"src":{"id":1166,"line":461,"column":58,"start":16856,"end":16866,"length":11,"parent_index":1163},"name":"StorageSlot","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"member_name":"getBooleanSlot","argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}},{"id":1167,"node_type":48,"src":{"id":1168,"line":462,"column":0,"start":16908,"end":17669,"length":762,"parent_index":1107},"condition":{"id":1169,"node_type":18,"src":{"id":1170,"line":462,"column":12,"start":16912,"end":16933,"length":22,"parent_index":1090},"operator":31,"prefix":false,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"expression":{"id":1171,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1172,"line":462,"column":13,"start":16913,"end":16933,"length":21,"parent_index":1169},"expression":{"id":1173,"node_type":16,"src":{"id":1174,"line":462,"column":13,"start":16913,"end":16927,"length":15,"parent_index":1171},"name":"rollbackTesting","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":1151,"is_pure":false},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"body":{"id":1175,"node_type":46,"kind":0,"src":{"id":1176,"line":462,"column":36,"start":16936,"end":17669,"length":734,"parent_index":1090},"implemented":true,"statements":[{"id":1177,"node_type":81,"src":{"id":1178,"line":464,"column":12,"start":17026,"end":17054,"length":29,"parent_index":1175},"expression":{"id":1179,"node_type":27,"src":{"id":1180,"line":464,"column":12,"start":17026,"end":17053,"length":28,"parent_index":1175},"operator":11,"left_expression":{"id":1181,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1182,"line":464,"column":12,"start":17026,"end":17046,"length":21,"parent_index":1179},"expression":{"id":1183,"node_type":16,"src":{"id":1184,"line":464,"column":12,"start":17026,"end":17040,"length":15,"parent_index":1181},"name":"rollbackTesting","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":1151,"is_pure":false},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"right_expression":{"id":1185,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":1186,"line":464,"column":36,"start":17050,"end":17053,"length":4,"parent_index":1179},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}}},{"id":1187,"node_type":24,"kind":24,"src":{"id":1188,"line":465,"column":12,"start":17068,"end":17284,"length":217,"parent_index":1175},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function__t_string_literal$_t_function_$_t_string_literal$","type_string":"function(string memory,string memory)"}],"arguments":[{"id":1189,"node_type":16,"src":{"id":1190,"line":466,"column":16,"start":17114,"end":17130,"length":17,"parent_index":1187},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1189,"is_pure":false},{"id":1191,"node_type":24,"kind":24,"src":{"id":1192,"line":467,"column":16,"start":17149,"end":17270,"length":122,"parent_index":1187},"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"upgradeTo(address)\""},{"type_identifier":"t_function_$_t_string_literal","type_string":"function(literal_string \"upgradeTo(address)\")"}],"arguments":[{"id":1193,"node_type":17,"kind":50,"value":"upgradeTo(address)","hex_value":"75706772616465546f286164647265737329","src":{"id":1194,"line":468,"column":20,"start":17194,"end":17213,"length":20,"parent_index":1191},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"upgradeTo(address)\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},{"id":1195,"node_type":16,"src":{"id":1196,"line":469,"column":20,"start":17236,"end":17252,"length":17,"parent_index":1191},"name":"oldImplementation","type_description":{"type_identifier":"t_function_$_t_string_literal","type_string":"function(literal_string \"upgradeTo(address)\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"upgradeTo(address)\""}]}],"expression":{"id":1197,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1198,"line":467,"column":16,"start":17149,"end":17171,"length":23,"parent_index":1191},"expression":{"id":1199,"node_type":16,"src":{"id":1200,"line":467,"column":16,"start":17149,"end":17151,"length":3,"parent_index":1197},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"encodeWithSignature","argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"upgradeTo(address)\""},{"type_identifier":"t_function_$_t_string_literal","type_string":"function(literal_string \"upgradeTo(address)\")"}],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function__t_string_literal$_t_function_$_t_string_literal$","type_string":"function(string memory,string memory)"}}],"expression":{"id":1201,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1202,"line":465,"column":12,"start":17068,"end":17095,"length":28,"parent_index":1187},"expression":{"id":1203,"node_type":16,"src":{"id":1204,"line":465,"column":12,"start":17068,"end":17074,"length":7,"parent_index":1201},"name":"Address","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":251,"is_pure":false},"member_name":"functionDelegateCall","argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function__t_string_literal$_t_function_$_t_string_literal$","type_string":"function(string memory,string memory)"}],"type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}},"type_description":{"type_identifier":"t_function_$_t_address$$_t_function__t_string_literal$_t_function_$_t_string_literal$$","type_string":"function(address,function(string memory,string memory))"}},{"id":1205,"node_type":81,"src":{"id":1206,"line":472,"column":12,"start":17299,"end":17328,"length":30,"parent_index":1175},"expression":{"id":1207,"node_type":27,"src":{"id":1208,"line":472,"column":12,"start":17299,"end":17327,"length":29,"parent_index":1175},"operator":11,"left_expression":{"id":1209,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1210,"line":472,"column":12,"start":17299,"end":17319,"length":21,"parent_index":1207},"expression":{"id":1211,"node_type":16,"src":{"id":1212,"line":472,"column":12,"start":17299,"end":17313,"length":15,"parent_index":1209},"name":"rollbackTesting","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":1151,"is_pure":false},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"right_expression":{"id":1213,"node_type":17,"kind":61,"value":"false","hex_value":"66616c7365","src":{"id":1214,"line":472,"column":36,"start":17323,"end":17327,"length":5,"parent_index":1207},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}}},{"id":1215,"node_type":24,"kind":24,"src":{"id":1216,"line":474,"column":12,"start":17386,"end":17486,"length":101,"parent_index":1175},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\""}],"arguments":[{"id":1217,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1218,"line":474,"column":20,"start":17394,"end":17434,"length":41,"parent_index":1215},"operator":11,"left_expression":{"id":1219,"node_type":16,"src":{"id":1220,"line":474,"column":20,"start":17394,"end":17410,"length":17,"parent_index":1217},"name":"oldImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1109,"is_pure":false},"right_expression":{"id":1221,"node_type":24,"kind":24,"src":{"id":1222,"line":474,"column":41,"start":17415,"end":17434,"length":20,"parent_index":1217},"argument_types":[],"arguments":[],"expression":{"id":1223,"node_type":16,"src":{"id":1224,"line":474,"column":41,"start":17415,"end":17432,"length":18,"parent_index":1221},"name":"_getImplementation","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1225,"node_type":17,"kind":50,"value":"ERC1967Upgrade: upgrade breaks further upgrades","hex_value":"45524331393637557067726164653a207570677261646520627265616b732066757274686572207570677261646573","src":{"id":1226,"line":474,"column":63,"start":17437,"end":17485,"length":49,"parent_index":1215},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1227,"node_type":16,"src":{"id":1228,"line":474,"column":12,"start":17386,"end":17392,"length":7,"parent_index":1215},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1229,"node_type":24,"kind":24,"src":{"id":1230,"line":476,"column":12,"start":17576,"end":17612,"length":37,"parent_index":1175},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1231,"node_type":16,"src":{"id":1232,"line":476,"column":31,"start":17595,"end":17611,"length":17,"parent_index":1229},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1231,"is_pure":false}],"expression":{"id":1233,"node_type":16,"src":{"id":1234,"line":476,"column":12,"start":17576,"end":17593,"length":18,"parent_index":1229},"name":"_setImplementation","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1235,"node_type":64,"src":{"id":1236,"line":477,"column":12,"start":17627,"end":17659,"length":33,"parent_index":1090},"arguments":[{"id":1237,"node_type":16,"src":{"id":1238,"line":477,"column":26,"start":17641,"end":17657,"length":17,"parent_index":1175},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1237,"is_pure":false}],"expression":{"id":1239,"node_type":16,"src":{"id":1240,"line":477,"column":17,"start":17632,"end":17639,"length":8,"parent_index":1175},"name":"Upgraded","type_description":{"type_identifier":"t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929","type_string":"event ERC1967Upgrade.Upgraded"},"overloaded_declarations":[],"referenced_declaration":929,"is_pure":false}}]}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1092,"node_type":43,"src":{"id":1093,"line":451,"column":37,"start":16395,"end":16454,"length":60,"parent_index":1090},"parameters":[{"id":1094,"node_type":44,"src":{"id":1095,"line":451,"column":37,"start":16395,"end":16419,"length":25,"parent_index":1092},"scope":1090,"name":"newImplementation","type_name":{"id":1096,"node_type":30,"src":{"id":1097,"line":451,"column":37,"start":16395,"end":16401,"length":7,"parent_index":1094},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1098,"node_type":44,"src":{"id":1099,"line":451,"column":64,"start":16422,"end":16438,"length":17,"parent_index":1092},"scope":1090,"name":"data","type_name":{"id":1100,"node_type":30,"src":{"id":1101,"line":451,"column":64,"start":16422,"end":16426,"length":5,"parent_index":1098},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1102,"node_type":44,"src":{"id":1103,"line":451,"column":83,"start":16441,"end":16454,"length":14,"parent_index":1092},"scope":1090,"name":"forceCall","type_name":{"id":1104,"node_type":30,"src":{"id":1105,"line":451,"column":83,"start":16441,"end":16444,"length":4,"parent_index":1102},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}]},"return_parameters":{"id":1106,"node_type":43,"src":{"id":1091,"line":451,"column":4,"start":16362,"end":17675,"length":1314,"parent_index":1090},"parameters":[],"parameter_types":[]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_bool","type_string":"function(address,bytes,bool)"}},{"id":1242,"name":"_upgradeBeaconToAndCall","node_type":42,"kind":41,"src":{"id":1243,"line":487,"column":4,"start":17979,"end":18291,"length":313,"parent_index":917},"body":{"id":1259,"node_type":46,"kind":0,"src":{"id":1260,"line":487,"column":100,"start":18075,"end":18291,"length":217,"parent_index":1242},"implemented":true,"statements":[{"id":1261,"node_type":24,"kind":24,"src":{"id":1262,"line":488,"column":8,"start":18085,"end":18105,"length":21,"parent_index":1259},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1263,"node_type":16,"src":{"id":1264,"line":488,"column":19,"start":18096,"end":18104,"length":9,"parent_index":1261},"name":"newBeacon","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1263,"is_pure":false}],"expression":{"id":1265,"node_type":16,"src":{"id":1266,"line":488,"column":8,"start":18085,"end":18094,"length":10,"parent_index":1261},"name":"_setBeacon","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1267,"node_type":64,"src":{"id":1268,"line":489,"column":8,"start":18116,"end":18146,"length":31,"parent_index":1242},"arguments":[{"id":1269,"node_type":16,"src":{"id":1270,"line":489,"column":28,"start":18136,"end":18144,"length":9,"parent_index":1259},"name":"newBeacon","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1269,"is_pure":false}],"expression":{"id":1271,"node_type":16,"src":{"id":1272,"line":489,"column":13,"start":18121,"end":18134,"length":14,"parent_index":1259},"name":"BeaconUpgraded","type_description":{"type_identifier":"t_event\u0026_ERC1967Upgrade_BeaconUpgraded_\u00261433","type_string":"event ERC1967Upgrade.BeaconUpgraded"},"overloaded_declarations":[],"referenced_declaration":1433,"is_pure":false}},{"id":1273,"node_type":48,"src":{"id":1274,"line":490,"column":0,"start":18156,"end":18285,"length":130,"parent_index":1259},"condition":{"id":1275,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1276,"line":490,"column":12,"start":18160,"end":18187,"length":28,"parent_index":1273},"operator":33,"left_expression":{"id":1277,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1278,"line":490,"column":12,"start":18160,"end":18174,"length":15,"parent_index":1275},"operator":7,"left_expression":{"id":1279,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1280,"line":490,"column":12,"start":18160,"end":18170,"length":11,"parent_index":1277},"expression":{"id":1281,"node_type":16,"src":{"id":1282,"line":490,"column":12,"start":18160,"end":18163,"length":4,"parent_index":1279},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1281,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_bytes","type_string":"bytes"}},"right_expression":{"id":1283,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1284,"line":490,"column":26,"start":18174,"end":18174,"length":1,"parent_index":1277},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"right_expression":{"id":1285,"node_type":16,"src":{"id":1286,"line":490,"column":31,"start":18179,"end":18187,"length":9,"parent_index":1275},"name":"forceCall","type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":1285,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":1287,"node_type":46,"kind":0,"src":{"id":1288,"line":490,"column":42,"start":18190,"end":18285,"length":96,"parent_index":1242},"implemented":true,"statements":[{"id":1289,"node_type":24,"kind":24,"src":{"id":1290,"line":491,"column":12,"start":18204,"end":18274,"length":71,"parent_index":1287},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":1291,"node_type":24,"kind":24,"src":{"id":1292,"line":491,"column":41,"start":18233,"end":18267,"length":35,"parent_index":1289},"argument_types":[],"arguments":[],"expression":{"id":1293,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1294,"line":491,"column":41,"start":18233,"end":18265,"length":33,"parent_index":1291},"expression":{"id":1295,"node_type":24,"kind":24,"src":{"id":1296,"line":491,"column":41,"start":18233,"end":18250,"length":18,"parent_index":1293},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1297,"node_type":16,"src":{"id":1298,"line":491,"column":49,"start":18241,"end":18249,"length":9,"parent_index":1295},"name":"newBeacon","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1297,"is_pure":false}],"expression":{"id":1299,"node_type":16,"src":{"id":1300,"line":491,"column":41,"start":18233,"end":18239,"length":7,"parent_index":1295},"name":"IBeacon","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"implementation","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},{"id":1301,"node_type":16,"src":{"id":1302,"line":491,"column":78,"start":18270,"end":18273,"length":4,"parent_index":1289},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1301,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]}],"expression":{"id":1303,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1304,"line":491,"column":12,"start":18204,"end":18231,"length":28,"parent_index":1289},"expression":{"id":1305,"node_type":16,"src":{"id":1306,"line":491,"column":12,"start":18204,"end":18210,"length":7,"parent_index":1303},"name":"Address","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":251,"is_pure":false},"member_name":"functionDelegateCall","argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_bytes","type_string":"bytes"}],"type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}},"type_description":{"type_identifier":"t_function_$_t_function_$$$_t_bytes$","type_string":"function(function(),bytes)"}}]}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1244,"node_type":43,"src":{"id":1245,"line":487,"column":37,"start":18012,"end":18063,"length":52,"parent_index":1242},"parameters":[{"id":1246,"node_type":44,"src":{"id":1247,"line":487,"column":37,"start":18012,"end":18028,"length":17,"parent_index":1244},"scope":1242,"name":"newBeacon","type_name":{"id":1248,"node_type":30,"src":{"id":1249,"line":487,"column":37,"start":18012,"end":18018,"length":7,"parent_index":1246},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1250,"node_type":44,"src":{"id":1251,"line":487,"column":56,"start":18031,"end":18047,"length":17,"parent_index":1244},"scope":1242,"name":"data","type_name":{"id":1252,"node_type":30,"src":{"id":1253,"line":487,"column":56,"start":18031,"end":18035,"length":5,"parent_index":1250},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1254,"node_type":44,"src":{"id":1255,"line":487,"column":75,"start":18050,"end":18063,"length":14,"parent_index":1244},"scope":1242,"name":"forceCall","type_name":{"id":1256,"node_type":30,"src":{"id":1257,"line":487,"column":75,"start":18050,"end":18053,"length":4,"parent_index":1254},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}]},"return_parameters":{"id":1258,"node_type":43,"src":{"id":1243,"line":487,"column":4,"start":17979,"end":18291,"length":313,"parent_index":1242},"parameters":[],"parameter_types":[]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_bool","type_string":"function(address,bytes,bool)"}},{"id":1308,"name":"_ADMIN_SLOT","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":1309,"line":500,"column":4,"start":18492,"end":18598,"length":107,"parent_index":917},"scope":917,"type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":1310,"node_type":30,"src":{"id":1311,"line":500,"column":4,"start":18492,"end":18498,"length":7,"parent_index":1308},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0}},{"id":1313,"node_type":57,"src":{"id":1314,"line":505,"column":4,"start":18677,"end":18736,"length":60,"parent_index":917},"parameters":{"id":1315,"node_type":43,"src":{"id":1314,"line":505,"column":4,"start":18677,"end":18736,"length":60,"parent_index":1313},"parameters":[{"id":1316,"node_type":44,"src":{"id":1317,"line":505,"column":23,"start":18696,"end":18716,"length":21,"parent_index":1315},"scope":1313,"name":"previousAdmin","type_name":{"id":1318,"node_type":30,"src":{"id":1319,"line":505,"column":23,"start":18696,"end":18702,"length":7,"parent_index":1316},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1320,"node_type":44,"src":{"id":1321,"line":505,"column":46,"start":18719,"end":18734,"length":16,"parent_index":1315},"scope":1313,"name":"newAdmin","type_name":{"id":1322,"node_type":30,"src":{"id":1323,"line":505,"column":46,"start":18719,"end":18725,"length":7,"parent_index":1320},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"name":"AdminChanged","anonymous":false},{"id":1325,"name":"_getAdmin","node_type":42,"kind":41,"src":{"id":1326,"line":510,"column":4,"start":18798,"end":18919,"length":122,"parent_index":917},"body":{"id":1339,"node_type":46,"kind":0,"src":{"id":1340,"line":510,"column":57,"start":18851,"end":18919,"length":69,"parent_index":1325},"implemented":true,"statements":[{"id":1341,"node_type":47,"src":{"id":1342,"line":511,"column":8,"start":18861,"end":18913,"length":53,"parent_index":1325},"function_return_parameters":1325,"expression":{"id":1343,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1344,"line":511,"column":15,"start":18868,"end":18912,"length":45,"parent_index":1339},"expression":{"id":1345,"node_type":24,"kind":24,"src":{"id":1346,"line":511,"column":15,"start":18868,"end":18906,"length":39,"parent_index":1343},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"arguments":[{"id":1347,"node_type":16,"src":{"id":1348,"line":511,"column":42,"start":18895,"end":18905,"length":11,"parent_index":1345},"name":"_ADMIN_SLOT","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":1349,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1350,"line":511,"column":15,"start":18868,"end":18893,"length":26,"parent_index":1345},"expression":{"id":1351,"node_type":16,"src":{"id":1352,"line":511,"column":15,"start":18868,"end":18878,"length":11,"parent_index":1349},"name":"StorageSlot","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"member_name":"getAddressSlot","argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1327,"node_type":43,"src":{"id":1328,"line":510,"column":48,"start":18842,"end":18848,"length":7,"parent_index":1325},"parameters":[{"id":1329,"node_type":44,"src":{"id":1330,"line":510,"column":48,"start":18842,"end":18848,"length":7,"parent_index":1327},"scope":1325,"name":"","type_name":{"id":1331,"node_type":30,"src":{"id":1332,"line":510,"column":48,"start":18842,"end":18848,"length":7,"parent_index":1329},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1333,"node_type":43,"src":{"id":1334,"line":510,"column":48,"start":18842,"end":18848,"length":7,"parent_index":1325},"parameters":[{"id":1335,"node_type":44,"src":{"id":1336,"line":510,"column":48,"start":18842,"end":18848,"length":7,"parent_index":1333},"scope":1325,"name":"","type_name":{"id":1337,"node_type":30,"src":{"id":1338,"line":510,"column":48,"start":18842,"end":18848,"length":7,"parent_index":1335},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":1354,"name":"_setAdmin","node_type":42,"kind":41,"src":{"id":1355,"line":517,"column":4,"start":19002,"end":19202,"length":201,"parent_index":917},"body":{"id":1363,"node_type":46,"kind":0,"src":{"id":1364,"line":517,"column":49,"start":19047,"end":19202,"length":156,"parent_index":1354},"implemented":true,"statements":[{"id":1365,"node_type":24,"kind":24,"src":{"id":1366,"line":518,"column":8,"start":19057,"end":19129,"length":73,"parent_index":1363},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: new admin is the zero address\""}],"arguments":[{"id":1367,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1368,"line":518,"column":16,"start":19065,"end":19086,"length":22,"parent_index":1365},"operator":12,"left_expression":{"id":1369,"node_type":16,"src":{"id":1370,"line":518,"column":16,"start":19065,"end":19072,"length":8,"parent_index":1367},"name":"newAdmin","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1369,"is_pure":false},"right_expression":{"id":1371,"node_type":24,"kind":24,"src":{"id":1372,"line":518,"column":28,"start":19077,"end":19086,"length":10,"parent_index":1367},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1373,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1374,"line":518,"column":36,"start":19085,"end":19085,"length":1,"parent_index":1371},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1375,"node_type":16,"src":{"id":1376,"line":518,"column":28,"start":19077,"end":19083,"length":7,"parent_index":1371},"type_name":{"id":1377,"node_type":30,"src":{"id":1378,"line":518,"column":28,"start":19077,"end":19083,"length":7,"parent_index":1375},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1379,"node_type":17,"kind":50,"value":"ERC1967: new admin is the zero address","hex_value":"455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373","src":{"id":1380,"line":518,"column":40,"start":19089,"end":19128,"length":40,"parent_index":1365},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: new admin is the zero address\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1381,"node_type":16,"src":{"id":1382,"line":518,"column":8,"start":19057,"end":19063,"length":7,"parent_index":1365},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"ERC1967: new admin is the zero address\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: new admin is the zero address\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1383,"node_type":81,"src":{"id":1384,"line":519,"column":8,"start":19140,"end":19196,"length":57,"parent_index":1363},"expression":{"id":1385,"node_type":27,"src":{"id":1386,"line":519,"column":8,"start":19140,"end":19195,"length":56,"parent_index":1363},"operator":11,"left_expression":{"id":1387,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1388,"line":519,"column":8,"start":19140,"end":19184,"length":45,"parent_index":1385},"expression":{"id":1389,"node_type":24,"kind":24,"src":{"id":1390,"line":519,"column":8,"start":19140,"end":19178,"length":39,"parent_index":1387},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"arguments":[{"id":1391,"node_type":16,"src":{"id":1392,"line":519,"column":35,"start":19167,"end":19177,"length":11,"parent_index":1389},"name":"_ADMIN_SLOT","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":1393,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1394,"line":519,"column":8,"start":19140,"end":19165,"length":26,"parent_index":1389},"expression":{"id":1395,"node_type":16,"src":{"id":1396,"line":519,"column":8,"start":19140,"end":19150,"length":11,"parent_index":1393},"name":"StorageSlot","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"member_name":"getAddressSlot","argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"right_expression":{"id":1397,"node_type":16,"src":{"id":1398,"line":519,"column":56,"start":19188,"end":19195,"length":8,"parent_index":1385},"name":"newAdmin","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1397,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}}]},"implemented":true,"visibility":2,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1356,"node_type":43,"src":{"id":1357,"line":517,"column":23,"start":19021,"end":19036,"length":16,"parent_index":1354},"parameters":[{"id":1358,"node_type":44,"src":{"id":1359,"line":517,"column":23,"start":19021,"end":19036,"length":16,"parent_index":1356},"scope":1354,"name":"newAdmin","type_name":{"id":1360,"node_type":30,"src":{"id":1361,"line":517,"column":23,"start":19021,"end":19027,"length":7,"parent_index":1358},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1362,"node_type":43,"src":{"id":1355,"line":517,"column":4,"start":19002,"end":19202,"length":201,"parent_index":1354},"parameters":[],"parameter_types":[]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":1400,"name":"_changeAdmin","node_type":42,"kind":41,"src":{"id":1401,"line":527,"column":4,"start":19314,"end":19448,"length":135,"parent_index":917},"body":{"id":1409,"node_type":46,"kind":0,"src":{"id":1410,"line":527,"column":53,"start":19363,"end":19448,"length":86,"parent_index":1400},"implemented":true,"statements":[{"id":1411,"node_type":64,"src":{"id":1412,"line":528,"column":8,"start":19373,"end":19413,"length":41,"parent_index":1400},"arguments":[{"id":1413,"node_type":24,"kind":24,"src":{"id":1414,"line":528,"column":26,"start":19391,"end":19401,"length":11,"parent_index":1409},"argument_types":[],"arguments":[],"expression":{"id":1415,"node_type":16,"src":{"id":1416,"line":528,"column":26,"start":19391,"end":19399,"length":9,"parent_index":1413},"name":"_getAdmin","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},{"id":1417,"node_type":16,"src":{"id":1418,"line":528,"column":39,"start":19404,"end":19411,"length":8,"parent_index":1409},"name":"newAdmin","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1417,"is_pure":false}],"expression":{"id":1419,"node_type":16,"src":{"id":1420,"line":528,"column":13,"start":19378,"end":19389,"length":12,"parent_index":1409},"name":"AdminChanged","type_description":{"type_identifier":"t_event\u0026_ERC1967Upgrade_AdminChanged_\u00261313","type_string":"event ERC1967Upgrade.AdminChanged"},"overloaded_declarations":[],"referenced_declaration":1313,"is_pure":false}},{"id":1421,"node_type":24,"kind":24,"src":{"id":1422,"line":529,"column":8,"start":19423,"end":19441,"length":19,"parent_index":1409},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1423,"node_type":16,"src":{"id":1424,"line":529,"column":18,"start":19433,"end":19440,"length":8,"parent_index":1421},"name":"newAdmin","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1423,"is_pure":false}],"expression":{"id":1425,"node_type":16,"src":{"id":1426,"line":529,"column":8,"start":19423,"end":19431,"length":9,"parent_index":1421},"name":"_setAdmin","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1402,"node_type":43,"src":{"id":1403,"line":527,"column":26,"start":19336,"end":19351,"length":16,"parent_index":1400},"parameters":[{"id":1404,"node_type":44,"src":{"id":1405,"line":527,"column":26,"start":19336,"end":19351,"length":16,"parent_index":1402},"scope":1400,"name":"newAdmin","type_name":{"id":1406,"node_type":30,"src":{"id":1407,"line":527,"column":26,"start":19336,"end":19342,"length":7,"parent_index":1404},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1408,"node_type":43,"src":{"id":1401,"line":527,"column":4,"start":19314,"end":19448,"length":135,"parent_index":1400},"parameters":[],"parameter_types":[]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":1428,"name":"_BEACON_SLOT","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":1429,"line":536,"column":4,"start":19692,"end":19799,"length":108,"parent_index":917},"scope":917,"type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":1430,"node_type":30,"src":{"id":1431,"line":536,"column":4,"start":19692,"end":19698,"length":7,"parent_index":1428},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0}},{"id":1433,"node_type":57,"src":{"id":1434,"line":541,"column":4,"start":19871,"end":19915,"length":45,"parent_index":917},"parameters":{"id":1435,"node_type":43,"src":{"id":1434,"line":541,"column":4,"start":19871,"end":19915,"length":45,"parent_index":1433},"parameters":[{"id":1436,"node_type":44,"src":{"id":1437,"line":541,"column":25,"start":19892,"end":19913,"length":22,"parent_index":1435},"scope":1433,"name":"beacon","type_name":{"id":1438,"node_type":30,"src":{"id":1439,"line":541,"column":25,"start":19892,"end":19898,"length":7,"parent_index":1436},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"name":"BeaconUpgraded","anonymous":false},{"id":1441,"name":"_getBeacon","node_type":42,"kind":41,"src":{"id":1442,"line":546,"column":4,"start":19978,"end":20101,"length":124,"parent_index":917},"body":{"id":1455,"node_type":46,"kind":0,"src":{"id":1456,"line":546,"column":58,"start":20032,"end":20101,"length":70,"parent_index":1441},"implemented":true,"statements":[{"id":1457,"node_type":47,"src":{"id":1458,"line":547,"column":8,"start":20042,"end":20095,"length":54,"parent_index":1441},"function_return_parameters":1441,"expression":{"id":1459,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1460,"line":547,"column":15,"start":20049,"end":20094,"length":46,"parent_index":1455},"expression":{"id":1461,"node_type":24,"kind":24,"src":{"id":1462,"line":547,"column":15,"start":20049,"end":20088,"length":40,"parent_index":1459},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"arguments":[{"id":1463,"node_type":16,"src":{"id":1464,"line":547,"column":42,"start":20076,"end":20087,"length":12,"parent_index":1461},"name":"_BEACON_SLOT","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":1465,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1466,"line":547,"column":15,"start":20049,"end":20074,"length":26,"parent_index":1461},"expression":{"id":1467,"node_type":16,"src":{"id":1468,"line":547,"column":15,"start":20049,"end":20059,"length":11,"parent_index":1465},"name":"StorageSlot","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"member_name":"getAddressSlot","argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1443,"node_type":43,"src":{"id":1444,"line":546,"column":49,"start":20023,"end":20029,"length":7,"parent_index":1441},"parameters":[{"id":1445,"node_type":44,"src":{"id":1446,"line":546,"column":49,"start":20023,"end":20029,"length":7,"parent_index":1443},"scope":1441,"name":"","type_name":{"id":1447,"node_type":30,"src":{"id":1448,"line":546,"column":49,"start":20023,"end":20029,"length":7,"parent_index":1445},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1449,"node_type":43,"src":{"id":1450,"line":546,"column":49,"start":20023,"end":20029,"length":7,"parent_index":1441},"parameters":[{"id":1451,"node_type":44,"src":{"id":1452,"line":546,"column":49,"start":20023,"end":20029,"length":7,"parent_index":1449},"scope":1441,"name":"","type_name":{"id":1453,"node_type":30,"src":{"id":1454,"line":546,"column":49,"start":20023,"end":20029,"length":7,"parent_index":1451},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":1470,"name":"_setBeacon","node_type":42,"kind":41,"src":{"id":1471,"line":553,"column":4,"start":20184,"end":20588,"length":405,"parent_index":917},"body":{"id":1479,"node_type":46,"kind":0,"src":{"id":1480,"line":553,"column":51,"start":20231,"end":20588,"length":358,"parent_index":1470},"implemented":true,"statements":[{"id":1481,"node_type":24,"kind":24,"src":{"id":1482,"line":554,"column":8,"start":20241,"end":20353,"length":113,"parent_index":1479},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: new beacon is not a contract\""}],"arguments":[{"id":1483,"node_type":24,"kind":24,"src":{"id":1484,"line":555,"column":12,"start":20262,"end":20290,"length":29,"parent_index":1481},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1485,"node_type":16,"src":{"id":1486,"line":555,"column":31,"start":20281,"end":20289,"length":9,"parent_index":1483},"name":"newBeacon","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1485,"is_pure":false}],"expression":{"id":1487,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1488,"line":555,"column":12,"start":20262,"end":20279,"length":18,"parent_index":1483},"expression":{"id":1489,"node_type":16,"src":{"id":1490,"line":555,"column":12,"start":20262,"end":20268,"length":7,"parent_index":1487},"name":"Address","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":251,"is_pure":false},"member_name":"isContract","argument_types":[{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1491,"node_type":17,"kind":50,"value":"ERC1967: new beacon is not a contract","hex_value":"455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374","src":{"id":1492,"line":556,"column":12,"start":20305,"end":20343,"length":39,"parent_index":1481},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: new beacon is not a contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":1493,"node_type":16,"src":{"id":1494,"line":554,"column":8,"start":20241,"end":20247,"length":7,"parent_index":1481},"name":"require","type_description":{"type_identifier":"t_function_$_t_function_$_t_address$$$_t_string_literal","type_string":"function(function(address),literal_string \"ERC1967: new beacon is not a contract\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: new beacon is not a contract\""}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$$_t_string_literal$","type_string":"function(function(address),string memory)"}},{"id":1495,"node_type":24,"kind":24,"src":{"id":1496,"line":558,"column":8,"start":20364,"end":20513,"length":150,"parent_index":1479},"argument_types":[{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: beacon implementation is not a contract\""}],"arguments":[{"id":1497,"node_type":24,"kind":24,"src":{"id":1498,"line":559,"column":12,"start":20385,"end":20439,"length":55,"parent_index":1495},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":1499,"node_type":24,"kind":24,"src":{"id":1500,"line":559,"column":31,"start":20404,"end":20438,"length":35,"parent_index":1497},"argument_types":[],"arguments":[],"expression":{"id":1501,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1502,"line":559,"column":31,"start":20404,"end":20436,"length":33,"parent_index":1499},"expression":{"id":1503,"node_type":24,"kind":24,"src":{"id":1504,"line":559,"column":31,"start":20404,"end":20421,"length":18,"parent_index":1501},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1505,"node_type":16,"src":{"id":1506,"line":559,"column":39,"start":20412,"end":20420,"length":9,"parent_index":1503},"name":"newBeacon","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1505,"is_pure":false}],"expression":{"id":1507,"node_type":16,"src":{"id":1508,"line":559,"column":31,"start":20404,"end":20410,"length":7,"parent_index":1503},"name":"IBeacon","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"implementation","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}],"expression":{"id":1509,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1510,"line":559,"column":12,"start":20385,"end":20402,"length":18,"parent_index":1497},"expression":{"id":1511,"node_type":16,"src":{"id":1512,"line":559,"column":12,"start":20385,"end":20391,"length":7,"parent_index":1509},"name":"Address","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":251,"is_pure":false},"member_name":"isContract","argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}},"type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}},{"id":1513,"node_type":17,"kind":50,"value":"ERC1967: beacon implementation is not a contract","hex_value":"455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","src":{"id":1514,"line":560,"column":12,"start":20454,"end":20503,"length":50,"parent_index":1495},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: beacon implementation is not a contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}]}],"expression":{"id":1515,"node_type":16,"src":{"id":1516,"line":558,"column":8,"start":20364,"end":20370,"length":7,"parent_index":1495},"name":"require","type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$$$$_t_string_literal","type_string":"function(function(function()),literal_string \"ERC1967: beacon implementation is not a contract\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: beacon implementation is not a contract\""}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$$$_t_string_literal$","type_string":"function(function(function()),string memory)"}},{"id":1517,"node_type":81,"src":{"id":1518,"line":562,"column":8,"start":20524,"end":20582,"length":59,"parent_index":1479},"expression":{"id":1519,"node_type":27,"src":{"id":1520,"line":562,"column":8,"start":20524,"end":20581,"length":58,"parent_index":1479},"operator":11,"left_expression":{"id":1521,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1522,"line":562,"column":8,"start":20524,"end":20569,"length":46,"parent_index":1519},"expression":{"id":1523,"node_type":24,"kind":24,"src":{"id":1524,"line":562,"column":8,"start":20524,"end":20563,"length":40,"parent_index":1521},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"arguments":[{"id":1525,"node_type":16,"src":{"id":1526,"line":562,"column":35,"start":20551,"end":20562,"length":12,"parent_index":1523},"name":"_BEACON_SLOT","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":1527,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1528,"line":562,"column":8,"start":20524,"end":20549,"length":26,"parent_index":1523},"expression":{"id":1529,"node_type":16,"src":{"id":1530,"line":562,"column":8,"start":20524,"end":20534,"length":11,"parent_index":1527},"name":"StorageSlot","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"member_name":"getAddressSlot","argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"right_expression":{"id":1531,"node_type":16,"src":{"id":1532,"line":562,"column":57,"start":20573,"end":20581,"length":9,"parent_index":1519},"name":"newBeacon","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1531,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}}]},"implemented":true,"visibility":2,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1472,"node_type":43,"src":{"id":1473,"line":553,"column":24,"start":20204,"end":20220,"length":17,"parent_index":1470},"parameters":[{"id":1474,"node_type":44,"src":{"id":1475,"line":553,"column":24,"start":20204,"end":20220,"length":17,"parent_index":1472},"scope":1470,"name":"newBeacon","type_name":{"id":1476,"node_type":30,"src":{"id":1477,"line":553,"column":24,"start":20204,"end":20210,"length":7,"parent_index":1474},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1478,"node_type":43,"src":{"id":1471,"line":553,"column":4,"start":20184,"end":20588,"length":405,"parent_index":1470},"parameters":[],"parameter_types":[]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}}],"linearized_base_contracts":[917,914,915,916],"base_contracts":[],"contract_dependencies":[914,915,916]}],"src":{"id":903,"line":392,"column":0,"start":14221,"end":20590,"length":6370,"parent_index":118}},{"id":1533,"base_contracts":[{"id":1554,"node_type":62,"src":{"id":1555,"line":582,"column":24,"start":21117,"end":21121,"length":5,"parent_index":1553},"base_name":{"id":1556,"node_type":52,"src":{"id":1557,"line":582,"column":24,"start":21117,"end":21121,"length":5,"parent_index":1553},"name":"Proxy","referenced_declaration":160}},{"id":1558,"node_type":62,"src":{"id":1559,"line":582,"column":31,"start":21124,"end":21137,"length":14,"parent_index":1553},"base_name":{"id":1560,"node_type":52,"src":{"id":1561,"line":582,"column":31,"start":21124,"end":21137,"length":14,"parent_index":1553},"name":"ERC1967Upgrade","referenced_declaration":902}}],"license":"MIT","exported_symbols":[{"id":1533,"name":"BeaconProxy","absolute_path":"BeaconProxy.sol"},{"id":902,"name":"ERC1967Upgrade","absolute_path":"ERC1967Upgrade.sol"},{"id":160,"name":"Proxy","absolute_path":"Proxy.sol"},{"id":119,"name":"IBeacon","absolute_path":"IBeacon.sol"},{"id":119,"name":"IBeacon","absolute_path":"IBeacon.sol"}],"absolute_path":"BeaconProxy.sol","name":"BeaconProxy","node_type":1,"nodes":[{"id":1545,"node_type":10,"src":{"id":1546,"line":568,"column":0,"start":20626,"end":20648,"length":23,"parent_index":1533},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":1550,"node_type":29,"src":{"id":0,"line":570,"column":0,"start":20651,"end":20673,"length":23,"parent_index":1533},"absolute_path":"IBeacon.sol","file":"./IBeacon.sol","scope":1533,"unit_alias":"","source_unit":902},{"id":1551,"node_type":29,"src":{"id":0,"line":571,"column":0,"start":20675,"end":20696,"length":22,"parent_index":1533},"absolute_path":"Proxy.sol","file":"../Proxy.sol","scope":1533,"unit_alias":"","source_unit":902},{"id":1552,"node_type":29,"src":{"id":0,"line":572,"column":0,"start":20698,"end":20736,"length":39,"parent_index":1533},"absolute_path":"ERC1967Upgrade.sol","file":"../ERC1967/ERC1967Upgrade.sol","scope":1533,"unit_alias":"","source_unit":902},{"id":1553,"name":"BeaconProxy","node_type":35,"src":{"id":0,"line":582,"column":0,"start":21093,"end":22698,"length":1606,"parent_index":1533},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":1563,"node_type":42,"src":{"id":1564,"line":594,"column":4,"start":21575,"end":21779,"length":205,"parent_index":1553},"kind":11,"state_mutability":3,"visibility":1,"implemented":true,"modifiers":[],"parameters":{"id":1565,"node_type":43,"src":{"id":1566,"line":594,"column":16,"start":21587,"end":21619,"length":33,"parent_index":1563},"parameters":[{"id":1567,"node_type":44,"src":{"id":1568,"line":594,"column":16,"start":21587,"end":21600,"length":14,"parent_index":1565},"scope":1563,"name":"beacon","type_name":{"id":1569,"node_type":30,"src":{"id":1570,"line":594,"column":16,"start":21587,"end":21593,"length":7,"parent_index":1567},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1571,"node_type":44,"src":{"id":1572,"line":594,"column":32,"start":21603,"end":21619,"length":17,"parent_index":1565},"scope":1563,"name":"data","type_name":{"id":1573,"node_type":30,"src":{"id":1574,"line":594,"column":32,"start":21603,"end":21607,"length":5,"parent_index":1571},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":1575,"node_type":43,"src":{"id":1564,"line":594,"column":4,"start":21575,"end":21779,"length":205,"parent_index":1563},"parameters":[],"parameter_types":[]},"scope":1553,"body":{"id":1576,"node_type":46,"kind":0,"src":{"id":1577,"line":594,"column":59,"start":21630,"end":21779,"length":150,"parent_index":1563},"implemented":true,"statements":[{"id":1578,"node_type":24,"kind":24,"src":{"id":1579,"line":595,"column":8,"start":21640,"end":21718,"length":79,"parent_index":1576},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}],"arguments":[{"id":1580,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1581,"line":595,"column":15,"start":21647,"end":21717,"length":71,"parent_index":1578},"operator":11,"left_expression":{"id":1582,"node_type":16,"src":{"id":1583,"line":595,"column":15,"start":21647,"end":21658,"length":12,"parent_index":1580},"name":"_BEACON_SLOT","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"overloaded_declarations":[],"referenced_declaration":1428,"is_pure":false},"right_expression":{"id":1584,"node_type":24,"kind":24,"src":{"id":1585,"line":595,"column":31,"start":21663,"end":21717,"length":55,"parent_index":1580},"argument_types":[{"type_identifier":"t_function_$_t_function__t_string_literal$$","type_string":"function(function(string memory))"}],"arguments":[{"id":1586,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1587,"line":595,"column":39,"start":21671,"end":21716,"length":46,"parent_index":1584},"operator":2,"left_expression":{"id":1588,"node_type":24,"kind":24,"src":{"id":1589,"line":595,"column":39,"start":21671,"end":21712,"length":42,"parent_index":1586},"argument_types":[{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}],"arguments":[{"id":1590,"node_type":24,"kind":24,"src":{"id":1591,"line":595,"column":47,"start":21679,"end":21711,"length":33,"parent_index":1588},"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"eip1967.proxy.beacon\""}],"arguments":[{"id":1592,"node_type":17,"kind":50,"value":"eip1967.proxy.beacon","hex_value":"656970313936372e70726f78792e626561636f6e","src":{"id":1593,"line":595,"column":57,"start":21689,"end":21710,"length":22,"parent_index":1590},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"eip1967.proxy.beacon\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1594,"node_type":16,"src":{"id":1595,"line":595,"column":47,"start":21679,"end":21687,"length":9,"parent_index":1590},"name":"keccak256","type_description":{"type_identifier":"t_function_$_t_string_literal","type_string":"function(literal_string \"eip1967.proxy.beacon\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"eip1967.proxy.beacon\""}]},"type_description":{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}}],"expression":{"id":1596,"node_type":16,"src":{"id":1597,"line":595,"column":39,"start":21671,"end":21677,"length":7,"parent_index":1588},"type_name":{"id":1598,"node_type":30,"src":{"id":1599,"line":595,"column":39,"start":21671,"end":21677,"length":7,"parent_index":1596},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_function__t_string_literal$","type_string":"function(function(string memory))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}]},"type_description":{"type_identifier":"t_function_$_t_function__t_string_literal$$","type_string":"function(function(string memory))"}},"right_expression":{"id":1600,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":1601,"line":595,"column":84,"start":21716,"end":21716,"length":1,"parent_index":1586},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_function_$_t_function__t_string_literal$$","type_string":"function(function(string memory))"}}],"expression":{"id":1602,"node_type":16,"src":{"id":1603,"line":595,"column":31,"start":21663,"end":21669,"length":7,"parent_index":1584},"type_name":{"id":1604,"node_type":30,"src":{"id":1605,"line":595,"column":31,"start":21663,"end":21669,"length":7,"parent_index":1602},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function__t_string_literal$$","type_string":"function(function(function(string memory)))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_function__t_string_literal$$","type_string":"function(function(string memory))"}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function__t_string_literal$$$","type_string":"function(function(function(string memory)))"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}}],"expression":{"id":1606,"node_type":16,"src":{"id":1607,"line":595,"column":8,"start":21640,"end":21645,"length":6,"parent_index":1578},"name":"assert","type_description":{"type_identifier":"t_function_$_t_bool","type_string":"function(bool)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"type_description":{"type_identifier":"t_function_$_t_bool$","type_string":"function(bool)"}},{"id":1608,"node_type":24,"kind":24,"src":{"id":1609,"line":596,"column":8,"start":21729,"end":21772,"length":44,"parent_index":1576},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}],"arguments":[{"id":1610,"node_type":16,"src":{"id":1611,"line":596,"column":32,"start":21753,"end":21758,"length":6,"parent_index":1608},"name":"beacon","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1610,"is_pure":false},{"id":1612,"node_type":16,"src":{"id":1613,"line":596,"column":40,"start":21761,"end":21764,"length":4,"parent_index":1608},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1612,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":1614,"node_type":17,"kind":61,"value":"false","hex_value":"66616c7365","src":{"id":1615,"line":596,"column":46,"start":21767,"end":21771,"length":5,"parent_index":1608},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":1616,"node_type":16,"src":{"id":1617,"line":596,"column":8,"start":21729,"end":21751,"length":23,"parent_index":1608},"name":"_upgradeBeaconToAndCall","type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_bool","type_string":"function(address,bytes,bool)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_bool$","type_string":"function(address,bytes,bool)"}}]}},{"id":1619,"name":"_beacon","node_type":42,"kind":41,"src":{"id":1620,"line":602,"column":4,"start":21850,"end":21944,"length":95,"parent_index":1553},"body":{"id":1633,"node_type":46,"kind":0,"src":{"id":1634,"line":602,"column":63,"start":21909,"end":21944,"length":36,"parent_index":1619},"implemented":true,"statements":[{"id":1635,"node_type":47,"src":{"id":1636,"line":603,"column":8,"start":21919,"end":21938,"length":20,"parent_index":1619},"function_return_parameters":1619,"expression":{"id":1637,"node_type":24,"kind":24,"src":{"id":1638,"line":603,"column":15,"start":21926,"end":21937,"length":12,"parent_index":1633},"argument_types":[],"arguments":[],"expression":{"id":1639,"node_type":16,"src":{"id":1640,"line":603,"column":15,"start":21926,"end":21935,"length":10,"parent_index":1637},"name":"_getBeacon","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1621,"node_type":43,"src":{"id":1622,"line":602,"column":54,"start":21900,"end":21906,"length":7,"parent_index":1619},"parameters":[{"id":1623,"node_type":44,"src":{"id":1624,"line":602,"column":54,"start":21900,"end":21906,"length":7,"parent_index":1621},"scope":1619,"name":"","type_name":{"id":1625,"node_type":30,"src":{"id":1626,"line":602,"column":54,"start":21900,"end":21906,"length":7,"parent_index":1623},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1627,"node_type":43,"src":{"id":1628,"line":602,"column":54,"start":21900,"end":21906,"length":7,"parent_index":1619},"parameters":[{"id":1629,"node_type":44,"src":{"id":1630,"line":602,"column":54,"start":21900,"end":21906,"length":7,"parent_index":1627},"scope":1619,"name":"","type_name":{"id":1631,"node_type":30,"src":{"id":1632,"line":602,"column":54,"start":21900,"end":21906,"length":7,"parent_index":1629},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":1553,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":1642,"name":"_implementation","node_type":42,"kind":41,"src":{"id":1643,"line":609,"column":4,"start":22048,"end":22185,"length":138,"parent_index":1553},"body":{"id":1658,"node_type":46,"kind":0,"src":{"id":1659,"line":609,"column":80,"start":22124,"end":22185,"length":62,"parent_index":1642},"implemented":true,"statements":[{"id":1660,"node_type":47,"src":{"id":1661,"line":610,"column":8,"start":22134,"end":22179,"length":46,"parent_index":1642},"function_return_parameters":1642,"expression":{"id":1662,"node_type":24,"kind":24,"src":{"id":1663,"line":610,"column":15,"start":22141,"end":22178,"length":38,"parent_index":1658},"argument_types":[],"arguments":[],"expression":{"id":1664,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1665,"line":610,"column":15,"start":22141,"end":22176,"length":36,"parent_index":1662},"expression":{"id":1666,"node_type":24,"kind":24,"src":{"id":1667,"line":610,"column":15,"start":22141,"end":22161,"length":21,"parent_index":1664},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":1668,"node_type":24,"kind":24,"src":{"id":1669,"line":610,"column":23,"start":22149,"end":22160,"length":12,"parent_index":1666},"argument_types":[],"arguments":[],"expression":{"id":1670,"node_type":16,"src":{"id":1671,"line":610,"column":23,"start":22149,"end":22158,"length":10,"parent_index":1668},"name":"_getBeacon","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}],"expression":{"id":1672,"node_type":16,"src":{"id":1673,"line":610,"column":15,"start":22141,"end":22147,"length":7,"parent_index":1666},"name":"IBeacon","type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]},"type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}},"member_name":"implementation","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":1644,"node_type":63,"name":"_implementation","src":{"id":1645,"line":609,"column":53,"start":22097,"end":22104,"length":8,"parent_index":1642},"referenced_declaration":188,"type_descriptions":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}}],"parameters":{"id":1646,"node_type":43,"src":{"id":1647,"line":609,"column":71,"start":22115,"end":22121,"length":7,"parent_index":1642},"parameters":[{"id":1648,"node_type":44,"src":{"id":1649,"line":609,"column":71,"start":22115,"end":22121,"length":7,"parent_index":1646},"scope":1642,"name":"","type_name":{"id":1650,"node_type":30,"src":{"id":1651,"line":609,"column":71,"start":22115,"end":22121,"length":7,"parent_index":1648},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1652,"node_type":43,"src":{"id":1653,"line":609,"column":71,"start":22115,"end":22121,"length":7,"parent_index":1642},"parameters":[{"id":1654,"node_type":44,"src":{"id":1655,"line":609,"column":71,"start":22115,"end":22121,"length":7,"parent_index":1652},"scope":1642,"name":"","type_name":{"id":1656,"node_type":30,"src":{"id":1657,"line":609,"column":71,"start":22115,"end":22121,"length":7,"parent_index":1654},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":1553,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":1675,"name":"_setBeacon","node_type":42,"kind":41,"src":{"id":1676,"line":623,"column":4,"start":22564,"end":22696,"length":133,"parent_index":1553},"body":{"id":1688,"node_type":46,"kind":0,"src":{"id":1689,"line":623,"column":76,"start":22636,"end":22696,"length":61,"parent_index":1675},"implemented":true,"statements":[{"id":1690,"node_type":24,"kind":24,"src":{"id":1691,"line":624,"column":8,"start":22646,"end":22689,"length":44,"parent_index":1688},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}],"arguments":[{"id":1692,"node_type":16,"src":{"id":1693,"line":624,"column":32,"start":22670,"end":22675,"length":6,"parent_index":1690},"name":"beacon","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1692,"is_pure":false},{"id":1694,"node_type":16,"src":{"id":1695,"line":624,"column":40,"start":22678,"end":22681,"length":4,"parent_index":1690},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1694,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":1696,"node_type":17,"kind":61,"value":"false","hex_value":"66616c7365","src":{"id":1697,"line":624,"column":46,"start":22684,"end":22688,"length":5,"parent_index":1690},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":1698,"node_type":16,"src":{"id":1699,"line":624,"column":8,"start":22646,"end":22668,"length":23,"parent_index":1690},"name":"_upgradeBeaconToAndCall","type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_bool","type_string":"function(address,bytes,bool)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_bool$","type_string":"function(address,bytes,bool)"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1677,"node_type":43,"src":{"id":1678,"line":623,"column":24,"start":22584,"end":22616,"length":33,"parent_index":1675},"parameters":[{"id":1679,"node_type":44,"src":{"id":1680,"line":623,"column":24,"start":22584,"end":22597,"length":14,"parent_index":1677},"scope":1675,"name":"beacon","type_name":{"id":1681,"node_type":30,"src":{"id":1682,"line":623,"column":24,"start":22584,"end":22590,"length":7,"parent_index":1679},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1683,"node_type":44,"src":{"id":1684,"line":623,"column":40,"start":22600,"end":22616,"length":17,"parent_index":1677},"scope":1675,"name":"data","type_name":{"id":1685,"node_type":30,"src":{"id":1686,"line":623,"column":40,"start":22600,"end":22604,"length":5,"parent_index":1683},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":1687,"node_type":43,"src":{"id":1676,"line":623,"column":4,"start":22564,"end":22696,"length":133,"parent_index":1675},"parameters":[],"parameter_types":[]},"scope":1553,"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes","type_string":"function(address,bytes)"}}],"linearized_base_contracts":[160,902,1553,1550,1551,1552],"base_contracts":[{"id":1554,"node_type":62,"src":{"id":1555,"line":582,"column":24,"start":21117,"end":21121,"length":5,"parent_index":1553},"base_name":{"id":1556,"node_type":52,"src":{"id":1557,"line":582,"column":24,"start":21117,"end":21121,"length":5,"parent_index":1553},"name":"Proxy","referenced_declaration":160}},{"id":1558,"node_type":62,"src":{"id":1559,"line":582,"column":31,"start":21124,"end":21137,"length":14,"parent_index":1553},"base_name":{"id":1560,"node_type":52,"src":{"id":1561,"line":582,"column":31,"start":21124,"end":21137,"length":14,"parent_index":1553},"name":"ERC1967Upgrade","referenced_declaration":902}}],"contract_dependencies":[160,902,1550,1551,1552]}],"src":{"id":1534,"line":582,"column":0,"start":21093,"end":22698,"length":1606,"parent_index":118}},{"id":1700,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":1700,"name":"Context","absolute_path":"Context.sol"}],"absolute_path":"Context.sol","name":"Context","node_type":1,"nodes":[{"id":1714,"node_type":10,"src":{"id":1715,"line":630,"column":0,"start":22734,"end":22756,"length":23,"parent_index":1700},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":1722,"name":"Context","node_type":35,"src":{"id":0,"line":642,"column":0,"start":23255,"end":23622,"length":368,"parent_index":1700},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":1724,"name":"_msgSender","node_type":42,"kind":41,"src":{"id":1725,"line":643,"column":4,"start":23287,"end":23382,"length":96,"parent_index":1722},"body":{"id":1738,"node_type":46,"kind":0,"src":{"id":1739,"line":643,"column":66,"start":23349,"end":23382,"length":34,"parent_index":1724},"implemented":true,"statements":[{"id":1740,"node_type":47,"src":{"id":1741,"line":644,"column":8,"start":23359,"end":23376,"length":18,"parent_index":1724},"function_return_parameters":1724,"expression":{"id":1742,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1743,"line":644,"column":15,"start":23366,"end":23375,"length":10,"parent_index":1738},"expression":{"id":1744,"node_type":16,"src":{"id":1745,"line":644,"column":15,"start":23366,"end":23368,"length":3,"parent_index":1742},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1726,"node_type":43,"src":{"id":1727,"line":643,"column":57,"start":23340,"end":23346,"length":7,"parent_index":1724},"parameters":[{"id":1728,"node_type":44,"src":{"id":1729,"line":643,"column":57,"start":23340,"end":23346,"length":7,"parent_index":1726},"scope":1724,"name":"","type_name":{"id":1730,"node_type":30,"src":{"id":1731,"line":643,"column":57,"start":23340,"end":23346,"length":7,"parent_index":1728},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1732,"node_type":43,"src":{"id":1733,"line":643,"column":57,"start":23340,"end":23346,"length":7,"parent_index":1724},"parameters":[{"id":1734,"node_type":44,"src":{"id":1735,"line":643,"column":57,"start":23340,"end":23346,"length":7,"parent_index":1732},"scope":1724,"name":"","type_name":{"id":1736,"node_type":30,"src":{"id":1737,"line":643,"column":57,"start":23340,"end":23346,"length":7,"parent_index":1734},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":1722,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":1747,"name":"_msgData","node_type":42,"kind":41,"src":{"id":1748,"line":647,"column":4,"start":23389,"end":23620,"length":232,"parent_index":1722},"body":{"id":1761,"node_type":46,"kind":0,"src":{"id":1762,"line":647,"column":71,"start":23456,"end":23620,"length":165,"parent_index":1747},"implemented":true,"statements":[{"id":1763,"node_type":16,"src":{"id":1764,"line":648,"column":8,"start":23466,"end":23469,"length":4,"parent_index":1761},"name":"this","type_description":{"type_identifier":"t_contract$_Context_$1700","type_string":"contract Context"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":1765,"node_type":47,"src":{"id":1766,"line":649,"column":8,"start":23599,"end":23614,"length":16,"parent_index":1747},"function_return_parameters":1747,"expression":{"id":1767,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1768,"line":649,"column":15,"start":23606,"end":23613,"length":8,"parent_index":1761},"expression":{"id":1769,"node_type":16,"src":{"id":1770,"line":649,"column":15,"start":23606,"end":23608,"length":3,"parent_index":1767},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"data","argument_types":[],"type_description":{"type_identifier":"t_bytes_calldata_ptr","type_string":"bytes calldata"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1749,"node_type":43,"src":{"id":1750,"line":647,"column":55,"start":23440,"end":23453,"length":14,"parent_index":1747},"parameters":[{"id":1751,"node_type":44,"src":{"id":1752,"line":647,"column":55,"start":23440,"end":23453,"length":14,"parent_index":1749},"scope":1747,"name":"","type_name":{"id":1753,"node_type":30,"src":{"id":1754,"line":647,"column":55,"start":23440,"end":23444,"length":5,"parent_index":1751},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":1755,"node_type":43,"src":{"id":1756,"line":647,"column":55,"start":23440,"end":23453,"length":14,"parent_index":1747},"parameters":[{"id":1757,"node_type":44,"src":{"id":1758,"line":647,"column":55,"start":23440,"end":23453,"length":14,"parent_index":1755},"scope":1747,"name":"","type_name":{"id":1759,"node_type":30,"src":{"id":1760,"line":647,"column":55,"start":23440,"end":23444,"length":5,"parent_index":1757},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":1722,"type_description":{"type_identifier":"t_function_$_t_bytes","type_string":"function(bytes)"}}],"linearized_base_contracts":[1722],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":1701,"line":642,"column":0,"start":23255,"end":23622,"length":368,"parent_index":118}},{"id":1771,"base_contracts":[{"id":1797,"node_type":62,"src":{"id":1798,"line":670,"column":29,"start":24238,"end":24244,"length":7,"parent_index":1796},"base_name":{"id":1799,"node_type":52,"src":{"id":1800,"line":670,"column":29,"start":24238,"end":24244,"length":7,"parent_index":1796},"name":"Context","referenced_declaration":1700}}],"license":"MIT","exported_symbols":[{"id":1771,"name":"Ownable","absolute_path":"Ownable.sol"},{"id":1700,"name":"Context","absolute_path":"Context.sol"}],"absolute_path":"Ownable.sol","name":"Ownable","node_type":1,"nodes":[{"id":1787,"node_type":10,"src":{"id":1788,"line":655,"column":0,"start":23658,"end":23680,"length":23,"parent_index":1771},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":1795,"node_type":29,"src":{"id":0,"line":657,"column":0,"start":23683,"end":23712,"length":30,"parent_index":1771},"absolute_path":"Context.sol","file":"../utils/Context.sol","scope":1771,"unit_alias":"","source_unit":1700},{"id":1796,"name":"Ownable","node_type":35,"src":{"id":0,"line":670,"column":0,"start":24209,"end":25860,"length":1652,"parent_index":1771},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":1802,"name":"_owner","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":1803,"line":671,"column":4,"start":24252,"end":24274,"length":23,"parent_index":1796},"scope":1796,"type_description":{"type_identifier":"t_address","type_string":"address"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":1804,"node_type":30,"src":{"id":1805,"line":671,"column":4,"start":24252,"end":24258,"length":7,"parent_index":1802},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0}},{"id":1807,"node_type":57,"src":{"id":1808,"line":673,"column":4,"start":24281,"end":24364,"length":84,"parent_index":1796},"parameters":{"id":1809,"node_type":43,"src":{"id":1808,"line":673,"column":4,"start":24281,"end":24364,"length":84,"parent_index":1807},"parameters":[{"id":1810,"node_type":44,"src":{"id":1811,"line":673,"column":31,"start":24308,"end":24336,"length":29,"parent_index":1809},"scope":1807,"name":"previousOwner","type_name":{"id":1812,"node_type":30,"src":{"id":1813,"line":673,"column":31,"start":24308,"end":24314,"length":7,"parent_index":1810},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":1814,"node_type":44,"src":{"id":1815,"line":673,"column":62,"start":24339,"end":24362,"length":24,"parent_index":1809},"scope":1807,"name":"newOwner","type_name":{"id":1816,"node_type":30,"src":{"id":1817,"line":673,"column":62,"start":24339,"end":24345,"length":7,"parent_index":1814},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"name":"OwnershipTransferred","anonymous":false},{"id":1819,"node_type":42,"src":{"id":1820,"line":678,"column":4,"start":24467,"end":24616,"length":150,"parent_index":1796},"kind":11,"state_mutability":4,"visibility":1,"implemented":true,"modifiers":[],"parameters":{"id":1821,"node_type":43,"src":{"id":1820,"line":678,"column":4,"start":24467,"end":24616,"length":150,"parent_index":1819},"parameters":[],"parameter_types":[]},"return_parameters":{"id":1822,"node_type":43,"src":{"id":1820,"line":678,"column":4,"start":24467,"end":24616,"length":150,"parent_index":1819},"parameters":[],"parameter_types":[]},"scope":1796,"body":{"id":1823,"node_type":46,"kind":0,"src":{"id":1824,"line":678,"column":19,"start":24482,"end":24616,"length":135,"parent_index":1819},"implemented":true,"statements":[{"id":1825,"node_type":44,"src":{"id":1826,"line":679,"column":8,"start":24492,"end":24524,"length":33,"parent_index":1823},"assignments":[1827],"declarations":[{"is_constant":false,"id":1827,"state_mutability":1,"name":"msgSender","node_type":44,"scope":1823,"src":{"id":1828,"line":679,"column":8,"start":24492,"end":24508,"length":17,"parent_index":1825},"is_state_variable":false,"storage_location":1,"type_name":{"id":1829,"node_type":30,"src":{"id":1830,"line":679,"column":8,"start":24492,"end":24498,"length":7,"parent_index":1827},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":1831,"node_type":24,"kind":24,"src":{"id":1832,"line":679,"column":28,"start":24512,"end":24523,"length":12,"parent_index":1825},"argument_types":[],"arguments":[],"expression":{"id":1833,"node_type":16,"src":{"id":1834,"line":679,"column":28,"start":24512,"end":24521,"length":10,"parent_index":1831},"name":"_msgSender","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}},{"id":1835,"node_type":81,"src":{"id":1836,"line":680,"column":8,"start":24534,"end":24552,"length":19,"parent_index":1823},"expression":{"id":1837,"node_type":27,"src":{"id":1838,"line":680,"column":8,"start":24534,"end":24551,"length":18,"parent_index":1823},"operator":11,"left_expression":{"id":1839,"node_type":16,"src":{"id":1840,"line":680,"column":8,"start":24534,"end":24539,"length":6,"parent_index":1837},"name":"_owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1802,"is_pure":false},"right_expression":{"id":1841,"node_type":16,"src":{"id":1842,"line":680,"column":17,"start":24543,"end":24551,"length":9,"parent_index":1837},"name":"msgSender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1825,"is_pure":false},"type_description":{"type_identifier":"t_address","type_string":"address"}}},{"id":1843,"node_type":64,"src":{"id":1844,"line":681,"column":8,"start":24562,"end":24610,"length":49,"parent_index":1819},"arguments":[{"id":1845,"node_type":24,"kind":24,"src":{"id":1846,"line":681,"column":34,"start":24588,"end":24597,"length":10,"parent_index":1823},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1847,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1848,"line":681,"column":42,"start":24596,"end":24596,"length":1,"parent_index":1845},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1849,"node_type":16,"src":{"id":1850,"line":681,"column":34,"start":24588,"end":24594,"length":7,"parent_index":1845},"type_name":{"id":1851,"node_type":30,"src":{"id":1852,"line":681,"column":34,"start":24588,"end":24594,"length":7,"parent_index":1849},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},{"id":1853,"node_type":16,"src":{"id":1854,"line":681,"column":46,"start":24600,"end":24608,"length":9,"parent_index":1823},"name":"msgSender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1825,"is_pure":false}],"expression":{"id":1855,"node_type":16,"src":{"id":1856,"line":681,"column":13,"start":24567,"end":24586,"length":20,"parent_index":1823},"name":"OwnershipTransferred","type_description":{"type_identifier":"t_event\u0026_Ownable_OwnershipTransferred_\u00261807","type_string":"event Ownable.OwnershipTransferred"},"overloaded_declarations":[],"referenced_declaration":1807,"is_pure":false}}]}},{"id":1858,"name":"owner","node_type":42,"kind":41,"src":{"id":1859,"line":687,"column":4,"start":24693,"end":24777,"length":85,"parent_index":1796},"body":{"id":1872,"node_type":46,"kind":0,"src":{"id":1873,"line":687,"column":59,"start":24748,"end":24777,"length":30,"parent_index":1858},"implemented":true,"statements":[{"id":1874,"node_type":47,"src":{"id":1875,"line":688,"column":8,"start":24758,"end":24771,"length":14,"parent_index":1858},"function_return_parameters":1858,"expression":{"id":1876,"node_type":16,"src":{"id":1877,"line":688,"column":15,"start":24765,"end":24770,"length":6,"parent_index":1872},"name":"_owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1802,"is_pure":false}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1860,"node_type":43,"src":{"id":1861,"line":687,"column":50,"start":24739,"end":24745,"length":7,"parent_index":1858},"parameters":[{"id":1862,"node_type":44,"src":{"id":1863,"line":687,"column":50,"start":24739,"end":24745,"length":7,"parent_index":1860},"scope":1858,"name":"","type_name":{"id":1864,"node_type":30,"src":{"id":1865,"line":687,"column":50,"start":24739,"end":24745,"length":7,"parent_index":1862},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1866,"node_type":43,"src":{"id":1867,"line":687,"column":50,"start":24739,"end":24745,"length":7,"parent_index":1858},"parameters":[{"id":1868,"node_type":44,"src":{"id":1869,"line":687,"column":50,"start":24739,"end":24745,"length":7,"parent_index":1866},"scope":1858,"name":"","type_name":{"id":1870,"node_type":30,"src":{"id":1871,"line":687,"column":50,"start":24739,"end":24745,"length":7,"parent_index":1868},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":1796,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":1879,"name":"onlyOwner","node_type":68,"src":{"id":1880,"line":694,"column":4,"start":24866,"end":24982,"length":117,"parent_index":1796},"visibility":1,"virtual":false,"parameters":{"id":1881,"node_type":43,"src":{"id":1880,"line":694,"column":4,"start":24866,"end":24982,"length":117,"parent_index":1796},"parameters":[],"parameter_types":[]},"body":{"id":1882,"node_type":46,"kind":0,"src":{"id":1883,"line":694,"column":25,"start":24887,"end":24982,"length":96,"parent_index":1879},"implemented":true,"statements":[{"id":1884,"node_type":24,"kind":24,"src":{"id":1885,"line":695,"column":8,"start":24897,"end":24964,"length":68,"parent_index":1882},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Ownable: caller is not the owner\""}],"arguments":[{"id":1886,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1887,"line":695,"column":16,"start":24905,"end":24927,"length":23,"parent_index":1884},"operator":11,"left_expression":{"id":1888,"node_type":24,"kind":24,"src":{"id":1889,"line":695,"column":16,"start":24905,"end":24911,"length":7,"parent_index":1886},"argument_types":[],"arguments":[],"expression":{"id":1890,"node_type":16,"src":{"id":1891,"line":695,"column":16,"start":24905,"end":24909,"length":5,"parent_index":1888},"name":"owner","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"right_expression":{"id":1892,"node_type":24,"kind":24,"src":{"id":1893,"line":695,"column":27,"start":24916,"end":24927,"length":12,"parent_index":1886},"argument_types":[],"arguments":[],"expression":{"id":1894,"node_type":16,"src":{"id":1895,"line":695,"column":27,"start":24916,"end":24925,"length":10,"parent_index":1892},"name":"_msgSender","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1896,"node_type":17,"kind":50,"value":"Ownable: caller is not the owner","hex_value":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","src":{"id":1897,"line":695,"column":41,"start":24930,"end":24963,"length":34,"parent_index":1884},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Ownable: caller is not the owner\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1898,"node_type":16,"src":{"id":1899,"line":695,"column":8,"start":24897,"end":24903,"length":7,"parent_index":1884},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"Ownable: caller is not the owner\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Ownable: caller is not the owner\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1900,"node_type":82,"src":{"id":1901,"line":696,"column":8,"start":24975,"end":24975,"length":1,"parent_index":1882},"name":"_","type_description":{"type_identifier":"t_placeholder_literal","type_string":"t_placeholder"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}]}},{"id":1903,"name":"renounceOwnership","node_type":42,"kind":41,"src":{"id":1904,"line":706,"column":4,"start":25325,"end":25469,"length":145,"parent_index":1796},"body":{"id":1911,"node_type":46,"kind":0,"src":{"id":1912,"line":706,"column":58,"start":25379,"end":25469,"length":91,"parent_index":1903},"implemented":true,"statements":[{"id":1913,"node_type":64,"src":{"id":1914,"line":707,"column":8,"start":25389,"end":25434,"length":46,"parent_index":1903},"arguments":[{"id":1915,"node_type":16,"src":{"id":1916,"line":707,"column":34,"start":25415,"end":25420,"length":6,"parent_index":1911},"name":"_owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1802,"is_pure":false},{"id":1917,"node_type":24,"kind":24,"src":{"id":1918,"line":707,"column":42,"start":25423,"end":25432,"length":10,"parent_index":1911},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1919,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1920,"line":707,"column":50,"start":25431,"end":25431,"length":1,"parent_index":1917},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1921,"node_type":16,"src":{"id":1922,"line":707,"column":42,"start":25423,"end":25429,"length":7,"parent_index":1917},"type_name":{"id":1923,"node_type":30,"src":{"id":1924,"line":707,"column":42,"start":25423,"end":25429,"length":7,"parent_index":1921},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}}],"expression":{"id":1925,"node_type":16,"src":{"id":1926,"line":707,"column":13,"start":25394,"end":25413,"length":20,"parent_index":1911},"name":"OwnershipTransferred","type_description":{"type_identifier":"t_event\u0026_Ownable_OwnershipTransferred_\u00261807","type_string":"event Ownable.OwnershipTransferred"},"overloaded_declarations":[],"referenced_declaration":1807,"is_pure":false}},{"id":1927,"node_type":81,"src":{"id":1928,"line":708,"column":8,"start":25444,"end":25463,"length":20,"parent_index":1911},"expression":{"id":1929,"node_type":27,"src":{"id":1930,"line":708,"column":8,"start":25444,"end":25462,"length":19,"parent_index":1911},"operator":11,"left_expression":{"id":1931,"node_type":16,"src":{"id":1932,"line":708,"column":8,"start":25444,"end":25449,"length":6,"parent_index":1929},"name":"_owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1802,"is_pure":false},"right_expression":{"id":1933,"node_type":24,"kind":24,"src":{"id":1934,"line":708,"column":17,"start":25453,"end":25462,"length":10,"parent_index":1929},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1935,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1936,"line":708,"column":25,"start":25461,"end":25461,"length":1,"parent_index":1933},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1937,"node_type":16,"src":{"id":1938,"line":708,"column":17,"start":25453,"end":25459,"length":7,"parent_index":1933},"type_name":{"id":1939,"node_type":30,"src":{"id":1940,"line":708,"column":17,"start":25453,"end":25459,"length":7,"parent_index":1937},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_address","type_string":"address"}}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[{"id":1905,"name":"onlyOwner","node_type":72,"kind":72,"src":{"id":1906,"line":706,"column":48,"start":25369,"end":25377,"length":9,"parent_index":1903},"argument_types":[],"arguments":[],"modifier_name":{"id":1907,"name":"onlyOwner","node_type":0,"src":{"id":1908,"line":706,"column":48,"start":25369,"end":25377,"length":9,"parent_index":1905}}}],"overrides":[],"parameters":{"id":1909,"node_type":43,"src":{"id":1904,"line":706,"column":4,"start":25325,"end":25469,"length":145,"parent_index":1903},"parameters":[],"parameter_types":[]},"return_parameters":{"id":1910,"node_type":43,"src":{"id":1904,"line":706,"column":4,"start":25325,"end":25469,"length":145,"parent_index":1903},"parameters":[],"parameter_types":[]},"scope":1796,"type_description":{"type_identifier":"t_function_","type_string":"function()"}},{"id":1942,"name":"transferOwnership","node_type":42,"kind":41,"src":{"id":1943,"line":715,"column":4,"start":25619,"end":25858,"length":240,"parent_index":1796},"body":{"id":1955,"node_type":46,"kind":0,"src":{"id":1956,"line":715,"column":74,"start":25689,"end":25858,"length":170,"parent_index":1942},"implemented":true,"statements":[{"id":1957,"node_type":24,"kind":24,"src":{"id":1958,"line":716,"column":8,"start":25699,"end":25771,"length":73,"parent_index":1955},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Ownable: new owner is the zero address\""}],"arguments":[{"id":1959,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1960,"line":716,"column":16,"start":25707,"end":25728,"length":22,"parent_index":1957},"operator":12,"left_expression":{"id":1961,"node_type":16,"src":{"id":1962,"line":716,"column":16,"start":25707,"end":25714,"length":8,"parent_index":1959},"name":"newOwner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1961,"is_pure":false},"right_expression":{"id":1963,"node_type":24,"kind":24,"src":{"id":1964,"line":716,"column":28,"start":25719,"end":25728,"length":10,"parent_index":1959},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1965,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1966,"line":716,"column":36,"start":25727,"end":25727,"length":1,"parent_index":1963},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1967,"node_type":16,"src":{"id":1968,"line":716,"column":28,"start":25719,"end":25725,"length":7,"parent_index":1963},"type_name":{"id":1969,"node_type":30,"src":{"id":1970,"line":716,"column":28,"start":25719,"end":25725,"length":7,"parent_index":1967},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1","type_string":"function(int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1971,"node_type":17,"kind":50,"value":"Ownable: new owner is the zero address","hex_value":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","src":{"id":1972,"line":716,"column":40,"start":25731,"end":25770,"length":40,"parent_index":1957},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Ownable: new owner is the zero address\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1973,"node_type":16,"src":{"id":1974,"line":716,"column":8,"start":25699,"end":25705,"length":7,"parent_index":1957},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"Ownable: new owner is the zero address\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Ownable: new owner is the zero address\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1975,"node_type":64,"src":{"id":1976,"line":717,"column":8,"start":25782,"end":25825,"length":44,"parent_index":1942},"arguments":[{"id":1977,"node_type":16,"src":{"id":1978,"line":717,"column":34,"start":25808,"end":25813,"length":6,"parent_index":1955},"name":"_owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1802,"is_pure":false},{"id":1979,"node_type":16,"src":{"id":1980,"line":717,"column":42,"start":25816,"end":25823,"length":8,"parent_index":1955},"name":"newOwner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1979,"is_pure":false}],"expression":{"id":1981,"node_type":16,"src":{"id":1982,"line":717,"column":13,"start":25787,"end":25806,"length":20,"parent_index":1955},"name":"OwnershipTransferred","type_description":{"type_identifier":"t_event\u0026_Ownable_OwnershipTransferred_\u00261807","type_string":"event Ownable.OwnershipTransferred"},"overloaded_declarations":[],"referenced_declaration":1807,"is_pure":false}},{"id":1983,"node_type":81,"src":{"id":1984,"line":718,"column":8,"start":25835,"end":25852,"length":18,"parent_index":1955},"expression":{"id":1985,"node_type":27,"src":{"id":1986,"line":718,"column":8,"start":25835,"end":25851,"length":17,"parent_index":1955},"operator":11,"left_expression":{"id":1987,"node_type":16,"src":{"id":1988,"line":718,"column":8,"start":25835,"end":25840,"length":6,"parent_index":1985},"name":"_owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1802,"is_pure":false},"right_expression":{"id":1989,"node_type":16,"src":{"id":1990,"line":718,"column":17,"start":25844,"end":25851,"length":8,"parent_index":1985},"name":"newOwner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1989,"is_pure":false},"type_description":{"type_identifier":"t_address","type_string":"address"}}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[{"id":1944,"name":"onlyOwner","node_type":72,"kind":72,"src":{"id":1945,"line":715,"column":64,"start":25679,"end":25687,"length":9,"parent_index":1942},"argument_types":[],"arguments":[],"modifier_name":{"id":1946,"name":"onlyOwner","node_type":0,"src":{"id":1947,"line":715,"column":64,"start":25679,"end":25687,"length":9,"parent_index":1944}}}],"overrides":[],"parameters":{"id":1948,"node_type":43,"src":{"id":1949,"line":715,"column":31,"start":25646,"end":25661,"length":16,"parent_index":1942},"parameters":[{"id":1950,"node_type":44,"src":{"id":1951,"line":715,"column":31,"start":25646,"end":25661,"length":16,"parent_index":1948},"scope":1942,"name":"newOwner","type_name":{"id":1952,"node_type":30,"src":{"id":1953,"line":715,"column":31,"start":25646,"end":25652,"length":7,"parent_index":1950},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1954,"node_type":43,"src":{"id":1943,"line":715,"column":4,"start":25619,"end":25858,"length":240,"parent_index":1942},"parameters":[],"parameter_types":[]},"scope":1796,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}}],"linearized_base_contracts":[1700,1796,1795],"base_contracts":[{"id":1797,"node_type":62,"src":{"id":1798,"line":670,"column":29,"start":24238,"end":24244,"length":7,"parent_index":1796},"base_name":{"id":1799,"node_type":52,"src":{"id":1800,"line":670,"column":29,"start":24238,"end":24244,"length":7,"parent_index":1796},"name":"Context","referenced_declaration":1700}}],"contract_dependencies":[1700,1795]}],"src":{"id":1772,"line":670,"column":0,"start":24209,"end":25860,"length":1652,"parent_index":118}},{"id":1991,"base_contracts":[{"id":2022,"node_type":62,"src":{"id":2023,"line":736,"column":30,"start":26366,"end":26372,"length":7,"parent_index":2021},"base_name":{"id":2024,"node_type":52,"src":{"id":2025,"line":736,"column":30,"start":26366,"end":26372,"length":7,"parent_index":2021},"name":"IBeacon","referenced_declaration":119}},{"id":2026,"node_type":62,"src":{"id":2027,"line":736,"column":39,"start":26375,"end":26381,"length":7,"parent_index":2021},"base_name":{"id":2028,"node_type":52,"src":{"id":2029,"line":736,"column":39,"start":26375,"end":26381,"length":7,"parent_index":2021},"name":"Ownable","referenced_declaration":1771}}],"license":"MIT","exported_symbols":[{"id":1991,"name":"UpgradeableBeacon","absolute_path":"UpgradeableBeacon.sol"},{"id":251,"name":"Address","absolute_path":"Address.sol"},{"id":251,"name":"Address","absolute_path":"Address.sol"},{"id":1771,"name":"Ownable","absolute_path":"Ownable.sol"},{"id":119,"name":"IBeacon","absolute_path":"IBeacon.sol"},{"id":119,"name":"IBeacon","absolute_path":"IBeacon.sol"},{"id":119,"name":"IBeacon","absolute_path":"IBeacon.sol"},{"id":119,"name":"IBeacon","absolute_path":"IBeacon.sol"}],"absolute_path":"UpgradeableBeacon.sol","name":"UpgradeableBeacon","node_type":1,"nodes":[{"id":2009,"node_type":10,"src":{"id":2010,"line":724,"column":0,"start":25896,"end":25918,"length":23,"parent_index":1991},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":2018,"node_type":29,"src":{"id":0,"line":726,"column":0,"start":25921,"end":25943,"length":23,"parent_index":1991},"absolute_path":"IBeacon.sol","file":"./IBeacon.sol","scope":1991,"unit_alias":"","source_unit":1771},{"id":2019,"node_type":29,"src":{"id":0,"line":727,"column":0,"start":25945,"end":25978,"length":34,"parent_index":1991},"absolute_path":"Ownable.sol","file":"../../access/Ownable.sol","scope":1991,"unit_alias":"","source_unit":1771},{"id":2020,"node_type":29,"src":{"id":0,"line":728,"column":0,"start":25980,"end":26012,"length":33,"parent_index":1991},"absolute_path":"Address.sol","file":"../../utils/Address.sol","scope":1991,"unit_alias":"","source_unit":1771},{"id":2021,"name":"UpgradeableBeacon","node_type":35,"src":{"id":0,"line":736,"column":0,"start":26336,"end":27831,"length":1496,"parent_index":1991},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":2031,"name":"_implementation","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":2032,"line":737,"column":4,"start":26389,"end":26420,"length":32,"parent_index":2021},"scope":2021,"type_description":{"type_identifier":"t_address","type_string":"address"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":2033,"node_type":30,"src":{"id":2034,"line":737,"column":4,"start":26389,"end":26395,"length":7,"parent_index":2031},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0}},{"id":2036,"node_type":57,"src":{"id":2037,"line":742,"column":4,"start":26522,"end":26568,"length":47,"parent_index":2021},"parameters":{"id":2038,"node_type":43,"src":{"id":2037,"line":742,"column":4,"start":26522,"end":26568,"length":47,"parent_index":2036},"parameters":[{"id":2039,"node_type":44,"src":{"id":2040,"line":742,"column":19,"start":26537,"end":26566,"length":30,"parent_index":2038},"scope":2036,"name":"implementation","type_name":{"id":2041,"node_type":30,"src":{"id":2042,"line":742,"column":19,"start":26537,"end":26543,"length":7,"parent_index":2039},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"name":"Upgraded","anonymous":false},{"id":2044,"node_type":42,"src":{"id":2045,"line":748,"column":4,"start":26724,"end":26812,"length":89,"parent_index":2021},"kind":11,"state_mutability":4,"visibility":1,"implemented":true,"modifiers":[],"parameters":{"id":2046,"node_type":43,"src":{"id":2047,"line":748,"column":16,"start":26736,"end":26758,"length":23,"parent_index":2044},"parameters":[{"id":2048,"node_type":44,"src":{"id":2049,"line":748,"column":16,"start":26736,"end":26758,"length":23,"parent_index":2046},"scope":2044,"name":"implementation_","type_name":{"id":2050,"node_type":30,"src":{"id":2051,"line":748,"column":16,"start":26736,"end":26742,"length":7,"parent_index":2048},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2052,"node_type":43,"src":{"id":2045,"line":748,"column":4,"start":26724,"end":26812,"length":89,"parent_index":2044},"parameters":[],"parameter_types":[]},"scope":2021,"body":{"id":2053,"node_type":46,"kind":0,"src":{"id":2054,"line":748,"column":41,"start":26761,"end":26812,"length":52,"parent_index":2044},"implemented":true,"statements":[{"id":2055,"node_type":24,"kind":24,"src":{"id":2056,"line":749,"column":8,"start":26771,"end":26805,"length":35,"parent_index":2053},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2057,"node_type":16,"src":{"id":2058,"line":749,"column":27,"start":26790,"end":26804,"length":15,"parent_index":2055},"name":"implementation_","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2057,"is_pure":false}],"expression":{"id":2059,"node_type":16,"src":{"id":2060,"line":749,"column":8,"start":26771,"end":26788,"length":18,"parent_index":2055},"name":"_setImplementation","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}]}},{"id":2062,"name":"implementation","node_type":42,"kind":41,"src":{"id":2063,"line":755,"column":4,"start":26891,"end":27002,"length":112,"parent_index":2021},"body":{"id":2078,"node_type":46,"kind":0,"src":{"id":2079,"line":755,"column":77,"start":26964,"end":27002,"length":39,"parent_index":2062},"implemented":true,"statements":[{"id":2080,"node_type":47,"src":{"id":2081,"line":756,"column":8,"start":26974,"end":26996,"length":23,"parent_index":2062},"function_return_parameters":2062,"expression":{"id":2082,"node_type":16,"src":{"id":2083,"line":756,"column":15,"start":26981,"end":26995,"length":15,"parent_index":2078},"name":"_implementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2031,"is_pure":false}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":2064,"node_type":63,"name":"implementation","src":{"id":2065,"line":755,"column":50,"start":26937,"end":26944,"length":8,"parent_index":2062},"referenced_declaration":929,"type_descriptions":{"type_identifier":"t_address","type_string":"address"}}],"parameters":{"id":2066,"node_type":43,"src":{"id":2067,"line":755,"column":68,"start":26955,"end":26961,"length":7,"parent_index":2062},"parameters":[{"id":2068,"node_type":44,"src":{"id":2069,"line":755,"column":68,"start":26955,"end":26961,"length":7,"parent_index":2066},"scope":2062,"name":"","type_name":{"id":2070,"node_type":30,"src":{"id":2071,"line":755,"column":68,"start":26955,"end":26961,"length":7,"parent_index":2068},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2072,"node_type":43,"src":{"id":2073,"line":755,"column":68,"start":26955,"end":26961,"length":7,"parent_index":2062},"parameters":[{"id":2074,"node_type":44,"src":{"id":2075,"line":755,"column":68,"start":26955,"end":26961,"length":7,"parent_index":2072},"scope":2062,"name":"","type_name":{"id":2076,"node_type":30,"src":{"id":2077,"line":755,"column":68,"start":26955,"end":26961,"length":7,"parent_index":2074},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2021,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":2085,"name":"upgradeTo","node_type":42,"kind":41,"src":{"id":2086,"line":769,"column":4,"start":27262,"end":27428,"length":167,"parent_index":2021},"body":{"id":2098,"node_type":46,"kind":0,"src":{"id":2099,"line":769,"column":75,"start":27333,"end":27428,"length":96,"parent_index":2085},"implemented":true,"statements":[{"id":2100,"node_type":24,"kind":24,"src":{"id":2101,"line":770,"column":8,"start":27343,"end":27379,"length":37,"parent_index":2098},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2102,"node_type":16,"src":{"id":2103,"line":770,"column":27,"start":27362,"end":27378,"length":17,"parent_index":2100},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2102,"is_pure":false}],"expression":{"id":2104,"node_type":16,"src":{"id":2105,"line":770,"column":8,"start":27343,"end":27360,"length":18,"parent_index":2100},"name":"_setImplementation","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":2106,"node_type":64,"src":{"id":2107,"line":771,"column":8,"start":27390,"end":27422,"length":33,"parent_index":2085},"arguments":[{"id":2108,"node_type":16,"src":{"id":2109,"line":771,"column":22,"start":27404,"end":27420,"length":17,"parent_index":2098},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2108,"is_pure":false}],"expression":{"id":2110,"node_type":16,"src":{"id":2111,"line":771,"column":13,"start":27395,"end":27402,"length":8,"parent_index":2098},"name":"Upgraded","type_description":{"type_identifier":"t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929","type_string":"event ERC1967Upgrade.Upgraded"},"overloaded_declarations":[],"referenced_declaration":929,"is_pure":false}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[{"id":2087,"name":"onlyOwner","node_type":72,"kind":72,"src":{"id":2088,"line":769,"column":65,"start":27323,"end":27331,"length":9,"parent_index":2085},"argument_types":[],"arguments":[],"modifier_name":{"id":2089,"name":"onlyOwner","node_type":0,"src":{"id":2090,"line":769,"column":65,"start":27323,"end":27331,"length":9,"parent_index":2087}}}],"overrides":[],"parameters":{"id":2091,"node_type":43,"src":{"id":2092,"line":769,"column":23,"start":27281,"end":27305,"length":25,"parent_index":2085},"parameters":[{"id":2093,"node_type":44,"src":{"id":2094,"line":769,"column":23,"start":27281,"end":27305,"length":25,"parent_index":2091},"scope":2085,"name":"newImplementation","type_name":{"id":2095,"node_type":30,"src":{"id":2096,"line":769,"column":23,"start":27281,"end":27287,"length":7,"parent_index":2093},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2097,"node_type":43,"src":{"id":2086,"line":769,"column":4,"start":27262,"end":27428,"length":167,"parent_index":2085},"parameters":[],"parameter_types":[]},"scope":2021,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":2113,"name":"_setImplementation","node_type":42,"kind":41,"src":{"id":2114,"line":781,"column":4,"start":27604,"end":27829,"length":226,"parent_index":2021},"body":{"id":2122,"node_type":46,"kind":0,"src":{"id":2123,"line":781,"column":67,"start":27667,"end":27829,"length":163,"parent_index":2113},"implemented":true,"statements":[{"id":2124,"node_type":24,"kind":24,"src":{"id":2125,"line":782,"column":8,"start":27677,"end":27777,"length":101,"parent_index":2122},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"UpgradeableBeacon: implementation is not a contract\""}],"arguments":[{"id":2126,"node_type":24,"kind":24,"src":{"id":2127,"line":782,"column":16,"start":27685,"end":27721,"length":37,"parent_index":2124},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2128,"node_type":16,"src":{"id":2129,"line":782,"column":35,"start":27704,"end":27720,"length":17,"parent_index":2126},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2128,"is_pure":false}],"expression":{"id":2130,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2131,"line":782,"column":16,"start":27685,"end":27702,"length":18,"parent_index":2126},"expression":{"id":2132,"node_type":16,"src":{"id":2133,"line":782,"column":16,"start":27685,"end":27691,"length":7,"parent_index":2130},"name":"Address","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":251,"is_pure":false},"member_name":"isContract","argument_types":[{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":2134,"node_type":17,"kind":50,"value":"UpgradeableBeacon: implementation is not a contract","hex_value":"5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","src":{"id":2135,"line":782,"column":55,"start":27724,"end":27776,"length":53,"parent_index":2124},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"UpgradeableBeacon: implementation is not a contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":2136,"node_type":16,"src":{"id":2137,"line":782,"column":8,"start":27677,"end":27683,"length":7,"parent_index":2124},"name":"require","type_description":{"type_identifier":"t_function_$_t_function_$_t_address$$$_t_string_literal","type_string":"function(function(address),literal_string \"UpgradeableBeacon: implementation is not a contract\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"UpgradeableBeacon: implementation is not a contract\""}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$$_t_string_literal$","type_string":"function(function(address),string memory)"}},{"id":2138,"node_type":81,"src":{"id":2139,"line":783,"column":8,"start":27788,"end":27823,"length":36,"parent_index":2122},"expression":{"id":2140,"node_type":27,"src":{"id":2141,"line":783,"column":8,"start":27788,"end":27822,"length":35,"parent_index":2122},"operator":11,"left_expression":{"id":2142,"node_type":16,"src":{"id":2143,"line":783,"column":8,"start":27788,"end":27802,"length":15,"parent_index":2140},"name":"_implementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2031,"is_pure":false},"right_expression":{"id":2144,"node_type":16,"src":{"id":2145,"line":783,"column":26,"start":27806,"end":27822,"length":17,"parent_index":2140},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2144,"is_pure":false},"type_description":{"type_identifier":"t_address","type_string":"address"}}}]},"implemented":true,"visibility":2,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2115,"node_type":43,"src":{"id":2116,"line":781,"column":32,"start":27632,"end":27656,"length":25,"parent_index":2113},"parameters":[{"id":2117,"node_type":44,"src":{"id":2118,"line":781,"column":32,"start":27632,"end":27656,"length":25,"parent_index":2115},"scope":2113,"name":"newImplementation","type_name":{"id":2119,"node_type":30,"src":{"id":2120,"line":781,"column":32,"start":27632,"end":27638,"length":7,"parent_index":2117},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2121,"node_type":43,"src":{"id":2114,"line":781,"column":4,"start":27604,"end":27829,"length":226,"parent_index":2113},"parameters":[],"parameter_types":[]},"scope":2021,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}}],"linearized_base_contracts":[119,1771,2021,2018,2019,2020],"base_contracts":[{"id":2022,"node_type":62,"src":{"id":2023,"line":736,"column":30,"start":26366,"end":26372,"length":7,"parent_index":2021},"base_name":{"id":2024,"node_type":52,"src":{"id":2025,"line":736,"column":30,"start":26366,"end":26372,"length":7,"parent_index":2021},"name":"IBeacon","referenced_declaration":119}},{"id":2026,"node_type":62,"src":{"id":2027,"line":736,"column":39,"start":26375,"end":26381,"length":7,"parent_index":2021},"base_name":{"id":2028,"node_type":52,"src":{"id":2029,"line":736,"column":39,"start":26375,"end":26381,"length":7,"parent_index":2021},"name":"Ownable","referenced_declaration":1771}}],"contract_dependencies":[119,1771,2018,2019,2020]}],"src":{"id":1992,"line":736,"column":0,"start":26336,"end":27831,"length":1496,"parent_index":118}},{"id":2146,"base_contracts":[{"id":2181,"node_type":62,"src":{"id":2182,"line":800,"column":25,"start":28345,"end":28349,"length":5,"parent_index":2180},"base_name":{"id":2183,"node_type":52,"src":{"id":2184,"line":800,"column":25,"start":28345,"end":28349,"length":5,"parent_index":2180},"name":"Proxy","referenced_declaration":160}},{"id":2185,"node_type":62,"src":{"id":2186,"line":800,"column":32,"start":28352,"end":28365,"length":14,"parent_index":2180},"base_name":{"id":2187,"node_type":52,"src":{"id":2188,"line":800,"column":32,"start":28352,"end":28365,"length":14,"parent_index":2180},"name":"ERC1967Upgrade","referenced_declaration":902}}],"license":"MIT","exported_symbols":[{"id":2146,"name":"ERC1967Proxy","absolute_path":"ERC1967Proxy.sol"},{"id":902,"name":"ERC1967Upgrade","absolute_path":"ERC1967Upgrade.sol"},{"id":902,"name":"ERC1967Upgrade","absolute_path":"ERC1967Upgrade.sol"},{"id":160,"name":"Proxy","absolute_path":"Proxy.sol"},{"id":160,"name":"Proxy","absolute_path":"Proxy.sol"}],"absolute_path":"ERC1967Proxy.sol","name":"ERC1967Proxy","node_type":1,"nodes":[{"id":2166,"node_type":10,"src":{"id":2167,"line":789,"column":0,"start":27867,"end":27889,"length":23,"parent_index":2146},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":2178,"node_type":29,"src":{"id":0,"line":791,"column":0,"start":27892,"end":27913,"length":22,"parent_index":2146},"absolute_path":"Proxy.sol","file":"../Proxy.sol","scope":2146,"unit_alias":"","source_unit":1991},{"id":2179,"node_type":29,"src":{"id":0,"line":792,"column":0,"start":27915,"end":27944,"length":30,"parent_index":2146},"absolute_path":"ERC1967Upgrade.sol","file":"./ERC1967Upgrade.sol","scope":2146,"unit_alias":"","source_unit":1991},{"id":2180,"name":"ERC1967Proxy","node_type":35,"src":{"id":0,"line":800,"column":0,"start":28320,"end":29149,"length":830,"parent_index":2146},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":2190,"node_type":42,"src":{"id":2191,"line":807,"column":4,"start":28713,"end":28929,"length":217,"parent_index":2180},"kind":11,"state_mutability":3,"visibility":1,"implemented":true,"modifiers":[],"parameters":{"id":2192,"node_type":43,"src":{"id":2193,"line":807,"column":16,"start":28725,"end":28758,"length":34,"parent_index":2190},"parameters":[{"id":2194,"node_type":44,"src":{"id":2195,"line":807,"column":16,"start":28725,"end":28738,"length":14,"parent_index":2192},"scope":2190,"name":"_logic","type_name":{"id":2196,"node_type":30,"src":{"id":2197,"line":807,"column":16,"start":28725,"end":28731,"length":7,"parent_index":2194},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2198,"node_type":44,"src":{"id":2199,"line":807,"column":32,"start":28741,"end":28758,"length":18,"parent_index":2192},"scope":2190,"name":"_data","type_name":{"id":2200,"node_type":30,"src":{"id":2201,"line":807,"column":32,"start":28741,"end":28745,"length":5,"parent_index":2198},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":2202,"node_type":43,"src":{"id":2191,"line":807,"column":4,"start":28713,"end":28929,"length":217,"parent_index":2190},"parameters":[],"parameter_types":[]},"scope":2180,"body":{"id":2203,"node_type":46,"kind":0,"src":{"id":2204,"line":807,"column":60,"start":28769,"end":28929,"length":161,"parent_index":2190},"implemented":true,"statements":[{"id":2205,"node_type":24,"kind":24,"src":{"id":2206,"line":808,"column":8,"start":28779,"end":28873,"length":95,"parent_index":2203},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}],"arguments":[{"id":2207,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2208,"line":808,"column":15,"start":28786,"end":28872,"length":87,"parent_index":2205},"operator":11,"left_expression":{"id":2209,"node_type":16,"src":{"id":2210,"line":808,"column":15,"start":28786,"end":28805,"length":20,"parent_index":2207},"name":"_IMPLEMENTATION_SLOT","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"overloaded_declarations":[],"referenced_declaration":924,"is_pure":false},"right_expression":{"id":2211,"node_type":24,"kind":24,"src":{"id":2212,"line":808,"column":39,"start":28810,"end":28872,"length":63,"parent_index":2207},"argument_types":[{"type_identifier":"t_function_$_t_function__t_string_literal$$","type_string":"function(function(string memory))"}],"arguments":[{"id":2213,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2214,"line":808,"column":47,"start":28818,"end":28871,"length":54,"parent_index":2211},"operator":2,"left_expression":{"id":2215,"node_type":24,"kind":24,"src":{"id":2216,"line":808,"column":47,"start":28818,"end":28867,"length":50,"parent_index":2213},"argument_types":[{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}],"arguments":[{"id":2217,"node_type":24,"kind":24,"src":{"id":2218,"line":808,"column":55,"start":28826,"end":28866,"length":41,"parent_index":2215},"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"eip1967.proxy.implementation\""}],"arguments":[{"id":2219,"node_type":17,"kind":50,"value":"eip1967.proxy.implementation","hex_value":"656970313936372e70726f78792e696d706c656d656e746174696f6e","src":{"id":2220,"line":808,"column":65,"start":28836,"end":28865,"length":30,"parent_index":2217},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"eip1967.proxy.implementation\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":2221,"node_type":16,"src":{"id":2222,"line":808,"column":55,"start":28826,"end":28834,"length":9,"parent_index":2217},"name":"keccak256","type_description":{"type_identifier":"t_function_$_t_string_literal","type_string":"function(literal_string \"eip1967.proxy.implementation\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"eip1967.proxy.implementation\""}]},"type_description":{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}}],"expression":{"id":2223,"node_type":16,"src":{"id":2224,"line":808,"column":47,"start":28818,"end":28824,"length":7,"parent_index":2215},"type_name":{"id":2225,"node_type":30,"src":{"id":2226,"line":808,"column":47,"start":28818,"end":28824,"length":7,"parent_index":2223},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_function__t_string_literal$","type_string":"function(function(string memory))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}]},"type_description":{"type_identifier":"t_function_$_t_function__t_string_literal$$","type_string":"function(function(string memory))"}},"right_expression":{"id":2227,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":2228,"line":808,"column":100,"start":28871,"end":28871,"length":1,"parent_index":2213},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_function_$_t_function__t_string_literal$$","type_string":"function(function(string memory))"}}],"expression":{"id":2229,"node_type":16,"src":{"id":2230,"line":808,"column":39,"start":28810,"end":28816,"length":7,"parent_index":2211},"type_name":{"id":2231,"node_type":30,"src":{"id":2232,"line":808,"column":39,"start":28810,"end":28816,"length":7,"parent_index":2229},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function__t_string_literal$$","type_string":"function(function(function(string memory)))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_function__t_string_literal$$","type_string":"function(function(string memory))"}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function__t_string_literal$$$","type_string":"function(function(function(string memory)))"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}}],"expression":{"id":2233,"node_type":16,"src":{"id":2234,"line":808,"column":8,"start":28779,"end":28784,"length":6,"parent_index":2205},"name":"assert","type_description":{"type_identifier":"t_function_$_t_bool","type_string":"function(bool)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"type_description":{"type_identifier":"t_function_$_t_bool$","type_string":"function(bool)"}},{"id":2235,"node_type":24,"kind":24,"src":{"id":2236,"line":809,"column":8,"start":28884,"end":28922,"length":39,"parent_index":2203},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}],"arguments":[{"id":2237,"node_type":16,"src":{"id":2238,"line":809,"column":26,"start":28902,"end":28907,"length":6,"parent_index":2235},"name":"_logic","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2237,"is_pure":false},{"id":2239,"node_type":16,"src":{"id":2240,"line":809,"column":34,"start":28910,"end":28914,"length":5,"parent_index":2235},"name":"_data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":2239,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":2241,"node_type":17,"kind":61,"value":"false","hex_value":"66616c7365","src":{"id":2242,"line":809,"column":41,"start":28917,"end":28921,"length":5,"parent_index":2235},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":2243,"node_type":16,"src":{"id":2244,"line":809,"column":8,"start":28884,"end":28900,"length":17,"parent_index":2235},"name":"_upgradeToAndCall","type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_bool","type_string":"function(address,bytes,bool)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_bool$","type_string":"function(address,bytes,bool)"}}]}},{"id":2246,"name":"_implementation","node_type":42,"kind":41,"src":{"id":2247,"line":815,"column":4,"start":29008,"end":29147,"length":140,"parent_index":2180},"body":{"id":2262,"node_type":46,"kind":0,"src":{"id":2263,"line":815,"column":85,"start":29089,"end":29147,"length":59,"parent_index":2246},"implemented":true,"statements":[{"id":2264,"node_type":47,"src":{"id":2265,"line":816,"column":8,"start":29099,"end":29141,"length":43,"parent_index":2246},"function_return_parameters":2246,"expression":{"id":2266,"node_type":24,"kind":24,"src":{"id":2267,"line":816,"column":15,"start":29106,"end":29140,"length":35,"parent_index":2262},"argument_types":[],"arguments":[],"expression":{"id":2268,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2269,"line":816,"column":15,"start":29106,"end":29138,"length":33,"parent_index":2266},"expression":{"id":2270,"node_type":16,"src":{"id":2271,"line":816,"column":15,"start":29106,"end":29119,"length":14,"parent_index":2268},"name":"ERC1967Upgrade","type_description":{"type_identifier":"t_contract$_ERC1967Upgrade_$902","type_string":"contract ERC1967Upgrade"},"overloaded_declarations":[],"referenced_declaration":902,"is_pure":false},"member_name":"_getImplementation","argument_types":[],"type_description":{"type_identifier":"t_contract$_ERC1967Upgrade_$902","type_string":"contract ERC1967Upgrade"}},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":2248,"node_type":63,"name":"_implementation","src":{"id":2249,"line":815,"column":53,"start":29057,"end":29064,"length":8,"parent_index":2246},"referenced_declaration":2031,"type_descriptions":{"type_identifier":"t_address","type_string":"address"}}],"parameters":{"id":2250,"node_type":43,"src":{"id":2251,"line":815,"column":71,"start":29075,"end":29086,"length":12,"parent_index":2246},"parameters":[{"id":2252,"node_type":44,"src":{"id":2253,"line":815,"column":71,"start":29075,"end":29086,"length":12,"parent_index":2250},"scope":2246,"name":"impl","type_name":{"id":2254,"node_type":30,"src":{"id":2255,"line":815,"column":71,"start":29075,"end":29081,"length":7,"parent_index":2252},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2256,"node_type":43,"src":{"id":2257,"line":815,"column":71,"start":29075,"end":29086,"length":12,"parent_index":2246},"parameters":[{"id":2258,"node_type":44,"src":{"id":2259,"line":815,"column":71,"start":29075,"end":29086,"length":12,"parent_index":2256},"scope":2246,"name":"impl","type_name":{"id":2260,"node_type":30,"src":{"id":2261,"line":815,"column":71,"start":29075,"end":29081,"length":7,"parent_index":2258},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2180,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}}],"linearized_base_contracts":[160,902,2180,2178,2179],"base_contracts":[{"id":2181,"node_type":62,"src":{"id":2182,"line":800,"column":25,"start":28345,"end":28349,"length":5,"parent_index":2180},"base_name":{"id":2183,"node_type":52,"src":{"id":2184,"line":800,"column":25,"start":28345,"end":28349,"length":5,"parent_index":2180},"name":"Proxy","referenced_declaration":160}},{"id":2185,"node_type":62,"src":{"id":2186,"line":800,"column":32,"start":28352,"end":28365,"length":14,"parent_index":2180},"base_name":{"id":2187,"node_type":52,"src":{"id":2188,"line":800,"column":32,"start":28352,"end":28365,"length":14,"parent_index":2180},"name":"ERC1967Upgrade","referenced_declaration":902}}],"contract_dependencies":[160,902,2178,2179]}],"src":{"id":2147,"line":800,"column":0,"start":28320,"end":29149,"length":830,"parent_index":118}},{"id":2272,"base_contracts":[{"id":2310,"node_type":62,"src":{"id":2311,"line":847,"column":40,"start":30741,"end":30752,"length":12,"parent_index":2309},"base_name":{"id":2312,"node_type":52,"src":{"id":2313,"line":847,"column":40,"start":30741,"end":30752,"length":12,"parent_index":2309},"name":"ERC1967Proxy","referenced_declaration":2146}}],"license":"MIT","exported_symbols":[{"id":2272,"name":"TransparentUpgradeableProxy","absolute_path":"TransparentUpgradeableProxy.sol"},{"id":2310,"name":"ERC1967Proxy","absolute_path":""}],"absolute_path":"TransparentUpgradeableProxy.sol","name":"TransparentUpgradeableProxy","node_type":1,"nodes":[{"id":2294,"node_type":10,"src":{"id":2295,"line":822,"column":0,"start":29185,"end":29207,"length":23,"parent_index":2272},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":2309,"name":"TransparentUpgradeableProxy","node_type":35,"src":{"id":0,"line":847,"column":0,"start":30701,"end":34226,"length":3526,"parent_index":2272},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":2315,"node_type":42,"src":{"id":2316,"line":852,"column":4,"start":30975,"end":31198,"length":224,"parent_index":2309},"kind":11,"state_mutability":3,"visibility":1,"implemented":true,"modifiers":[{"id":2332,"name":"ERC1967Proxy","node_type":72,"kind":72,"src":{"id":2333,"line":852,"column":76,"start":31047,"end":31073,"length":27,"parent_index":2315},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":2336,"node_type":16,"src":{"id":2337,"line":852,"column":89,"start":31060,"end":31065,"length":6,"parent_index":2332},"name":"_logic","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2336,"is_pure":false},{"id":2338,"node_type":16,"src":{"id":2339,"line":852,"column":97,"start":31068,"end":31072,"length":5,"parent_index":2332},"name":"_data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":2338,"is_pure":false}],"modifier_name":{"id":2334,"name":"ERC1967Proxy","node_type":0,"src":{"id":2335,"line":852,"column":76,"start":31047,"end":31058,"length":12,"parent_index":2332}}}],"parameters":{"id":2317,"node_type":43,"src":{"id":2318,"line":852,"column":16,"start":30987,"end":31036,"length":50,"parent_index":2315},"parameters":[{"id":2319,"node_type":44,"src":{"id":2320,"line":852,"column":16,"start":30987,"end":31000,"length":14,"parent_index":2317},"scope":2315,"name":"_logic","type_name":{"id":2321,"node_type":30,"src":{"id":2322,"line":852,"column":16,"start":30987,"end":30993,"length":7,"parent_index":2319},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2323,"node_type":44,"src":{"id":2324,"line":852,"column":32,"start":31003,"end":31016,"length":14,"parent_index":2317},"scope":2315,"name":"admin_","type_name":{"id":2325,"node_type":30,"src":{"id":2326,"line":852,"column":32,"start":31003,"end":31009,"length":7,"parent_index":2323},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2327,"node_type":44,"src":{"id":2328,"line":852,"column":48,"start":31019,"end":31036,"length":18,"parent_index":2317},"scope":2315,"name":"_data","type_name":{"id":2329,"node_type":30,"src":{"id":2330,"line":852,"column":48,"start":31019,"end":31023,"length":5,"parent_index":2327},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":2331,"node_type":43,"src":{"id":2316,"line":852,"column":4,"start":30975,"end":31198,"length":224,"parent_index":2315},"parameters":[],"parameter_types":[]},"scope":2309,"body":{"id":2340,"node_type":46,"kind":0,"src":{"id":2341,"line":852,"column":104,"start":31075,"end":31198,"length":124,"parent_index":2315},"implemented":true,"statements":[{"id":2342,"node_type":24,"kind":24,"src":{"id":2343,"line":853,"column":8,"start":31085,"end":31161,"length":77,"parent_index":2340},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}],"arguments":[{"id":2344,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2345,"line":853,"column":15,"start":31092,"end":31160,"length":69,"parent_index":2342},"operator":11,"left_expression":{"id":2346,"node_type":16,"src":{"id":2347,"line":853,"column":15,"start":31092,"end":31102,"length":11,"parent_index":2344},"name":"_ADMIN_SLOT","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"overloaded_declarations":[],"referenced_declaration":1308,"is_pure":false},"right_expression":{"id":2348,"node_type":24,"kind":24,"src":{"id":2349,"line":853,"column":30,"start":31107,"end":31160,"length":54,"parent_index":2344},"argument_types":[{"type_identifier":"t_function_$_t_function__t_string_literal$$","type_string":"function(function(string memory))"}],"arguments":[{"id":2350,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2351,"line":853,"column":38,"start":31115,"end":31159,"length":45,"parent_index":2348},"operator":2,"left_expression":{"id":2352,"node_type":24,"kind":24,"src":{"id":2353,"line":853,"column":38,"start":31115,"end":31155,"length":41,"parent_index":2350},"argument_types":[{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}],"arguments":[{"id":2354,"node_type":24,"kind":24,"src":{"id":2355,"line":853,"column":46,"start":31123,"end":31154,"length":32,"parent_index":2352},"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"eip1967.proxy.admin\""}],"arguments":[{"id":2356,"node_type":17,"kind":50,"value":"eip1967.proxy.admin","hex_value":"656970313936372e70726f78792e61646d696e","src":{"id":2357,"line":853,"column":56,"start":31133,"end":31153,"length":21,"parent_index":2354},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"eip1967.proxy.admin\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":2358,"node_type":16,"src":{"id":2359,"line":853,"column":46,"start":31123,"end":31131,"length":9,"parent_index":2354},"name":"keccak256","type_description":{"type_identifier":"t_function_$_t_string_literal","type_string":"function(literal_string \"eip1967.proxy.admin\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"eip1967.proxy.admin\""}]},"type_description":{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}}],"expression":{"id":2360,"node_type":16,"src":{"id":2361,"line":853,"column":38,"start":31115,"end":31121,"length":7,"parent_index":2352},"type_name":{"id":2362,"node_type":30,"src":{"id":2363,"line":853,"column":38,"start":31115,"end":31121,"length":7,"parent_index":2360},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_function__t_string_literal$","type_string":"function(function(string memory))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}]},"type_description":{"type_identifier":"t_function_$_t_function__t_string_literal$$","type_string":"function(function(string memory))"}},"right_expression":{"id":2364,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":2365,"line":853,"column":82,"start":31159,"end":31159,"length":1,"parent_index":2350},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_function_$_t_function__t_string_literal$$","type_string":"function(function(string memory))"}}],"expression":{"id":2366,"node_type":16,"src":{"id":2367,"line":853,"column":30,"start":31107,"end":31113,"length":7,"parent_index":2348},"type_name":{"id":2368,"node_type":30,"src":{"id":2369,"line":853,"column":30,"start":31107,"end":31113,"length":7,"parent_index":2366},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function__t_string_literal$$","type_string":"function(function(function(string memory)))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_function__t_string_literal$$","type_string":"function(function(string memory))"}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function__t_string_literal$$$","type_string":"function(function(function(string memory)))"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}}],"expression":{"id":2370,"node_type":16,"src":{"id":2371,"line":853,"column":8,"start":31085,"end":31090,"length":6,"parent_index":2342},"name":"assert","type_description":{"type_identifier":"t_function_$_t_bool","type_string":"function(bool)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"type_description":{"type_identifier":"t_function_$_t_bool$","type_string":"function(bool)"}},{"id":2372,"node_type":24,"kind":24,"src":{"id":2373,"line":854,"column":8,"start":31172,"end":31191,"length":20,"parent_index":2340},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2374,"node_type":16,"src":{"id":2375,"line":854,"column":21,"start":31185,"end":31190,"length":6,"parent_index":2372},"name":"admin_","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2374,"is_pure":false}],"expression":{"id":2376,"node_type":16,"src":{"id":2377,"line":854,"column":8,"start":31172,"end":31183,"length":12,"parent_index":2372},"name":"_changeAdmin","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}]}},{"id":2379,"name":"ifAdmin","node_type":68,"src":{"id":2380,"line":860,"column":4,"start":31340,"end":31473,"length":134,"parent_index":2309},"visibility":1,"virtual":false,"parameters":{"id":2381,"node_type":43,"src":{"id":2380,"line":860,"column":4,"start":31340,"end":31473,"length":134,"parent_index":2309},"parameters":[],"parameter_types":[]},"body":{"id":2382,"node_type":46,"kind":0,"src":{"id":2383,"line":860,"column":23,"start":31359,"end":31473,"length":115,"parent_index":2379},"implemented":true,"statements":[{"id":2384,"node_type":48,"src":{"id":2385,"line":861,"column":0,"start":31369,"end":31467,"length":99,"parent_index":2382},"condition":{"id":2386,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2387,"line":861,"column":12,"start":31373,"end":31397,"length":25,"parent_index":2384},"operator":11,"left_expression":{"id":2388,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2389,"line":861,"column":12,"start":31373,"end":31382,"length":10,"parent_index":2386},"expression":{"id":2390,"node_type":16,"src":{"id":2391,"line":861,"column":12,"start":31373,"end":31375,"length":3,"parent_index":2388},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"right_expression":{"id":2392,"node_type":24,"kind":24,"src":{"id":2393,"line":861,"column":26,"start":31387,"end":31397,"length":11,"parent_index":2386},"argument_types":[],"arguments":[],"expression":{"id":2394,"node_type":16,"src":{"id":2395,"line":861,"column":26,"start":31387,"end":31395,"length":9,"parent_index":2392},"name":"_getAdmin","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":2396,"node_type":46,"kind":0,"src":{"id":2397,"line":861,"column":39,"start":31400,"end":31425,"length":26,"parent_index":2379},"implemented":true,"statements":[{"id":2398,"node_type":82,"src":{"id":2399,"line":862,"column":12,"start":31414,"end":31414,"length":1,"parent_index":2396},"name":"_","type_description":{"type_identifier":"t_placeholder_literal","type_string":"t_placeholder"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}]}}]}},{"id":2401,"name":"admin","node_type":42,"kind":41,"src":{"id":2402,"line":877,"column":4,"start":31916,"end":32011,"length":96,"parent_index":2309},"body":{"id":2419,"node_type":46,"kind":0,"src":{"id":2420,"line":877,"column":63,"start":31975,"end":32011,"length":37,"parent_index":2401},"implemented":true,"statements":[{"id":2421,"node_type":81,"src":{"id":2422,"line":878,"column":8,"start":31985,"end":32005,"length":21,"parent_index":2419},"expression":{"id":2423,"node_type":27,"src":{"id":2424,"line":878,"column":8,"start":31985,"end":32004,"length":20,"parent_index":2419},"operator":11,"left_expression":{"id":2425,"node_type":16,"src":{"id":2426,"line":878,"column":8,"start":31985,"end":31990,"length":6,"parent_index":2423},"name":"admin_","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2425,"is_pure":false},"right_expression":{"id":2427,"node_type":24,"kind":24,"src":{"id":2428,"line":878,"column":17,"start":31994,"end":32004,"length":11,"parent_index":2423},"argument_types":[],"arguments":[],"expression":{"id":2429,"node_type":16,"src":{"id":2430,"line":878,"column":17,"start":31994,"end":32002,"length":9,"parent_index":2427},"name":"_getAdmin","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_address","type_string":"address"}}}]},"implemented":true,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[{"id":2403,"name":"ifAdmin","node_type":72,"kind":72,"src":{"id":2404,"line":877,"column":30,"start":31942,"end":31948,"length":7,"parent_index":2401},"argument_types":[],"arguments":[],"modifier_name":{"id":2405,"name":"ifAdmin","node_type":0,"src":{"id":2406,"line":877,"column":30,"start":31942,"end":31948,"length":7,"parent_index":2403}}}],"overrides":[],"parameters":{"id":2407,"node_type":43,"src":{"id":2408,"line":877,"column":47,"start":31959,"end":31972,"length":14,"parent_index":2401},"parameters":[{"id":2409,"node_type":44,"src":{"id":2410,"line":877,"column":47,"start":31959,"end":31972,"length":14,"parent_index":2407},"scope":2401,"name":"admin_","type_name":{"id":2411,"node_type":30,"src":{"id":2412,"line":877,"column":47,"start":31959,"end":31965,"length":7,"parent_index":2409},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2413,"node_type":43,"src":{"id":2414,"line":877,"column":47,"start":31959,"end":31972,"length":14,"parent_index":2401},"parameters":[{"id":2415,"node_type":44,"src":{"id":2416,"line":877,"column":47,"start":31959,"end":31972,"length":14,"parent_index":2413},"scope":2401,"name":"admin_","type_name":{"id":2417,"node_type":30,"src":{"id":2418,"line":877,"column":47,"start":31959,"end":31965,"length":7,"parent_index":2415},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2309,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":2432,"name":"implementation","node_type":42,"kind":41,"src":{"id":2433,"line":890,"column":4,"start":32472,"end":32600,"length":129,"parent_index":2309},"body":{"id":2450,"node_type":46,"kind":0,"src":{"id":2451,"line":890,"column":81,"start":32549,"end":32600,"length":52,"parent_index":2432},"implemented":true,"statements":[{"id":2452,"node_type":81,"src":{"id":2453,"line":891,"column":8,"start":32559,"end":32594,"length":36,"parent_index":2450},"expression":{"id":2454,"node_type":27,"src":{"id":2455,"line":891,"column":8,"start":32559,"end":32593,"length":35,"parent_index":2450},"operator":11,"left_expression":{"id":2456,"node_type":16,"src":{"id":2457,"line":891,"column":8,"start":32559,"end":32573,"length":15,"parent_index":2454},"name":"implementation_","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2456,"is_pure":false},"right_expression":{"id":2458,"node_type":24,"kind":24,"src":{"id":2459,"line":891,"column":26,"start":32577,"end":32593,"length":17,"parent_index":2454},"argument_types":[],"arguments":[],"expression":{"id":2460,"node_type":16,"src":{"id":2461,"line":891,"column":26,"start":32577,"end":32591,"length":15,"parent_index":2458},"name":"_implementation","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_address","type_string":"address"}}}]},"implemented":true,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[{"id":2434,"name":"ifAdmin","node_type":72,"kind":72,"src":{"id":2435,"line":890,"column":39,"start":32507,"end":32513,"length":7,"parent_index":2432},"argument_types":[],"arguments":[],"modifier_name":{"id":2436,"name":"ifAdmin","node_type":0,"src":{"id":2437,"line":890,"column":39,"start":32507,"end":32513,"length":7,"parent_index":2434}}}],"overrides":[],"parameters":{"id":2438,"node_type":43,"src":{"id":2439,"line":890,"column":56,"start":32524,"end":32546,"length":23,"parent_index":2432},"parameters":[{"id":2440,"node_type":44,"src":{"id":2441,"line":890,"column":56,"start":32524,"end":32546,"length":23,"parent_index":2438},"scope":2432,"name":"implementation_","type_name":{"id":2442,"node_type":30,"src":{"id":2443,"line":890,"column":56,"start":32524,"end":32530,"length":7,"parent_index":2440},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2444,"node_type":43,"src":{"id":2445,"line":890,"column":56,"start":32524,"end":32546,"length":23,"parent_index":2432},"parameters":[{"id":2446,"node_type":44,"src":{"id":2447,"line":890,"column":56,"start":32524,"end":32546,"length":23,"parent_index":2444},"scope":2432,"name":"implementation_","type_name":{"id":2448,"node_type":30,"src":{"id":2449,"line":890,"column":56,"start":32524,"end":32530,"length":7,"parent_index":2446},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2309,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":2463,"name":"changeAdmin","node_type":42,"kind":41,"src":{"id":2464,"line":901,"column":4,"start":32806,"end":32908,"length":103,"parent_index":2309},"body":{"id":2476,"node_type":46,"kind":0,"src":{"id":2477,"line":901,"column":68,"start":32870,"end":32908,"length":39,"parent_index":2463},"implemented":true,"statements":[{"id":2478,"node_type":24,"kind":24,"src":{"id":2479,"line":902,"column":8,"start":32880,"end":32901,"length":22,"parent_index":2476},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2480,"node_type":16,"src":{"id":2481,"line":902,"column":21,"start":32893,"end":32900,"length":8,"parent_index":2478},"name":"newAdmin","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2480,"is_pure":false}],"expression":{"id":2482,"node_type":16,"src":{"id":2483,"line":902,"column":8,"start":32880,"end":32891,"length":12,"parent_index":2478},"name":"_changeAdmin","type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}]},"implemented":true,"visibility":4,"state_mutability":4,"virtual":true,"modifiers":[{"id":2465,"name":"ifAdmin","node_type":72,"kind":72,"src":{"id":2466,"line":901,"column":60,"start":32862,"end":32868,"length":7,"parent_index":2463},"argument_types":[],"arguments":[],"modifier_name":{"id":2467,"name":"ifAdmin","node_type":0,"src":{"id":2468,"line":901,"column":60,"start":32862,"end":32868,"length":7,"parent_index":2465}}}],"overrides":[],"parameters":{"id":2469,"node_type":43,"src":{"id":2470,"line":901,"column":25,"start":32827,"end":32842,"length":16,"parent_index":2463},"parameters":[{"id":2471,"node_type":44,"src":{"id":2472,"line":901,"column":25,"start":32827,"end":32842,"length":16,"parent_index":2469},"scope":2463,"name":"newAdmin","type_name":{"id":2473,"node_type":30,"src":{"id":2474,"line":901,"column":25,"start":32827,"end":32833,"length":7,"parent_index":2471},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2475,"node_type":43,"src":{"id":2464,"line":901,"column":4,"start":32806,"end":32908,"length":103,"parent_index":2463},"parameters":[],"parameter_types":[]},"scope":2309,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":2485,"name":"upgradeTo","node_type":42,"kind":41,"src":{"id":2486,"line":910,"column":4,"start":33069,"end":33202,"length":134,"parent_index":2309},"body":{"id":2498,"node_type":46,"kind":0,"src":{"id":2499,"line":910,"column":67,"start":33132,"end":33202,"length":71,"parent_index":2485},"implemented":true,"statements":[{"id":2500,"node_type":24,"kind":24,"src":{"id":2501,"line":911,"column":8,"start":33142,"end":33195,"length":54,"parent_index":2498},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"},{"type_identifier":"t_bool","type_string":"bool"}],"arguments":[{"id":2502,"node_type":16,"src":{"id":2503,"line":911,"column":26,"start":33160,"end":33176,"length":17,"parent_index":2500},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2502,"is_pure":false},{"id":2504,"node_type":24,"kind":24,"src":{"id":2505,"line":911,"column":45,"start":33179,"end":33187,"length":9,"parent_index":2500},"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"\""}],"arguments":[{"id":2506,"node_type":17,"kind":50,"src":{"id":2507,"line":911,"column":51,"start":33185,"end":33186,"length":2,"parent_index":2504},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":2508,"node_type":16,"src":{"id":2509,"line":911,"column":45,"start":33179,"end":33183,"length":5,"parent_index":2504},"type_name":{"id":2510,"node_type":30,"src":{"id":2511,"line":911,"column":45,"start":33179,"end":33183,"length":5,"parent_index":2508},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_string_literal","type_string":"function(literal_string \"\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"\""}]},"type_description":{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}},{"id":2512,"node_type":17,"kind":61,"value":"false","hex_value":"66616c7365","src":{"id":2513,"line":911,"column":56,"start":33190,"end":33194,"length":5,"parent_index":2500},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}]}],"expression":{"id":2514,"node_type":16,"src":{"id":2515,"line":911,"column":8,"start":33142,"end":33158,"length":17,"parent_index":2500},"name":"_upgradeToAndCall","type_description":{"type_identifier":"t_function_$_t_address$$_t_function__t_string_literal$$$_t_bool","type_string":"function(address,function(string memory),bool)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"},{"type_identifier":"t_bool","type_string":"bool"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_function__t_string_literal$$$_t_bool$","type_string":"function(address,function(string memory),bool)"}}]},"implemented":true,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[{"id":2487,"name":"ifAdmin","node_type":72,"kind":72,"src":{"id":2488,"line":910,"column":59,"start":33124,"end":33130,"length":7,"parent_index":2485},"argument_types":[],"arguments":[],"modifier_name":{"id":2489,"name":"ifAdmin","node_type":0,"src":{"id":2490,"line":910,"column":59,"start":33124,"end":33130,"length":7,"parent_index":2487}}}],"overrides":[],"parameters":{"id":2491,"node_type":43,"src":{"id":2492,"line":910,"column":23,"start":33088,"end":33112,"length":25,"parent_index":2485},"parameters":[{"id":2493,"node_type":44,"src":{"id":2494,"line":910,"column":23,"start":33088,"end":33112,"length":25,"parent_index":2491},"scope":2485,"name":"newImplementation","type_name":{"id":2495,"node_type":30,"src":{"id":2496,"line":910,"column":23,"start":33088,"end":33094,"length":7,"parent_index":2493},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2497,"node_type":43,"src":{"id":2486,"line":910,"column":4,"start":33069,"end":33202,"length":134,"parent_index":2485},"parameters":[],"parameter_types":[]},"scope":2309,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":2517,"name":"upgradeToAndCall","node_type":42,"kind":41,"src":{"id":2518,"line":921,"column":4,"start":33579,"end":33742,"length":164,"parent_index":2309},"body":{"id":2534,"node_type":46,"kind":0,"src":{"id":2535,"line":921,"column":103,"start":33678,"end":33742,"length":65,"parent_index":2517},"implemented":true,"statements":[{"id":2536,"node_type":24,"kind":24,"src":{"id":2537,"line":922,"column":8,"start":33688,"end":33735,"length":48,"parent_index":2534},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}],"arguments":[{"id":2538,"node_type":16,"src":{"id":2539,"line":922,"column":26,"start":33706,"end":33722,"length":17,"parent_index":2536},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2538,"is_pure":false},{"id":2540,"node_type":16,"src":{"id":2541,"line":922,"column":45,"start":33725,"end":33728,"length":4,"parent_index":2536},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":2540,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":2542,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":2543,"line":922,"column":51,"start":33731,"end":33734,"length":4,"parent_index":2536},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":2544,"node_type":16,"src":{"id":2545,"line":922,"column":8,"start":33688,"end":33704,"length":17,"parent_index":2536},"name":"_upgradeToAndCall","type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_bool","type_string":"function(address,bytes,bool)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}]},"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$$_t_bool$","type_string":"function(address,bytes,bool)"}}]},"implemented":true,"visibility":4,"state_mutability":3,"virtual":false,"modifiers":[{"id":2519,"name":"ifAdmin","node_type":72,"kind":72,"src":{"id":2520,"line":921,"column":95,"start":33670,"end":33676,"length":7,"parent_index":2517},"argument_types":[],"arguments":[],"modifier_name":{"id":2521,"name":"ifAdmin","node_type":0,"src":{"id":2522,"line":921,"column":95,"start":33670,"end":33676,"length":7,"parent_index":2519}}}],"overrides":[],"parameters":{"id":2523,"node_type":43,"src":{"id":2524,"line":921,"column":30,"start":33605,"end":33650,"length":46,"parent_index":2517},"parameters":[{"id":2525,"node_type":44,"src":{"id":2526,"line":921,"column":30,"start":33605,"end":33629,"length":25,"parent_index":2523},"scope":2517,"name":"newImplementation","type_name":{"id":2527,"node_type":30,"src":{"id":2528,"line":921,"column":30,"start":33605,"end":33611,"length":7,"parent_index":2525},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2529,"node_type":44,"src":{"id":2530,"line":921,"column":57,"start":33632,"end":33650,"length":19,"parent_index":2523},"scope":2517,"name":"data","type_name":{"id":2531,"node_type":30,"src":{"id":2532,"line":921,"column":57,"start":33632,"end":33636,"length":5,"parent_index":2529},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":2533,"node_type":43,"src":{"id":2518,"line":921,"column":4,"start":33579,"end":33742,"length":164,"parent_index":2517},"parameters":[],"parameter_types":[]},"scope":2309,"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes","type_string":"function(address,bytes)"}},{"id":2547,"name":"_admin","node_type":42,"kind":41,"src":{"id":2548,"line":928,"column":4,"start":33804,"end":33896,"length":93,"parent_index":2309},"body":{"id":2561,"node_type":46,"kind":0,"src":{"id":2562,"line":928,"column":62,"start":33862,"end":33896,"length":35,"parent_index":2547},"implemented":true,"statements":[{"id":2563,"node_type":47,"src":{"id":2564,"line":929,"column":8,"start":33872,"end":33890,"length":19,"parent_index":2547},"function_return_parameters":2547,"expression":{"id":2565,"node_type":24,"kind":24,"src":{"id":2566,"line":929,"column":15,"start":33879,"end":33889,"length":11,"parent_index":2561},"argument_types":[],"arguments":[],"expression":{"id":2567,"node_type":16,"src":{"id":2568,"line":929,"column":15,"start":33879,"end":33887,"length":9,"parent_index":2565},"name":"_getAdmin","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":2549,"node_type":43,"src":{"id":2550,"line":928,"column":53,"start":33853,"end":33859,"length":7,"parent_index":2547},"parameters":[{"id":2551,"node_type":44,"src":{"id":2552,"line":928,"column":53,"start":33853,"end":33859,"length":7,"parent_index":2549},"scope":2547,"name":"","type_name":{"id":2553,"node_type":30,"src":{"id":2554,"line":928,"column":53,"start":33853,"end":33859,"length":7,"parent_index":2551},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2555,"node_type":43,"src":{"id":2556,"line":928,"column":53,"start":33853,"end":33859,"length":7,"parent_index":2547},"parameters":[{"id":2557,"node_type":44,"src":{"id":2558,"line":928,"column":53,"start":33853,"end":33859,"length":7,"parent_index":2555},"scope":2547,"name":"","type_name":{"id":2559,"node_type":30,"src":{"id":2560,"line":928,"column":53,"start":33853,"end":33859,"length":7,"parent_index":2557},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2309,"type_description":{"type_identifier":"t_function_$_t_address","type_string":"function(address)"}},{"id":2570,"name":"_beforeFallback","node_type":42,"kind":41,"src":{"id":2571,"line":935,"column":4,"start":34018,"end":34224,"length":207,"parent_index":2309},"body":{"id":2576,"node_type":46,"kind":0,"src":{"id":2577,"line":935,"column":57,"start":34071,"end":34224,"length":154,"parent_index":2570},"implemented":true,"statements":[{"id":2578,"node_type":24,"kind":24,"src":{"id":2579,"line":936,"column":8,"start":34081,"end":34184,"length":104,"parent_index":2576},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\""}],"arguments":[{"id":2580,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2581,"line":936,"column":16,"start":34089,"end":34113,"length":25,"parent_index":2578},"operator":12,"left_expression":{"id":2582,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2583,"line":936,"column":16,"start":34089,"end":34098,"length":10,"parent_index":2580},"expression":{"id":2584,"node_type":16,"src":{"id":2585,"line":936,"column":16,"start":34089,"end":34091,"length":3,"parent_index":2582},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"right_expression":{"id":2586,"node_type":24,"kind":24,"src":{"id":2587,"line":936,"column":30,"start":34103,"end":34113,"length":11,"parent_index":2580},"argument_types":[],"arguments":[],"expression":{"id":2588,"node_type":16,"src":{"id":2589,"line":936,"column":30,"start":34103,"end":34111,"length":9,"parent_index":2586},"name":"_getAdmin","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":2590,"node_type":17,"kind":50,"value":"TransparentUpgradeableProxy: admin cannot fallback to proxy target","hex_value":"5472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574","src":{"id":2591,"line":936,"column":43,"start":34116,"end":34183,"length":68,"parent_index":2578},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":2592,"node_type":16,"src":{"id":2593,"line":936,"column":8,"start":34081,"end":34087,"length":7,"parent_index":2578},"name":"require","type_description":{"type_identifier":"t_function_$_t_bool$$_t_string_literal","type_string":"function(bool,literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\""}]},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":2594,"node_type":24,"kind":24,"src":{"id":2595,"line":937,"column":8,"start":34195,"end":34217,"length":23,"parent_index":2576},"argument_types":[],"arguments":[],"expression":{"id":2596,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2597,"line":937,"column":8,"start":34195,"end":34215,"length":21,"parent_index":2594},"expression":{"id":2598,"node_type":16,"src":{"id":2599,"line":937,"column":8,"start":34195,"end":34199,"length":5,"parent_index":2596},"name":"super","type_description":{"type_identifier":"t_magic_super","type_string":"super"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"_beforeFallback","argument_types":[],"type_description":{"type_identifier":"t_magic_super","type_string":"super"}},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[{"id":2572,"node_type":63,"name":"_beforeFallback","src":{"id":2573,"line":935,"column":48,"start":34062,"end":34069,"length":8,"parent_index":2570},"referenced_declaration":212,"type_descriptions":{"type_identifier":"t_function_","type_string":"function()"}}],"parameters":{"id":2574,"node_type":43,"src":{"id":2571,"line":935,"column":4,"start":34018,"end":34224,"length":207,"parent_index":2570},"parameters":[],"parameter_types":[]},"return_parameters":{"id":2575,"node_type":43,"src":{"id":2571,"line":935,"column":4,"start":34018,"end":34224,"length":207,"parent_index":2570},"parameters":[],"parameter_types":[]},"scope":2309,"type_description":{"type_identifier":"t_function_","type_string":"function()"}}],"linearized_base_contracts":[2146,2309],"base_contracts":[{"id":2310,"node_type":62,"src":{"id":2311,"line":847,"column":40,"start":30741,"end":30752,"length":12,"parent_index":2309},"base_name":{"id":2312,"node_type":52,"src":{"id":2313,"line":847,"column":40,"start":30741,"end":30752,"length":12,"parent_index":2309},"name":"ERC1967Proxy","referenced_declaration":2146}}],"contract_dependencies":[2146]}],"src":{"id":2273,"line":847,"column":0,"start":30701,"end":34226,"length":3526,"parent_index":118}},{"id":2600,"base_contracts":[{"id":2642,"node_type":62,"src":{"id":2643,"line":952,"column":23,"start":34619,"end":34625,"length":7,"parent_index":2641},"base_name":{"id":2644,"node_type":52,"src":{"id":2645,"line":952,"column":23,"start":34619,"end":34625,"length":7,"parent_index":2641},"name":"Ownable","referenced_declaration":1771}}],"license":"MIT","exported_symbols":[{"id":2600,"name":"ProxyAdmin","absolute_path":"ProxyAdmin.sol"},{"id":1771,"name":"Ownable","absolute_path":"Ownable.sol"},{"id":1771,"name":"Ownable","absolute_path":"Ownable.sol"},{"id":2272,"name":"TransparentUpgradeableProxy","absolute_path":"TransparentUpgradeableProxy.sol"}],"absolute_path":"ProxyAdmin.sol","name":"ProxyAdmin","node_type":1,"nodes":[{"id":2624,"node_type":10,"src":{"id":2625,"line":943,"column":0,"start":34262,"end":34284,"length":23,"parent_index":2600},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":2639,"node_type":29,"src":{"id":0,"line":945,"column":0,"start":34287,"end":34329,"length":43,"parent_index":2600},"absolute_path":"TransparentUpgradeableProxy.sol","file":"./TransparentUpgradeableProxy.sol","scope":2600,"unit_alias":"","source_unit":2272},{"id":2640,"node_type":29,"src":{"id":0,"line":946,"column":0,"start":34331,"end":34364,"length":34,"parent_index":2600},"absolute_path":"Ownable.sol","file":"../../access/Ownable.sol","scope":2600,"unit_alias":"","source_unit":2272},{"id":2641,"name":"ProxyAdmin","node_type":35,"src":{"id":0,"line":952,"column":0,"start":34596,"end":36970,"length":2375,"parent_index":2600},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":2647,"name":"getProxyImplementation","node_type":42,"kind":41,"src":{"id":2648,"line":961,"column":4,"start":34797,"end":35233,"length":437,"parent_index":2641},"body":{"id":2663,"node_type":46,"kind":0,"src":{"id":2664,"line":961,"column":109,"start":34902,"end":35233,"length":332,"parent_index":2647},"implemented":true,"statements":[{"id":2665,"node_type":44,"src":{"id":2666,"line":964,"column":8,"start":35069,"end":35151,"length":83,"parent_index":2663},"assignments":[],"declarations":[],"initial_value":{"id":2667,"node_type":24,"kind":24,"src":{"id":2668,"line":964,"column":50,"start":35111,"end":35150,"length":40,"parent_index":2665},"argument_types":[{"type_identifier":"t_string_hex_literal","type_string":"literal_hex_string hex\"5c60da1b\""}],"arguments":[{"id":2669,"node_type":17,"kind":65,"value":"hex5c60da1b","hex_value":"6865783563363064613162","src":{"id":2670,"line":964,"column":76,"start":35137,"end":35149,"length":13,"parent_index":2667},"type_description":{"type_identifier":"t_string_hex_literal","type_string":"literal_hex_string hex\"5c60da1b\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":2671,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2672,"line":964,"column":50,"start":35111,"end":35135,"length":25,"parent_index":2667},"expression":{"id":2673,"node_type":24,"kind":24,"src":{"id":2674,"line":964,"column":50,"start":35111,"end":35124,"length":14,"parent_index":2671},"argument_types":[{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}],"arguments":[{"id":2675,"node_type":16,"src":{"id":2676,"line":964,"column":58,"start":35119,"end":35123,"length":5,"parent_index":2673},"name":"proxy","type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"overloaded_declarations":[],"referenced_declaration":2675,"is_pure":false}],"expression":{"id":2677,"node_type":16,"src":{"id":2678,"line":964,"column":50,"start":35111,"end":35117,"length":7,"parent_index":2673},"type_name":{"id":2679,"node_type":30,"src":{"id":2680,"line":964,"column":50,"start":35111,"end":35117,"length":7,"parent_index":2677},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_contract$_TransparentUpgradeableProxy_$2272","type_string":"function(contract TransparentUpgradeableProxy)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}]},"type_description":{"type_identifier":"t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$","type_string":"function(contract TransparentUpgradeableProxy)"}},"member_name":"staticcall","argument_types":[{"type_identifier":"t_string_hex_literal","type_string":"literal_hex_string hex\"5c60da1b\""}],"type_description":{"type_identifier":"t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$","type_string":"function(contract TransparentUpgradeableProxy)"}},"type_description":{"type_identifier":"t_function_$_t_string_hex_literal$","type_string":"function(literal_hex_string hex\"5c60da1b\")"}}},{"id":2681,"node_type":24,"kind":24,"src":{"id":2682,"line":965,"column":8,"start":35161,"end":35176,"length":16,"parent_index":2663},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"arguments":[{"id":2683,"node_type":16,"src":{"id":2684,"line":965,"column":16,"start":35169,"end":35175,"length":7,"parent_index":2681},"name":"success","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":2685,"node_type":16,"src":{"id":2686,"line":965,"column":8,"start":35161,"end":35167,"length":7,"parent_index":2681},"name":"require","type_description":{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}]},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},{"id":2687,"node_type":47,"src":{"id":2688,"line":966,"column":8,"start":35187,"end":35227,"length":41,"parent_index":2647},"function_return_parameters":2647,"expression":{"id":2689,"node_type":24,"kind":24,"src":{"id":2690,"line":966,"column":15,"start":35194,"end":35226,"length":33,"parent_index":2663},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_tuple_$_t_address$","type_string":"tuple(address)"}],"arguments":[{"id":2691,"node_type":16,"src":{"id":2692,"line":966,"column":26,"start":35205,"end":35214,"length":10,"parent_index":2689},"name":"returndata","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":2693,"node_type":60,"src":{"id":2694,"line":966,"column":38,"start":35217,"end":35225,"length":9,"parent_index":2689},"is_constant":false,"is_pure":false,"components":[{"id":2695,"node_type":16,"src":{"id":2696,"line":966,"column":39,"start":35218,"end":35224,"length":7,"parent_index":2693},"type_name":{"id":2697,"node_type":30,"src":{"id":2698,"line":966,"column":39,"start":35218,"end":35224,"length":7,"parent_index":2695},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_address$","type_string":"tuple(address)"}}],"expression":{"id":2699,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2700,"line":966,"column":15,"start":35194,"end":35203,"length":10,"parent_index":2689},"expression":{"id":2701,"node_type":16,"src":{"id":2702,"line":966,"column":15,"start":35194,"end":35196,"length":3,"parent_index":2699},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"decode","argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_tuple_$_t_address$","type_string":"tuple(address)"}],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_function_$$_t_tuple_$_t_address$$","type_string":"function(function(),tuple(address))"}}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":2649,"node_type":43,"src":{"id":2650,"line":961,"column":36,"start":34829,"end":34861,"length":33,"parent_index":2647},"parameters":[{"id":2651,"node_type":44,"src":{"id":2652,"line":961,"column":36,"start":34829,"end":34861,"length":33,"parent_index":2649},"scope":2647,"name":"proxy","type_name":{"id":2653,"node_type":69,"src":{"id":2654,"line":961,"column":36,"start":34829,"end":34855,"length":27,"parent_index":2651},"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"path_node":{"id":2655,"name":"TransparentUpgradeableProxy","node_type":52,"referenced_declaration":2272,"src":{"id":2656,"line":961,"column":36,"start":34829,"end":34855,"length":27,"parent_index":2653}},"referenced_declaration":2272},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}]},"return_parameters":{"id":2657,"node_type":43,"src":{"id":2658,"line":961,"column":100,"start":34893,"end":34899,"length":7,"parent_index":2647},"parameters":[{"id":2659,"node_type":44,"src":{"id":2660,"line":961,"column":100,"start":34893,"end":34899,"length":7,"parent_index":2657},"scope":2647,"name":"","type_name":{"id":2661,"node_type":30,"src":{"id":2662,"line":961,"column":100,"start":34893,"end":34899,"length":7,"parent_index":2659},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2641,"type_description":{"type_identifier":"t_function_$_t_contract$_TransparentUpgradeableProxy_$2272","type_string":"function(contract TransparentUpgradeableProxy)"}},{"id":2704,"name":"getProxyAdmin","node_type":42,"kind":41,"src":{"id":2705,"line":976,"column":4,"start":35394,"end":35812,"length":419,"parent_index":2641},"body":{"id":2720,"node_type":46,"kind":0,"src":{"id":2721,"line":976,"column":100,"start":35490,"end":35812,"length":323,"parent_index":2704},"implemented":true,"statements":[{"id":2722,"node_type":44,"src":{"id":2723,"line":979,"column":8,"start":35648,"end":35730,"length":83,"parent_index":2720},"assignments":[],"declarations":[],"initial_value":{"id":2724,"node_type":24,"kind":24,"src":{"id":2725,"line":979,"column":50,"start":35690,"end":35729,"length":40,"parent_index":2722},"argument_types":[{"type_identifier":"t_string_hex_literal","type_string":"literal_hex_string hex\"f851a440\""}],"arguments":[{"id":2726,"node_type":17,"kind":65,"value":"hexf851a440","hex_value":"6865786638353161343430","src":{"id":2727,"line":979,"column":76,"start":35716,"end":35728,"length":13,"parent_index":2724},"type_description":{"type_identifier":"t_string_hex_literal","type_string":"literal_hex_string hex\"f851a440\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":2728,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2729,"line":979,"column":50,"start":35690,"end":35714,"length":25,"parent_index":2724},"expression":{"id":2730,"node_type":24,"kind":24,"src":{"id":2731,"line":979,"column":50,"start":35690,"end":35703,"length":14,"parent_index":2728},"argument_types":[{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}],"arguments":[{"id":2732,"node_type":16,"src":{"id":2733,"line":979,"column":58,"start":35698,"end":35702,"length":5,"parent_index":2730},"name":"proxy","type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"overloaded_declarations":[],"referenced_declaration":2732,"is_pure":false}],"expression":{"id":2734,"node_type":16,"src":{"id":2735,"line":979,"column":50,"start":35690,"end":35696,"length":7,"parent_index":2730},"type_name":{"id":2736,"node_type":30,"src":{"id":2737,"line":979,"column":50,"start":35690,"end":35696,"length":7,"parent_index":2734},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_contract$_TransparentUpgradeableProxy_$2272","type_string":"function(contract TransparentUpgradeableProxy)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}]},"type_description":{"type_identifier":"t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$","type_string":"function(contract TransparentUpgradeableProxy)"}},"member_name":"staticcall","argument_types":[{"type_identifier":"t_string_hex_literal","type_string":"literal_hex_string hex\"f851a440\""}],"type_description":{"type_identifier":"t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$","type_string":"function(contract TransparentUpgradeableProxy)"}},"type_description":{"type_identifier":"t_function_$_t_string_hex_literal$","type_string":"function(literal_hex_string hex\"f851a440\")"}}},{"id":2738,"node_type":24,"kind":24,"src":{"id":2739,"line":980,"column":8,"start":35740,"end":35755,"length":16,"parent_index":2720},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}],"arguments":[{"id":2740,"node_type":16,"src":{"id":2741,"line":980,"column":16,"start":35748,"end":35754,"length":7,"parent_index":2738},"name":"success","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":2742,"node_type":16,"src":{"id":2743,"line":980,"column":8,"start":35740,"end":35746,"length":7,"parent_index":2738},"name":"require","type_description":{"type_identifier":"t_function_$_t_function_","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_","type_string":"function()"}]},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},{"id":2744,"node_type":47,"src":{"id":2745,"line":981,"column":8,"start":35766,"end":35806,"length":41,"parent_index":2704},"function_return_parameters":2704,"expression":{"id":2746,"node_type":24,"kind":24,"src":{"id":2747,"line":981,"column":15,"start":35773,"end":35805,"length":33,"parent_index":2720},"argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_tuple_$_t_address$","type_string":"tuple(address)"}],"arguments":[{"id":2748,"node_type":16,"src":{"id":2749,"line":981,"column":26,"start":35784,"end":35793,"length":10,"parent_index":2746},"name":"returndata","type_description":{"type_identifier":"t_function_","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":2750,"node_type":60,"src":{"id":2751,"line":981,"column":38,"start":35796,"end":35804,"length":9,"parent_index":2746},"is_constant":false,"is_pure":false,"components":[{"id":2752,"node_type":16,"src":{"id":2753,"line":981,"column":39,"start":35797,"end":35803,"length":7,"parent_index":2750},"type_name":{"id":2754,"node_type":30,"src":{"id":2755,"line":981,"column":39,"start":35797,"end":35803,"length":7,"parent_index":2752},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_address$","type_string":"tuple(address)"}}],"expression":{"id":2756,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2757,"line":981,"column":15,"start":35773,"end":35782,"length":10,"parent_index":2746},"expression":{"id":2758,"node_type":16,"src":{"id":2759,"line":981,"column":15,"start":35773,"end":35775,"length":3,"parent_index":2756},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"decode","argument_types":[{"type_identifier":"t_function_","type_string":"function()"},{"type_identifier":"t_tuple_$_t_address$","type_string":"tuple(address)"}],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_function_$$_t_tuple_$_t_address$$","type_string":"function(function(),tuple(address))"}}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":2706,"node_type":43,"src":{"id":2707,"line":976,"column":27,"start":35417,"end":35449,"length":33,"parent_index":2704},"parameters":[{"id":2708,"node_type":44,"src":{"id":2709,"line":976,"column":27,"start":35417,"end":35449,"length":33,"parent_index":2706},"scope":2704,"name":"proxy","type_name":{"id":2710,"node_type":69,"src":{"id":2711,"line":976,"column":27,"start":35417,"end":35443,"length":27,"parent_index":2708},"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"path_node":{"id":2712,"name":"TransparentUpgradeableProxy","node_type":52,"referenced_declaration":2272,"src":{"id":2713,"line":976,"column":27,"start":35417,"end":35443,"length":27,"parent_index":2710}},"referenced_declaration":2272},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}]},"return_parameters":{"id":2714,"node_type":43,"src":{"id":2715,"line":976,"column":91,"start":35481,"end":35487,"length":7,"parent_index":2704},"parameters":[{"id":2716,"node_type":44,"src":{"id":2717,"line":976,"column":91,"start":35481,"end":35487,"length":7,"parent_index":2714},"scope":2704,"name":"","type_name":{"id":2718,"node_type":30,"src":{"id":2719,"line":976,"column":91,"start":35481,"end":35487,"length":7,"parent_index":2716},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2641,"type_description":{"type_identifier":"t_function_$_t_contract$_TransparentUpgradeableProxy_$2272","type_string":"function(contract TransparentUpgradeableProxy)"}},{"id":2761,"name":"changeProxyAdmin","node_type":42,"kind":41,"src":{"id":2762,"line":991,"column":4,"start":35987,"end":36134,"length":148,"parent_index":2641},"body":{"id":2780,"node_type":46,"kind":0,"src":{"id":2781,"line":991,"column":108,"start":36091,"end":36134,"length":44,"parent_index":2761},"implemented":true,"statements":[{"id":2782,"node_type":24,"kind":24,"src":{"id":2783,"line":992,"column":8,"start":36101,"end":36127,"length":27,"parent_index":2780},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2784,"node_type":16,"src":{"id":2785,"line":992,"column":26,"start":36119,"end":36126,"length":8,"parent_index":2782},"name":"newAdmin","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2784,"is_pure":false}],"expression":{"id":2786,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2787,"line":992,"column":8,"start":36101,"end":36117,"length":17,"parent_index":2782},"expression":{"id":2788,"node_type":16,"src":{"id":2789,"line":992,"column":8,"start":36101,"end":36105,"length":5,"parent_index":2786},"name":"proxy","type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"overloaded_declarations":[],"referenced_declaration":2788,"is_pure":false},"member_name":"changeAdmin","argument_types":[{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[{"id":2763,"name":"onlyOwner","node_type":72,"kind":72,"src":{"id":2764,"line":991,"column":98,"start":36081,"end":36089,"length":9,"parent_index":2761},"argument_types":[],"arguments":[],"modifier_name":{"id":2765,"name":"onlyOwner","node_type":0,"src":{"id":2766,"line":991,"column":98,"start":36081,"end":36089,"length":9,"parent_index":2763}}}],"overrides":[],"parameters":{"id":2767,"node_type":43,"src":{"id":2768,"line":991,"column":30,"start":36013,"end":36063,"length":51,"parent_index":2761},"parameters":[{"id":2769,"node_type":44,"src":{"id":2770,"line":991,"column":30,"start":36013,"end":36045,"length":33,"parent_index":2767},"scope":2761,"name":"proxy","type_name":{"id":2771,"node_type":69,"src":{"id":2772,"line":991,"column":30,"start":36013,"end":36039,"length":27,"parent_index":2769},"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"path_node":{"id":2773,"name":"TransparentUpgradeableProxy","node_type":52,"referenced_declaration":2272,"src":{"id":2774,"line":991,"column":30,"start":36013,"end":36039,"length":27,"parent_index":2771}},"referenced_declaration":2272},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2775,"node_type":44,"src":{"id":2776,"line":991,"column":65,"start":36048,"end":36063,"length":16,"parent_index":2767},"scope":2761,"name":"newAdmin","type_name":{"id":2777,"node_type":30,"src":{"id":2778,"line":991,"column":65,"start":36048,"end":36054,"length":7,"parent_index":2775},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2779,"node_type":43,"src":{"id":2762,"line":991,"column":4,"start":35987,"end":36134,"length":148,"parent_index":2761},"parameters":[],"parameter_types":[]},"scope":2641,"type_description":{"type_identifier":"t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$$_t_address","type_string":"function(contract TransparentUpgradeableProxy,address)"}},{"id":2791,"name":"upgrade","node_type":42,"kind":41,"src":{"id":2792,"line":1002,"column":4,"start":36340,"end":36488,"length":149,"parent_index":2641},"body":{"id":2810,"node_type":46,"kind":0,"src":{"id":2811,"line":1002,"column":105,"start":36441,"end":36488,"length":48,"parent_index":2791},"implemented":true,"statements":[{"id":2812,"node_type":24,"kind":24,"src":{"id":2813,"line":1003,"column":8,"start":36451,"end":36481,"length":31,"parent_index":2810},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2814,"node_type":16,"src":{"id":2815,"line":1003,"column":24,"start":36467,"end":36480,"length":14,"parent_index":2812},"name":"implementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2814,"is_pure":false}],"expression":{"id":2816,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2817,"line":1003,"column":8,"start":36451,"end":36465,"length":15,"parent_index":2812},"expression":{"id":2818,"node_type":16,"src":{"id":2819,"line":1003,"column":8,"start":36451,"end":36455,"length":5,"parent_index":2816},"name":"proxy","type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"overloaded_declarations":[],"referenced_declaration":2818,"is_pure":false},"member_name":"upgradeTo","argument_types":[{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[{"id":2793,"name":"onlyOwner","node_type":72,"kind":72,"src":{"id":2794,"line":1002,"column":95,"start":36431,"end":36439,"length":9,"parent_index":2791},"argument_types":[],"arguments":[],"modifier_name":{"id":2795,"name":"onlyOwner","node_type":0,"src":{"id":2796,"line":1002,"column":95,"start":36431,"end":36439,"length":9,"parent_index":2793}}}],"overrides":[],"parameters":{"id":2797,"node_type":43,"src":{"id":2798,"line":1002,"column":21,"start":36357,"end":36413,"length":57,"parent_index":2791},"parameters":[{"id":2799,"node_type":44,"src":{"id":2800,"line":1002,"column":21,"start":36357,"end":36389,"length":33,"parent_index":2797},"scope":2791,"name":"proxy","type_name":{"id":2801,"node_type":69,"src":{"id":2802,"line":1002,"column":21,"start":36357,"end":36383,"length":27,"parent_index":2799},"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"path_node":{"id":2803,"name":"TransparentUpgradeableProxy","node_type":52,"referenced_declaration":2272,"src":{"id":2804,"line":1002,"column":21,"start":36357,"end":36383,"length":27,"parent_index":2801}},"referenced_declaration":2272},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2805,"node_type":44,"src":{"id":2806,"line":1002,"column":56,"start":36392,"end":36413,"length":22,"parent_index":2797},"scope":2791,"name":"implementation","type_name":{"id":2807,"node_type":30,"src":{"id":2808,"line":1002,"column":56,"start":36392,"end":36398,"length":7,"parent_index":2805},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2809,"node_type":43,"src":{"id":2792,"line":1002,"column":4,"start":36340,"end":36488,"length":149,"parent_index":2791},"parameters":[],"parameter_types":[]},"scope":2641,"type_description":{"type_identifier":"t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$$_t_address","type_string":"function(contract TransparentUpgradeableProxy,address)"}},{"id":2821,"name":"upgradeAndCall","node_type":42,"kind":41,"src":{"id":2822,"line":1014,"column":4,"start":36755,"end":36968,"length":214,"parent_index":2641},"body":{"id":2844,"node_type":46,"kind":0,"src":{"id":2845,"line":1014,"column":139,"start":36890,"end":36968,"length":79,"parent_index":2821},"implemented":true,"statements":[{"id":2846,"node_type":24,"kind":24,"src":{"id":2847,"line":1015,"column":8,"start":36900,"end":36961,"length":62,"parent_index":2844},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":2848,"node_type":16,"src":{"id":2849,"line":1015,"column":49,"start":36941,"end":36954,"length":14,"parent_index":2846},"name":"implementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2848,"is_pure":false},{"id":2850,"node_type":16,"src":{"id":2851,"line":1015,"column":65,"start":36957,"end":36960,"length":4,"parent_index":2846},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":2850,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":2852,"node_type":93,"kind":93,"src":{"id":2853,"line":1015,"column":8,"start":36900,"end":36939,"length":40,"parent_index":2846},"expression":{"id":2854,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2855,"line":1015,"column":8,"start":36900,"end":36921,"length":22,"parent_index":2852},"expression":{"id":2856,"node_type":16,"src":{"id":2857,"line":1015,"column":8,"start":36900,"end":36904,"length":5,"parent_index":2854},"name":"proxy","type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"overloaded_declarations":[],"referenced_declaration":2856,"is_pure":false},"member_name":"upgradeToAndCall","argument_types":[],"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}},"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}},"type_description":{"type_identifier":"t_function_$_t_address$$_t_bytes$","type_string":"function(address,bytes)"}}]},"implemented":true,"visibility":3,"state_mutability":3,"virtual":true,"modifiers":[{"id":2823,"name":"onlyOwner","node_type":72,"kind":72,"src":{"id":2824,"line":1014,"column":129,"start":36880,"end":36888,"length":9,"parent_index":2821},"argument_types":[],"arguments":[],"modifier_name":{"id":2825,"name":"onlyOwner","node_type":0,"src":{"id":2826,"line":1014,"column":129,"start":36880,"end":36888,"length":9,"parent_index":2823}}}],"overrides":[],"parameters":{"id":2827,"node_type":43,"src":{"id":2828,"line":1014,"column":28,"start":36779,"end":36854,"length":76,"parent_index":2821},"parameters":[{"id":2829,"node_type":44,"src":{"id":2830,"line":1014,"column":28,"start":36779,"end":36811,"length":33,"parent_index":2827},"scope":2821,"name":"proxy","type_name":{"id":2831,"node_type":69,"src":{"id":2832,"line":1014,"column":28,"start":36779,"end":36805,"length":27,"parent_index":2829},"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"path_node":{"id":2833,"name":"TransparentUpgradeableProxy","node_type":52,"referenced_declaration":2272,"src":{"id":2834,"line":1014,"column":28,"start":36779,"end":36805,"length":27,"parent_index":2831}},"referenced_declaration":2272},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2835,"node_type":44,"src":{"id":2836,"line":1014,"column":63,"start":36814,"end":36835,"length":22,"parent_index":2827},"scope":2821,"name":"implementation","type_name":{"id":2837,"node_type":30,"src":{"id":2838,"line":1014,"column":63,"start":36814,"end":36820,"length":7,"parent_index":2835},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2839,"node_type":44,"src":{"id":2840,"line":1014,"column":87,"start":36838,"end":36854,"length":17,"parent_index":2827},"scope":2821,"name":"data","type_name":{"id":2841,"node_type":30,"src":{"id":2842,"line":1014,"column":87,"start":36838,"end":36842,"length":5,"parent_index":2839},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":2843,"node_type":43,"src":{"id":2822,"line":1014,"column":4,"start":36755,"end":36968,"length":214,"parent_index":2821},"parameters":[],"parameter_types":[]},"scope":2641,"type_description":{"type_identifier":"t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$$_t_address$$_t_bytes","type_string":"function(contract TransparentUpgradeableProxy,address,bytes)"}}],"linearized_base_contracts":[1771,2641,2639,2640],"base_contracts":[{"id":2642,"node_type":62,"src":{"id":2643,"line":952,"column":23,"start":34619,"end":34625,"length":7,"parent_index":2641},"base_name":{"id":2644,"node_type":52,"src":{"id":2645,"line":952,"column":23,"start":34619,"end":34625,"length":7,"parent_index":2641},"name":"Ownable","referenced_declaration":1771}}],"contract_dependencies":[1771,2639,2640]}],"src":{"id":2601,"line":952,"column":0,"start":34596,"end":36970,"length":2375,"parent_index":118}},{"id":2858,"base_contracts":[{"id":2907,"node_type":62,"src":{"id":2908,"line":1029,"column":37,"start":37504,"end":37530,"length":27,"parent_index":2906},"base_name":{"id":2909,"node_type":52,"src":{"id":2910,"line":1029,"column":37,"start":37504,"end":37530,"length":27,"parent_index":2906},"name":"TransparentUpgradeableProxy","referenced_declaration":2272}}],"license":"MIT","exported_symbols":[{"id":2858,"name":"AdminUpgradeabilityProxy","absolute_path":""},{"id":2600,"name":"ProxyAdmin","absolute_path":"ProxyAdmin.sol"},{"id":2272,"name":"TransparentUpgradeableProxy","absolute_path":"TransparentUpgradeableProxy.sol"},{"id":2272,"name":"TransparentUpgradeableProxy","absolute_path":"TransparentUpgradeableProxy.sol"},{"id":2146,"name":"ERC1967Proxy","absolute_path":"ERC1967Proxy.sol"},{"id":1991,"name":"UpgradeableBeacon","absolute_path":"UpgradeableBeacon.sol"},{"id":1533,"name":"BeaconProxy","absolute_path":"BeaconProxy.sol"}],"absolute_path":"","name":"AdminUpgradeabilityProxy","node_type":1,"nodes":[{"id":2884,"node_type":10,"src":{"id":2885,"line":1020,"column":0,"start":37005,"end":37027,"length":23,"parent_index":2858},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":2901,"node_type":29,"src":{"id":0,"line":1022,"column":0,"start":37030,"end":37091,"length":62,"parent_index":2858},"absolute_path":"BeaconProxy.sol","file":"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol","scope":2858,"unit_alias":"","source_unit":2600},{"id":2902,"node_type":29,"src":{"id":0,"line":1023,"column":0,"start":37093,"end":37160,"length":68,"parent_index":2858},"absolute_path":"UpgradeableBeacon.sol","file":"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol","scope":2858,"unit_alias":"","source_unit":2600},{"id":2903,"node_type":29,"src":{"id":0,"line":1024,"column":0,"start":37162,"end":37225,"length":64,"parent_index":2858},"absolute_path":"ERC1967Proxy.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","scope":2858,"unit_alias":"","source_unit":2600},{"id":2904,"node_type":29,"src":{"id":0,"line":1025,"column":0,"start":37227,"end":37309,"length":83,"parent_index":2858},"absolute_path":"TransparentUpgradeableProxy.sol","file":"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","scope":2858,"unit_alias":"","source_unit":2600},{"id":2905,"node_type":29,"src":{"id":0,"line":1026,"column":0,"start":37311,"end":37376,"length":66,"parent_index":2858},"absolute_path":"ProxyAdmin.sol","file":"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol","scope":2858,"unit_alias":"","source_unit":2600},{"id":2906,"name":"AdminUpgradeabilityProxy","node_type":35,"src":{"id":0,"line":1029,"column":0,"start":37467,"end":37658,"length":192,"parent_index":2858},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":2912,"node_type":42,"src":{"id":2913,"line":1030,"column":4,"start":37538,"end":37656,"length":119,"parent_index":2906},"kind":11,"state_mutability":3,"visibility":1,"implemented":true,"modifiers":[{"id":2929,"name":"TransparentUpgradeableProxy","node_type":72,"kind":72,"src":{"id":2930,"line":1030,"column":73,"start":37607,"end":37653,"length":47,"parent_index":2912},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":2933,"node_type":16,"src":{"id":2934,"line":1030,"column":101,"start":37635,"end":37639,"length":5,"parent_index":2929},"name":"logic","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2933,"is_pure":false},{"id":2935,"node_type":16,"src":{"id":2936,"line":1030,"column":108,"start":37642,"end":37646,"length":5,"parent_index":2929},"name":"admin","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2935,"is_pure":false},{"id":2937,"node_type":16,"src":{"id":2938,"line":1030,"column":115,"start":37649,"end":37652,"length":4,"parent_index":2929},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":2937,"is_pure":false}],"modifier_name":{"id":2931,"name":"TransparentUpgradeableProxy","node_type":0,"src":{"id":2932,"line":1030,"column":73,"start":37607,"end":37633,"length":27,"parent_index":2929}}}],"parameters":{"id":2914,"node_type":43,"src":{"id":2915,"line":1030,"column":16,"start":37550,"end":37596,"length":47,"parent_index":2912},"parameters":[{"id":2916,"node_type":44,"src":{"id":2917,"line":1030,"column":16,"start":37550,"end":37562,"length":13,"parent_index":2914},"scope":2912,"name":"logic","type_name":{"id":2918,"node_type":30,"src":{"id":2919,"line":1030,"column":16,"start":37550,"end":37556,"length":7,"parent_index":2916},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2920,"node_type":44,"src":{"id":2921,"line":1030,"column":31,"start":37565,"end":37577,"length":13,"parent_index":2914},"scope":2912,"name":"admin","type_name":{"id":2922,"node_type":30,"src":{"id":2923,"line":1030,"column":31,"start":37565,"end":37571,"length":7,"parent_index":2920},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2924,"node_type":44,"src":{"id":2925,"line":1030,"column":46,"start":37580,"end":37596,"length":17,"parent_index":2914},"scope":2912,"name":"data","type_name":{"id":2926,"node_type":30,"src":{"id":2927,"line":1030,"column":46,"start":37580,"end":37584,"length":5,"parent_index":2924},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":2928,"node_type":43,"src":{"id":2913,"line":1030,"column":4,"start":37538,"end":37656,"length":119,"parent_index":2912},"parameters":[],"parameter_types":[]},"scope":2906,"body":{"id":2939,"node_type":46,"kind":0,"src":{"id":2940,"line":1030,"column":121,"start":37655,"end":37656,"length":2,"parent_index":2912},"implemented":true,"statements":[]}}],"linearized_base_contracts":[2272,2906,2901,2902,2903,2904,2905],"base_contracts":[{"id":2907,"node_type":62,"src":{"id":2908,"line":1029,"column":37,"start":37504,"end":37530,"length":27,"parent_index":2906},"base_name":{"id":2909,"node_type":52,"src":{"id":2910,"line":1029,"column":37,"start":37504,"end":37530,"length":27,"parent_index":2906},"name":"TransparentUpgradeableProxy","referenced_declaration":2272}}],"contract_dependencies":[2272,2901,2902,2903,2904,2905]}],"src":{"id":2859,"line":1029,"column":0,"start":37467,"end":37658,"length":192,"parent_index":118}}],"comments":[{"id":1,"src":{"id":0,"line":1,"column":0,"start":0,"end":30,"length":31,"parent_index":2},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":2,"src":{"id":0,"line":5,"column":0,"start":58,"end":136,"length":79,"parent_index":3},"node_type":32,"text":"/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */"},{"id":3,"src":{"id":0,"line":9,"column":4,"start":162,"end":323,"length":162,"parent_index":4},"node_type":32,"text":"/**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */"},{"id":4,"src":{"id":0,"line":17,"column":0,"start":391,"end":421,"length":31,"parent_index":5},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":5,"src":{"id":0,"line":21,"column":0,"start":449,"end":1046,"length":598,"parent_index":6},"node_type":32,"text":"/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */"},{"id":6,"src":{"id":0,"line":32,"column":4,"start":1078,"end":1268,"length":191,"parent_index":7},"node_type":32,"text":"/**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internall call site, it will return directly to the external caller.\n */"},{"id":7,"src":{"id":0,"line":38,"column":8,"start":1344,"end":1390,"length":47,"parent_index":8},"node_type":31,"text":"// solhint-disable-next-line no-inline-assembly"},{"id":8,"src":{"id":0,"line":59,"column":4,"start":2175,"end":2346,"length":172,"parent_index":9},"node_type":32,"text":"/**\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */"},{"id":9,"src":{"id":0,"line":65,"column":4,"start":2425,"end":2642,"length":218,"parent_index":10},"node_type":32,"text":"/**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internall call site, it will return directly to the external caller.\n */"},{"id":10,"src":{"id":0,"line":75,"column":4,"start":2764,"end":2949,"length":186,"parent_index":11},"node_type":32,"text":"/**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */"},{"id":11,"src":{"id":0,"line":83,"column":4,"start":3026,"end":3174,"length":149,"parent_index":12},"node_type":32,"text":"/**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */"},{"id":12,"src":{"id":0,"line":91,"column":4,"start":3250,"end":3519,"length":270,"parent_index":13},"node_type":32,"text":"/**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overriden should call `super._beforeFallback()`.\n */"},{"id":13,"src":{"id":0,"line":101,"column":0,"start":3580,"end":3610,"length":31,"parent_index":14},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":14,"src":{"id":0,"line":105,"column":0,"start":3638,"end":3704,"length":67,"parent_index":15},"node_type":32,"text":"/**\n * @dev Collection of functions related to the address type\n */"},{"id":15,"src":{"id":0,"line":109,"column":4,"start":3728,"end":4292,"length":565,"parent_index":16},"node_type":32,"text":"/**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */"},{"id":16,"src":{"id":0,"line":127,"column":8,"start":4374,"end":4443,"length":70,"parent_index":17},"node_type":31,"text":"// This method relies on extcodesize, which returns 0 for contracts in"},{"id":17,"src":{"id":0,"line":128,"column":8,"start":4453,"end":4516,"length":64,"parent_index":18},"node_type":31,"text":"// construction, since the code is only stored at the end of the"},{"id":18,"src":{"id":0,"line":129,"column":8,"start":4526,"end":4550,"length":25,"parent_index":19},"node_type":31,"text":"// constructor execution."},{"id":19,"src":{"id":0,"line":132,"column":8,"start":4583,"end":4629,"length":47,"parent_index":20},"node_type":31,"text":"// solhint-disable-next-line no-inline-assembly"},{"id":20,"src":{"id":0,"line":137,"column":4,"start":4717,"end":5622,"length":906,"parent_index":21},"node_type":32,"text":"/**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */"},{"id":21,"src":{"id":0,"line":156,"column":8,"start":5793,"end":5860,"length":68,"parent_index":22},"node_type":31,"text":"// solhint-disable-next-line avoid-low-level-calls, avoid-call-value"},{"id":22,"src":{"id":0,"line":161,"column":4,"start":6025,"end":6754,"length":730,"parent_index":23},"node_type":32,"text":"/**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain`call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */"},{"id":23,"src":{"id":0,"line":183,"column":4,"start":6937,"end":7147,"length":211,"parent_index":24},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */"},{"id":24,"src":{"id":0,"line":193,"column":4,"start":7352,"end":7702,"length":351,"parent_index":25},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */"},{"id":25,"src":{"id":0,"line":208,"column":4,"start":7938,"end":8174,"length":237,"parent_index":26},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */"},{"id":26,"src":{"id":0,"line":218,"column":8,"start":8493,"end":8542,"length":50,"parent_index":27},"node_type":31,"text":"// solhint-disable-next-line avoid-low-level-calls"},{"id":27,"src":{"id":0,"line":223,"column":4,"start":8709,"end":8874,"length":166,"parent_index":28},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */"},{"id":28,"src":{"id":0,"line":233,"column":4,"start":9083,"end":9255,"length":173,"parent_index":29},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */"},{"id":29,"src":{"id":0,"line":242,"column":8,"start":9477,"end":9526,"length":50,"parent_index":30},"node_type":31,"text":"// solhint-disable-next-line avoid-low-level-calls"},{"id":30,"src":{"id":0,"line":247,"column":4,"start":9683,"end":9850,"length":168,"parent_index":31},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */"},{"id":31,"src":{"id":0,"line":257,"column":4,"start":10060,"end":10234,"length":175,"parent_index":32},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */"},{"id":32,"src":{"id":0,"line":266,"column":8,"start":10455,"end":10504,"length":50,"parent_index":33},"node_type":31,"text":"// solhint-disable-next-line avoid-low-level-calls"},{"id":33,"src":{"id":0,"line":275,"column":12,"start":10877,"end":10929,"length":53,"parent_index":34},"node_type":31,"text":"// Look for revert reason and bubble it up if present"},{"id":34,"src":{"id":0,"line":277,"column":16,"start":10988,"end":11062,"length":75,"parent_index":35},"node_type":31,"text":"// The easiest way to bubble the revert reason is using memory via assembly"},{"id":35,"src":{"id":0,"line":279,"column":16,"start":11081,"end":11127,"length":47,"parent_index":36},"node_type":31,"text":"// solhint-disable-next-line no-inline-assembly"},{"id":36,"src":{"id":0,"line":291,"column":0,"start":11392,"end":11422,"length":31,"parent_index":37},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":37,"src":{"id":0,"line":295,"column":0,"start":11450,"end":12597,"length":1148,"parent_index":38},"node_type":32,"text":"/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */"},{"id":38,"src":{"id":0,"line":338,"column":4,"start":12842,"end":12928,"length":87,"parent_index":39},"node_type":32,"text":"/**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */"},{"id":39,"src":{"id":0,"line":347,"column":4,"start":13087,"end":13173,"length":87,"parent_index":40},"node_type":32,"text":"/**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */"},{"id":40,"src":{"id":0,"line":356,"column":4,"start":13332,"end":13418,"length":87,"parent_index":41},"node_type":32,"text":"/**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */"},{"id":41,"src":{"id":0,"line":365,"column":4,"start":13577,"end":13663,"length":87,"parent_index":42},"node_type":32,"text":"/**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */"},{"id":42,"src":{"id":0,"line":376,"column":0,"start":13821,"end":13851,"length":31,"parent_index":43},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":43,"src":{"id":0,"line":384,"column":0,"start":13984,"end":14219,"length":236,"parent_index":44},"node_type":32,"text":"/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */"},{"id":44,"src":{"id":0,"line":393,"column":4,"start":14260,"end":14333,"length":74,"parent_index":45},"node_type":31,"text":"// This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1"},{"id":45,"src":{"id":0,"line":396,"column":4,"start":14454,"end":14667,"length":214,"parent_index":46},"node_type":32,"text":"/**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */"},{"id":46,"src":{"id":0,"line":403,"column":4,"start":14795,"end":14862,"length":68,"parent_index":47},"node_type":32,"text":"/**\n * @dev Emitted when the implementation is upgraded.\n */"},{"id":47,"src":{"id":0,"line":408,"column":4,"start":14921,"end":14987,"length":67,"parent_index":48},"node_type":32,"text":"/**\n * @dev Returns the current implementation address.\n */"},{"id":48,"src":{"id":0,"line":415,"column":4,"start":15139,"end":15218,"length":80,"parent_index":49},"node_type":32,"text":"/**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */"},{"id":49,"src":{"id":0,"line":423,"column":4,"start":15489,"end":15583,"length":95,"parent_index":50},"node_type":32,"text":"/**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */"},{"id":50,"src":{"id":0,"line":433,"column":4,"start":15747,"end":15869,"length":123,"parent_index":51},"node_type":32,"text":"/**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */"},{"id":51,"src":{"id":0,"line":446,"column":4,"start":16196,"end":16356,"length":161,"parent_index":52},"node_type":32,"text":"/**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */"},{"id":52,"src":{"id":0,"line":454,"column":8,"start":16535,"end":16567,"length":33,"parent_index":53},"node_type":31,"text":"// Initial upgrade and setup call"},{"id":53,"src":{"id":0,"line":460,"column":8,"start":16746,"end":16796,"length":51,"parent_index":54},"node_type":31,"text":"// Perform rollback test if not already in progress"},{"id":54,"src":{"id":0,"line":463,"column":12,"start":16950,"end":17012,"length":63,"parent_index":55},"node_type":31,"text":"// Trigger rollback using upgradeTo from the new implementation"},{"id":55,"src":{"id":0,"line":473,"column":12,"start":17342,"end":17372,"length":31,"parent_index":56},"node_type":31,"text":"// Check rollback was effective"},{"id":56,"src":{"id":0,"line":475,"column":12,"start":17501,"end":17562,"length":62,"parent_index":57},"node_type":31,"text":"// Finally reset to the new implementation and log the upgrade"},{"id":57,"src":{"id":0,"line":481,"column":4,"start":17682,"end":17973,"length":292,"parent_index":58},"node_type":32,"text":"/**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */"},{"id":58,"src":{"id":0,"line":495,"column":4,"start":18298,"end":18486,"length":189,"parent_index":59},"node_type":32,"text":"/**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */"},{"id":59,"src":{"id":0,"line":502,"column":4,"start":18605,"end":18671,"length":67,"parent_index":60},"node_type":32,"text":"/**\n * @dev Emitted when the admin account has changed.\n */"},{"id":60,"src":{"id":0,"line":507,"column":4,"start":18743,"end":18792,"length":50,"parent_index":61},"node_type":32,"text":"/**\n * @dev Returns the current admin.\n */"},{"id":61,"src":{"id":0,"line":514,"column":4,"start":18926,"end":18996,"length":71,"parent_index":62},"node_type":32,"text":"/**\n * @dev Stores a new address in the EIP1967 admin slot.\n */"},{"id":62,"src":{"id":0,"line":522,"column":4,"start":19209,"end":19308,"length":100,"parent_index":63},"node_type":32,"text":"/**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */"},{"id":63,"src":{"id":0,"line":532,"column":4,"start":19455,"end":19686,"length":232,"parent_index":64},"node_type":32,"text":"/**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */"},{"id":64,"src":{"id":0,"line":538,"column":4,"start":19806,"end":19865,"length":60,"parent_index":65},"node_type":32,"text":"/**\n * @dev Emitted when the beacon is upgraded.\n */"},{"id":65,"src":{"id":0,"line":543,"column":4,"start":19922,"end":19972,"length":51,"parent_index":66},"node_type":32,"text":"/**\n * @dev Returns the current beacon.\n */"},{"id":66,"src":{"id":0,"line":550,"column":4,"start":20108,"end":20178,"length":71,"parent_index":67},"node_type":32,"text":"/**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */"},{"id":67,"src":{"id":0,"line":566,"column":0,"start":20593,"end":20623,"length":31,"parent_index":68},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":68,"src":{"id":0,"line":574,"column":0,"start":20739,"end":21091,"length":353,"parent_index":69},"node_type":32,"text":"/**\n * @dev This contract implements a proxy that gets the implementation address for each call from a {UpgradeableBeacon}.\n *\n * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\n * conflict with the storage layout of the implementation behind the proxy.\n *\n * _Available since v3.4._\n */"},{"id":69,"src":{"id":0,"line":583,"column":4,"start":21145,"end":21569,"length":425,"parent_index":70},"node_type":32,"text":"/**\n * @dev Initializes the proxy with `beacon`.\n *\n * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\n * will typically be an encoded function call, and allows initializating the storage of the proxy like a Solidity\n * constructor.\n *\n * Requirements:\n *\n * - `beacon` must be a contract with the interface {IBeacon}.\n */"},{"id":70,"src":{"id":0,"line":599,"column":4,"start":21786,"end":21844,"length":59,"parent_index":71},"node_type":32,"text":"/**\n * @dev Returns the current beacon address.\n */"},{"id":71,"src":{"id":0,"line":606,"column":4,"start":21951,"end":22042,"length":92,"parent_index":72},"node_type":32,"text":"/**\n * @dev Returns the current implementation address of the associated beacon.\n */"},{"id":72,"src":{"id":0,"line":613,"column":4,"start":22192,"end":22558,"length":367,"parent_index":73},"node_type":32,"text":"/**\n * @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\n *\n * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\n *\n * Requirements:\n *\n * - `beacon` must be a contract.\n * - The implementation returned by `beacon` must be a contract.\n */"},{"id":73,"src":{"id":0,"line":628,"column":0,"start":22701,"end":22731,"length":31,"parent_index":74},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":74,"src":{"id":0,"line":632,"column":0,"start":22759,"end":23253,"length":495,"parent_index":75},"node_type":32,"text":"/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */"},{"id":75,"src":{"id":0,"line":648,"column":14,"start":23472,"end":23589,"length":118,"parent_index":76},"node_type":31,"text":"// silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691"},{"id":76,"src":{"id":0,"line":653,"column":0,"start":23625,"end":23655,"length":31,"parent_index":77},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":77,"src":{"id":0,"line":658,"column":0,"start":23714,"end":24207,"length":494,"parent_index":78},"node_type":32,"text":"/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */"},{"id":78,"src":{"id":0,"line":675,"column":4,"start":24371,"end":24461,"length":91,"parent_index":79},"node_type":32,"text":"/**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */"},{"id":79,"src":{"id":0,"line":684,"column":4,"start":24623,"end":24687,"length":65,"parent_index":80},"node_type":32,"text":"/**\n * @dev Returns the address of the current owner.\n */"},{"id":80,"src":{"id":0,"line":691,"column":4,"start":24784,"end":24860,"length":77,"parent_index":81},"node_type":32,"text":"/**\n * @dev Throws if called by any account other than the owner.\n */"},{"id":81,"src":{"id":0,"line":699,"column":4,"start":24989,"end":25319,"length":331,"parent_index":82},"node_type":32,"text":"/**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */"},{"id":82,"src":{"id":0,"line":711,"column":4,"start":25476,"end":25613,"length":138,"parent_index":83},"node_type":32,"text":"/**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */"},{"id":83,"src":{"id":0,"line":722,"column":0,"start":25863,"end":25893,"length":31,"parent_index":84},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":84,"src":{"id":0,"line":730,"column":0,"start":26015,"end":26334,"length":320,"parent_index":85},"node_type":32,"text":"/**\n * @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\n * implementation contract, which is where they will delegate all function calls.\n *\n * An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.\n */"},{"id":85,"src":{"id":0,"line":739,"column":4,"start":26427,"end":26516,"length":90,"parent_index":86},"node_type":32,"text":"/**\n * @dev Emitted when the implementation returned by the beacon is changed.\n */"},{"id":86,"src":{"id":0,"line":744,"column":4,"start":26575,"end":26718,"length":144,"parent_index":87},"node_type":32,"text":"/**\n * @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the\n * beacon.\n */"},{"id":87,"src":{"id":0,"line":752,"column":4,"start":26819,"end":26885,"length":67,"parent_index":88},"node_type":32,"text":"/**\n * @dev Returns the current implementation address.\n */"},{"id":88,"src":{"id":0,"line":759,"column":4,"start":27009,"end":27256,"length":248,"parent_index":89},"node_type":32,"text":"/**\n * @dev Upgrades the beacon to a new implementation.\n *\n * Emits an {Upgraded} event.\n *\n * Requirements:\n *\n * - msg.sender must be the owner of the contract.\n * - `newImplementation` must be a contract.\n */"},{"id":89,"src":{"id":0,"line":774,"column":4,"start":27435,"end":27598,"length":164,"parent_index":90},"node_type":32,"text":"/**\n * @dev Sets the implementation contract address for this beacon\n *\n * Requirements:\n *\n * - `newImplementation` must be a contract.\n */"},{"id":90,"src":{"id":0,"line":787,"column":0,"start":27834,"end":27864,"length":31,"parent_index":91},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":91,"src":{"id":0,"line":794,"column":0,"start":27947,"end":28318,"length":372,"parent_index":92},"node_type":32,"text":"/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */"},{"id":92,"src":{"id":0,"line":801,"column":4,"start":28373,"end":28707,"length":335,"parent_index":93},"node_type":32,"text":"/**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\n */"},{"id":93,"src":{"id":0,"line":812,"column":4,"start":28936,"end":29002,"length":67,"parent_index":94},"node_type":32,"text":"/**\n * @dev Returns the current implementation address.\n */"},{"id":94,"src":{"id":0,"line":820,"column":0,"start":29152,"end":29182,"length":31,"parent_index":95},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":95,"src":{"id":0,"line":826,"column":0,"start":29249,"end":30699,"length":1451,"parent_index":96},"node_type":32,"text":"/**\n * @dev This contract implements a proxy that is upgradeable by an admin.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches one of the admin functions exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n * \"admin cannot fallback to proxy target\".\n *\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n * to sudden errors when trying to call a function from the proxy implementation.\n *\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n */"},{"id":96,"src":{"id":0,"line":848,"column":4,"start":30760,"end":30969,"length":210,"parent_index":97},"node_type":32,"text":"/**\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\n */"},{"id":97,"src":{"id":0,"line":857,"column":4,"start":31205,"end":31334,"length":130,"parent_index":98},"node_type":32,"text":"/**\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n */"},{"id":98,"src":{"id":0,"line":868,"column":4,"start":31480,"end":31910,"length":431,"parent_index":99},"node_type":32,"text":"/**\n * @dev Returns the current admin.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */"},{"id":99,"src":{"id":0,"line":881,"column":4,"start":32018,"end":32466,"length":449,"parent_index":100},"node_type":32,"text":"/**\n * @dev Returns the current implementation.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */"},{"id":100,"src":{"id":0,"line":894,"column":4,"start":32607,"end":32800,"length":194,"parent_index":101},"node_type":32,"text":"/**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\n */"},{"id":101,"src":{"id":0,"line":905,"column":4,"start":32915,"end":33063,"length":149,"parent_index":102},"node_type":32,"text":"/**\n * @dev Upgrade the implementation of the proxy.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\n */"},{"id":102,"src":{"id":0,"line":914,"column":4,"start":33209,"end":33573,"length":365,"parent_index":103},"node_type":32,"text":"/**\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n * proxied contract.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\n */"},{"id":103,"src":{"id":0,"line":925,"column":4,"start":33749,"end":33798,"length":50,"parent_index":104},"node_type":32,"text":"/**\n * @dev Returns the current admin.\n */"},{"id":104,"src":{"id":0,"line":932,"column":4,"start":33903,"end":34012,"length":110,"parent_index":105},"node_type":32,"text":"/**\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\n */"},{"id":105,"src":{"id":0,"line":941,"column":0,"start":34229,"end":34259,"length":31,"parent_index":106},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":106,"src":{"id":0,"line":948,"column":0,"start":34367,"end":34594,"length":228,"parent_index":107},"node_type":32,"text":"/**\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\n */"},{"id":107,"src":{"id":0,"line":954,"column":4,"start":34634,"end":34791,"length":158,"parent_index":108},"node_type":32,"text":"/**\n * @dev Returns the current implementation of `proxy`.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */"},{"id":108,"src":{"id":0,"line":962,"column":8,"start":34912,"end":34996,"length":85,"parent_index":109},"node_type":31,"text":"// We need to manually run the static call since the getter cannot be flagged as view"},{"id":109,"src":{"id":0,"line":963,"column":8,"start":35006,"end":35059,"length":54,"parent_index":110},"node_type":31,"text":"// bytes4(keccak256(\"implementation()\")) == 0x5c60da1b"},{"id":110,"src":{"id":0,"line":969,"column":4,"start":35240,"end":35388,"length":149,"parent_index":111},"node_type":32,"text":"/**\n * @dev Returns the current admin of `proxy`.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */"},{"id":111,"src":{"id":0,"line":977,"column":8,"start":35500,"end":35584,"length":85,"parent_index":112},"node_type":31,"text":"// We need to manually run the static call since the getter cannot be flagged as view"},{"id":112,"src":{"id":0,"line":978,"column":8,"start":35594,"end":35638,"length":45,"parent_index":113},"node_type":31,"text":"// bytes4(keccak256(\"admin()\")) == 0xf851a440"},{"id":113,"src":{"id":0,"line":984,"column":4,"start":35819,"end":35981,"length":163,"parent_index":114},"node_type":32,"text":"/**\n * @dev Changes the admin of `proxy` to `newAdmin`.\n *\n * Requirements:\n *\n * - This contract must be the current admin of `proxy`.\n */"},{"id":114,"src":{"id":0,"line":995,"column":4,"start":36141,"end":36334,"length":194,"parent_index":115},"node_type":32,"text":"/**\n * @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */"},{"id":115,"src":{"id":0,"line":1006,"column":4,"start":36495,"end":36749,"length":255,"parent_index":116},"node_type":32,"text":"/**\n * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See\n * {TransparentUpgradeableProxy-upgradeToAndCall}.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */"},{"id":116,"src":{"id":0,"line":1019,"column":0,"start":36973,"end":37003,"length":31,"parent_index":117},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":117,"src":{"id":0,"line":1028,"column":0,"start":37379,"end":37465,"length":87,"parent_index":118},"node_type":31,"text":"// Kept for backwards compatibility with older versions of Hardhat and Truffle plugins."}]} \ No newline at end of file +{"id":118,"node_type":80,"entry_source_unit":2272,"root":[{"id":119,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":119,"name":"IBeacon","absolute_path":"IBeacon.sol"}],"absolute_path":"IBeacon.sol","name":"IBeacon","node_type":1,"nodes":[{"id":121,"node_type":10,"src":{"id":122,"line":3,"column":0,"start":33,"end":55,"length":23,"parent_index":119},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":143,"name":"IBeacon","node_type":35,"src":{"id":0,"line":8,"column":0,"start":138,"end":388,"length":251,"parent_index":119},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":145,"name":"implementation","node_type":42,"kind":41,"src":{"id":146,"line":14,"column":4,"start":329,"end":386,"length":58,"parent_index":143},"body":{"id":159,"node_type":46,"kind":0,"src":{"id":146,"line":14,"column":4,"start":329,"end":386,"length":58,"parent_index":145},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":147,"node_type":43,"src":{"id":148,"line":14,"column":53,"start":378,"end":384,"length":7,"parent_index":145},"parameters":[{"id":149,"node_type":44,"src":{"id":150,"line":14,"column":53,"start":378,"end":384,"length":7,"parent_index":147},"scope":145,"name":"","type_name":{"id":151,"node_type":30,"src":{"id":152,"line":14,"column":53,"start":378,"end":384,"length":7,"parent_index":149},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":153,"node_type":43,"src":{"id":154,"line":14,"column":53,"start":378,"end":384,"length":7,"parent_index":145},"parameters":[{"id":155,"node_type":44,"src":{"id":156,"line":14,"column":53,"start":378,"end":384,"length":7,"parent_index":153},"scope":145,"name":"","type_name":{"id":157,"node_type":30,"src":{"id":158,"line":14,"column":53,"start":378,"end":384,"length":7,"parent_index":155},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":143,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}],"linearized_base_contracts":[143],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":120,"line":8,"column":0,"start":138,"end":388,"length":251,"parent_index":118}},{"id":160,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":160,"name":"Proxy","absolute_path":"Proxy.sol"}],"absolute_path":"Proxy.sol","name":"Proxy","node_type":1,"nodes":[{"id":164,"node_type":10,"src":{"id":165,"line":19,"column":0,"start":424,"end":446,"length":23,"parent_index":160},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":166,"name":"Proxy","node_type":35,"src":{"id":0,"line":31,"column":0,"start":1048,"end":3577,"length":2530,"parent_index":160},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":168,"name":"_delegate","node_type":42,"kind":41,"src":{"id":169,"line":37,"column":4,"start":1274,"end":2168,"length":895,"parent_index":166},"body":{"id":177,"node_type":46,"kind":0,"src":{"id":178,"line":37,"column":64,"start":1334,"end":2168,"length":835,"parent_index":168},"implemented":true,"statements":[{"id":179,"node_type":89,"src":{"id":180,"line":39,"column":8,"start":1400,"end":2162,"length":763,"parent_index":177},"body":{"id":182,"node_type":90,"kind":0,"src":{"id":180,"line":39,"column":8,"start":1400,"end":2162,"length":763,"parent_index":179},"implemented":false,"statements":[{"id":181,"node_type":91,"src":{"id":186,"line":52,"column":12,"start":1989,"end":2152,"length":164,"parent_index":179},"body":[]},{"id":181,"node_type":91,"src":{"id":186,"line":52,"column":12,"start":1989,"end":2152,"length":164,"parent_index":179},"body":[]},{"id":181,"node_type":91,"src":{"id":186,"line":52,"column":12,"start":1989,"end":2152,"length":164,"parent_index":179},"body":[]},{"id":181,"node_type":91,"src":{"id":186,"line":52,"column":12,"start":1989,"end":2152,"length":164,"parent_index":179},"body":[]}]}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":170,"node_type":43,"src":{"id":171,"line":37,"column":23,"start":1293,"end":1314,"length":22,"parent_index":168},"parameters":[{"id":172,"node_type":44,"src":{"id":173,"line":37,"column":23,"start":1293,"end":1314,"length":22,"parent_index":170},"scope":168,"name":"implementation","type_name":{"id":174,"node_type":30,"src":{"id":175,"line":37,"column":23,"start":1293,"end":1299,"length":7,"parent_index":172},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":176,"node_type":43,"src":{"id":169,"line":37,"column":4,"start":1274,"end":2168,"length":895,"parent_index":168},"parameters":[],"parameter_types":[]},"scope":166,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":188,"name":"_implementation","node_type":42,"kind":41,"src":{"id":189,"line":63,"column":4,"start":2352,"end":2418,"length":67,"parent_index":166},"body":{"id":202,"node_type":46,"kind":0,"src":{"id":189,"line":63,"column":4,"start":2352,"end":2418,"length":67,"parent_index":188},"implemented":false,"statements":[]},"implemented":false,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":190,"node_type":43,"src":{"id":191,"line":63,"column":62,"start":2410,"end":2416,"length":7,"parent_index":188},"parameters":[{"id":192,"node_type":44,"src":{"id":193,"line":63,"column":62,"start":2410,"end":2416,"length":7,"parent_index":190},"scope":188,"name":"","type_name":{"id":194,"node_type":30,"src":{"id":195,"line":63,"column":62,"start":2410,"end":2416,"length":7,"parent_index":192},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":196,"node_type":43,"src":{"id":197,"line":63,"column":62,"start":2410,"end":2416,"length":7,"parent_index":188},"parameters":[{"id":198,"node_type":44,"src":{"id":199,"line":63,"column":62,"start":2410,"end":2416,"length":7,"parent_index":196},"scope":188,"name":"","type_name":{"id":200,"node_type":30,"src":{"id":201,"line":63,"column":62,"start":2410,"end":2416,"length":7,"parent_index":198},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":166,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":204,"name":"_fallback","node_type":42,"kind":41,"src":{"id":205,"line":70,"column":4,"start":2648,"end":2757,"length":110,"parent_index":166},"body":{"id":208,"node_type":46,"kind":0,"src":{"id":209,"line":70,"column":42,"start":2686,"end":2757,"length":72,"parent_index":204},"implemented":true,"statements":[{"id":210,"node_type":24,"kind":24,"src":{"id":211,"line":71,"column":8,"start":2696,"end":2712,"length":17,"parent_index":208},"argument_types":[],"arguments":[],"expression":{"id":212,"node_type":16,"src":{"id":213,"line":71,"column":8,"start":2696,"end":2710,"length":15,"parent_index":210},"name":"_beforeFallback","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},{"id":214,"node_type":24,"kind":24,"src":{"id":215,"line":72,"column":8,"start":2723,"end":2750,"length":28,"parent_index":208},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":218,"node_type":24,"kind":24,"src":{"id":219,"line":72,"column":18,"start":2733,"end":2749,"length":17,"parent_index":214},"argument_types":[],"arguments":[],"expression":{"id":220,"node_type":16,"src":{"id":221,"line":72,"column":18,"start":2733,"end":2747,"length":15,"parent_index":218},"name":"_implementation","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}],"expression":{"id":216,"node_type":16,"src":{"id":217,"line":72,"column":8,"start":2723,"end":2731,"length":9,"parent_index":214},"name":"_delegate","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":206,"node_type":43,"src":{"id":205,"line":70,"column":4,"start":2648,"end":2757,"length":110,"parent_index":204},"parameters":[],"parameter_types":[]},"return_parameters":{"id":207,"node_type":43,"src":{"id":205,"line":70,"column":4,"start":2648,"end":2757,"length":110,"parent_index":204},"parameters":[],"parameter_types":[]},"scope":166,"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},{"id":223,"node_type":42,"kind":70,"src":{"id":224,"line":79,"column":4,"start":2955,"end":3019,"length":65,"parent_index":166},"implemented":true,"visibility":1,"state_mutability":3,"modifiers":[],"overrides":[],"parameters":{"id":225,"node_type":43,"src":{"id":224,"line":79,"column":4,"start":2955,"end":3019,"length":65,"parent_index":223},"parameters":[],"parameter_types":[]},"return_parameters":{"id":226,"node_type":43,"src":{"id":224,"line":79,"column":4,"start":2955,"end":3019,"length":65,"parent_index":223},"parameters":[],"parameter_types":[]},"body":{"id":227,"node_type":46,"kind":0,"src":{"id":228,"line":79,"column":41,"start":2992,"end":3019,"length":28,"parent_index":223},"implemented":true,"statements":[{"id":229,"node_type":24,"kind":24,"src":{"id":230,"line":80,"column":8,"start":3002,"end":3012,"length":11,"parent_index":227},"argument_types":[],"arguments":[],"expression":{"id":231,"node_type":16,"src":{"id":232,"line":80,"column":8,"start":3002,"end":3010,"length":9,"parent_index":229},"name":"_fallback","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}]},"virtual":true},{"id":234,"node_type":42,"kind":71,"src":{"id":235,"line":87,"column":4,"start":3180,"end":3243,"length":64,"parent_index":166},"implemented":true,"visibility":1,"state_mutability":4,"modifiers":[],"overrides":[],"parameters":{"id":236,"node_type":43,"src":{"id":235,"line":87,"column":4,"start":3180,"end":3243,"length":64,"parent_index":234},"parameters":[],"parameter_types":[]},"return_parameters":{"id":237,"node_type":43,"src":{"id":235,"line":87,"column":4,"start":3180,"end":3243,"length":64,"parent_index":234},"parameters":[],"parameter_types":[]},"body":{"id":238,"node_type":46,"kind":0,"src":{"id":239,"line":87,"column":40,"start":3216,"end":3243,"length":28,"parent_index":234},"implemented":true,"statements":[{"id":240,"node_type":24,"kind":24,"src":{"id":241,"line":88,"column":8,"start":3226,"end":3236,"length":11,"parent_index":238},"argument_types":[],"arguments":[],"expression":{"id":242,"node_type":16,"src":{"id":243,"line":88,"column":8,"start":3226,"end":3234,"length":9,"parent_index":240},"name":"_fallback","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}]},"virtual":true,"payable":false},{"id":245,"name":"_beforeFallback","node_type":42,"kind":41,"src":{"id":246,"line":97,"column":4,"start":3525,"end":3575,"length":51,"parent_index":166},"body":{"id":249,"node_type":46,"kind":0,"src":{"id":250,"line":97,"column":48,"start":3569,"end":3575,"length":7,"parent_index":245},"implemented":true,"statements":[]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":247,"node_type":43,"src":{"id":246,"line":97,"column":4,"start":3525,"end":3575,"length":51,"parent_index":245},"parameters":[],"parameter_types":[]},"return_parameters":{"id":248,"node_type":43,"src":{"id":246,"line":97,"column":4,"start":3525,"end":3575,"length":51,"parent_index":245},"parameters":[],"parameter_types":[]},"scope":166,"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}],"linearized_base_contracts":[166],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":161,"line":31,"column":0,"start":1048,"end":3577,"length":2530,"parent_index":118}},{"id":251,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":251,"name":"Address","absolute_path":"Address.sol"}],"absolute_path":"Address.sol","name":"Address","node_type":1,"nodes":[{"id":257,"node_type":10,"src":{"id":258,"line":103,"column":0,"start":3613,"end":3635,"length":23,"parent_index":251},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":259,"name":"Address","node_type":35,"src":{"id":0,"line":108,"column":0,"start":3706,"end":11389,"length":7684,"parent_index":251},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":261,"name":"isContract","node_type":42,"kind":41,"src":{"id":262,"line":126,"column":4,"start":4298,"end":4710,"length":413,"parent_index":259},"body":{"id":275,"node_type":46,"kind":0,"src":{"id":276,"line":126,"column":70,"start":4364,"end":4710,"length":347,"parent_index":261},"implemented":true,"statements":[{"id":277,"node_type":44,"src":{"id":278,"line":131,"column":8,"start":4561,"end":4573,"length":13,"parent_index":275},"assignments":[279],"declarations":[{"is_constant":false,"id":279,"state_mutability":1,"name":"size","node_type":44,"scope":275,"src":{"id":280,"line":131,"column":8,"start":4561,"end":4572,"length":12,"parent_index":277},"is_state_variable":false,"storage_location":1,"type_name":{"id":281,"node_type":30,"src":{"id":282,"line":131,"column":8,"start":4561,"end":4567,"length":7,"parent_index":279},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}]},{"id":283,"node_type":89,"src":{"id":284,"line":133,"column":8,"start":4639,"end":4679,"length":41,"parent_index":275},"body":{"id":286,"node_type":90,"kind":0,"src":{"id":284,"line":133,"column":8,"start":4639,"end":4679,"length":41,"parent_index":283},"implemented":false,"statements":[{"id":285,"node_type":91,"src":{"id":287,"line":133,"column":19,"start":4650,"end":4677,"length":28,"parent_index":283},"body":[]}]}},{"id":288,"node_type":47,"src":{"id":289,"line":134,"column":8,"start":4689,"end":4704,"length":16,"parent_index":261},"function_return_parameters":261,"expression":{"id":290,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":291,"line":134,"column":15,"start":4696,"end":4703,"length":8,"parent_index":275},"operator":7,"left_expression":{"id":292,"node_type":16,"src":{"id":293,"line":134,"column":15,"start":4696,"end":4699,"length":4,"parent_index":290},"name":"size","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":277,"is_pure":false},"right_expression":{"id":294,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":295,"line":134,"column":22,"start":4703,"end":4703,"length":1,"parent_index":290},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":263,"node_type":43,"src":{"id":264,"line":126,"column":24,"start":4318,"end":4332,"length":15,"parent_index":261},"parameters":[{"id":265,"node_type":44,"src":{"id":266,"line":126,"column":24,"start":4318,"end":4332,"length":15,"parent_index":263},"scope":261,"name":"account","type_name":{"id":267,"node_type":30,"src":{"id":268,"line":126,"column":24,"start":4318,"end":4324,"length":7,"parent_index":265},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":269,"node_type":43,"src":{"id":270,"line":126,"column":64,"start":4358,"end":4361,"length":4,"parent_index":261},"parameters":[{"id":271,"node_type":44,"src":{"id":272,"line":126,"column":64,"start":4358,"end":4361,"length":4,"parent_index":269},"scope":261,"name":"","type_name":{"id":273,"node_type":30,"src":{"id":274,"line":126,"column":64,"start":4358,"end":4361,"length":4,"parent_index":271},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":297,"name":"sendValue","node_type":42,"kind":41,"src":{"id":298,"line":153,"column":4,"start":5628,"end":6018,"length":391,"parent_index":259},"body":{"id":310,"node_type":46,"kind":0,"src":{"id":311,"line":153,"column":75,"start":5699,"end":6018,"length":320,"parent_index":297},"implemented":true,"statements":[{"id":312,"node_type":24,"kind":24,"src":{"id":313,"line":154,"column":8,"start":5709,"end":5781,"length":73,"parent_index":310},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: insufficient balance\""}],"arguments":[{"id":316,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":317,"line":154,"column":16,"start":5717,"end":5747,"length":31,"parent_index":312},"operator":8,"left_expression":{"id":318,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":319,"line":154,"column":16,"start":5717,"end":5737,"length":21,"parent_index":316},"expression":{"id":320,"node_type":24,"kind":24,"src":{"id":321,"line":154,"column":16,"start":5717,"end":5729,"length":13,"parent_index":318},"argument_types":[{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}],"arguments":[{"id":326,"node_type":16,"src":{"id":327,"line":154,"column":24,"start":5725,"end":5728,"length":4,"parent_index":320},"name":"this","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":322,"node_type":16,"src":{"id":323,"line":154,"column":16,"start":5717,"end":5723,"length":7,"parent_index":320},"name":"address","type_name":{"id":324,"node_type":30,"src":{"id":325,"line":154,"column":16,"start":5717,"end":5723,"length":7,"parent_index":322},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"balance","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"right_expression":{"id":328,"node_type":16,"src":{"id":329,"line":154,"column":41,"start":5742,"end":5747,"length":6,"parent_index":316},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":328,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":330,"node_type":17,"kind":50,"value":"Address: insufficient balance","hex_value":"416464726573733a20696e73756666696369656e742062616c616e6365","src":{"id":331,"line":154,"column":49,"start":5750,"end":5780,"length":31,"parent_index":312},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: insufficient balance\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":314,"node_type":16,"src":{"id":315,"line":154,"column":8,"start":5709,"end":5715,"length":7,"parent_index":312},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":332,"node_type":44,"src":{"id":333,"line":157,"column":8,"start":5870,"end":5924,"length":55,"parent_index":310},"assignments":[],"declarations":[],"initial_value":{"id":334,"node_type":24,"kind":24,"src":{"id":335,"line":157,"column":27,"start":5889,"end":5923,"length":35,"parent_index":332},"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"\""}],"arguments":[{"id":342,"node_type":17,"kind":50,"src":{"id":343,"line":157,"column":59,"start":5921,"end":5922,"length":2,"parent_index":334},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":336,"node_type":93,"kind":93,"src":{"id":337,"line":157,"column":27,"start":5889,"end":5919,"length":31,"parent_index":334},"expression":{"id":338,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":339,"line":157,"column":27,"start":5889,"end":5902,"length":14,"parent_index":336},"expression":{"id":340,"node_type":16,"src":{"id":341,"line":157,"column":27,"start":5889,"end":5897,"length":9,"parent_index":338},"name":"recipient","type_description":{"type_identifier":"t_address_payable","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":340,"is_pure":false},"member_name":"call","argument_types":[],"type_description":{"type_identifier":"t_address_payable","type_string":"address"}},"type_description":{"type_identifier":"t_address_payable","type_string":"address"}},"type_description":{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}}},{"id":344,"node_type":24,"kind":24,"src":{"id":345,"line":158,"column":8,"start":5934,"end":6011,"length":78,"parent_index":310},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"arguments":[{"id":348,"node_type":16,"src":{"id":349,"line":158,"column":16,"start":5942,"end":5948,"length":7,"parent_index":344},"name":"success","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":350,"node_type":17,"kind":50,"value":"Address: unable to send value, recipient may have reverted","hex_value":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","src":{"id":351,"line":158,"column":25,"start":5951,"end":6010,"length":60,"parent_index":344},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: unable to send value, recipient may have reverted\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]}],"expression":{"id":346,"node_type":16,"src":{"id":347,"line":158,"column":8,"start":5934,"end":5940,"length":7,"parent_index":344},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_string_literal$","type_string":"function(function(),string memory)"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":299,"node_type":43,"src":{"id":300,"line":153,"column":23,"start":5647,"end":5687,"length":41,"parent_index":297},"parameters":[{"id":301,"node_type":44,"src":{"id":302,"line":153,"column":23,"start":5647,"end":5671,"length":25,"parent_index":299},"scope":297,"name":"recipient","type_name":{"id":303,"node_type":30,"src":{"id":304,"line":153,"column":23,"start":5647,"end":5661,"length":15,"parent_index":301},"name":"addresspayable","type_description":{"type_identifier":"t_address_payable","type_string":"address"},"state_mutability":3,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":3},{"id":305,"node_type":44,"src":{"id":306,"line":153,"column":50,"start":5674,"end":5687,"length":14,"parent_index":299},"scope":297,"name":"amount","type_name":{"id":307,"node_type":30,"src":{"id":308,"line":153,"column":50,"start":5674,"end":5680,"length":7,"parent_index":305},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address_payable","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":309,"node_type":43,"src":{"id":298,"line":153,"column":4,"start":5628,"end":6018,"length":391,"parent_index":297},"parameters":[],"parameter_types":[]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address_payable$_t_uint256$","type_string":"function(address,uint256)"}},{"id":353,"name":"functionCall","node_type":42,"kind":41,"src":{"id":354,"line":179,"column":4,"start":6760,"end":6930,"length":171,"parent_index":259},"body":{"id":371,"node_type":46,"kind":0,"src":{"id":372,"line":179,"column":93,"start":6849,"end":6930,"length":82,"parent_index":353},"implemented":true,"statements":[{"id":373,"node_type":47,"src":{"id":374,"line":180,"column":6,"start":6857,"end":6924,"length":68,"parent_index":353},"function_return_parameters":353,"expression":{"id":375,"node_type":24,"kind":24,"src":{"id":376,"line":180,"column":13,"start":6864,"end":6923,"length":60,"parent_index":371},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level call failed\""}],"arguments":[{"id":379,"node_type":16,"src":{"id":380,"line":180,"column":26,"start":6877,"end":6882,"length":6,"parent_index":375},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":379,"is_pure":false},{"id":381,"node_type":16,"src":{"id":382,"line":180,"column":34,"start":6885,"end":6888,"length":4,"parent_index":375},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":381,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":383,"node_type":17,"kind":50,"value":"Address: low-level call failed","hex_value":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","src":{"id":384,"line":180,"column":40,"start":6891,"end":6922,"length":32,"parent_index":375},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level call failed\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":377,"node_type":16,"src":{"id":378,"line":180,"column":13,"start":6864,"end":6875,"length":12,"parent_index":375},"name":"functionCall","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_string_literal$","type_string":"function(address,bytes,string memory)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":355,"node_type":43,"src":{"id":356,"line":179,"column":26,"start":6782,"end":6814,"length":33,"parent_index":353},"parameters":[{"id":357,"node_type":44,"src":{"id":358,"line":179,"column":26,"start":6782,"end":6795,"length":14,"parent_index":355},"scope":353,"name":"target","type_name":{"id":359,"node_type":30,"src":{"id":360,"line":179,"column":26,"start":6782,"end":6788,"length":7,"parent_index":357},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":361,"node_type":44,"src":{"id":362,"line":179,"column":42,"start":6798,"end":6814,"length":17,"parent_index":355},"scope":353,"name":"data","type_name":{"id":363,"node_type":30,"src":{"id":364,"line":179,"column":42,"start":6798,"end":6802,"length":5,"parent_index":361},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":365,"node_type":43,"src":{"id":366,"line":179,"column":79,"start":6835,"end":6846,"length":12,"parent_index":353},"parameters":[{"id":367,"node_type":44,"src":{"id":368,"line":179,"column":79,"start":6835,"end":6846,"length":12,"parent_index":365},"scope":353,"name":"","type_name":{"id":369,"node_type":30,"src":{"id":370,"line":179,"column":79,"start":6835,"end":6839,"length":5,"parent_index":367},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$","type_string":"function(address,bytes)"}},{"id":386,"name":"functionCall","node_type":42,"kind":41,"src":{"id":387,"line":189,"column":4,"start":7153,"end":7345,"length":193,"parent_index":259},"body":{"id":408,"node_type":46,"kind":0,"src":{"id":409,"line":189,"column":121,"start":7270,"end":7345,"length":76,"parent_index":386},"implemented":true,"statements":[{"id":410,"node_type":47,"src":{"id":411,"line":190,"column":8,"start":7280,"end":7339,"length":60,"parent_index":386},"function_return_parameters":386,"expression":{"id":412,"node_type":24,"kind":24,"src":{"id":413,"line":190,"column":15,"start":7287,"end":7338,"length":52,"parent_index":408},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":416,"node_type":16,"src":{"id":417,"line":190,"column":37,"start":7309,"end":7314,"length":6,"parent_index":412},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":416,"is_pure":false},{"id":418,"node_type":16,"src":{"id":419,"line":190,"column":45,"start":7317,"end":7320,"length":4,"parent_index":412},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":418,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":420,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":421,"line":190,"column":51,"start":7323,"end":7323,"length":1,"parent_index":412},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},{"id":422,"node_type":16,"src":{"id":423,"line":190,"column":54,"start":7326,"end":7337,"length":12,"parent_index":412},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":422,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]}],"expression":{"id":414,"node_type":16,"src":{"id":415,"line":190,"column":15,"start":7287,"end":7307,"length":21,"parent_index":412},"name":"functionCallWithValue","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_rational_0_by_1$_t_string$","type_string":"function(address,bytes,int_const 0,string)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":388,"node_type":43,"src":{"id":389,"line":189,"column":26,"start":7175,"end":7235,"length":61,"parent_index":386},"parameters":[{"id":390,"node_type":44,"src":{"id":391,"line":189,"column":26,"start":7175,"end":7188,"length":14,"parent_index":388},"scope":386,"name":"target","type_name":{"id":392,"node_type":30,"src":{"id":393,"line":189,"column":26,"start":7175,"end":7181,"length":7,"parent_index":390},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":394,"node_type":44,"src":{"id":395,"line":189,"column":42,"start":7191,"end":7207,"length":17,"parent_index":388},"scope":386,"name":"data","type_name":{"id":396,"node_type":30,"src":{"id":397,"line":189,"column":42,"start":7191,"end":7195,"length":5,"parent_index":394},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":398,"node_type":44,"src":{"id":399,"line":189,"column":61,"start":7210,"end":7235,"length":26,"parent_index":388},"scope":386,"name":"errorMessage","type_name":{"id":400,"node_type":30,"src":{"id":401,"line":189,"column":61,"start":7210,"end":7215,"length":6,"parent_index":398},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":402,"node_type":43,"src":{"id":403,"line":189,"column":107,"start":7256,"end":7267,"length":12,"parent_index":386},"parameters":[{"id":404,"node_type":44,"src":{"id":405,"line":189,"column":107,"start":7256,"end":7267,"length":12,"parent_index":402},"scope":386,"name":"","type_name":{"id":406,"node_type":30,"src":{"id":407,"line":189,"column":107,"start":7256,"end":7260,"length":5,"parent_index":404},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_string$","type_string":"function(address,bytes,string)"}},{"id":425,"name":"functionCallWithValue","node_type":42,"kind":41,"src":{"id":426,"line":204,"column":4,"start":7708,"end":7931,"length":224,"parent_index":259},"body":{"id":447,"node_type":46,"kind":0,"src":{"id":448,"line":204,"column":117,"start":7821,"end":7931,"length":111,"parent_index":425},"implemented":true,"statements":[{"id":449,"node_type":47,"src":{"id":450,"line":205,"column":8,"start":7831,"end":7925,"length":95,"parent_index":425},"function_return_parameters":425,"expression":{"id":451,"node_type":24,"kind":24,"src":{"id":452,"line":205,"column":15,"start":7838,"end":7924,"length":87,"parent_index":447},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level call with value failed\""}],"arguments":[{"id":455,"node_type":16,"src":{"id":456,"line":205,"column":37,"start":7860,"end":7865,"length":6,"parent_index":451},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":455,"is_pure":false},{"id":457,"node_type":16,"src":{"id":458,"line":205,"column":45,"start":7868,"end":7871,"length":4,"parent_index":451},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":457,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":459,"node_type":16,"src":{"id":460,"line":205,"column":51,"start":7874,"end":7878,"length":5,"parent_index":451},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":459,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},{"id":461,"node_type":17,"kind":50,"value":"Address: low-level call with value failed","hex_value":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","src":{"id":462,"line":205,"column":58,"start":7881,"end":7923,"length":43,"parent_index":451},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level call with value failed\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"}]}],"expression":{"id":453,"node_type":16,"src":{"id":454,"line":205,"column":15,"start":7838,"end":7858,"length":21,"parent_index":451},"name":"functionCallWithValue","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_uint256$_t_string_literal$","type_string":"function(address,bytes,uint256,string memory)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":427,"node_type":43,"src":{"id":428,"line":204,"column":35,"start":7739,"end":7786,"length":48,"parent_index":425},"parameters":[{"id":429,"node_type":44,"src":{"id":430,"line":204,"column":35,"start":7739,"end":7752,"length":14,"parent_index":427},"scope":425,"name":"target","type_name":{"id":431,"node_type":30,"src":{"id":432,"line":204,"column":35,"start":7739,"end":7745,"length":7,"parent_index":429},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":433,"node_type":44,"src":{"id":434,"line":204,"column":51,"start":7755,"end":7771,"length":17,"parent_index":427},"scope":425,"name":"data","type_name":{"id":435,"node_type":30,"src":{"id":436,"line":204,"column":51,"start":7755,"end":7759,"length":5,"parent_index":433},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":437,"node_type":44,"src":{"id":438,"line":204,"column":70,"start":7774,"end":7786,"length":13,"parent_index":427},"scope":425,"name":"value","type_name":{"id":439,"node_type":30,"src":{"id":440,"line":204,"column":70,"start":7774,"end":7780,"length":7,"parent_index":437},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":441,"node_type":43,"src":{"id":442,"line":204,"column":103,"start":7807,"end":7818,"length":12,"parent_index":425},"parameters":[{"id":443,"node_type":44,"src":{"id":444,"line":204,"column":103,"start":7807,"end":7818,"length":12,"parent_index":441},"scope":425,"name":"","type_name":{"id":445,"node_type":30,"src":{"id":446,"line":204,"column":103,"start":7807,"end":7811,"length":5,"parent_index":443},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_uint256$","type_string":"function(address,bytes,uint256)"}},{"id":464,"name":"functionCallWithValue","node_type":42,"kind":41,"src":{"id":465,"line":214,"column":4,"start":8180,"end":8702,"length":523,"parent_index":259},"body":{"id":490,"node_type":46,"kind":0,"src":{"id":491,"line":214,"column":145,"start":8321,"end":8702,"length":382,"parent_index":464},"implemented":true,"statements":[{"id":492,"node_type":24,"kind":24,"src":{"id":493,"line":215,"column":8,"start":8331,"end":8411,"length":81,"parent_index":490},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: insufficient balance for call\""}],"arguments":[{"id":496,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":497,"line":215,"column":16,"start":8339,"end":8368,"length":30,"parent_index":492},"operator":8,"left_expression":{"id":498,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":499,"line":215,"column":16,"start":8339,"end":8359,"length":21,"parent_index":496},"expression":{"id":500,"node_type":24,"kind":24,"src":{"id":501,"line":215,"column":16,"start":8339,"end":8351,"length":13,"parent_index":498},"argument_types":[{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}],"arguments":[{"id":506,"node_type":16,"src":{"id":507,"line":215,"column":24,"start":8347,"end":8350,"length":4,"parent_index":500},"name":"this","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":502,"node_type":16,"src":{"id":503,"line":215,"column":16,"start":8339,"end":8345,"length":7,"parent_index":500},"name":"address","type_name":{"id":504,"node_type":30,"src":{"id":505,"line":215,"column":16,"start":8339,"end":8345,"length":7,"parent_index":502},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"balance","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"right_expression":{"id":508,"node_type":16,"src":{"id":509,"line":215,"column":41,"start":8364,"end":8368,"length":5,"parent_index":496},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":508,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":510,"node_type":17,"kind":50,"value":"Address: insufficient balance for call","hex_value":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","src":{"id":511,"line":215,"column":48,"start":8371,"end":8410,"length":40,"parent_index":492},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: insufficient balance for call\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":494,"node_type":16,"src":{"id":495,"line":215,"column":8,"start":8331,"end":8337,"length":7,"parent_index":492},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":512,"node_type":24,"kind":24,"src":{"id":513,"line":216,"column":8,"start":8422,"end":8481,"length":60,"parent_index":490},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: call to non-contract\""}],"arguments":[{"id":516,"node_type":24,"kind":24,"src":{"id":517,"line":216,"column":16,"start":8430,"end":8447,"length":18,"parent_index":512},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":520,"node_type":16,"src":{"id":521,"line":216,"column":27,"start":8441,"end":8446,"length":6,"parent_index":516},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":520,"is_pure":false}],"expression":{"id":518,"node_type":16,"src":{"id":519,"line":216,"column":16,"start":8430,"end":8439,"length":10,"parent_index":516},"name":"isContract","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":522,"node_type":17,"kind":50,"value":"Address: call to non-contract","hex_value":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","src":{"id":523,"line":216,"column":36,"start":8450,"end":8480,"length":31,"parent_index":512},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: call to non-contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":514,"node_type":16,"src":{"id":515,"line":216,"column":8,"start":8422,"end":8428,"length":7,"parent_index":512},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_string_literal$","type_string":"function(function(address),string memory)"}},{"id":524,"node_type":44,"src":{"id":525,"line":219,"column":8,"start":8552,"end":8627,"length":76,"parent_index":490},"assignments":[],"declarations":[],"initial_value":{"id":526,"node_type":24,"kind":24,"src":{"id":527,"line":219,"column":50,"start":8594,"end":8626,"length":33,"parent_index":524},"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":534,"node_type":16,"src":{"id":535,"line":219,"column":78,"start":8622,"end":8625,"length":4,"parent_index":526},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":534,"is_pure":false}],"expression":{"id":528,"node_type":93,"kind":93,"src":{"id":529,"line":219,"column":50,"start":8594,"end":8620,"length":27,"parent_index":526},"expression":{"id":530,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":531,"line":219,"column":50,"start":8594,"end":8604,"length":11,"parent_index":528},"expression":{"id":532,"node_type":16,"src":{"id":533,"line":219,"column":50,"start":8594,"end":8599,"length":6,"parent_index":530},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":532,"is_pure":false},"member_name":"call","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}}},{"id":536,"node_type":47,"src":{"id":537,"line":220,"column":8,"start":8637,"end":8696,"length":60,"parent_index":464},"function_return_parameters":464,"expression":{"id":538,"node_type":24,"kind":24,"src":{"id":539,"line":220,"column":15,"start":8644,"end":8695,"length":52,"parent_index":490},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":542,"node_type":16,"src":{"id":543,"line":220,"column":33,"start":8662,"end":8668,"length":7,"parent_index":538},"name":"success","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":544,"node_type":16,"src":{"id":545,"line":220,"column":42,"start":8671,"end":8680,"length":10,"parent_index":538},"name":"returndata","type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]},{"id":546,"node_type":16,"src":{"id":547,"line":220,"column":54,"start":8683,"end":8694,"length":12,"parent_index":538},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":546,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}]}],"expression":{"id":540,"node_type":16,"src":{"id":541,"line":220,"column":15,"start":8644,"end":8660,"length":17,"parent_index":538},"name":"_verifyCallResult","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_string$","type_string":"function(function(),function(function()),string)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":466,"node_type":43,"src":{"id":467,"line":214,"column":35,"start":8211,"end":8286,"length":76,"parent_index":464},"parameters":[{"id":468,"node_type":44,"src":{"id":469,"line":214,"column":35,"start":8211,"end":8224,"length":14,"parent_index":466},"scope":464,"name":"target","type_name":{"id":470,"node_type":30,"src":{"id":471,"line":214,"column":35,"start":8211,"end":8217,"length":7,"parent_index":468},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":472,"node_type":44,"src":{"id":473,"line":214,"column":51,"start":8227,"end":8243,"length":17,"parent_index":466},"scope":464,"name":"data","type_name":{"id":474,"node_type":30,"src":{"id":475,"line":214,"column":51,"start":8227,"end":8231,"length":5,"parent_index":472},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":476,"node_type":44,"src":{"id":477,"line":214,"column":70,"start":8246,"end":8258,"length":13,"parent_index":466},"scope":464,"name":"value","type_name":{"id":478,"node_type":30,"src":{"id":479,"line":214,"column":70,"start":8246,"end":8252,"length":7,"parent_index":476},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":480,"node_type":44,"src":{"id":481,"line":214,"column":85,"start":8261,"end":8286,"length":26,"parent_index":466},"scope":464,"name":"errorMessage","type_name":{"id":482,"node_type":30,"src":{"id":483,"line":214,"column":85,"start":8261,"end":8266,"length":6,"parent_index":480},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":484,"node_type":43,"src":{"id":485,"line":214,"column":131,"start":8307,"end":8318,"length":12,"parent_index":464},"parameters":[{"id":486,"node_type":44,"src":{"id":487,"line":214,"column":131,"start":8307,"end":8318,"length":12,"parent_index":484},"scope":464,"name":"","type_name":{"id":488,"node_type":30,"src":{"id":489,"line":214,"column":131,"start":8307,"end":8311,"length":5,"parent_index":486},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_uint256$_t_string$","type_string":"function(address,bytes,uint256,string)"}},{"id":549,"name":"functionStaticCall","node_type":42,"kind":41,"src":{"id":550,"line":229,"column":4,"start":8880,"end":9076,"length":197,"parent_index":259},"body":{"id":567,"node_type":46,"kind":0,"src":{"id":568,"line":229,"column":104,"start":8980,"end":9076,"length":97,"parent_index":549},"implemented":true,"statements":[{"id":569,"node_type":47,"src":{"id":570,"line":230,"column":8,"start":8990,"end":9070,"length":81,"parent_index":549},"function_return_parameters":549,"expression":{"id":571,"node_type":24,"kind":24,"src":{"id":572,"line":230,"column":15,"start":8997,"end":9069,"length":73,"parent_index":567},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level static call failed\""}],"arguments":[{"id":575,"node_type":16,"src":{"id":576,"line":230,"column":34,"start":9016,"end":9021,"length":6,"parent_index":571},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":575,"is_pure":false},{"id":577,"node_type":16,"src":{"id":578,"line":230,"column":42,"start":9024,"end":9027,"length":4,"parent_index":571},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":577,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":579,"node_type":17,"kind":50,"value":"Address: low-level static call failed","hex_value":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","src":{"id":580,"line":230,"column":48,"start":9030,"end":9068,"length":39,"parent_index":571},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level static call failed\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":573,"node_type":16,"src":{"id":574,"line":230,"column":15,"start":8997,"end":9014,"length":18,"parent_index":571},"name":"functionStaticCall","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_string_literal$","type_string":"function(address,bytes,string memory)"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":551,"node_type":43,"src":{"id":552,"line":229,"column":32,"start":8908,"end":8940,"length":33,"parent_index":549},"parameters":[{"id":553,"node_type":44,"src":{"id":554,"line":229,"column":32,"start":8908,"end":8921,"length":14,"parent_index":551},"scope":549,"name":"target","type_name":{"id":555,"node_type":30,"src":{"id":556,"line":229,"column":32,"start":8908,"end":8914,"length":7,"parent_index":553},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":557,"node_type":44,"src":{"id":558,"line":229,"column":48,"start":8924,"end":8940,"length":17,"parent_index":551},"scope":549,"name":"data","type_name":{"id":559,"node_type":30,"src":{"id":560,"line":229,"column":48,"start":8924,"end":8928,"length":5,"parent_index":557},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":561,"node_type":43,"src":{"id":562,"line":229,"column":90,"start":8966,"end":8977,"length":12,"parent_index":549},"parameters":[{"id":563,"node_type":44,"src":{"id":564,"line":229,"column":90,"start":8966,"end":8977,"length":12,"parent_index":561},"scope":549,"name":"","type_name":{"id":565,"node_type":30,"src":{"id":566,"line":229,"column":90,"start":8966,"end":8970,"length":5,"parent_index":563},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$","type_string":"function(address,bytes)"}},{"id":582,"name":"functionStaticCall","node_type":42,"kind":41,"src":{"id":583,"line":239,"column":4,"start":9261,"end":9676,"length":416,"parent_index":259},"body":{"id":604,"node_type":46,"kind":0,"src":{"id":605,"line":239,"column":132,"start":9389,"end":9676,"length":288,"parent_index":582},"implemented":true,"statements":[{"id":606,"node_type":24,"kind":24,"src":{"id":607,"line":240,"column":8,"start":9399,"end":9465,"length":67,"parent_index":604},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: static call to non-contract\""}],"arguments":[{"id":610,"node_type":24,"kind":24,"src":{"id":611,"line":240,"column":16,"start":9407,"end":9424,"length":18,"parent_index":606},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":614,"node_type":16,"src":{"id":615,"line":240,"column":27,"start":9418,"end":9423,"length":6,"parent_index":610},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":614,"is_pure":false}],"expression":{"id":612,"node_type":16,"src":{"id":613,"line":240,"column":16,"start":9407,"end":9416,"length":10,"parent_index":610},"name":"isContract","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":616,"node_type":17,"kind":50,"value":"Address: static call to non-contract","hex_value":"416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374","src":{"id":617,"line":240,"column":36,"start":9427,"end":9464,"length":38,"parent_index":606},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: static call to non-contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":608,"node_type":16,"src":{"id":609,"line":240,"column":8,"start":9399,"end":9405,"length":7,"parent_index":606},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_string_literal$","type_string":"function(function(address),string memory)"}},{"id":618,"node_type":44,"src":{"id":619,"line":243,"column":8,"start":9536,"end":9601,"length":66,"parent_index":604},"assignments":[],"declarations":[],"initial_value":{"id":620,"node_type":24,"kind":24,"src":{"id":621,"line":243,"column":50,"start":9578,"end":9600,"length":23,"parent_index":618},"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":626,"node_type":16,"src":{"id":627,"line":243,"column":68,"start":9596,"end":9599,"length":4,"parent_index":620},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":626,"is_pure":false}],"expression":{"id":622,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":623,"line":243,"column":50,"start":9578,"end":9594,"length":17,"parent_index":620},"expression":{"id":624,"node_type":16,"src":{"id":625,"line":243,"column":50,"start":9578,"end":9583,"length":6,"parent_index":622},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":624,"is_pure":false},"member_name":"staticcall","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}}},{"id":628,"node_type":47,"src":{"id":629,"line":244,"column":8,"start":9611,"end":9670,"length":60,"parent_index":582},"function_return_parameters":582,"expression":{"id":630,"node_type":24,"kind":24,"src":{"id":631,"line":244,"column":15,"start":9618,"end":9669,"length":52,"parent_index":604},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":634,"node_type":16,"src":{"id":635,"line":244,"column":33,"start":9636,"end":9642,"length":7,"parent_index":630},"name":"success","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":636,"node_type":16,"src":{"id":637,"line":244,"column":42,"start":9645,"end":9654,"length":10,"parent_index":630},"name":"returndata","type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]},{"id":638,"node_type":16,"src":{"id":639,"line":244,"column":54,"start":9657,"end":9668,"length":12,"parent_index":630},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":638,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}]}],"expression":{"id":632,"node_type":16,"src":{"id":633,"line":244,"column":15,"start":9618,"end":9634,"length":17,"parent_index":630},"name":"_verifyCallResult","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_string$","type_string":"function(function(),function(function()),string)"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":584,"node_type":43,"src":{"id":585,"line":239,"column":32,"start":9289,"end":9349,"length":61,"parent_index":582},"parameters":[{"id":586,"node_type":44,"src":{"id":587,"line":239,"column":32,"start":9289,"end":9302,"length":14,"parent_index":584},"scope":582,"name":"target","type_name":{"id":588,"node_type":30,"src":{"id":589,"line":239,"column":32,"start":9289,"end":9295,"length":7,"parent_index":586},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":590,"node_type":44,"src":{"id":591,"line":239,"column":48,"start":9305,"end":9321,"length":17,"parent_index":584},"scope":582,"name":"data","type_name":{"id":592,"node_type":30,"src":{"id":593,"line":239,"column":48,"start":9305,"end":9309,"length":5,"parent_index":590},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":594,"node_type":44,"src":{"id":595,"line":239,"column":67,"start":9324,"end":9349,"length":26,"parent_index":584},"scope":582,"name":"errorMessage","type_name":{"id":596,"node_type":30,"src":{"id":597,"line":239,"column":67,"start":9324,"end":9329,"length":6,"parent_index":594},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":598,"node_type":43,"src":{"id":599,"line":239,"column":118,"start":9375,"end":9386,"length":12,"parent_index":582},"parameters":[{"id":600,"node_type":44,"src":{"id":601,"line":239,"column":118,"start":9375,"end":9386,"length":12,"parent_index":598},"scope":582,"name":"","type_name":{"id":602,"node_type":30,"src":{"id":603,"line":239,"column":118,"start":9375,"end":9379,"length":5,"parent_index":600},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_string$","type_string":"function(address,bytes,string)"}},{"id":641,"name":"functionDelegateCall","node_type":42,"kind":41,"src":{"id":642,"line":253,"column":4,"start":9856,"end":10053,"length":198,"parent_index":259},"body":{"id":659,"node_type":46,"kind":0,"src":{"id":660,"line":253,"column":101,"start":9953,"end":10053,"length":101,"parent_index":641},"implemented":true,"statements":[{"id":661,"node_type":47,"src":{"id":662,"line":254,"column":8,"start":9963,"end":10047,"length":85,"parent_index":641},"function_return_parameters":641,"expression":{"id":663,"node_type":24,"kind":24,"src":{"id":664,"line":254,"column":15,"start":9970,"end":10046,"length":77,"parent_index":659},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level delegate call failed\""}],"arguments":[{"id":667,"node_type":16,"src":{"id":668,"line":254,"column":36,"start":9991,"end":9996,"length":6,"parent_index":663},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":667,"is_pure":false},{"id":669,"node_type":16,"src":{"id":670,"line":254,"column":44,"start":9999,"end":10002,"length":4,"parent_index":663},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":669,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":671,"node_type":17,"kind":50,"value":"Address: low-level delegate call failed","hex_value":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","src":{"id":672,"line":254,"column":50,"start":10005,"end":10045,"length":41,"parent_index":663},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level delegate call failed\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":665,"node_type":16,"src":{"id":666,"line":254,"column":15,"start":9970,"end":9989,"length":20,"parent_index":663},"name":"functionDelegateCall","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_string_literal$","type_string":"function(address,bytes,string memory)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":643,"node_type":43,"src":{"id":644,"line":253,"column":34,"start":9886,"end":9918,"length":33,"parent_index":641},"parameters":[{"id":645,"node_type":44,"src":{"id":646,"line":253,"column":34,"start":9886,"end":9899,"length":14,"parent_index":643},"scope":641,"name":"target","type_name":{"id":647,"node_type":30,"src":{"id":648,"line":253,"column":34,"start":9886,"end":9892,"length":7,"parent_index":645},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":649,"node_type":44,"src":{"id":650,"line":253,"column":50,"start":9902,"end":9918,"length":17,"parent_index":643},"scope":641,"name":"data","type_name":{"id":651,"node_type":30,"src":{"id":652,"line":253,"column":50,"start":9902,"end":9906,"length":5,"parent_index":649},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":653,"node_type":43,"src":{"id":654,"line":253,"column":87,"start":9939,"end":9950,"length":12,"parent_index":641},"parameters":[{"id":655,"node_type":44,"src":{"id":656,"line":253,"column":87,"start":9939,"end":9950,"length":12,"parent_index":653},"scope":641,"name":"","type_name":{"id":657,"node_type":30,"src":{"id":658,"line":253,"column":87,"start":9939,"end":9943,"length":5,"parent_index":655},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$","type_string":"function(address,bytes)"}},{"id":674,"name":"functionDelegateCall","node_type":42,"kind":41,"src":{"id":675,"line":263,"column":4,"start":10240,"end":10656,"length":417,"parent_index":259},"body":{"id":696,"node_type":46,"kind":0,"src":{"id":697,"line":263,"column":129,"start":10365,"end":10656,"length":292,"parent_index":674},"implemented":true,"statements":[{"id":698,"node_type":24,"kind":24,"src":{"id":699,"line":264,"column":8,"start":10375,"end":10443,"length":69,"parent_index":696},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: delegate call to non-contract\""}],"arguments":[{"id":702,"node_type":24,"kind":24,"src":{"id":703,"line":264,"column":16,"start":10383,"end":10400,"length":18,"parent_index":698},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":706,"node_type":16,"src":{"id":707,"line":264,"column":27,"start":10394,"end":10399,"length":6,"parent_index":702},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":706,"is_pure":false}],"expression":{"id":704,"node_type":16,"src":{"id":705,"line":264,"column":16,"start":10383,"end":10392,"length":10,"parent_index":702},"name":"isContract","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":708,"node_type":17,"kind":50,"value":"Address: delegate call to non-contract","hex_value":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374","src":{"id":709,"line":264,"column":36,"start":10403,"end":10442,"length":40,"parent_index":698},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: delegate call to non-contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":700,"node_type":16,"src":{"id":701,"line":264,"column":8,"start":10375,"end":10381,"length":7,"parent_index":698},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_string_literal$","type_string":"function(function(address),string memory)"}},{"id":710,"node_type":44,"src":{"id":711,"line":267,"column":8,"start":10514,"end":10581,"length":68,"parent_index":696},"assignments":[],"declarations":[],"initial_value":{"id":712,"node_type":24,"kind":24,"src":{"id":713,"line":267,"column":50,"start":10556,"end":10580,"length":25,"parent_index":710},"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":718,"node_type":16,"src":{"id":719,"line":267,"column":70,"start":10576,"end":10579,"length":4,"parent_index":712},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":718,"is_pure":false}],"expression":{"id":714,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":715,"line":267,"column":50,"start":10556,"end":10574,"length":19,"parent_index":712},"expression":{"id":716,"node_type":16,"src":{"id":717,"line":267,"column":50,"start":10556,"end":10561,"length":6,"parent_index":714},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":716,"is_pure":false},"member_name":"delegatecall","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}}},{"id":720,"node_type":47,"src":{"id":721,"line":268,"column":8,"start":10591,"end":10650,"length":60,"parent_index":674},"function_return_parameters":674,"expression":{"id":722,"node_type":24,"kind":24,"src":{"id":723,"line":268,"column":15,"start":10598,"end":10649,"length":52,"parent_index":696},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":726,"node_type":16,"src":{"id":727,"line":268,"column":33,"start":10616,"end":10622,"length":7,"parent_index":722},"name":"success","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":728,"node_type":16,"src":{"id":729,"line":268,"column":42,"start":10625,"end":10634,"length":10,"parent_index":722},"name":"returndata","type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]},{"id":730,"node_type":16,"src":{"id":731,"line":268,"column":54,"start":10637,"end":10648,"length":12,"parent_index":722},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":730,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}]}],"expression":{"id":724,"node_type":16,"src":{"id":725,"line":268,"column":15,"start":10598,"end":10614,"length":17,"parent_index":722},"name":"_verifyCallResult","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_string$","type_string":"function(function(),function(function()),string)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":676,"node_type":43,"src":{"id":677,"line":263,"column":34,"start":10270,"end":10330,"length":61,"parent_index":674},"parameters":[{"id":678,"node_type":44,"src":{"id":679,"line":263,"column":34,"start":10270,"end":10283,"length":14,"parent_index":676},"scope":674,"name":"target","type_name":{"id":680,"node_type":30,"src":{"id":681,"line":263,"column":34,"start":10270,"end":10276,"length":7,"parent_index":678},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":682,"node_type":44,"src":{"id":683,"line":263,"column":50,"start":10286,"end":10302,"length":17,"parent_index":676},"scope":674,"name":"data","type_name":{"id":684,"node_type":30,"src":{"id":685,"line":263,"column":50,"start":10286,"end":10290,"length":5,"parent_index":682},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":686,"node_type":44,"src":{"id":687,"line":263,"column":69,"start":10305,"end":10330,"length":26,"parent_index":676},"scope":674,"name":"errorMessage","type_name":{"id":688,"node_type":30,"src":{"id":689,"line":263,"column":69,"start":10305,"end":10310,"length":6,"parent_index":686},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":690,"node_type":43,"src":{"id":691,"line":263,"column":115,"start":10351,"end":10362,"length":12,"parent_index":674},"parameters":[{"id":692,"node_type":44,"src":{"id":693,"line":263,"column":115,"start":10351,"end":10362,"length":12,"parent_index":690},"scope":674,"name":"","type_name":{"id":694,"node_type":30,"src":{"id":695,"line":263,"column":115,"start":10351,"end":10355,"length":5,"parent_index":692},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_string$","type_string":"function(address,bytes,string)"}},{"id":733,"name":"_verifyCallResult","node_type":42,"kind":41,"src":{"id":734,"line":271,"column":4,"start":10663,"end":11387,"length":725,"parent_index":259},"body":{"id":755,"node_type":46,"kind":0,"src":{"id":756,"line":271,"column":133,"start":10792,"end":11387,"length":596,"parent_index":733},"implemented":true,"statements":[{"id":757,"node_type":48,"src":{"id":758,"line":272,"column":0,"start":10802,"end":11381,"length":580,"parent_index":755},"condition":{"id":759,"node_type":16,"src":{"id":760,"line":272,"column":12,"start":10806,"end":10812,"length":7,"parent_index":757},"name":"success","type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":759,"is_pure":false},"body":{"id":761,"node_type":46,"kind":0,"src":{"id":762,"line":272,"column":21,"start":10815,"end":10856,"length":42,"parent_index":733},"implemented":true,"statements":[{"id":763,"node_type":47,"src":{"id":764,"line":273,"column":12,"start":10829,"end":10846,"length":18,"parent_index":733},"function_return_parameters":733,"expression":{"id":765,"node_type":16,"src":{"id":766,"line":273,"column":19,"start":10836,"end":10845,"length":10,"parent_index":761},"name":"returndata","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":765,"is_pure":false}}]}}]},"implemented":true,"visibility":2,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":735,"node_type":43,"src":{"id":736,"line":271,"column":31,"start":10690,"end":10754,"length":65,"parent_index":733},"parameters":[{"id":737,"node_type":44,"src":{"id":738,"line":271,"column":31,"start":10690,"end":10701,"length":12,"parent_index":735},"scope":733,"name":"success","type_name":{"id":739,"node_type":30,"src":{"id":740,"line":271,"column":31,"start":10690,"end":10693,"length":4,"parent_index":737},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":741,"node_type":44,"src":{"id":742,"line":271,"column":45,"start":10704,"end":10726,"length":23,"parent_index":735},"scope":733,"name":"returndata","type_name":{"id":743,"node_type":30,"src":{"id":744,"line":271,"column":45,"start":10704,"end":10708,"length":5,"parent_index":741},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":745,"node_type":44,"src":{"id":746,"line":271,"column":70,"start":10729,"end":10754,"length":26,"parent_index":735},"scope":733,"name":"errorMessage","type_name":{"id":747,"node_type":30,"src":{"id":748,"line":271,"column":70,"start":10729,"end":10734,"length":6,"parent_index":745},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":749,"node_type":43,"src":{"id":750,"line":271,"column":119,"start":10778,"end":10789,"length":12,"parent_index":733},"parameters":[{"id":751,"node_type":44,"src":{"id":752,"line":271,"column":119,"start":10778,"end":10789,"length":12,"parent_index":749},"scope":733,"name":"","type_name":{"id":753,"node_type":30,"src":{"id":754,"line":271,"column":119,"start":10778,"end":10782,"length":5,"parent_index":751},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":259,"type_description":{"type_identifier":"t_function_$_t_bool$_t_bytes$_t_string$","type_string":"function(bool,bytes,string)"}}],"linearized_base_contracts":[259],"base_contracts":[],"contract_dependencies":[],"scope":251}],"src":{"id":252,"line":108,"column":0,"start":3706,"end":11389,"length":7684,"parent_index":118}},{"id":767,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":767,"name":"StorageSlot","absolute_path":"StorageSlot.sol"}],"absolute_path":"StorageSlot.sol","name":"StorageSlot","node_type":1,"nodes":[{"id":775,"node_type":10,"src":{"id":776,"line":293,"column":0,"start":11425,"end":11447,"length":23,"parent_index":767},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":777,"name":"StorageSlot","node_type":35,"src":{"id":0,"line":321,"column":0,"start":12599,"end":13817,"length":1219,"parent_index":767},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":779,"node_type":67,"src":{"id":780,"line":322,"column":4,"start":12625,"end":12673,"length":49,"parent_index":767},"name":"AddressSlot","canonical_name":"StorageSlot.AddressSlot","type_description":{"type_identifier":"t_struct$_StorageSlot_AddressSlot_$779","type_string":"struct StorageSlot.AddressSlot"},"members":[{"id":781,"node_type":44,"src":{"id":782,"line":323,"column":8,"start":12654,"end":12667,"length":14,"parent_index":779},"scope":777,"name":"value","type_name":{"id":783,"node_type":30,"src":{"id":784,"line":323,"column":8,"start":12654,"end":12660,"length":7,"parent_index":781},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4}],"visibility":3,"storage_location":1},{"id":786,"node_type":67,"src":{"id":787,"line":326,"column":4,"start":12680,"end":12725,"length":46,"parent_index":767},"name":"BooleanSlot","canonical_name":"StorageSlot.BooleanSlot","type_description":{"type_identifier":"t_struct$_StorageSlot_BooleanSlot_$786","type_string":"struct StorageSlot.BooleanSlot"},"members":[{"id":788,"node_type":44,"src":{"id":789,"line":327,"column":8,"start":12709,"end":12719,"length":11,"parent_index":786},"scope":777,"name":"value","type_name":{"id":790,"node_type":30,"src":{"id":791,"line":327,"column":8,"start":12709,"end":12712,"length":4,"parent_index":788},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":793,"node_type":67,"src":{"id":794,"line":330,"column":4,"start":12732,"end":12780,"length":49,"parent_index":767},"name":"Bytes32Slot","canonical_name":"StorageSlot.Bytes32Slot","type_description":{"type_identifier":"t_struct$_StorageSlot_Bytes32Slot_$793","type_string":"struct StorageSlot.Bytes32Slot"},"members":[{"id":795,"node_type":44,"src":{"id":796,"line":331,"column":8,"start":12761,"end":12774,"length":14,"parent_index":793},"scope":777,"name":"value","type_name":{"id":797,"node_type":30,"src":{"id":798,"line":331,"column":8,"start":12761,"end":12767,"length":7,"parent_index":795},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":800,"node_type":67,"src":{"id":801,"line":334,"column":4,"start":12787,"end":12835,"length":49,"parent_index":767},"name":"Uint256Slot","canonical_name":"StorageSlot.Uint256Slot","type_description":{"type_identifier":"t_struct$_StorageSlot_Uint256Slot_$800","type_string":"struct StorageSlot.Uint256Slot"},"members":[{"id":802,"node_type":44,"src":{"id":803,"line":335,"column":8,"start":12816,"end":12829,"length":14,"parent_index":800},"scope":777,"name":"value","type_name":{"id":804,"node_type":30,"src":{"id":805,"line":335,"column":8,"start":12816,"end":12822,"length":7,"parent_index":802},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":807,"name":"getAddressSlot","node_type":42,"kind":41,"src":{"id":808,"line":341,"column":4,"start":12934,"end":13080,"length":147,"parent_index":777},"body":{"id":823,"node_type":46,"kind":0,"src":{"id":824,"line":341,"column":88,"start":13018,"end":13080,"length":63,"parent_index":807},"implemented":true,"statements":[{"id":825,"node_type":89,"src":{"id":826,"line":342,"column":8,"start":13028,"end":13074,"length":47,"parent_index":823},"body":{"id":828,"node_type":90,"kind":0,"src":{"id":826,"line":342,"column":8,"start":13028,"end":13074,"length":47,"parent_index":825},"implemented":false,"statements":[{"id":827,"node_type":91,"src":{"id":829,"line":343,"column":12,"start":13051,"end":13064,"length":14,"parent_index":825},"body":[]}]}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":809,"node_type":43,"src":{"id":810,"line":341,"column":28,"start":12958,"end":12969,"length":12,"parent_index":807},"parameters":[{"id":811,"node_type":44,"src":{"id":812,"line":341,"column":28,"start":12958,"end":12969,"length":12,"parent_index":809},"scope":807,"name":"slot","type_name":{"id":813,"node_type":30,"src":{"id":814,"line":341,"column":28,"start":12958,"end":12964,"length":7,"parent_index":811},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":815,"node_type":43,"src":{"id":816,"line":341,"column":65,"start":12995,"end":13015,"length":21,"parent_index":807},"parameters":[{"id":817,"node_type":44,"src":{"id":818,"line":341,"column":65,"start":12995,"end":13015,"length":21,"parent_index":815},"scope":807,"name":"r","type_name":{"id":819,"node_type":69,"src":{"id":820,"line":341,"column":65,"start":12995,"end":13005,"length":11,"parent_index":817},"type_description":{"type_identifier":"t_struct$_StorageSlot_AddressSlot_$779","type_string":"struct StorageSlot.AddressSlot"},"path_node":{"id":821,"name":"AddressSlot","node_type":52,"referenced_declaration":779,"src":{"id":822,"line":341,"column":65,"start":12995,"end":13005,"length":11,"parent_index":819}},"referenced_declaration":779},"storage_location":3,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_struct$_StorageSlot_AddressSlot_$779","type_string":"struct StorageSlot.AddressSlot"}]},"scope":777,"type_description":{"type_identifier":"t_function_$_t_bytes32$","type_string":"function(bytes32)"}},{"id":831,"name":"getBooleanSlot","node_type":42,"kind":41,"src":{"id":832,"line":350,"column":4,"start":13179,"end":13325,"length":147,"parent_index":777},"body":{"id":847,"node_type":46,"kind":0,"src":{"id":848,"line":350,"column":88,"start":13263,"end":13325,"length":63,"parent_index":831},"implemented":true,"statements":[{"id":849,"node_type":89,"src":{"id":850,"line":351,"column":8,"start":13273,"end":13319,"length":47,"parent_index":847},"body":{"id":852,"node_type":90,"kind":0,"src":{"id":850,"line":351,"column":8,"start":13273,"end":13319,"length":47,"parent_index":849},"implemented":false,"statements":[{"id":851,"node_type":91,"src":{"id":853,"line":352,"column":12,"start":13296,"end":13309,"length":14,"parent_index":849},"body":[]}]}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":833,"node_type":43,"src":{"id":834,"line":350,"column":28,"start":13203,"end":13214,"length":12,"parent_index":831},"parameters":[{"id":835,"node_type":44,"src":{"id":836,"line":350,"column":28,"start":13203,"end":13214,"length":12,"parent_index":833},"scope":831,"name":"slot","type_name":{"id":837,"node_type":30,"src":{"id":838,"line":350,"column":28,"start":13203,"end":13209,"length":7,"parent_index":835},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":839,"node_type":43,"src":{"id":840,"line":350,"column":65,"start":13240,"end":13260,"length":21,"parent_index":831},"parameters":[{"id":841,"node_type":44,"src":{"id":842,"line":350,"column":65,"start":13240,"end":13260,"length":21,"parent_index":839},"scope":831,"name":"r","type_name":{"id":843,"node_type":69,"src":{"id":844,"line":350,"column":65,"start":13240,"end":13250,"length":11,"parent_index":841},"type_description":{"type_identifier":"t_struct$_StorageSlot_BooleanSlot_$786","type_string":"struct StorageSlot.BooleanSlot"},"path_node":{"id":845,"name":"BooleanSlot","node_type":52,"referenced_declaration":786,"src":{"id":846,"line":350,"column":65,"start":13240,"end":13250,"length":11,"parent_index":843}},"referenced_declaration":786},"storage_location":3,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_struct$_StorageSlot_BooleanSlot_$786","type_string":"struct StorageSlot.BooleanSlot"}]},"scope":777,"type_description":{"type_identifier":"t_function_$_t_bytes32$","type_string":"function(bytes32)"}},{"id":855,"name":"getBytes32Slot","node_type":42,"kind":41,"src":{"id":856,"line":359,"column":4,"start":13424,"end":13570,"length":147,"parent_index":777},"body":{"id":871,"node_type":46,"kind":0,"src":{"id":872,"line":359,"column":88,"start":13508,"end":13570,"length":63,"parent_index":855},"implemented":true,"statements":[{"id":873,"node_type":89,"src":{"id":874,"line":360,"column":8,"start":13518,"end":13564,"length":47,"parent_index":871},"body":{"id":876,"node_type":90,"kind":0,"src":{"id":874,"line":360,"column":8,"start":13518,"end":13564,"length":47,"parent_index":873},"implemented":false,"statements":[{"id":875,"node_type":91,"src":{"id":877,"line":361,"column":12,"start":13541,"end":13554,"length":14,"parent_index":873},"body":[]}]}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":857,"node_type":43,"src":{"id":858,"line":359,"column":28,"start":13448,"end":13459,"length":12,"parent_index":855},"parameters":[{"id":859,"node_type":44,"src":{"id":860,"line":359,"column":28,"start":13448,"end":13459,"length":12,"parent_index":857},"scope":855,"name":"slot","type_name":{"id":861,"node_type":30,"src":{"id":862,"line":359,"column":28,"start":13448,"end":13454,"length":7,"parent_index":859},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":863,"node_type":43,"src":{"id":864,"line":359,"column":65,"start":13485,"end":13505,"length":21,"parent_index":855},"parameters":[{"id":865,"node_type":44,"src":{"id":866,"line":359,"column":65,"start":13485,"end":13505,"length":21,"parent_index":863},"scope":855,"name":"r","type_name":{"id":867,"node_type":69,"src":{"id":868,"line":359,"column":65,"start":13485,"end":13495,"length":11,"parent_index":865},"type_description":{"type_identifier":"t_struct$_StorageSlot_Bytes32Slot_$793","type_string":"struct StorageSlot.Bytes32Slot"},"path_node":{"id":869,"name":"Bytes32Slot","node_type":52,"referenced_declaration":793,"src":{"id":870,"line":359,"column":65,"start":13485,"end":13495,"length":11,"parent_index":867}},"referenced_declaration":793},"storage_location":3,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_struct$_StorageSlot_Bytes32Slot_$793","type_string":"struct StorageSlot.Bytes32Slot"}]},"scope":777,"type_description":{"type_identifier":"t_function_$_t_bytes32$","type_string":"function(bytes32)"}},{"id":879,"name":"getUint256Slot","node_type":42,"kind":41,"src":{"id":880,"line":368,"column":4,"start":13669,"end":13815,"length":147,"parent_index":777},"body":{"id":895,"node_type":46,"kind":0,"src":{"id":896,"line":368,"column":88,"start":13753,"end":13815,"length":63,"parent_index":879},"implemented":true,"statements":[{"id":897,"node_type":89,"src":{"id":898,"line":369,"column":8,"start":13763,"end":13809,"length":47,"parent_index":895},"body":{"id":900,"node_type":90,"kind":0,"src":{"id":898,"line":369,"column":8,"start":13763,"end":13809,"length":47,"parent_index":897},"implemented":false,"statements":[{"id":899,"node_type":91,"src":{"id":901,"line":370,"column":12,"start":13786,"end":13799,"length":14,"parent_index":897},"body":[]}]}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":881,"node_type":43,"src":{"id":882,"line":368,"column":28,"start":13693,"end":13704,"length":12,"parent_index":879},"parameters":[{"id":883,"node_type":44,"src":{"id":884,"line":368,"column":28,"start":13693,"end":13704,"length":12,"parent_index":881},"scope":879,"name":"slot","type_name":{"id":885,"node_type":30,"src":{"id":886,"line":368,"column":28,"start":13693,"end":13699,"length":7,"parent_index":883},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":887,"node_type":43,"src":{"id":888,"line":368,"column":65,"start":13730,"end":13750,"length":21,"parent_index":879},"parameters":[{"id":889,"node_type":44,"src":{"id":890,"line":368,"column":65,"start":13730,"end":13750,"length":21,"parent_index":887},"scope":879,"name":"r","type_name":{"id":891,"node_type":69,"src":{"id":892,"line":368,"column":65,"start":13730,"end":13740,"length":11,"parent_index":889},"type_description":{"type_identifier":"t_struct$_StorageSlot_Uint256Slot_$800","type_string":"struct StorageSlot.Uint256Slot"},"path_node":{"id":893,"name":"Uint256Slot","node_type":52,"referenced_declaration":800,"src":{"id":894,"line":368,"column":65,"start":13730,"end":13740,"length":11,"parent_index":891}},"referenced_declaration":800},"storage_location":3,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_struct$_StorageSlot_Uint256Slot_$800","type_string":"struct StorageSlot.Uint256Slot"}]},"scope":777,"type_description":{"type_identifier":"t_function_$_t_bytes32$","type_string":"function(bytes32)"}}],"linearized_base_contracts":[777],"base_contracts":[],"contract_dependencies":[],"scope":767}],"src":{"id":768,"line":321,"column":0,"start":12599,"end":13817,"length":1219,"parent_index":118}},{"id":902,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":902,"name":"ERC1967Upgrade","absolute_path":"ERC1967Upgrade.sol"},{"id":767,"name":"StorageSlot","absolute_path":"StorageSlot.sol"},{"id":251,"name":"Address","absolute_path":"Address.sol"},{"id":119,"name":"IBeacon","absolute_path":"IBeacon.sol"}],"absolute_path":"ERC1967Upgrade.sol","name":"ERC1967Upgrade","node_type":1,"nodes":[{"id":912,"node_type":10,"src":{"id":913,"line":378,"column":0,"start":13854,"end":13876,"length":23,"parent_index":902},"literals":["pragma","solidity","^","0",".","8",".","2",";"],"text":"pragma solidity ^0.8.2;"},{"id":914,"node_type":29,"src":{"id":0,"line":380,"column":0,"start":13879,"end":13909,"length":31,"parent_index":902},"absolute_path":"IBeacon.sol","file":"../beacon/IBeacon.sol","scope":902,"unit_alias":"","source_unit":767},{"id":915,"node_type":29,"src":{"id":0,"line":381,"column":0,"start":13911,"end":13943,"length":33,"parent_index":902},"absolute_path":"Address.sol","file":"../../utils/Address.sol","scope":902,"unit_alias":"","source_unit":767},{"id":916,"node_type":29,"src":{"id":0,"line":382,"column":0,"start":13945,"end":13981,"length":37,"parent_index":902},"absolute_path":"StorageSlot.sol","file":"../../utils/StorageSlot.sol","scope":902,"unit_alias":"","source_unit":767},{"id":917,"name":"ERC1967Upgrade","node_type":35,"src":{"id":0,"line":392,"column":0,"start":14221,"end":20590,"length":6370,"parent_index":902},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":919,"name":"_ROLLBACK_SLOT","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":920,"line":394,"column":4,"start":14339,"end":14447,"length":109,"parent_index":917},"scope":917,"type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":921,"node_type":30,"src":{"id":922,"line":394,"column":4,"start":14339,"end":14345,"length":7,"parent_index":919},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0}},{"id":924,"name":"_IMPLEMENTATION_SLOT","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":925,"line":401,"column":4,"start":14673,"end":14788,"length":116,"parent_index":917},"scope":917,"type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":926,"node_type":30,"src":{"id":927,"line":401,"column":4,"start":14673,"end":14679,"length":7,"parent_index":924},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0}},{"id":929,"node_type":57,"src":{"id":930,"line":406,"column":4,"start":14868,"end":14914,"length":47,"parent_index":917},"parameters":{"id":931,"node_type":43,"src":{"id":930,"line":406,"column":4,"start":14868,"end":14914,"length":47,"parent_index":929},"parameters":[{"id":932,"node_type":44,"src":{"id":933,"line":406,"column":19,"start":14883,"end":14912,"length":30,"parent_index":931},"scope":929,"name":"implementation","type_name":{"id":934,"node_type":30,"src":{"id":935,"line":406,"column":19,"start":14883,"end":14889,"length":7,"parent_index":932},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"name":"Upgraded","anonymous":false},{"id":937,"name":"_getImplementation","node_type":42,"kind":41,"src":{"id":938,"line":411,"column":4,"start":14993,"end":15132,"length":140,"parent_index":917},"body":{"id":951,"node_type":46,"kind":0,"src":{"id":952,"line":411,"column":66,"start":15055,"end":15132,"length":78,"parent_index":937},"implemented":true,"statements":[{"id":953,"node_type":47,"src":{"id":954,"line":412,"column":8,"start":15065,"end":15126,"length":62,"parent_index":937},"function_return_parameters":937,"expression":{"id":955,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":956,"line":412,"column":15,"start":15072,"end":15125,"length":54,"parent_index":951},"expression":{"id":957,"node_type":24,"kind":24,"src":{"id":958,"line":412,"column":15,"start":15072,"end":15119,"length":48,"parent_index":955},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":963,"node_type":16,"src":{"id":964,"line":412,"column":42,"start":15099,"end":15118,"length":20,"parent_index":957},"name":"_IMPLEMENTATION_SLOT","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":959,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":960,"line":412,"column":15,"start":15072,"end":15097,"length":26,"parent_index":957},"expression":{"id":961,"node_type":16,"src":{"id":962,"line":412,"column":15,"start":15072,"end":15082,"length":11,"parent_index":959},"name":"StorageSlot","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"member_name":"getAddressSlot","argument_types":[],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":939,"node_type":43,"src":{"id":940,"line":411,"column":57,"start":15046,"end":15052,"length":7,"parent_index":937},"parameters":[{"id":941,"node_type":44,"src":{"id":942,"line":411,"column":57,"start":15046,"end":15052,"length":7,"parent_index":939},"scope":937,"name":"","type_name":{"id":943,"node_type":30,"src":{"id":944,"line":411,"column":57,"start":15046,"end":15052,"length":7,"parent_index":941},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":945,"node_type":43,"src":{"id":946,"line":411,"column":57,"start":15046,"end":15052,"length":7,"parent_index":937},"parameters":[{"id":947,"node_type":44,"src":{"id":948,"line":411,"column":57,"start":15046,"end":15052,"length":7,"parent_index":945},"scope":937,"name":"","type_name":{"id":949,"node_type":30,"src":{"id":950,"line":411,"column":57,"start":15046,"end":15052,"length":7,"parent_index":947},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":966,"name":"_setImplementation","node_type":42,"kind":41,"src":{"id":967,"line":418,"column":4,"start":15224,"end":15482,"length":259,"parent_index":917},"body":{"id":975,"node_type":46,"kind":0,"src":{"id":976,"line":418,"column":67,"start":15287,"end":15482,"length":196,"parent_index":966},"implemented":true,"statements":[{"id":977,"node_type":24,"kind":24,"src":{"id":978,"line":419,"column":8,"start":15297,"end":15391,"length":95,"parent_index":975},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: new implementation is not a contract\""}],"arguments":[{"id":981,"node_type":24,"kind":24,"src":{"id":982,"line":419,"column":16,"start":15305,"end":15341,"length":37,"parent_index":977},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":987,"node_type":16,"src":{"id":988,"line":419,"column":35,"start":15324,"end":15340,"length":17,"parent_index":981},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":987,"is_pure":false}],"expression":{"id":983,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":984,"line":419,"column":16,"start":15305,"end":15322,"length":18,"parent_index":981},"expression":{"id":985,"node_type":16,"src":{"id":986,"line":419,"column":16,"start":15305,"end":15311,"length":7,"parent_index":983},"name":"Address","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":251,"is_pure":false},"member_name":"isContract","argument_types":[],"type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":989,"node_type":17,"kind":50,"value":"ERC1967: new implementation is not a contract","hex_value":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","src":{"id":990,"line":419,"column":55,"start":15344,"end":15390,"length":47,"parent_index":977},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: new implementation is not a contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":979,"node_type":16,"src":{"id":980,"line":419,"column":8,"start":15297,"end":15303,"length":7,"parent_index":977},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_string_literal$","type_string":"function(function(address),string memory)"}},{"id":991,"node_type":81,"src":{"id":992,"line":420,"column":8,"start":15402,"end":15476,"length":75,"parent_index":975},"expression":{"id":993,"node_type":27,"src":{"id":994,"line":420,"column":8,"start":15402,"end":15475,"length":74,"parent_index":975},"operator":11,"left_expression":{"id":995,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":996,"line":420,"column":8,"start":15402,"end":15455,"length":54,"parent_index":993},"expression":{"id":997,"node_type":24,"kind":24,"src":{"id":998,"line":420,"column":8,"start":15402,"end":15449,"length":48,"parent_index":995},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":1003,"node_type":16,"src":{"id":1004,"line":420,"column":35,"start":15429,"end":15448,"length":20,"parent_index":997},"name":"_IMPLEMENTATION_SLOT","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":999,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1000,"line":420,"column":8,"start":15402,"end":15427,"length":26,"parent_index":997},"expression":{"id":1001,"node_type":16,"src":{"id":1002,"line":420,"column":8,"start":15402,"end":15412,"length":11,"parent_index":999},"name":"StorageSlot","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"member_name":"getAddressSlot","argument_types":[],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"right_expression":{"id":1005,"node_type":16,"src":{"id":1006,"line":420,"column":65,"start":15459,"end":15475,"length":17,"parent_index":993},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1005,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}]},"implemented":true,"visibility":2,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":968,"node_type":43,"src":{"id":969,"line":418,"column":32,"start":15252,"end":15276,"length":25,"parent_index":966},"parameters":[{"id":970,"node_type":44,"src":{"id":971,"line":418,"column":32,"start":15252,"end":15276,"length":25,"parent_index":968},"scope":966,"name":"newImplementation","type_name":{"id":972,"node_type":30,"src":{"id":973,"line":418,"column":32,"start":15252,"end":15258,"length":7,"parent_index":970},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":974,"node_type":43,"src":{"id":967,"line":418,"column":4,"start":15224,"end":15482,"length":259,"parent_index":966},"parameters":[],"parameter_types":[]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1008,"name":"_upgradeTo","node_type":42,"kind":41,"src":{"id":1009,"line":428,"column":4,"start":15589,"end":15740,"length":152,"parent_index":917},"body":{"id":1017,"node_type":46,"kind":0,"src":{"id":1018,"line":428,"column":60,"start":15645,"end":15740,"length":96,"parent_index":1008},"implemented":true,"statements":[{"id":1019,"node_type":24,"kind":24,"src":{"id":1020,"line":429,"column":8,"start":15655,"end":15691,"length":37,"parent_index":1017},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1023,"node_type":16,"src":{"id":1024,"line":429,"column":27,"start":15674,"end":15690,"length":17,"parent_index":1019},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1023,"is_pure":false}],"expression":{"id":1021,"node_type":16,"src":{"id":1022,"line":429,"column":8,"start":15655,"end":15672,"length":18,"parent_index":1019},"name":"_setImplementation","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1025,"node_type":64,"src":{"id":1026,"line":430,"column":8,"start":15702,"end":15734,"length":33,"parent_index":1008},"arguments":[{"id":1027,"node_type":16,"src":{"id":1028,"line":430,"column":22,"start":15716,"end":15732,"length":17,"parent_index":1017},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1027,"is_pure":false}],"expression":{"id":1029,"node_type":16,"src":{"id":1030,"line":430,"column":13,"start":15707,"end":15714,"length":8,"parent_index":1017},"name":"Upgraded","type_description":{"type_identifier":"t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929","type_string":"event ERC1967Upgrade.Upgraded"},"overloaded_declarations":[],"referenced_declaration":929,"is_pure":false}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1010,"node_type":43,"src":{"id":1011,"line":428,"column":24,"start":15609,"end":15633,"length":25,"parent_index":1008},"parameters":[{"id":1012,"node_type":44,"src":{"id":1013,"line":428,"column":24,"start":15609,"end":15633,"length":25,"parent_index":1010},"scope":1008,"name":"newImplementation","type_name":{"id":1014,"node_type":30,"src":{"id":1015,"line":428,"column":24,"start":15609,"end":15615,"length":7,"parent_index":1012},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1016,"node_type":43,"src":{"id":1009,"line":428,"column":4,"start":15589,"end":15740,"length":152,"parent_index":1008},"parameters":[],"parameter_types":[]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1032,"name":"_upgradeToAndCall","node_type":42,"kind":41,"src":{"id":1033,"line":438,"column":4,"start":15875,"end":16189,"length":315,"parent_index":917},"body":{"id":1049,"node_type":46,"kind":0,"src":{"id":1050,"line":438,"column":102,"start":15973,"end":16189,"length":217,"parent_index":1032},"implemented":true,"statements":[{"id":1051,"node_type":24,"kind":24,"src":{"id":1052,"line":439,"column":8,"start":15983,"end":16019,"length":37,"parent_index":1049},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1055,"node_type":16,"src":{"id":1056,"line":439,"column":27,"start":16002,"end":16018,"length":17,"parent_index":1051},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1055,"is_pure":false}],"expression":{"id":1053,"node_type":16,"src":{"id":1054,"line":439,"column":8,"start":15983,"end":16000,"length":18,"parent_index":1051},"name":"_setImplementation","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1057,"node_type":64,"src":{"id":1058,"line":440,"column":8,"start":16030,"end":16062,"length":33,"parent_index":1032},"arguments":[{"id":1059,"node_type":16,"src":{"id":1060,"line":440,"column":22,"start":16044,"end":16060,"length":17,"parent_index":1049},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1059,"is_pure":false}],"expression":{"id":1061,"node_type":16,"src":{"id":1062,"line":440,"column":13,"start":16035,"end":16042,"length":8,"parent_index":1049},"name":"Upgraded","type_description":{"type_identifier":"t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929","type_string":"event ERC1967Upgrade.Upgraded"},"overloaded_declarations":[],"referenced_declaration":929,"is_pure":false}},{"id":1063,"node_type":48,"src":{"id":1064,"line":441,"column":0,"start":16072,"end":16183,"length":112,"parent_index":1049},"condition":{"id":1065,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1066,"line":441,"column":12,"start":16076,"end":16103,"length":28,"parent_index":1063},"operator":33,"left_expression":{"id":1067,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1068,"line":441,"column":12,"start":16076,"end":16090,"length":15,"parent_index":1065},"operator":7,"left_expression":{"id":1069,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1070,"line":441,"column":12,"start":16076,"end":16086,"length":11,"parent_index":1067},"expression":{"id":1071,"node_type":16,"src":{"id":1072,"line":441,"column":12,"start":16076,"end":16079,"length":4,"parent_index":1069},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1071,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_bytes","type_string":"bytes"}},"right_expression":{"id":1073,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1074,"line":441,"column":26,"start":16090,"end":16090,"length":1,"parent_index":1067},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"right_expression":{"id":1075,"node_type":16,"src":{"id":1076,"line":441,"column":31,"start":16095,"end":16103,"length":9,"parent_index":1065},"name":"forceCall","type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":1075,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":1077,"node_type":46,"kind":0,"src":{"id":1078,"line":441,"column":42,"start":16106,"end":16183,"length":78,"parent_index":1032},"implemented":true,"statements":[{"id":1079,"node_type":24,"kind":24,"src":{"id":1080,"line":442,"column":12,"start":16120,"end":16172,"length":53,"parent_index":1077},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":1085,"node_type":16,"src":{"id":1086,"line":442,"column":41,"start":16149,"end":16165,"length":17,"parent_index":1079},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1085,"is_pure":false},{"id":1087,"node_type":16,"src":{"id":1088,"line":442,"column":60,"start":16168,"end":16171,"length":4,"parent_index":1079},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1087,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":1081,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1082,"line":442,"column":12,"start":16120,"end":16147,"length":28,"parent_index":1079},"expression":{"id":1083,"node_type":16,"src":{"id":1084,"line":442,"column":12,"start":16120,"end":16126,"length":7,"parent_index":1081},"name":"Address","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":251,"is_pure":false},"member_name":"functionDelegateCall","argument_types":[],"type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$","type_string":"function(address,bytes)"}}]}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1034,"node_type":43,"src":{"id":1035,"line":438,"column":31,"start":15902,"end":15961,"length":60,"parent_index":1032},"parameters":[{"id":1036,"node_type":44,"src":{"id":1037,"line":438,"column":31,"start":15902,"end":15926,"length":25,"parent_index":1034},"scope":1032,"name":"newImplementation","type_name":{"id":1038,"node_type":30,"src":{"id":1039,"line":438,"column":31,"start":15902,"end":15908,"length":7,"parent_index":1036},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1040,"node_type":44,"src":{"id":1041,"line":438,"column":58,"start":15929,"end":15945,"length":17,"parent_index":1034},"scope":1032,"name":"data","type_name":{"id":1042,"node_type":30,"src":{"id":1043,"line":438,"column":58,"start":15929,"end":15933,"length":5,"parent_index":1040},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1044,"node_type":44,"src":{"id":1045,"line":438,"column":77,"start":15948,"end":15961,"length":14,"parent_index":1034},"scope":1032,"name":"forceCall","type_name":{"id":1046,"node_type":30,"src":{"id":1047,"line":438,"column":77,"start":15948,"end":15951,"length":4,"parent_index":1044},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}]},"return_parameters":{"id":1048,"node_type":43,"src":{"id":1033,"line":438,"column":4,"start":15875,"end":16189,"length":315,"parent_index":1032},"parameters":[],"parameter_types":[]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_bool$","type_string":"function(address,bytes,bool)"}},{"id":1090,"name":"_upgradeToAndCallSecure","node_type":42,"kind":41,"src":{"id":1091,"line":451,"column":4,"start":16362,"end":17675,"length":1314,"parent_index":917},"body":{"id":1107,"node_type":46,"kind":0,"src":{"id":1108,"line":451,"column":108,"start":16466,"end":17675,"length":1210,"parent_index":1090},"implemented":true,"statements":[{"id":1109,"node_type":44,"src":{"id":1110,"line":452,"column":8,"start":16476,"end":16524,"length":49,"parent_index":1107},"assignments":[1111],"declarations":[{"is_constant":false,"id":1111,"state_mutability":1,"name":"oldImplementation","node_type":44,"scope":1107,"src":{"id":1112,"line":452,"column":8,"start":16476,"end":16500,"length":25,"parent_index":1109},"is_state_variable":false,"storage_location":1,"type_name":{"id":1113,"node_type":30,"src":{"id":1114,"line":452,"column":8,"start":16476,"end":16482,"length":7,"parent_index":1111},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":1115,"node_type":24,"kind":24,"src":{"id":1116,"line":452,"column":36,"start":16504,"end":16523,"length":20,"parent_index":1109},"argument_types":[],"arguments":[],"expression":{"id":1117,"node_type":16,"src":{"id":1118,"line":452,"column":36,"start":16504,"end":16521,"length":18,"parent_index":1115},"name":"_getImplementation","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}},{"id":1119,"node_type":24,"kind":24,"src":{"id":1120,"line":455,"column":8,"start":16577,"end":16613,"length":37,"parent_index":1107},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1123,"node_type":16,"src":{"id":1124,"line":455,"column":27,"start":16596,"end":16612,"length":17,"parent_index":1119},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1123,"is_pure":false}],"expression":{"id":1121,"node_type":16,"src":{"id":1122,"line":455,"column":8,"start":16577,"end":16594,"length":18,"parent_index":1119},"name":"_setImplementation","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1125,"node_type":48,"src":{"id":1126,"line":456,"column":0,"start":16624,"end":16735,"length":112,"parent_index":1107},"condition":{"id":1127,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1128,"line":456,"column":12,"start":16628,"end":16655,"length":28,"parent_index":1125},"operator":33,"left_expression":{"id":1129,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1130,"line":456,"column":12,"start":16628,"end":16642,"length":15,"parent_index":1127},"operator":7,"left_expression":{"id":1131,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1132,"line":456,"column":12,"start":16628,"end":16638,"length":11,"parent_index":1129},"expression":{"id":1133,"node_type":16,"src":{"id":1134,"line":456,"column":12,"start":16628,"end":16631,"length":4,"parent_index":1131},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1133,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_bytes","type_string":"bytes"}},"right_expression":{"id":1135,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1136,"line":456,"column":26,"start":16642,"end":16642,"length":1,"parent_index":1129},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"right_expression":{"id":1137,"node_type":16,"src":{"id":1138,"line":456,"column":31,"start":16647,"end":16655,"length":9,"parent_index":1127},"name":"forceCall","type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":1137,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":1139,"node_type":46,"kind":0,"src":{"id":1140,"line":456,"column":42,"start":16658,"end":16735,"length":78,"parent_index":1090},"implemented":true,"statements":[{"id":1141,"node_type":24,"kind":24,"src":{"id":1142,"line":457,"column":12,"start":16672,"end":16724,"length":53,"parent_index":1139},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":1147,"node_type":16,"src":{"id":1148,"line":457,"column":41,"start":16701,"end":16717,"length":17,"parent_index":1141},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1147,"is_pure":false},{"id":1149,"node_type":16,"src":{"id":1150,"line":457,"column":60,"start":16720,"end":16723,"length":4,"parent_index":1141},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1149,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":1143,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1144,"line":457,"column":12,"start":16672,"end":16699,"length":28,"parent_index":1141},"expression":{"id":1145,"node_type":16,"src":{"id":1146,"line":457,"column":12,"start":16672,"end":16678,"length":7,"parent_index":1143},"name":"Address","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":251,"is_pure":false},"member_name":"functionDelegateCall","argument_types":[],"type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$","type_string":"function(address,bytes)"}}]}},{"id":1151,"node_type":44,"src":{"id":1152,"line":461,"column":8,"start":16806,"end":16898,"length":93,"parent_index":1107},"assignments":[1153],"declarations":[{"is_constant":false,"id":1153,"state_mutability":1,"name":"rollbackTesting","node_type":44,"scope":1107,"src":{"id":1154,"line":461,"column":8,"start":16806,"end":16852,"length":47,"parent_index":1151},"is_state_variable":false,"storage_location":3,"type_name":{"id":1155,"node_type":69,"src":{"id":1156,"line":461,"column":8,"start":16806,"end":16828,"length":23,"parent_index":1153},"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"path_node":{"id":1157,"name":"StorageSlot","node_type":52,"referenced_declaration":767,"src":{"id":1158,"line":461,"column":8,"start":16806,"end":16816,"length":11,"parent_index":1155}},"referenced_declaration":767},"visibility":1}],"initial_value":{"id":1159,"node_type":24,"kind":24,"src":{"id":1160,"line":461,"column":58,"start":16856,"end":16897,"length":42,"parent_index":1151},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":1165,"node_type":16,"src":{"id":1166,"line":461,"column":85,"start":16883,"end":16896,"length":14,"parent_index":1159},"name":"_ROLLBACK_SLOT","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":1161,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1162,"line":461,"column":58,"start":16856,"end":16881,"length":26,"parent_index":1159},"expression":{"id":1163,"node_type":16,"src":{"id":1164,"line":461,"column":58,"start":16856,"end":16866,"length":11,"parent_index":1161},"name":"StorageSlot","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"member_name":"getBooleanSlot","argument_types":[],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}},{"id":1167,"node_type":48,"src":{"id":1168,"line":462,"column":0,"start":16908,"end":17669,"length":762,"parent_index":1107},"condition":{"id":1169,"node_type":18,"src":{"id":1170,"line":462,"column":12,"start":16912,"end":16933,"length":22,"parent_index":1090},"operator":31,"prefix":false,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"expression":{"id":1171,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1172,"line":462,"column":13,"start":16913,"end":16933,"length":21,"parent_index":1169},"expression":{"id":1173,"node_type":16,"src":{"id":1174,"line":462,"column":13,"start":16913,"end":16927,"length":15,"parent_index":1171},"name":"rollbackTesting","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":1151,"is_pure":false},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"body":{"id":1175,"node_type":46,"kind":0,"src":{"id":1176,"line":462,"column":36,"start":16936,"end":17669,"length":734,"parent_index":1090},"implemented":true,"statements":[{"id":1177,"node_type":81,"src":{"id":1178,"line":464,"column":12,"start":17026,"end":17054,"length":29,"parent_index":1175},"expression":{"id":1179,"node_type":27,"src":{"id":1180,"line":464,"column":12,"start":17026,"end":17053,"length":28,"parent_index":1175},"operator":11,"left_expression":{"id":1181,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1182,"line":464,"column":12,"start":17026,"end":17046,"length":21,"parent_index":1179},"expression":{"id":1183,"node_type":16,"src":{"id":1184,"line":464,"column":12,"start":17026,"end":17040,"length":15,"parent_index":1181},"name":"rollbackTesting","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":1151,"is_pure":false},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"right_expression":{"id":1185,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":1186,"line":464,"column":36,"start":17050,"end":17053,"length":4,"parent_index":1179},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},{"id":1187,"node_type":24,"kind":24,"src":{"id":1188,"line":465,"column":12,"start":17068,"end":17284,"length":217,"parent_index":1175},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function__t_string_literal$_t_function_$_t_string_literal$","type_string":"function(string memory,string memory)"}],"arguments":[{"id":1193,"node_type":16,"src":{"id":1194,"line":466,"column":16,"start":17114,"end":17130,"length":17,"parent_index":1187},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1193,"is_pure":false},{"id":1195,"node_type":24,"kind":24,"src":{"id":1196,"line":467,"column":16,"start":17149,"end":17270,"length":122,"parent_index":1187},"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"upgradeTo(address)\""},{"type_identifier":"t_function_$_t_string_literal$","type_string":"function(literal_string \"upgradeTo(address)\")"}],"arguments":[{"id":1201,"node_type":17,"kind":50,"value":"upgradeTo(address)","hex_value":"75706772616465546f286164647265737329","src":{"id":1202,"line":468,"column":20,"start":17194,"end":17213,"length":20,"parent_index":1195},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"upgradeTo(address)\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},{"id":1203,"node_type":16,"src":{"id":1204,"line":469,"column":20,"start":17236,"end":17252,"length":17,"parent_index":1195},"name":"oldImplementation","type_description":{"type_identifier":"t_function_$_t_string_literal$","type_string":"function(literal_string \"upgradeTo(address)\")"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"upgradeTo(address)\""}]}],"expression":{"id":1197,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1198,"line":467,"column":16,"start":17149,"end":17171,"length":23,"parent_index":1195},"expression":{"id":1199,"node_type":16,"src":{"id":1200,"line":467,"column":16,"start":17149,"end":17151,"length":3,"parent_index":1197},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"encodeWithSignature","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function__t_string_literal$_t_function_$_t_string_literal$","type_string":"function(string memory,string memory)"}}],"expression":{"id":1189,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1190,"line":465,"column":12,"start":17068,"end":17095,"length":28,"parent_index":1187},"expression":{"id":1191,"node_type":16,"src":{"id":1192,"line":465,"column":12,"start":17068,"end":17074,"length":7,"parent_index":1189},"name":"Address","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":251,"is_pure":false},"member_name":"functionDelegateCall","argument_types":[],"type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}},"type_description":{"type_identifier":"t_function_$_t_address$_t_function__t_string_literal$_t_function_$_t_string_literal$","type_string":"function(address,function(string memory,string memory))"}},{"id":1205,"node_type":81,"src":{"id":1206,"line":472,"column":12,"start":17299,"end":17328,"length":30,"parent_index":1175},"expression":{"id":1207,"node_type":27,"src":{"id":1208,"line":472,"column":12,"start":17299,"end":17327,"length":29,"parent_index":1175},"operator":11,"left_expression":{"id":1209,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1210,"line":472,"column":12,"start":17299,"end":17319,"length":21,"parent_index":1207},"expression":{"id":1211,"node_type":16,"src":{"id":1212,"line":472,"column":12,"start":17299,"end":17313,"length":15,"parent_index":1209},"name":"rollbackTesting","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":1151,"is_pure":false},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"right_expression":{"id":1213,"node_type":17,"kind":61,"value":"false","hex_value":"66616c7365","src":{"id":1214,"line":472,"column":36,"start":17323,"end":17327,"length":5,"parent_index":1207},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},{"id":1215,"node_type":24,"kind":24,"src":{"id":1216,"line":474,"column":12,"start":17386,"end":17486,"length":101,"parent_index":1175},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\""}],"arguments":[{"id":1219,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1220,"line":474,"column":20,"start":17394,"end":17434,"length":41,"parent_index":1215},"operator":11,"left_expression":{"id":1221,"node_type":16,"src":{"id":1222,"line":474,"column":20,"start":17394,"end":17410,"length":17,"parent_index":1219},"name":"oldImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1109,"is_pure":false},"right_expression":{"id":1223,"node_type":24,"kind":24,"src":{"id":1224,"line":474,"column":41,"start":17415,"end":17434,"length":20,"parent_index":1219},"argument_types":[],"arguments":[],"expression":{"id":1225,"node_type":16,"src":{"id":1226,"line":474,"column":41,"start":17415,"end":17432,"length":18,"parent_index":1223},"name":"_getImplementation","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1227,"node_type":17,"kind":50,"value":"ERC1967Upgrade: upgrade breaks further upgrades","hex_value":"45524331393637557067726164653a207570677261646520627265616b732066757274686572207570677261646573","src":{"id":1228,"line":474,"column":63,"start":17437,"end":17485,"length":49,"parent_index":1215},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1217,"node_type":16,"src":{"id":1218,"line":474,"column":12,"start":17386,"end":17392,"length":7,"parent_index":1215},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1229,"node_type":24,"kind":24,"src":{"id":1230,"line":476,"column":12,"start":17576,"end":17612,"length":37,"parent_index":1175},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1233,"node_type":16,"src":{"id":1234,"line":476,"column":31,"start":17595,"end":17611,"length":17,"parent_index":1229},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1233,"is_pure":false}],"expression":{"id":1231,"node_type":16,"src":{"id":1232,"line":476,"column":12,"start":17576,"end":17593,"length":18,"parent_index":1229},"name":"_setImplementation","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1235,"node_type":64,"src":{"id":1236,"line":477,"column":12,"start":17627,"end":17659,"length":33,"parent_index":1090},"arguments":[{"id":1237,"node_type":16,"src":{"id":1238,"line":477,"column":26,"start":17641,"end":17657,"length":17,"parent_index":1175},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1237,"is_pure":false}],"expression":{"id":1239,"node_type":16,"src":{"id":1240,"line":477,"column":17,"start":17632,"end":17639,"length":8,"parent_index":1175},"name":"Upgraded","type_description":{"type_identifier":"t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929","type_string":"event ERC1967Upgrade.Upgraded"},"overloaded_declarations":[],"referenced_declaration":929,"is_pure":false}}]}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1092,"node_type":43,"src":{"id":1093,"line":451,"column":37,"start":16395,"end":16454,"length":60,"parent_index":1090},"parameters":[{"id":1094,"node_type":44,"src":{"id":1095,"line":451,"column":37,"start":16395,"end":16419,"length":25,"parent_index":1092},"scope":1090,"name":"newImplementation","type_name":{"id":1096,"node_type":30,"src":{"id":1097,"line":451,"column":37,"start":16395,"end":16401,"length":7,"parent_index":1094},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1098,"node_type":44,"src":{"id":1099,"line":451,"column":64,"start":16422,"end":16438,"length":17,"parent_index":1092},"scope":1090,"name":"data","type_name":{"id":1100,"node_type":30,"src":{"id":1101,"line":451,"column":64,"start":16422,"end":16426,"length":5,"parent_index":1098},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1102,"node_type":44,"src":{"id":1103,"line":451,"column":83,"start":16441,"end":16454,"length":14,"parent_index":1092},"scope":1090,"name":"forceCall","type_name":{"id":1104,"node_type":30,"src":{"id":1105,"line":451,"column":83,"start":16441,"end":16444,"length":4,"parent_index":1102},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}]},"return_parameters":{"id":1106,"node_type":43,"src":{"id":1091,"line":451,"column":4,"start":16362,"end":17675,"length":1314,"parent_index":1090},"parameters":[],"parameter_types":[]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_bool$","type_string":"function(address,bytes,bool)"}},{"id":1242,"name":"_upgradeBeaconToAndCall","node_type":42,"kind":41,"src":{"id":1243,"line":487,"column":4,"start":17979,"end":18291,"length":313,"parent_index":917},"body":{"id":1259,"node_type":46,"kind":0,"src":{"id":1260,"line":487,"column":100,"start":18075,"end":18291,"length":217,"parent_index":1242},"implemented":true,"statements":[{"id":1261,"node_type":24,"kind":24,"src":{"id":1262,"line":488,"column":8,"start":18085,"end":18105,"length":21,"parent_index":1259},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1265,"node_type":16,"src":{"id":1266,"line":488,"column":19,"start":18096,"end":18104,"length":9,"parent_index":1261},"name":"newBeacon","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1265,"is_pure":false}],"expression":{"id":1263,"node_type":16,"src":{"id":1264,"line":488,"column":8,"start":18085,"end":18094,"length":10,"parent_index":1261},"name":"_setBeacon","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1267,"node_type":64,"src":{"id":1268,"line":489,"column":8,"start":18116,"end":18146,"length":31,"parent_index":1242},"arguments":[{"id":1269,"node_type":16,"src":{"id":1270,"line":489,"column":28,"start":18136,"end":18144,"length":9,"parent_index":1259},"name":"newBeacon","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1269,"is_pure":false}],"expression":{"id":1271,"node_type":16,"src":{"id":1272,"line":489,"column":13,"start":18121,"end":18134,"length":14,"parent_index":1259},"name":"BeaconUpgraded","type_description":{"type_identifier":"t_event\u0026_ERC1967Upgrade_BeaconUpgraded_\u00261433","type_string":"event ERC1967Upgrade.BeaconUpgraded"},"overloaded_declarations":[],"referenced_declaration":1433,"is_pure":false}},{"id":1273,"node_type":48,"src":{"id":1274,"line":490,"column":0,"start":18156,"end":18285,"length":130,"parent_index":1259},"condition":{"id":1275,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1276,"line":490,"column":12,"start":18160,"end":18187,"length":28,"parent_index":1273},"operator":33,"left_expression":{"id":1277,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1278,"line":490,"column":12,"start":18160,"end":18174,"length":15,"parent_index":1275},"operator":7,"left_expression":{"id":1279,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1280,"line":490,"column":12,"start":18160,"end":18170,"length":11,"parent_index":1277},"expression":{"id":1281,"node_type":16,"src":{"id":1282,"line":490,"column":12,"start":18160,"end":18163,"length":4,"parent_index":1279},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1281,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_bytes","type_string":"bytes"}},"right_expression":{"id":1283,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1284,"line":490,"column":26,"start":18174,"end":18174,"length":1,"parent_index":1277},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"right_expression":{"id":1285,"node_type":16,"src":{"id":1286,"line":490,"column":31,"start":18179,"end":18187,"length":9,"parent_index":1275},"name":"forceCall","type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":1285,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":1287,"node_type":46,"kind":0,"src":{"id":1288,"line":490,"column":42,"start":18190,"end":18285,"length":96,"parent_index":1242},"implemented":true,"statements":[{"id":1289,"node_type":24,"kind":24,"src":{"id":1290,"line":491,"column":12,"start":18204,"end":18274,"length":71,"parent_index":1287},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":1295,"node_type":24,"kind":24,"src":{"id":1296,"line":491,"column":41,"start":18233,"end":18267,"length":35,"parent_index":1289},"argument_types":[],"arguments":[],"expression":{"id":1297,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1298,"line":491,"column":41,"start":18233,"end":18265,"length":33,"parent_index":1295},"expression":{"id":1299,"node_type":24,"kind":24,"src":{"id":1300,"line":491,"column":41,"start":18233,"end":18250,"length":18,"parent_index":1297},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1303,"node_type":16,"src":{"id":1304,"line":491,"column":49,"start":18241,"end":18249,"length":9,"parent_index":1299},"name":"newBeacon","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1303,"is_pure":false}],"expression":{"id":1301,"node_type":16,"src":{"id":1302,"line":491,"column":41,"start":18233,"end":18239,"length":7,"parent_index":1299},"name":"IBeacon","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"implementation","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},{"id":1305,"node_type":16,"src":{"id":1306,"line":491,"column":78,"start":18270,"end":18273,"length":4,"parent_index":1289},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1305,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]}],"expression":{"id":1291,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1292,"line":491,"column":12,"start":18204,"end":18231,"length":28,"parent_index":1289},"expression":{"id":1293,"node_type":16,"src":{"id":1294,"line":491,"column":12,"start":18204,"end":18210,"length":7,"parent_index":1291},"name":"Address","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":251,"is_pure":false},"member_name":"functionDelegateCall","argument_types":[],"type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_bytes$","type_string":"function(function(),bytes)"}}]}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1244,"node_type":43,"src":{"id":1245,"line":487,"column":37,"start":18012,"end":18063,"length":52,"parent_index":1242},"parameters":[{"id":1246,"node_type":44,"src":{"id":1247,"line":487,"column":37,"start":18012,"end":18028,"length":17,"parent_index":1244},"scope":1242,"name":"newBeacon","type_name":{"id":1248,"node_type":30,"src":{"id":1249,"line":487,"column":37,"start":18012,"end":18018,"length":7,"parent_index":1246},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1250,"node_type":44,"src":{"id":1251,"line":487,"column":56,"start":18031,"end":18047,"length":17,"parent_index":1244},"scope":1242,"name":"data","type_name":{"id":1252,"node_type":30,"src":{"id":1253,"line":487,"column":56,"start":18031,"end":18035,"length":5,"parent_index":1250},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1254,"node_type":44,"src":{"id":1255,"line":487,"column":75,"start":18050,"end":18063,"length":14,"parent_index":1244},"scope":1242,"name":"forceCall","type_name":{"id":1256,"node_type":30,"src":{"id":1257,"line":487,"column":75,"start":18050,"end":18053,"length":4,"parent_index":1254},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}]},"return_parameters":{"id":1258,"node_type":43,"src":{"id":1243,"line":487,"column":4,"start":17979,"end":18291,"length":313,"parent_index":1242},"parameters":[],"parameter_types":[]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_bool$","type_string":"function(address,bytes,bool)"}},{"id":1308,"name":"_ADMIN_SLOT","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":1309,"line":500,"column":4,"start":18492,"end":18598,"length":107,"parent_index":917},"scope":917,"type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":1310,"node_type":30,"src":{"id":1311,"line":500,"column":4,"start":18492,"end":18498,"length":7,"parent_index":1308},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0}},{"id":1313,"node_type":57,"src":{"id":1314,"line":505,"column":4,"start":18677,"end":18736,"length":60,"parent_index":917},"parameters":{"id":1315,"node_type":43,"src":{"id":1314,"line":505,"column":4,"start":18677,"end":18736,"length":60,"parent_index":1313},"parameters":[{"id":1316,"node_type":44,"src":{"id":1317,"line":505,"column":23,"start":18696,"end":18716,"length":21,"parent_index":1315},"scope":1313,"name":"previousAdmin","type_name":{"id":1318,"node_type":30,"src":{"id":1319,"line":505,"column":23,"start":18696,"end":18702,"length":7,"parent_index":1316},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1320,"node_type":44,"src":{"id":1321,"line":505,"column":46,"start":18719,"end":18734,"length":16,"parent_index":1315},"scope":1313,"name":"newAdmin","type_name":{"id":1322,"node_type":30,"src":{"id":1323,"line":505,"column":46,"start":18719,"end":18725,"length":7,"parent_index":1320},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"name":"AdminChanged","anonymous":false},{"id":1325,"name":"_getAdmin","node_type":42,"kind":41,"src":{"id":1326,"line":510,"column":4,"start":18798,"end":18919,"length":122,"parent_index":917},"body":{"id":1339,"node_type":46,"kind":0,"src":{"id":1340,"line":510,"column":57,"start":18851,"end":18919,"length":69,"parent_index":1325},"implemented":true,"statements":[{"id":1341,"node_type":47,"src":{"id":1342,"line":511,"column":8,"start":18861,"end":18913,"length":53,"parent_index":1325},"function_return_parameters":1325,"expression":{"id":1343,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1344,"line":511,"column":15,"start":18868,"end":18912,"length":45,"parent_index":1339},"expression":{"id":1345,"node_type":24,"kind":24,"src":{"id":1346,"line":511,"column":15,"start":18868,"end":18906,"length":39,"parent_index":1343},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":1351,"node_type":16,"src":{"id":1352,"line":511,"column":42,"start":18895,"end":18905,"length":11,"parent_index":1345},"name":"_ADMIN_SLOT","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":1347,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1348,"line":511,"column":15,"start":18868,"end":18893,"length":26,"parent_index":1345},"expression":{"id":1349,"node_type":16,"src":{"id":1350,"line":511,"column":15,"start":18868,"end":18878,"length":11,"parent_index":1347},"name":"StorageSlot","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"member_name":"getAddressSlot","argument_types":[],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1327,"node_type":43,"src":{"id":1328,"line":510,"column":48,"start":18842,"end":18848,"length":7,"parent_index":1325},"parameters":[{"id":1329,"node_type":44,"src":{"id":1330,"line":510,"column":48,"start":18842,"end":18848,"length":7,"parent_index":1327},"scope":1325,"name":"","type_name":{"id":1331,"node_type":30,"src":{"id":1332,"line":510,"column":48,"start":18842,"end":18848,"length":7,"parent_index":1329},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1333,"node_type":43,"src":{"id":1334,"line":510,"column":48,"start":18842,"end":18848,"length":7,"parent_index":1325},"parameters":[{"id":1335,"node_type":44,"src":{"id":1336,"line":510,"column":48,"start":18842,"end":18848,"length":7,"parent_index":1333},"scope":1325,"name":"","type_name":{"id":1337,"node_type":30,"src":{"id":1338,"line":510,"column":48,"start":18842,"end":18848,"length":7,"parent_index":1335},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1354,"name":"_setAdmin","node_type":42,"kind":41,"src":{"id":1355,"line":517,"column":4,"start":19002,"end":19202,"length":201,"parent_index":917},"body":{"id":1363,"node_type":46,"kind":0,"src":{"id":1364,"line":517,"column":49,"start":19047,"end":19202,"length":156,"parent_index":1354},"implemented":true,"statements":[{"id":1365,"node_type":24,"kind":24,"src":{"id":1366,"line":518,"column":8,"start":19057,"end":19129,"length":73,"parent_index":1363},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: new admin is the zero address\""}],"arguments":[{"id":1369,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1370,"line":518,"column":16,"start":19065,"end":19086,"length":22,"parent_index":1365},"operator":12,"left_expression":{"id":1371,"node_type":16,"src":{"id":1372,"line":518,"column":16,"start":19065,"end":19072,"length":8,"parent_index":1369},"name":"newAdmin","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1371,"is_pure":false},"right_expression":{"id":1373,"node_type":24,"kind":24,"src":{"id":1374,"line":518,"column":28,"start":19077,"end":19086,"length":10,"parent_index":1369},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1379,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1380,"line":518,"column":36,"start":19085,"end":19085,"length":1,"parent_index":1373},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1375,"node_type":16,"src":{"id":1376,"line":518,"column":28,"start":19077,"end":19083,"length":7,"parent_index":1373},"name":"address","type_name":{"id":1377,"node_type":30,"src":{"id":1378,"line":518,"column":28,"start":19077,"end":19083,"length":7,"parent_index":1375},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1381,"node_type":17,"kind":50,"value":"ERC1967: new admin is the zero address","hex_value":"455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373","src":{"id":1382,"line":518,"column":40,"start":19089,"end":19128,"length":40,"parent_index":1365},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: new admin is the zero address\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1367,"node_type":16,"src":{"id":1368,"line":518,"column":8,"start":19057,"end":19063,"length":7,"parent_index":1365},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1383,"node_type":81,"src":{"id":1384,"line":519,"column":8,"start":19140,"end":19196,"length":57,"parent_index":1363},"expression":{"id":1385,"node_type":27,"src":{"id":1386,"line":519,"column":8,"start":19140,"end":19195,"length":56,"parent_index":1363},"operator":11,"left_expression":{"id":1387,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1388,"line":519,"column":8,"start":19140,"end":19184,"length":45,"parent_index":1385},"expression":{"id":1389,"node_type":24,"kind":24,"src":{"id":1390,"line":519,"column":8,"start":19140,"end":19178,"length":39,"parent_index":1387},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":1395,"node_type":16,"src":{"id":1396,"line":519,"column":35,"start":19167,"end":19177,"length":11,"parent_index":1389},"name":"_ADMIN_SLOT","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":1391,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1392,"line":519,"column":8,"start":19140,"end":19165,"length":26,"parent_index":1389},"expression":{"id":1393,"node_type":16,"src":{"id":1394,"line":519,"column":8,"start":19140,"end":19150,"length":11,"parent_index":1391},"name":"StorageSlot","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"member_name":"getAddressSlot","argument_types":[],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"right_expression":{"id":1397,"node_type":16,"src":{"id":1398,"line":519,"column":56,"start":19188,"end":19195,"length":8,"parent_index":1385},"name":"newAdmin","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1397,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}]},"implemented":true,"visibility":2,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1356,"node_type":43,"src":{"id":1357,"line":517,"column":23,"start":19021,"end":19036,"length":16,"parent_index":1354},"parameters":[{"id":1358,"node_type":44,"src":{"id":1359,"line":517,"column":23,"start":19021,"end":19036,"length":16,"parent_index":1356},"scope":1354,"name":"newAdmin","type_name":{"id":1360,"node_type":30,"src":{"id":1361,"line":517,"column":23,"start":19021,"end":19027,"length":7,"parent_index":1358},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1362,"node_type":43,"src":{"id":1355,"line":517,"column":4,"start":19002,"end":19202,"length":201,"parent_index":1354},"parameters":[],"parameter_types":[]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1400,"name":"_changeAdmin","node_type":42,"kind":41,"src":{"id":1401,"line":527,"column":4,"start":19314,"end":19448,"length":135,"parent_index":917},"body":{"id":1409,"node_type":46,"kind":0,"src":{"id":1410,"line":527,"column":53,"start":19363,"end":19448,"length":86,"parent_index":1400},"implemented":true,"statements":[{"id":1411,"node_type":64,"src":{"id":1412,"line":528,"column":8,"start":19373,"end":19413,"length":41,"parent_index":1400},"arguments":[{"id":1413,"node_type":24,"kind":24,"src":{"id":1414,"line":528,"column":26,"start":19391,"end":19401,"length":11,"parent_index":1409},"argument_types":[],"arguments":[],"expression":{"id":1415,"node_type":16,"src":{"id":1416,"line":528,"column":26,"start":19391,"end":19399,"length":9,"parent_index":1413},"name":"_getAdmin","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},{"id":1417,"node_type":16,"src":{"id":1418,"line":528,"column":39,"start":19404,"end":19411,"length":8,"parent_index":1409},"name":"newAdmin","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1417,"is_pure":false}],"expression":{"id":1419,"node_type":16,"src":{"id":1420,"line":528,"column":13,"start":19378,"end":19389,"length":12,"parent_index":1409},"name":"AdminChanged","type_description":{"type_identifier":"t_event\u0026_ERC1967Upgrade_AdminChanged_\u00261313","type_string":"event ERC1967Upgrade.AdminChanged"},"overloaded_declarations":[],"referenced_declaration":1313,"is_pure":false}},{"id":1421,"node_type":24,"kind":24,"src":{"id":1422,"line":529,"column":8,"start":19423,"end":19441,"length":19,"parent_index":1409},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1425,"node_type":16,"src":{"id":1426,"line":529,"column":18,"start":19433,"end":19440,"length":8,"parent_index":1421},"name":"newAdmin","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1425,"is_pure":false}],"expression":{"id":1423,"node_type":16,"src":{"id":1424,"line":529,"column":8,"start":19423,"end":19431,"length":9,"parent_index":1421},"name":"_setAdmin","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1402,"node_type":43,"src":{"id":1403,"line":527,"column":26,"start":19336,"end":19351,"length":16,"parent_index":1400},"parameters":[{"id":1404,"node_type":44,"src":{"id":1405,"line":527,"column":26,"start":19336,"end":19351,"length":16,"parent_index":1402},"scope":1400,"name":"newAdmin","type_name":{"id":1406,"node_type":30,"src":{"id":1407,"line":527,"column":26,"start":19336,"end":19342,"length":7,"parent_index":1404},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1408,"node_type":43,"src":{"id":1401,"line":527,"column":4,"start":19314,"end":19448,"length":135,"parent_index":1400},"parameters":[],"parameter_types":[]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1428,"name":"_BEACON_SLOT","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":1429,"line":536,"column":4,"start":19692,"end":19799,"length":108,"parent_index":917},"scope":917,"type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":1430,"node_type":30,"src":{"id":1431,"line":536,"column":4,"start":19692,"end":19698,"length":7,"parent_index":1428},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0}},{"id":1433,"node_type":57,"src":{"id":1434,"line":541,"column":4,"start":19871,"end":19915,"length":45,"parent_index":917},"parameters":{"id":1435,"node_type":43,"src":{"id":1434,"line":541,"column":4,"start":19871,"end":19915,"length":45,"parent_index":1433},"parameters":[{"id":1436,"node_type":44,"src":{"id":1437,"line":541,"column":25,"start":19892,"end":19913,"length":22,"parent_index":1435},"scope":1433,"name":"beacon","type_name":{"id":1438,"node_type":30,"src":{"id":1439,"line":541,"column":25,"start":19892,"end":19898,"length":7,"parent_index":1436},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"name":"BeaconUpgraded","anonymous":false},{"id":1441,"name":"_getBeacon","node_type":42,"kind":41,"src":{"id":1442,"line":546,"column":4,"start":19978,"end":20101,"length":124,"parent_index":917},"body":{"id":1455,"node_type":46,"kind":0,"src":{"id":1456,"line":546,"column":58,"start":20032,"end":20101,"length":70,"parent_index":1441},"implemented":true,"statements":[{"id":1457,"node_type":47,"src":{"id":1458,"line":547,"column":8,"start":20042,"end":20095,"length":54,"parent_index":1441},"function_return_parameters":1441,"expression":{"id":1459,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1460,"line":547,"column":15,"start":20049,"end":20094,"length":46,"parent_index":1455},"expression":{"id":1461,"node_type":24,"kind":24,"src":{"id":1462,"line":547,"column":15,"start":20049,"end":20088,"length":40,"parent_index":1459},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":1467,"node_type":16,"src":{"id":1468,"line":547,"column":42,"start":20076,"end":20087,"length":12,"parent_index":1461},"name":"_BEACON_SLOT","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":1463,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1464,"line":547,"column":15,"start":20049,"end":20074,"length":26,"parent_index":1461},"expression":{"id":1465,"node_type":16,"src":{"id":1466,"line":547,"column":15,"start":20049,"end":20059,"length":11,"parent_index":1463},"name":"StorageSlot","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"member_name":"getAddressSlot","argument_types":[],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1443,"node_type":43,"src":{"id":1444,"line":546,"column":49,"start":20023,"end":20029,"length":7,"parent_index":1441},"parameters":[{"id":1445,"node_type":44,"src":{"id":1446,"line":546,"column":49,"start":20023,"end":20029,"length":7,"parent_index":1443},"scope":1441,"name":"","type_name":{"id":1447,"node_type":30,"src":{"id":1448,"line":546,"column":49,"start":20023,"end":20029,"length":7,"parent_index":1445},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1449,"node_type":43,"src":{"id":1450,"line":546,"column":49,"start":20023,"end":20029,"length":7,"parent_index":1441},"parameters":[{"id":1451,"node_type":44,"src":{"id":1452,"line":546,"column":49,"start":20023,"end":20029,"length":7,"parent_index":1449},"scope":1441,"name":"","type_name":{"id":1453,"node_type":30,"src":{"id":1454,"line":546,"column":49,"start":20023,"end":20029,"length":7,"parent_index":1451},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1470,"name":"_setBeacon","node_type":42,"kind":41,"src":{"id":1471,"line":553,"column":4,"start":20184,"end":20588,"length":405,"parent_index":917},"body":{"id":1479,"node_type":46,"kind":0,"src":{"id":1480,"line":553,"column":51,"start":20231,"end":20588,"length":358,"parent_index":1470},"implemented":true,"statements":[{"id":1481,"node_type":24,"kind":24,"src":{"id":1482,"line":554,"column":8,"start":20241,"end":20353,"length":113,"parent_index":1479},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: new beacon is not a contract\""}],"arguments":[{"id":1485,"node_type":24,"kind":24,"src":{"id":1486,"line":555,"column":12,"start":20262,"end":20290,"length":29,"parent_index":1481},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1491,"node_type":16,"src":{"id":1492,"line":555,"column":31,"start":20281,"end":20289,"length":9,"parent_index":1485},"name":"newBeacon","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1491,"is_pure":false}],"expression":{"id":1487,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1488,"line":555,"column":12,"start":20262,"end":20279,"length":18,"parent_index":1485},"expression":{"id":1489,"node_type":16,"src":{"id":1490,"line":555,"column":12,"start":20262,"end":20268,"length":7,"parent_index":1487},"name":"Address","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":251,"is_pure":false},"member_name":"isContract","argument_types":[],"type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1493,"node_type":17,"kind":50,"value":"ERC1967: new beacon is not a contract","hex_value":"455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374","src":{"id":1494,"line":556,"column":12,"start":20305,"end":20343,"length":39,"parent_index":1481},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: new beacon is not a contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":1483,"node_type":16,"src":{"id":1484,"line":554,"column":8,"start":20241,"end":20247,"length":7,"parent_index":1481},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_string_literal$","type_string":"function(function(address),string memory)"}},{"id":1495,"node_type":24,"kind":24,"src":{"id":1496,"line":558,"column":8,"start":20364,"end":20513,"length":150,"parent_index":1479},"argument_types":[{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: beacon implementation is not a contract\""}],"arguments":[{"id":1499,"node_type":24,"kind":24,"src":{"id":1500,"line":559,"column":12,"start":20385,"end":20439,"length":55,"parent_index":1495},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":1505,"node_type":24,"kind":24,"src":{"id":1506,"line":559,"column":31,"start":20404,"end":20438,"length":35,"parent_index":1499},"argument_types":[],"arguments":[],"expression":{"id":1507,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1508,"line":559,"column":31,"start":20404,"end":20436,"length":33,"parent_index":1505},"expression":{"id":1509,"node_type":24,"kind":24,"src":{"id":1510,"line":559,"column":31,"start":20404,"end":20421,"length":18,"parent_index":1507},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":1513,"node_type":16,"src":{"id":1514,"line":559,"column":39,"start":20412,"end":20420,"length":9,"parent_index":1509},"name":"newBeacon","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1513,"is_pure":false}],"expression":{"id":1511,"node_type":16,"src":{"id":1512,"line":559,"column":31,"start":20404,"end":20410,"length":7,"parent_index":1509},"name":"IBeacon","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"implementation","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}],"expression":{"id":1501,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1502,"line":559,"column":12,"start":20385,"end":20402,"length":18,"parent_index":1499},"expression":{"id":1503,"node_type":16,"src":{"id":1504,"line":559,"column":12,"start":20385,"end":20391,"length":7,"parent_index":1501},"name":"Address","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":251,"is_pure":false},"member_name":"isContract","argument_types":[],"type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},{"id":1515,"node_type":17,"kind":50,"value":"ERC1967: beacon implementation is not a contract","hex_value":"455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","src":{"id":1516,"line":560,"column":12,"start":20454,"end":20503,"length":50,"parent_index":1495},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ERC1967: beacon implementation is not a contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}]}],"expression":{"id":1497,"node_type":16,"src":{"id":1498,"line":558,"column":8,"start":20364,"end":20370,"length":7,"parent_index":1495},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_string_literal$","type_string":"function(function(function()),string memory)"}},{"id":1517,"node_type":81,"src":{"id":1518,"line":562,"column":8,"start":20524,"end":20582,"length":59,"parent_index":1479},"expression":{"id":1519,"node_type":27,"src":{"id":1520,"line":562,"column":8,"start":20524,"end":20581,"length":58,"parent_index":1479},"operator":11,"left_expression":{"id":1521,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1522,"line":562,"column":8,"start":20524,"end":20569,"length":46,"parent_index":1519},"expression":{"id":1523,"node_type":24,"kind":24,"src":{"id":1524,"line":562,"column":8,"start":20524,"end":20563,"length":40,"parent_index":1521},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":1529,"node_type":16,"src":{"id":1530,"line":562,"column":35,"start":20551,"end":20562,"length":12,"parent_index":1523},"name":"_BEACON_SLOT","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":1525,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1526,"line":562,"column":8,"start":20524,"end":20549,"length":26,"parent_index":1523},"expression":{"id":1527,"node_type":16,"src":{"id":1528,"line":562,"column":8,"start":20524,"end":20534,"length":11,"parent_index":1525},"name":"StorageSlot","type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false},"member_name":"getAddressSlot","argument_types":[],"type_description":{"type_identifier":"t_contract$_StorageSlot_$767","type_string":"contract StorageSlot"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"value","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"right_expression":{"id":1531,"node_type":16,"src":{"id":1532,"line":562,"column":57,"start":20573,"end":20581,"length":9,"parent_index":1519},"name":"newBeacon","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1531,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}}]},"implemented":true,"visibility":2,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1472,"node_type":43,"src":{"id":1473,"line":553,"column":24,"start":20204,"end":20220,"length":17,"parent_index":1470},"parameters":[{"id":1474,"node_type":44,"src":{"id":1475,"line":553,"column":24,"start":20204,"end":20220,"length":17,"parent_index":1472},"scope":1470,"name":"newBeacon","type_name":{"id":1476,"node_type":30,"src":{"id":1477,"line":553,"column":24,"start":20204,"end":20210,"length":7,"parent_index":1474},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1478,"node_type":43,"src":{"id":1471,"line":553,"column":4,"start":20184,"end":20588,"length":405,"parent_index":1470},"parameters":[],"parameter_types":[]},"scope":917,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}],"linearized_base_contracts":[917,914,915,916],"base_contracts":[],"contract_dependencies":[914,915,916]}],"src":{"id":903,"line":392,"column":0,"start":14221,"end":20590,"length":6370,"parent_index":118}},{"id":1533,"base_contracts":[{"id":1554,"node_type":62,"src":{"id":1555,"line":582,"column":24,"start":21117,"end":21121,"length":5,"parent_index":1553},"base_name":{"id":1556,"node_type":52,"src":{"id":1557,"line":582,"column":24,"start":21117,"end":21121,"length":5,"parent_index":1553},"name":"Proxy","referenced_declaration":160}},{"id":1558,"node_type":62,"src":{"id":1559,"line":582,"column":31,"start":21124,"end":21137,"length":14,"parent_index":1553},"base_name":{"id":1560,"node_type":52,"src":{"id":1561,"line":582,"column":31,"start":21124,"end":21137,"length":14,"parent_index":1553},"name":"ERC1967Upgrade","referenced_declaration":902}}],"license":"MIT","exported_symbols":[{"id":1533,"name":"BeaconProxy","absolute_path":"BeaconProxy.sol"},{"id":902,"name":"ERC1967Upgrade","absolute_path":"ERC1967Upgrade.sol"},{"id":160,"name":"Proxy","absolute_path":"Proxy.sol"},{"id":119,"name":"IBeacon","absolute_path":"IBeacon.sol"},{"id":119,"name":"IBeacon","absolute_path":"IBeacon.sol"}],"absolute_path":"BeaconProxy.sol","name":"BeaconProxy","node_type":1,"nodes":[{"id":1545,"node_type":10,"src":{"id":1546,"line":568,"column":0,"start":20626,"end":20648,"length":23,"parent_index":1533},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":1550,"node_type":29,"src":{"id":0,"line":570,"column":0,"start":20651,"end":20673,"length":23,"parent_index":1533},"absolute_path":"IBeacon.sol","file":"./IBeacon.sol","scope":1533,"unit_alias":"","source_unit":902},{"id":1551,"node_type":29,"src":{"id":0,"line":571,"column":0,"start":20675,"end":20696,"length":22,"parent_index":1533},"absolute_path":"Proxy.sol","file":"../Proxy.sol","scope":1533,"unit_alias":"","source_unit":902},{"id":1552,"node_type":29,"src":{"id":0,"line":572,"column":0,"start":20698,"end":20736,"length":39,"parent_index":1533},"absolute_path":"ERC1967Upgrade.sol","file":"../ERC1967/ERC1967Upgrade.sol","scope":1533,"unit_alias":"","source_unit":902},{"id":1553,"name":"BeaconProxy","node_type":35,"src":{"id":0,"line":582,"column":0,"start":21093,"end":22698,"length":1606,"parent_index":1533},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":1563,"node_type":42,"src":{"id":1564,"line":594,"column":4,"start":21575,"end":21779,"length":205,"parent_index":1553},"kind":11,"state_mutability":3,"visibility":1,"implemented":true,"modifiers":[],"parameters":{"id":1565,"node_type":43,"src":{"id":1566,"line":594,"column":16,"start":21587,"end":21619,"length":33,"parent_index":1563},"parameters":[{"id":1567,"node_type":44,"src":{"id":1568,"line":594,"column":16,"start":21587,"end":21600,"length":14,"parent_index":1565},"scope":1563,"name":"beacon","type_name":{"id":1569,"node_type":30,"src":{"id":1570,"line":594,"column":16,"start":21587,"end":21593,"length":7,"parent_index":1567},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1571,"node_type":44,"src":{"id":1572,"line":594,"column":32,"start":21603,"end":21619,"length":17,"parent_index":1565},"scope":1563,"name":"data","type_name":{"id":1573,"node_type":30,"src":{"id":1574,"line":594,"column":32,"start":21603,"end":21607,"length":5,"parent_index":1571},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":1575,"node_type":43,"src":{"id":1564,"line":594,"column":4,"start":21575,"end":21779,"length":205,"parent_index":1563},"parameters":[],"parameter_types":[]},"scope":1553,"body":{"id":1576,"node_type":46,"kind":0,"src":{"id":1577,"line":594,"column":59,"start":21630,"end":21779,"length":150,"parent_index":1563},"implemented":true,"statements":[{"id":1578,"node_type":24,"kind":24,"src":{"id":1579,"line":595,"column":8,"start":21640,"end":21718,"length":79,"parent_index":1576},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}],"arguments":[{"id":1582,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1583,"line":595,"column":15,"start":21647,"end":21717,"length":71,"parent_index":1578},"operator":11,"left_expression":{"id":1584,"node_type":16,"src":{"id":1585,"line":595,"column":15,"start":21647,"end":21658,"length":12,"parent_index":1582},"name":"_BEACON_SLOT","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"overloaded_declarations":[],"referenced_declaration":1428,"is_pure":false},"right_expression":{"id":1586,"node_type":24,"kind":24,"src":{"id":1587,"line":595,"column":31,"start":21663,"end":21717,"length":55,"parent_index":1582},"argument_types":[{"type_identifier":"t_function_$_t_function__t_string_literal$","type_string":"function(function(string memory))"}],"arguments":[{"id":1592,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1593,"line":595,"column":39,"start":21671,"end":21716,"length":46,"parent_index":1586},"operator":2,"left_expression":{"id":1594,"node_type":24,"kind":24,"src":{"id":1595,"line":595,"column":39,"start":21671,"end":21712,"length":42,"parent_index":1592},"argument_types":[{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}],"arguments":[{"id":1600,"node_type":24,"kind":24,"src":{"id":1601,"line":595,"column":47,"start":21679,"end":21711,"length":33,"parent_index":1594},"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"eip1967.proxy.beacon\""}],"arguments":[{"id":1604,"node_type":17,"kind":50,"value":"eip1967.proxy.beacon","hex_value":"656970313936372e70726f78792e626561636f6e","src":{"id":1605,"line":595,"column":57,"start":21689,"end":21710,"length":22,"parent_index":1600},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"eip1967.proxy.beacon\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1602,"node_type":16,"src":{"id":1603,"line":595,"column":47,"start":21679,"end":21687,"length":9,"parent_index":1600},"name":"keccak256","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}}],"expression":{"id":1596,"node_type":16,"src":{"id":1597,"line":595,"column":39,"start":21671,"end":21677,"length":7,"parent_index":1594},"name":"uint256","type_name":{"id":1598,"node_type":30,"src":{"id":1599,"line":595,"column":39,"start":21671,"end":21677,"length":7,"parent_index":1596},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_function__t_string_literal$","type_string":"function(function(string memory))"}},"right_expression":{"id":1606,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":1607,"line":595,"column":84,"start":21716,"end":21716,"length":1,"parent_index":1592},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_function_$_t_function__t_string_literal$","type_string":"function(function(string memory))"}}],"expression":{"id":1588,"node_type":16,"src":{"id":1589,"line":595,"column":31,"start":21663,"end":21669,"length":7,"parent_index":1586},"name":"bytes32","type_name":{"id":1590,"node_type":30,"src":{"id":1591,"line":595,"column":31,"start":21663,"end":21669,"length":7,"parent_index":1588},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_bytes32$","type_string":"function(bytes32)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function__t_string_literal$","type_string":"function(function(function(string memory)))"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}}],"expression":{"id":1580,"node_type":16,"src":{"id":1581,"line":595,"column":8,"start":21640,"end":21645,"length":6,"parent_index":1578},"name":"assert","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$","type_string":"function(bool)"}},{"id":1608,"node_type":24,"kind":24,"src":{"id":1609,"line":596,"column":8,"start":21729,"end":21772,"length":44,"parent_index":1576},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}],"arguments":[{"id":1612,"node_type":16,"src":{"id":1613,"line":596,"column":32,"start":21753,"end":21758,"length":6,"parent_index":1608},"name":"beacon","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1612,"is_pure":false},{"id":1614,"node_type":16,"src":{"id":1615,"line":596,"column":40,"start":21761,"end":21764,"length":4,"parent_index":1608},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1614,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":1616,"node_type":17,"kind":61,"value":"false","hex_value":"66616c7365","src":{"id":1617,"line":596,"column":46,"start":21767,"end":21771,"length":5,"parent_index":1608},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":1610,"node_type":16,"src":{"id":1611,"line":596,"column":8,"start":21729,"end":21751,"length":23,"parent_index":1608},"name":"_upgradeBeaconToAndCall","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_bool$","type_string":"function(address,bytes,bool)"}}]}},{"id":1619,"name":"_beacon","node_type":42,"kind":41,"src":{"id":1620,"line":602,"column":4,"start":21850,"end":21944,"length":95,"parent_index":1553},"body":{"id":1633,"node_type":46,"kind":0,"src":{"id":1634,"line":602,"column":63,"start":21909,"end":21944,"length":36,"parent_index":1619},"implemented":true,"statements":[{"id":1635,"node_type":47,"src":{"id":1636,"line":603,"column":8,"start":21919,"end":21938,"length":20,"parent_index":1619},"function_return_parameters":1619,"expression":{"id":1637,"node_type":24,"kind":24,"src":{"id":1638,"line":603,"column":15,"start":21926,"end":21937,"length":12,"parent_index":1633},"argument_types":[],"arguments":[],"expression":{"id":1639,"node_type":16,"src":{"id":1640,"line":603,"column":15,"start":21926,"end":21935,"length":10,"parent_index":1637},"name":"_getBeacon","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1621,"node_type":43,"src":{"id":1622,"line":602,"column":54,"start":21900,"end":21906,"length":7,"parent_index":1619},"parameters":[{"id":1623,"node_type":44,"src":{"id":1624,"line":602,"column":54,"start":21900,"end":21906,"length":7,"parent_index":1621},"scope":1619,"name":"","type_name":{"id":1625,"node_type":30,"src":{"id":1626,"line":602,"column":54,"start":21900,"end":21906,"length":7,"parent_index":1623},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1627,"node_type":43,"src":{"id":1628,"line":602,"column":54,"start":21900,"end":21906,"length":7,"parent_index":1619},"parameters":[{"id":1629,"node_type":44,"src":{"id":1630,"line":602,"column":54,"start":21900,"end":21906,"length":7,"parent_index":1627},"scope":1619,"name":"","type_name":{"id":1631,"node_type":30,"src":{"id":1632,"line":602,"column":54,"start":21900,"end":21906,"length":7,"parent_index":1629},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":1553,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1642,"name":"_implementation","node_type":42,"kind":41,"src":{"id":1643,"line":609,"column":4,"start":22048,"end":22185,"length":138,"parent_index":1553},"body":{"id":1658,"node_type":46,"kind":0,"src":{"id":1659,"line":609,"column":80,"start":22124,"end":22185,"length":62,"parent_index":1642},"implemented":true,"statements":[{"id":1660,"node_type":47,"src":{"id":1661,"line":610,"column":8,"start":22134,"end":22179,"length":46,"parent_index":1642},"function_return_parameters":1642,"expression":{"id":1662,"node_type":24,"kind":24,"src":{"id":1663,"line":610,"column":15,"start":22141,"end":22178,"length":38,"parent_index":1658},"argument_types":[],"arguments":[],"expression":{"id":1664,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1665,"line":610,"column":15,"start":22141,"end":22176,"length":36,"parent_index":1662},"expression":{"id":1666,"node_type":24,"kind":24,"src":{"id":1667,"line":610,"column":15,"start":22141,"end":22161,"length":21,"parent_index":1664},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":1670,"node_type":24,"kind":24,"src":{"id":1671,"line":610,"column":23,"start":22149,"end":22160,"length":12,"parent_index":1666},"argument_types":[],"arguments":[],"expression":{"id":1672,"node_type":16,"src":{"id":1673,"line":610,"column":23,"start":22149,"end":22158,"length":10,"parent_index":1670},"name":"_getBeacon","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}],"expression":{"id":1668,"node_type":16,"src":{"id":1669,"line":610,"column":15,"start":22141,"end":22147,"length":7,"parent_index":1666},"name":"IBeacon","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"implementation","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":1644,"node_type":63,"name":"_implementation","src":{"id":1645,"line":609,"column":53,"start":22097,"end":22104,"length":8,"parent_index":1642},"referenced_declaration":188,"type_descriptions":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}],"parameters":{"id":1646,"node_type":43,"src":{"id":1647,"line":609,"column":71,"start":22115,"end":22121,"length":7,"parent_index":1642},"parameters":[{"id":1648,"node_type":44,"src":{"id":1649,"line":609,"column":71,"start":22115,"end":22121,"length":7,"parent_index":1646},"scope":1642,"name":"","type_name":{"id":1650,"node_type":30,"src":{"id":1651,"line":609,"column":71,"start":22115,"end":22121,"length":7,"parent_index":1648},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1652,"node_type":43,"src":{"id":1653,"line":609,"column":71,"start":22115,"end":22121,"length":7,"parent_index":1642},"parameters":[{"id":1654,"node_type":44,"src":{"id":1655,"line":609,"column":71,"start":22115,"end":22121,"length":7,"parent_index":1652},"scope":1642,"name":"","type_name":{"id":1656,"node_type":30,"src":{"id":1657,"line":609,"column":71,"start":22115,"end":22121,"length":7,"parent_index":1654},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":1553,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1675,"name":"_setBeacon","node_type":42,"kind":41,"src":{"id":1676,"line":623,"column":4,"start":22564,"end":22696,"length":133,"parent_index":1553},"body":{"id":1688,"node_type":46,"kind":0,"src":{"id":1689,"line":623,"column":76,"start":22636,"end":22696,"length":61,"parent_index":1675},"implemented":true,"statements":[{"id":1690,"node_type":24,"kind":24,"src":{"id":1691,"line":624,"column":8,"start":22646,"end":22689,"length":44,"parent_index":1688},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}],"arguments":[{"id":1694,"node_type":16,"src":{"id":1695,"line":624,"column":32,"start":22670,"end":22675,"length":6,"parent_index":1690},"name":"beacon","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1694,"is_pure":false},{"id":1696,"node_type":16,"src":{"id":1697,"line":624,"column":40,"start":22678,"end":22681,"length":4,"parent_index":1690},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1696,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":1698,"node_type":17,"kind":61,"value":"false","hex_value":"66616c7365","src":{"id":1699,"line":624,"column":46,"start":22684,"end":22688,"length":5,"parent_index":1690},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":1692,"node_type":16,"src":{"id":1693,"line":624,"column":8,"start":22646,"end":22668,"length":23,"parent_index":1690},"name":"_upgradeBeaconToAndCall","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_bool$","type_string":"function(address,bytes,bool)"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1677,"node_type":43,"src":{"id":1678,"line":623,"column":24,"start":22584,"end":22616,"length":33,"parent_index":1675},"parameters":[{"id":1679,"node_type":44,"src":{"id":1680,"line":623,"column":24,"start":22584,"end":22597,"length":14,"parent_index":1677},"scope":1675,"name":"beacon","type_name":{"id":1681,"node_type":30,"src":{"id":1682,"line":623,"column":24,"start":22584,"end":22590,"length":7,"parent_index":1679},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1683,"node_type":44,"src":{"id":1684,"line":623,"column":40,"start":22600,"end":22616,"length":17,"parent_index":1677},"scope":1675,"name":"data","type_name":{"id":1685,"node_type":30,"src":{"id":1686,"line":623,"column":40,"start":22600,"end":22604,"length":5,"parent_index":1683},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":1687,"node_type":43,"src":{"id":1676,"line":623,"column":4,"start":22564,"end":22696,"length":133,"parent_index":1675},"parameters":[],"parameter_types":[]},"scope":1553,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$","type_string":"function(address,bytes)"}}],"linearized_base_contracts":[160,902,1553,1550,1551,1552],"base_contracts":[{"id":1554,"node_type":62,"src":{"id":1555,"line":582,"column":24,"start":21117,"end":21121,"length":5,"parent_index":1553},"base_name":{"id":1556,"node_type":52,"src":{"id":1557,"line":582,"column":24,"start":21117,"end":21121,"length":5,"parent_index":1553},"name":"Proxy","referenced_declaration":160}},{"id":1558,"node_type":62,"src":{"id":1559,"line":582,"column":31,"start":21124,"end":21137,"length":14,"parent_index":1553},"base_name":{"id":1560,"node_type":52,"src":{"id":1561,"line":582,"column":31,"start":21124,"end":21137,"length":14,"parent_index":1553},"name":"ERC1967Upgrade","referenced_declaration":902}}],"contract_dependencies":[160,902,1550,1551,1552]}],"src":{"id":1534,"line":582,"column":0,"start":21093,"end":22698,"length":1606,"parent_index":118}},{"id":1700,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":1700,"name":"Context","absolute_path":"Context.sol"}],"absolute_path":"Context.sol","name":"Context","node_type":1,"nodes":[{"id":1714,"node_type":10,"src":{"id":1715,"line":630,"column":0,"start":22734,"end":22756,"length":23,"parent_index":1700},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":1722,"name":"Context","node_type":35,"src":{"id":0,"line":642,"column":0,"start":23255,"end":23622,"length":368,"parent_index":1700},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":1724,"name":"_msgSender","node_type":42,"kind":41,"src":{"id":1725,"line":643,"column":4,"start":23287,"end":23382,"length":96,"parent_index":1722},"body":{"id":1738,"node_type":46,"kind":0,"src":{"id":1739,"line":643,"column":66,"start":23349,"end":23382,"length":34,"parent_index":1724},"implemented":true,"statements":[{"id":1740,"node_type":47,"src":{"id":1741,"line":644,"column":8,"start":23359,"end":23376,"length":18,"parent_index":1724},"function_return_parameters":1724,"expression":{"id":1742,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1743,"line":644,"column":15,"start":23366,"end":23375,"length":10,"parent_index":1738},"expression":{"id":1744,"node_type":16,"src":{"id":1745,"line":644,"column":15,"start":23366,"end":23368,"length":3,"parent_index":1742},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1726,"node_type":43,"src":{"id":1727,"line":643,"column":57,"start":23340,"end":23346,"length":7,"parent_index":1724},"parameters":[{"id":1728,"node_type":44,"src":{"id":1729,"line":643,"column":57,"start":23340,"end":23346,"length":7,"parent_index":1726},"scope":1724,"name":"","type_name":{"id":1730,"node_type":30,"src":{"id":1731,"line":643,"column":57,"start":23340,"end":23346,"length":7,"parent_index":1728},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1732,"node_type":43,"src":{"id":1733,"line":643,"column":57,"start":23340,"end":23346,"length":7,"parent_index":1724},"parameters":[{"id":1734,"node_type":44,"src":{"id":1735,"line":643,"column":57,"start":23340,"end":23346,"length":7,"parent_index":1732},"scope":1724,"name":"","type_name":{"id":1736,"node_type":30,"src":{"id":1737,"line":643,"column":57,"start":23340,"end":23346,"length":7,"parent_index":1734},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":1722,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1747,"name":"_msgData","node_type":42,"kind":41,"src":{"id":1748,"line":647,"column":4,"start":23389,"end":23620,"length":232,"parent_index":1722},"body":{"id":1761,"node_type":46,"kind":0,"src":{"id":1762,"line":647,"column":71,"start":23456,"end":23620,"length":165,"parent_index":1747},"implemented":true,"statements":[{"id":1763,"node_type":16,"src":{"id":1764,"line":648,"column":8,"start":23466,"end":23469,"length":4,"parent_index":1761},"name":"this","type_description":{"type_identifier":"t_contract$_Context_$1700","type_string":"contract Context"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":1765,"node_type":47,"src":{"id":1766,"line":649,"column":8,"start":23599,"end":23614,"length":16,"parent_index":1747},"function_return_parameters":1747,"expression":{"id":1767,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1768,"line":649,"column":15,"start":23606,"end":23613,"length":8,"parent_index":1761},"expression":{"id":1769,"node_type":16,"src":{"id":1770,"line":649,"column":15,"start":23606,"end":23608,"length":3,"parent_index":1767},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"data","argument_types":[],"type_description":{"type_identifier":"t_bytes_calldata_ptr","type_string":"bytes calldata"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1749,"node_type":43,"src":{"id":1750,"line":647,"column":55,"start":23440,"end":23453,"length":14,"parent_index":1747},"parameters":[{"id":1751,"node_type":44,"src":{"id":1752,"line":647,"column":55,"start":23440,"end":23453,"length":14,"parent_index":1749},"scope":1747,"name":"","type_name":{"id":1753,"node_type":30,"src":{"id":1754,"line":647,"column":55,"start":23440,"end":23444,"length":5,"parent_index":1751},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":1755,"node_type":43,"src":{"id":1756,"line":647,"column":55,"start":23440,"end":23453,"length":14,"parent_index":1747},"parameters":[{"id":1757,"node_type":44,"src":{"id":1758,"line":647,"column":55,"start":23440,"end":23453,"length":14,"parent_index":1755},"scope":1747,"name":"","type_name":{"id":1759,"node_type":30,"src":{"id":1760,"line":647,"column":55,"start":23440,"end":23444,"length":5,"parent_index":1757},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":1722,"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}}],"linearized_base_contracts":[1722],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":1701,"line":642,"column":0,"start":23255,"end":23622,"length":368,"parent_index":118}},{"id":1771,"base_contracts":[{"id":1797,"node_type":62,"src":{"id":1798,"line":670,"column":29,"start":24238,"end":24244,"length":7,"parent_index":1796},"base_name":{"id":1799,"node_type":52,"src":{"id":1800,"line":670,"column":29,"start":24238,"end":24244,"length":7,"parent_index":1796},"name":"Context","referenced_declaration":1700}}],"license":"MIT","exported_symbols":[{"id":1771,"name":"Ownable","absolute_path":"Ownable.sol"},{"id":1700,"name":"Context","absolute_path":"Context.sol"}],"absolute_path":"Ownable.sol","name":"Ownable","node_type":1,"nodes":[{"id":1787,"node_type":10,"src":{"id":1788,"line":655,"column":0,"start":23658,"end":23680,"length":23,"parent_index":1771},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":1795,"node_type":29,"src":{"id":0,"line":657,"column":0,"start":23683,"end":23712,"length":30,"parent_index":1771},"absolute_path":"Context.sol","file":"../utils/Context.sol","scope":1771,"unit_alias":"","source_unit":1700},{"id":1796,"name":"Ownable","node_type":35,"src":{"id":0,"line":670,"column":0,"start":24209,"end":25860,"length":1652,"parent_index":1771},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":1802,"name":"_owner","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":1803,"line":671,"column":4,"start":24252,"end":24274,"length":23,"parent_index":1796},"scope":1796,"type_description":{"type_identifier":"t_address","type_string":"address"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":1804,"node_type":30,"src":{"id":1805,"line":671,"column":4,"start":24252,"end":24258,"length":7,"parent_index":1802},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0}},{"id":1807,"node_type":57,"src":{"id":1808,"line":673,"column":4,"start":24281,"end":24364,"length":84,"parent_index":1796},"parameters":{"id":1809,"node_type":43,"src":{"id":1808,"line":673,"column":4,"start":24281,"end":24364,"length":84,"parent_index":1807},"parameters":[{"id":1810,"node_type":44,"src":{"id":1811,"line":673,"column":31,"start":24308,"end":24336,"length":29,"parent_index":1809},"scope":1807,"name":"previousOwner","type_name":{"id":1812,"node_type":30,"src":{"id":1813,"line":673,"column":31,"start":24308,"end":24314,"length":7,"parent_index":1810},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":1814,"node_type":44,"src":{"id":1815,"line":673,"column":62,"start":24339,"end":24362,"length":24,"parent_index":1809},"scope":1807,"name":"newOwner","type_name":{"id":1816,"node_type":30,"src":{"id":1817,"line":673,"column":62,"start":24339,"end":24345,"length":7,"parent_index":1814},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"name":"OwnershipTransferred","anonymous":false},{"id":1819,"node_type":42,"src":{"id":1820,"line":678,"column":4,"start":24467,"end":24616,"length":150,"parent_index":1796},"kind":11,"state_mutability":4,"visibility":1,"implemented":true,"modifiers":[],"parameters":{"id":1821,"node_type":43,"src":{"id":1820,"line":678,"column":4,"start":24467,"end":24616,"length":150,"parent_index":1819},"parameters":[],"parameter_types":[]},"return_parameters":{"id":1822,"node_type":43,"src":{"id":1820,"line":678,"column":4,"start":24467,"end":24616,"length":150,"parent_index":1819},"parameters":[],"parameter_types":[]},"scope":1796,"body":{"id":1823,"node_type":46,"kind":0,"src":{"id":1824,"line":678,"column":19,"start":24482,"end":24616,"length":135,"parent_index":1819},"implemented":true,"statements":[{"id":1825,"node_type":44,"src":{"id":1826,"line":679,"column":8,"start":24492,"end":24524,"length":33,"parent_index":1823},"assignments":[1827],"declarations":[{"is_constant":false,"id":1827,"state_mutability":1,"name":"msgSender","node_type":44,"scope":1823,"src":{"id":1828,"line":679,"column":8,"start":24492,"end":24508,"length":17,"parent_index":1825},"is_state_variable":false,"storage_location":1,"type_name":{"id":1829,"node_type":30,"src":{"id":1830,"line":679,"column":8,"start":24492,"end":24498,"length":7,"parent_index":1827},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":1831,"node_type":24,"kind":24,"src":{"id":1832,"line":679,"column":28,"start":24512,"end":24523,"length":12,"parent_index":1825},"argument_types":[],"arguments":[],"expression":{"id":1833,"node_type":16,"src":{"id":1834,"line":679,"column":28,"start":24512,"end":24521,"length":10,"parent_index":1831},"name":"_msgSender","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}},{"id":1835,"node_type":81,"src":{"id":1836,"line":680,"column":8,"start":24534,"end":24552,"length":19,"parent_index":1823},"expression":{"id":1837,"node_type":27,"src":{"id":1838,"line":680,"column":8,"start":24534,"end":24551,"length":18,"parent_index":1823},"operator":11,"left_expression":{"id":1839,"node_type":16,"src":{"id":1840,"line":680,"column":8,"start":24534,"end":24539,"length":6,"parent_index":1837},"name":"_owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1802,"is_pure":false},"right_expression":{"id":1841,"node_type":16,"src":{"id":1842,"line":680,"column":17,"start":24543,"end":24551,"length":9,"parent_index":1837},"name":"msgSender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1825,"is_pure":false},"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_address","type_string":"address"}},{"id":1843,"node_type":64,"src":{"id":1844,"line":681,"column":8,"start":24562,"end":24610,"length":49,"parent_index":1819},"arguments":[{"id":1845,"node_type":24,"kind":24,"src":{"id":1846,"line":681,"column":34,"start":24588,"end":24597,"length":10,"parent_index":1823},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1851,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1852,"line":681,"column":42,"start":24596,"end":24596,"length":1,"parent_index":1845},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1847,"node_type":16,"src":{"id":1848,"line":681,"column":34,"start":24588,"end":24594,"length":7,"parent_index":1845},"name":"address","type_name":{"id":1849,"node_type":30,"src":{"id":1850,"line":681,"column":34,"start":24588,"end":24594,"length":7,"parent_index":1847},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},{"id":1853,"node_type":16,"src":{"id":1854,"line":681,"column":46,"start":24600,"end":24608,"length":9,"parent_index":1823},"name":"msgSender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1825,"is_pure":false}],"expression":{"id":1855,"node_type":16,"src":{"id":1856,"line":681,"column":13,"start":24567,"end":24586,"length":20,"parent_index":1823},"name":"OwnershipTransferred","type_description":{"type_identifier":"t_event\u0026_Ownable_OwnershipTransferred_\u00261807","type_string":"event Ownable.OwnershipTransferred"},"overloaded_declarations":[],"referenced_declaration":1807,"is_pure":false}}]}},{"id":1858,"name":"owner","node_type":42,"kind":41,"src":{"id":1859,"line":687,"column":4,"start":24693,"end":24777,"length":85,"parent_index":1796},"body":{"id":1872,"node_type":46,"kind":0,"src":{"id":1873,"line":687,"column":59,"start":24748,"end":24777,"length":30,"parent_index":1858},"implemented":true,"statements":[{"id":1874,"node_type":47,"src":{"id":1875,"line":688,"column":8,"start":24758,"end":24771,"length":14,"parent_index":1858},"function_return_parameters":1858,"expression":{"id":1876,"node_type":16,"src":{"id":1877,"line":688,"column":15,"start":24765,"end":24770,"length":6,"parent_index":1872},"name":"_owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1802,"is_pure":false}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":1860,"node_type":43,"src":{"id":1861,"line":687,"column":50,"start":24739,"end":24745,"length":7,"parent_index":1858},"parameters":[{"id":1862,"node_type":44,"src":{"id":1863,"line":687,"column":50,"start":24739,"end":24745,"length":7,"parent_index":1860},"scope":1858,"name":"","type_name":{"id":1864,"node_type":30,"src":{"id":1865,"line":687,"column":50,"start":24739,"end":24745,"length":7,"parent_index":1862},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1866,"node_type":43,"src":{"id":1867,"line":687,"column":50,"start":24739,"end":24745,"length":7,"parent_index":1858},"parameters":[{"id":1868,"node_type":44,"src":{"id":1869,"line":687,"column":50,"start":24739,"end":24745,"length":7,"parent_index":1866},"scope":1858,"name":"","type_name":{"id":1870,"node_type":30,"src":{"id":1871,"line":687,"column":50,"start":24739,"end":24745,"length":7,"parent_index":1868},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":1796,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1879,"name":"onlyOwner","node_type":68,"src":{"id":1880,"line":694,"column":4,"start":24866,"end":24982,"length":117,"parent_index":1796},"visibility":1,"virtual":false,"parameters":{"id":1881,"node_type":43,"src":{"id":1880,"line":694,"column":4,"start":24866,"end":24982,"length":117,"parent_index":1796},"parameters":[],"parameter_types":[]},"body":{"id":1882,"node_type":46,"kind":0,"src":{"id":1883,"line":694,"column":25,"start":24887,"end":24982,"length":96,"parent_index":1879},"implemented":true,"statements":[{"id":1884,"node_type":24,"kind":24,"src":{"id":1885,"line":695,"column":8,"start":24897,"end":24964,"length":68,"parent_index":1882},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Ownable: caller is not the owner\""}],"arguments":[{"id":1888,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1889,"line":695,"column":16,"start":24905,"end":24927,"length":23,"parent_index":1884},"operator":11,"left_expression":{"id":1890,"node_type":24,"kind":24,"src":{"id":1891,"line":695,"column":16,"start":24905,"end":24911,"length":7,"parent_index":1888},"argument_types":[],"arguments":[],"expression":{"id":1892,"node_type":16,"src":{"id":1893,"line":695,"column":16,"start":24905,"end":24909,"length":5,"parent_index":1890},"name":"owner","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"right_expression":{"id":1894,"node_type":24,"kind":24,"src":{"id":1895,"line":695,"column":27,"start":24916,"end":24927,"length":12,"parent_index":1888},"argument_types":[],"arguments":[],"expression":{"id":1896,"node_type":16,"src":{"id":1897,"line":695,"column":27,"start":24916,"end":24925,"length":10,"parent_index":1894},"name":"_msgSender","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1898,"node_type":17,"kind":50,"value":"Ownable: caller is not the owner","hex_value":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","src":{"id":1899,"line":695,"column":41,"start":24930,"end":24963,"length":34,"parent_index":1884},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Ownable: caller is not the owner\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1886,"node_type":16,"src":{"id":1887,"line":695,"column":8,"start":24897,"end":24903,"length":7,"parent_index":1884},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1900,"node_type":82,"src":{"id":1901,"line":696,"column":8,"start":24975,"end":24975,"length":1,"parent_index":1882},"name":"_","type_description":{"type_identifier":"t_placeholder_literal","type_string":"t_placeholder"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}]}},{"id":1903,"name":"renounceOwnership","node_type":42,"kind":41,"src":{"id":1904,"line":706,"column":4,"start":25325,"end":25469,"length":145,"parent_index":1796},"body":{"id":1911,"node_type":46,"kind":0,"src":{"id":1912,"line":706,"column":58,"start":25379,"end":25469,"length":91,"parent_index":1903},"implemented":true,"statements":[{"id":1913,"node_type":64,"src":{"id":1914,"line":707,"column":8,"start":25389,"end":25434,"length":46,"parent_index":1903},"arguments":[{"id":1915,"node_type":16,"src":{"id":1916,"line":707,"column":34,"start":25415,"end":25420,"length":6,"parent_index":1911},"name":"_owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1802,"is_pure":false},{"id":1917,"node_type":24,"kind":24,"src":{"id":1918,"line":707,"column":42,"start":25423,"end":25432,"length":10,"parent_index":1911},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1923,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1924,"line":707,"column":50,"start":25431,"end":25431,"length":1,"parent_index":1917},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1919,"node_type":16,"src":{"id":1920,"line":707,"column":42,"start":25423,"end":25429,"length":7,"parent_index":1917},"name":"address","type_name":{"id":1921,"node_type":30,"src":{"id":1922,"line":707,"column":42,"start":25423,"end":25429,"length":7,"parent_index":1919},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}}],"expression":{"id":1925,"node_type":16,"src":{"id":1926,"line":707,"column":13,"start":25394,"end":25413,"length":20,"parent_index":1911},"name":"OwnershipTransferred","type_description":{"type_identifier":"t_event\u0026_Ownable_OwnershipTransferred_\u00261807","type_string":"event Ownable.OwnershipTransferred"},"overloaded_declarations":[],"referenced_declaration":1807,"is_pure":false}},{"id":1927,"node_type":81,"src":{"id":1928,"line":708,"column":8,"start":25444,"end":25463,"length":20,"parent_index":1911},"expression":{"id":1929,"node_type":27,"src":{"id":1930,"line":708,"column":8,"start":25444,"end":25462,"length":19,"parent_index":1911},"operator":11,"left_expression":{"id":1931,"node_type":16,"src":{"id":1932,"line":708,"column":8,"start":25444,"end":25449,"length":6,"parent_index":1929},"name":"_owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1802,"is_pure":false},"right_expression":{"id":1933,"node_type":24,"kind":24,"src":{"id":1934,"line":708,"column":17,"start":25453,"end":25462,"length":10,"parent_index":1929},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1939,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1940,"line":708,"column":25,"start":25461,"end":25461,"length":1,"parent_index":1933},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1935,"node_type":16,"src":{"id":1936,"line":708,"column":17,"start":25453,"end":25459,"length":7,"parent_index":1933},"name":"address","type_name":{"id":1937,"node_type":30,"src":{"id":1938,"line":708,"column":17,"start":25453,"end":25459,"length":7,"parent_index":1935},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_address","type_string":"address"}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[{"id":1905,"name":"onlyOwner","node_type":72,"kind":72,"src":{"id":1906,"line":706,"column":48,"start":25369,"end":25377,"length":9,"parent_index":1903},"argument_types":[],"arguments":[],"modifier_name":{"id":1907,"name":"onlyOwner","node_type":0,"src":{"id":1908,"line":706,"column":48,"start":25369,"end":25377,"length":9,"parent_index":1905}}}],"overrides":[],"parameters":{"id":1909,"node_type":43,"src":{"id":1904,"line":706,"column":4,"start":25325,"end":25469,"length":145,"parent_index":1903},"parameters":[],"parameter_types":[]},"return_parameters":{"id":1910,"node_type":43,"src":{"id":1904,"line":706,"column":4,"start":25325,"end":25469,"length":145,"parent_index":1903},"parameters":[],"parameter_types":[]},"scope":1796,"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},{"id":1942,"name":"transferOwnership","node_type":42,"kind":41,"src":{"id":1943,"line":715,"column":4,"start":25619,"end":25858,"length":240,"parent_index":1796},"body":{"id":1955,"node_type":46,"kind":0,"src":{"id":1956,"line":715,"column":74,"start":25689,"end":25858,"length":170,"parent_index":1942},"implemented":true,"statements":[{"id":1957,"node_type":24,"kind":24,"src":{"id":1958,"line":716,"column":8,"start":25699,"end":25771,"length":73,"parent_index":1955},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Ownable: new owner is the zero address\""}],"arguments":[{"id":1961,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":1962,"line":716,"column":16,"start":25707,"end":25728,"length":22,"parent_index":1957},"operator":12,"left_expression":{"id":1963,"node_type":16,"src":{"id":1964,"line":716,"column":16,"start":25707,"end":25714,"length":8,"parent_index":1961},"name":"newOwner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1963,"is_pure":false},"right_expression":{"id":1965,"node_type":24,"kind":24,"src":{"id":1966,"line":716,"column":28,"start":25719,"end":25728,"length":10,"parent_index":1961},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":1971,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":1972,"line":716,"column":36,"start":25727,"end":25727,"length":1,"parent_index":1965},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":1967,"node_type":16,"src":{"id":1968,"line":716,"column":28,"start":25719,"end":25725,"length":7,"parent_index":1965},"name":"address","type_name":{"id":1969,"node_type":30,"src":{"id":1970,"line":716,"column":28,"start":25719,"end":25725,"length":7,"parent_index":1967},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":1973,"node_type":17,"kind":50,"value":"Ownable: new owner is the zero address","hex_value":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","src":{"id":1974,"line":716,"column":40,"start":25731,"end":25770,"length":40,"parent_index":1957},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Ownable: new owner is the zero address\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":1959,"node_type":16,"src":{"id":1960,"line":716,"column":8,"start":25699,"end":25705,"length":7,"parent_index":1957},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":1975,"node_type":64,"src":{"id":1976,"line":717,"column":8,"start":25782,"end":25825,"length":44,"parent_index":1942},"arguments":[{"id":1977,"node_type":16,"src":{"id":1978,"line":717,"column":34,"start":25808,"end":25813,"length":6,"parent_index":1955},"name":"_owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1802,"is_pure":false},{"id":1979,"node_type":16,"src":{"id":1980,"line":717,"column":42,"start":25816,"end":25823,"length":8,"parent_index":1955},"name":"newOwner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1979,"is_pure":false}],"expression":{"id":1981,"node_type":16,"src":{"id":1982,"line":717,"column":13,"start":25787,"end":25806,"length":20,"parent_index":1955},"name":"OwnershipTransferred","type_description":{"type_identifier":"t_event\u0026_Ownable_OwnershipTransferred_\u00261807","type_string":"event Ownable.OwnershipTransferred"},"overloaded_declarations":[],"referenced_declaration":1807,"is_pure":false}},{"id":1983,"node_type":81,"src":{"id":1984,"line":718,"column":8,"start":25835,"end":25852,"length":18,"parent_index":1955},"expression":{"id":1985,"node_type":27,"src":{"id":1986,"line":718,"column":8,"start":25835,"end":25851,"length":17,"parent_index":1955},"operator":11,"left_expression":{"id":1987,"node_type":16,"src":{"id":1988,"line":718,"column":8,"start":25835,"end":25840,"length":6,"parent_index":1985},"name":"_owner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1802,"is_pure":false},"right_expression":{"id":1989,"node_type":16,"src":{"id":1990,"line":718,"column":17,"start":25844,"end":25851,"length":8,"parent_index":1985},"name":"newOwner","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1989,"is_pure":false},"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_address","type_string":"address"}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[{"id":1944,"name":"onlyOwner","node_type":72,"kind":72,"src":{"id":1945,"line":715,"column":64,"start":25679,"end":25687,"length":9,"parent_index":1942},"argument_types":[],"arguments":[],"modifier_name":{"id":1946,"name":"onlyOwner","node_type":0,"src":{"id":1947,"line":715,"column":64,"start":25679,"end":25687,"length":9,"parent_index":1944}}}],"overrides":[],"parameters":{"id":1948,"node_type":43,"src":{"id":1949,"line":715,"column":31,"start":25646,"end":25661,"length":16,"parent_index":1942},"parameters":[{"id":1950,"node_type":44,"src":{"id":1951,"line":715,"column":31,"start":25646,"end":25661,"length":16,"parent_index":1948},"scope":1942,"name":"newOwner","type_name":{"id":1952,"node_type":30,"src":{"id":1953,"line":715,"column":31,"start":25646,"end":25652,"length":7,"parent_index":1950},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1954,"node_type":43,"src":{"id":1943,"line":715,"column":4,"start":25619,"end":25858,"length":240,"parent_index":1942},"parameters":[],"parameter_types":[]},"scope":1796,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}],"linearized_base_contracts":[1700,1796,1795],"base_contracts":[{"id":1797,"node_type":62,"src":{"id":1798,"line":670,"column":29,"start":24238,"end":24244,"length":7,"parent_index":1796},"base_name":{"id":1799,"node_type":52,"src":{"id":1800,"line":670,"column":29,"start":24238,"end":24244,"length":7,"parent_index":1796},"name":"Context","referenced_declaration":1700}}],"contract_dependencies":[1700,1795]}],"src":{"id":1772,"line":670,"column":0,"start":24209,"end":25860,"length":1652,"parent_index":118}},{"id":1991,"base_contracts":[{"id":2022,"node_type":62,"src":{"id":2023,"line":736,"column":30,"start":26366,"end":26372,"length":7,"parent_index":2021},"base_name":{"id":2024,"node_type":52,"src":{"id":2025,"line":736,"column":30,"start":26366,"end":26372,"length":7,"parent_index":2021},"name":"IBeacon","referenced_declaration":119}},{"id":2026,"node_type":62,"src":{"id":2027,"line":736,"column":39,"start":26375,"end":26381,"length":7,"parent_index":2021},"base_name":{"id":2028,"node_type":52,"src":{"id":2029,"line":736,"column":39,"start":26375,"end":26381,"length":7,"parent_index":2021},"name":"Ownable","referenced_declaration":1771}}],"license":"MIT","exported_symbols":[{"id":1991,"name":"UpgradeableBeacon","absolute_path":"UpgradeableBeacon.sol"},{"id":251,"name":"Address","absolute_path":"Address.sol"},{"id":251,"name":"Address","absolute_path":"Address.sol"},{"id":1771,"name":"Ownable","absolute_path":"Ownable.sol"},{"id":119,"name":"IBeacon","absolute_path":"IBeacon.sol"},{"id":119,"name":"IBeacon","absolute_path":"IBeacon.sol"},{"id":119,"name":"IBeacon","absolute_path":"IBeacon.sol"},{"id":119,"name":"IBeacon","absolute_path":"IBeacon.sol"}],"absolute_path":"UpgradeableBeacon.sol","name":"UpgradeableBeacon","node_type":1,"nodes":[{"id":2009,"node_type":10,"src":{"id":2010,"line":724,"column":0,"start":25896,"end":25918,"length":23,"parent_index":1991},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":2018,"node_type":29,"src":{"id":0,"line":726,"column":0,"start":25921,"end":25943,"length":23,"parent_index":1991},"absolute_path":"IBeacon.sol","file":"./IBeacon.sol","scope":1991,"unit_alias":"","source_unit":1771},{"id":2019,"node_type":29,"src":{"id":0,"line":727,"column":0,"start":25945,"end":25978,"length":34,"parent_index":1991},"absolute_path":"Ownable.sol","file":"../../access/Ownable.sol","scope":1991,"unit_alias":"","source_unit":1771},{"id":2020,"node_type":29,"src":{"id":0,"line":728,"column":0,"start":25980,"end":26012,"length":33,"parent_index":1991},"absolute_path":"Address.sol","file":"../../utils/Address.sol","scope":1991,"unit_alias":"","source_unit":1771},{"id":2021,"name":"UpgradeableBeacon","node_type":35,"src":{"id":0,"line":736,"column":0,"start":26336,"end":27831,"length":1496,"parent_index":1991},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":2031,"name":"_implementation","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":2032,"line":737,"column":4,"start":26389,"end":26420,"length":32,"parent_index":2021},"scope":2021,"type_description":{"type_identifier":"t_address","type_string":"address"},"visibility":2,"storage_location":1,"mutability":1,"type_name":{"id":2033,"node_type":30,"src":{"id":2034,"line":737,"column":4,"start":26389,"end":26395,"length":7,"parent_index":2031},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0}},{"id":2036,"node_type":57,"src":{"id":2037,"line":742,"column":4,"start":26522,"end":26568,"length":47,"parent_index":2021},"parameters":{"id":2038,"node_type":43,"src":{"id":2037,"line":742,"column":4,"start":26522,"end":26568,"length":47,"parent_index":2036},"parameters":[{"id":2039,"node_type":44,"src":{"id":2040,"line":742,"column":19,"start":26537,"end":26566,"length":30,"parent_index":2038},"scope":2036,"name":"implementation","type_name":{"id":2041,"node_type":30,"src":{"id":2042,"line":742,"column":19,"start":26537,"end":26543,"length":7,"parent_index":2039},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"name":"Upgraded","anonymous":false},{"id":2044,"node_type":42,"src":{"id":2045,"line":748,"column":4,"start":26724,"end":26812,"length":89,"parent_index":2021},"kind":11,"state_mutability":4,"visibility":1,"implemented":true,"modifiers":[],"parameters":{"id":2046,"node_type":43,"src":{"id":2047,"line":748,"column":16,"start":26736,"end":26758,"length":23,"parent_index":2044},"parameters":[{"id":2048,"node_type":44,"src":{"id":2049,"line":748,"column":16,"start":26736,"end":26758,"length":23,"parent_index":2046},"scope":2044,"name":"implementation_","type_name":{"id":2050,"node_type":30,"src":{"id":2051,"line":748,"column":16,"start":26736,"end":26742,"length":7,"parent_index":2048},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2052,"node_type":43,"src":{"id":2045,"line":748,"column":4,"start":26724,"end":26812,"length":89,"parent_index":2044},"parameters":[],"parameter_types":[]},"scope":2021,"body":{"id":2053,"node_type":46,"kind":0,"src":{"id":2054,"line":748,"column":41,"start":26761,"end":26812,"length":52,"parent_index":2044},"implemented":true,"statements":[{"id":2055,"node_type":24,"kind":24,"src":{"id":2056,"line":749,"column":8,"start":26771,"end":26805,"length":35,"parent_index":2053},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2059,"node_type":16,"src":{"id":2060,"line":749,"column":27,"start":26790,"end":26804,"length":15,"parent_index":2055},"name":"implementation_","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2059,"is_pure":false}],"expression":{"id":2057,"node_type":16,"src":{"id":2058,"line":749,"column":8,"start":26771,"end":26788,"length":18,"parent_index":2055},"name":"_setImplementation","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}]}},{"id":2062,"name":"implementation","node_type":42,"kind":41,"src":{"id":2063,"line":755,"column":4,"start":26891,"end":27002,"length":112,"parent_index":2021},"body":{"id":2078,"node_type":46,"kind":0,"src":{"id":2079,"line":755,"column":77,"start":26964,"end":27002,"length":39,"parent_index":2062},"implemented":true,"statements":[{"id":2080,"node_type":47,"src":{"id":2081,"line":756,"column":8,"start":26974,"end":26996,"length":23,"parent_index":2062},"function_return_parameters":2062,"expression":{"id":2082,"node_type":16,"src":{"id":2083,"line":756,"column":15,"start":26981,"end":26995,"length":15,"parent_index":2078},"name":"_implementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2031,"is_pure":false}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":2064,"node_type":63,"name":"implementation","src":{"id":2065,"line":755,"column":50,"start":26937,"end":26944,"length":8,"parent_index":2062},"referenced_declaration":172,"type_descriptions":{"type_identifier":"t_address","type_string":"address"}}],"parameters":{"id":2066,"node_type":43,"src":{"id":2067,"line":755,"column":68,"start":26955,"end":26961,"length":7,"parent_index":2062},"parameters":[{"id":2068,"node_type":44,"src":{"id":2069,"line":755,"column":68,"start":26955,"end":26961,"length":7,"parent_index":2066},"scope":2062,"name":"","type_name":{"id":2070,"node_type":30,"src":{"id":2071,"line":755,"column":68,"start":26955,"end":26961,"length":7,"parent_index":2068},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2072,"node_type":43,"src":{"id":2073,"line":755,"column":68,"start":26955,"end":26961,"length":7,"parent_index":2062},"parameters":[{"id":2074,"node_type":44,"src":{"id":2075,"line":755,"column":68,"start":26955,"end":26961,"length":7,"parent_index":2072},"scope":2062,"name":"","type_name":{"id":2076,"node_type":30,"src":{"id":2077,"line":755,"column":68,"start":26955,"end":26961,"length":7,"parent_index":2074},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2021,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":2085,"name":"upgradeTo","node_type":42,"kind":41,"src":{"id":2086,"line":769,"column":4,"start":27262,"end":27428,"length":167,"parent_index":2021},"body":{"id":2098,"node_type":46,"kind":0,"src":{"id":2099,"line":769,"column":75,"start":27333,"end":27428,"length":96,"parent_index":2085},"implemented":true,"statements":[{"id":2100,"node_type":24,"kind":24,"src":{"id":2101,"line":770,"column":8,"start":27343,"end":27379,"length":37,"parent_index":2098},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2104,"node_type":16,"src":{"id":2105,"line":770,"column":27,"start":27362,"end":27378,"length":17,"parent_index":2100},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2104,"is_pure":false}],"expression":{"id":2102,"node_type":16,"src":{"id":2103,"line":770,"column":8,"start":27343,"end":27360,"length":18,"parent_index":2100},"name":"_setImplementation","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":2106,"node_type":64,"src":{"id":2107,"line":771,"column":8,"start":27390,"end":27422,"length":33,"parent_index":2085},"arguments":[{"id":2108,"node_type":16,"src":{"id":2109,"line":771,"column":22,"start":27404,"end":27420,"length":17,"parent_index":2098},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2108,"is_pure":false}],"expression":{"id":2110,"node_type":16,"src":{"id":2111,"line":771,"column":13,"start":27395,"end":27402,"length":8,"parent_index":2098},"name":"Upgraded","type_description":{"type_identifier":"t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929","type_string":"event ERC1967Upgrade.Upgraded"},"overloaded_declarations":[],"referenced_declaration":929,"is_pure":false}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[{"id":2087,"name":"onlyOwner","node_type":72,"kind":72,"src":{"id":2088,"line":769,"column":65,"start":27323,"end":27331,"length":9,"parent_index":2085},"argument_types":[],"arguments":[],"modifier_name":{"id":2089,"name":"onlyOwner","node_type":0,"src":{"id":2090,"line":769,"column":65,"start":27323,"end":27331,"length":9,"parent_index":2087}}}],"overrides":[],"parameters":{"id":2091,"node_type":43,"src":{"id":2092,"line":769,"column":23,"start":27281,"end":27305,"length":25,"parent_index":2085},"parameters":[{"id":2093,"node_type":44,"src":{"id":2094,"line":769,"column":23,"start":27281,"end":27305,"length":25,"parent_index":2091},"scope":2085,"name":"newImplementation","type_name":{"id":2095,"node_type":30,"src":{"id":2096,"line":769,"column":23,"start":27281,"end":27287,"length":7,"parent_index":2093},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2097,"node_type":43,"src":{"id":2086,"line":769,"column":4,"start":27262,"end":27428,"length":167,"parent_index":2085},"parameters":[],"parameter_types":[]},"scope":2021,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":2113,"name":"_setImplementation","node_type":42,"kind":41,"src":{"id":2114,"line":781,"column":4,"start":27604,"end":27829,"length":226,"parent_index":2021},"body":{"id":2122,"node_type":46,"kind":0,"src":{"id":2123,"line":781,"column":67,"start":27667,"end":27829,"length":163,"parent_index":2113},"implemented":true,"statements":[{"id":2124,"node_type":24,"kind":24,"src":{"id":2125,"line":782,"column":8,"start":27677,"end":27777,"length":101,"parent_index":2122},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"UpgradeableBeacon: implementation is not a contract\""}],"arguments":[{"id":2128,"node_type":24,"kind":24,"src":{"id":2129,"line":782,"column":16,"start":27685,"end":27721,"length":37,"parent_index":2124},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2134,"node_type":16,"src":{"id":2135,"line":782,"column":35,"start":27704,"end":27720,"length":17,"parent_index":2128},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2134,"is_pure":false}],"expression":{"id":2130,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2131,"line":782,"column":16,"start":27685,"end":27702,"length":18,"parent_index":2128},"expression":{"id":2132,"node_type":16,"src":{"id":2133,"line":782,"column":16,"start":27685,"end":27691,"length":7,"parent_index":2130},"name":"Address","type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":251,"is_pure":false},"member_name":"isContract","argument_types":[],"type_description":{"type_identifier":"t_contract$_Address_$251","type_string":"contract Address"}},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":2136,"node_type":17,"kind":50,"value":"UpgradeableBeacon: implementation is not a contract","hex_value":"5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","src":{"id":2137,"line":782,"column":55,"start":27724,"end":27776,"length":53,"parent_index":2124},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"UpgradeableBeacon: implementation is not a contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":2126,"node_type":16,"src":{"id":2127,"line":782,"column":8,"start":27677,"end":27683,"length":7,"parent_index":2124},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_string_literal$","type_string":"function(function(address),string memory)"}},{"id":2138,"node_type":81,"src":{"id":2139,"line":783,"column":8,"start":27788,"end":27823,"length":36,"parent_index":2122},"expression":{"id":2140,"node_type":27,"src":{"id":2141,"line":783,"column":8,"start":27788,"end":27822,"length":35,"parent_index":2122},"operator":11,"left_expression":{"id":2142,"node_type":16,"src":{"id":2143,"line":783,"column":8,"start":27788,"end":27802,"length":15,"parent_index":2140},"name":"_implementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2031,"is_pure":false},"right_expression":{"id":2144,"node_type":16,"src":{"id":2145,"line":783,"column":26,"start":27806,"end":27822,"length":17,"parent_index":2140},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2144,"is_pure":false},"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_address","type_string":"address"}}]},"implemented":true,"visibility":2,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2115,"node_type":43,"src":{"id":2116,"line":781,"column":32,"start":27632,"end":27656,"length":25,"parent_index":2113},"parameters":[{"id":2117,"node_type":44,"src":{"id":2118,"line":781,"column":32,"start":27632,"end":27656,"length":25,"parent_index":2115},"scope":2113,"name":"newImplementation","type_name":{"id":2119,"node_type":30,"src":{"id":2120,"line":781,"column":32,"start":27632,"end":27638,"length":7,"parent_index":2117},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2121,"node_type":43,"src":{"id":2114,"line":781,"column":4,"start":27604,"end":27829,"length":226,"parent_index":2113},"parameters":[],"parameter_types":[]},"scope":2021,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}],"linearized_base_contracts":[119,1771,2021,2018,2019,2020],"base_contracts":[{"id":2022,"node_type":62,"src":{"id":2023,"line":736,"column":30,"start":26366,"end":26372,"length":7,"parent_index":2021},"base_name":{"id":2024,"node_type":52,"src":{"id":2025,"line":736,"column":30,"start":26366,"end":26372,"length":7,"parent_index":2021},"name":"IBeacon","referenced_declaration":119}},{"id":2026,"node_type":62,"src":{"id":2027,"line":736,"column":39,"start":26375,"end":26381,"length":7,"parent_index":2021},"base_name":{"id":2028,"node_type":52,"src":{"id":2029,"line":736,"column":39,"start":26375,"end":26381,"length":7,"parent_index":2021},"name":"Ownable","referenced_declaration":1771}}],"contract_dependencies":[119,1771,2018,2019,2020]}],"src":{"id":1992,"line":736,"column":0,"start":26336,"end":27831,"length":1496,"parent_index":118}},{"id":2146,"base_contracts":[{"id":2181,"node_type":62,"src":{"id":2182,"line":800,"column":25,"start":28345,"end":28349,"length":5,"parent_index":2180},"base_name":{"id":2183,"node_type":52,"src":{"id":2184,"line":800,"column":25,"start":28345,"end":28349,"length":5,"parent_index":2180},"name":"Proxy","referenced_declaration":160}},{"id":2185,"node_type":62,"src":{"id":2186,"line":800,"column":32,"start":28352,"end":28365,"length":14,"parent_index":2180},"base_name":{"id":2187,"node_type":52,"src":{"id":2188,"line":800,"column":32,"start":28352,"end":28365,"length":14,"parent_index":2180},"name":"ERC1967Upgrade","referenced_declaration":902}}],"license":"MIT","exported_symbols":[{"id":2146,"name":"ERC1967Proxy","absolute_path":"ERC1967Proxy.sol"},{"id":902,"name":"ERC1967Upgrade","absolute_path":"ERC1967Upgrade.sol"},{"id":902,"name":"ERC1967Upgrade","absolute_path":"ERC1967Upgrade.sol"},{"id":160,"name":"Proxy","absolute_path":"Proxy.sol"},{"id":160,"name":"Proxy","absolute_path":"Proxy.sol"}],"absolute_path":"ERC1967Proxy.sol","name":"ERC1967Proxy","node_type":1,"nodes":[{"id":2166,"node_type":10,"src":{"id":2167,"line":789,"column":0,"start":27867,"end":27889,"length":23,"parent_index":2146},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":2178,"node_type":29,"src":{"id":0,"line":791,"column":0,"start":27892,"end":27913,"length":22,"parent_index":2146},"absolute_path":"Proxy.sol","file":"../Proxy.sol","scope":2146,"unit_alias":"","source_unit":1991},{"id":2179,"node_type":29,"src":{"id":0,"line":792,"column":0,"start":27915,"end":27944,"length":30,"parent_index":2146},"absolute_path":"ERC1967Upgrade.sol","file":"./ERC1967Upgrade.sol","scope":2146,"unit_alias":"","source_unit":1991},{"id":2180,"name":"ERC1967Proxy","node_type":35,"src":{"id":0,"line":800,"column":0,"start":28320,"end":29149,"length":830,"parent_index":2146},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":2190,"node_type":42,"src":{"id":2191,"line":807,"column":4,"start":28713,"end":28929,"length":217,"parent_index":2180},"kind":11,"state_mutability":3,"visibility":1,"implemented":true,"modifiers":[],"parameters":{"id":2192,"node_type":43,"src":{"id":2193,"line":807,"column":16,"start":28725,"end":28758,"length":34,"parent_index":2190},"parameters":[{"id":2194,"node_type":44,"src":{"id":2195,"line":807,"column":16,"start":28725,"end":28738,"length":14,"parent_index":2192},"scope":2190,"name":"_logic","type_name":{"id":2196,"node_type":30,"src":{"id":2197,"line":807,"column":16,"start":28725,"end":28731,"length":7,"parent_index":2194},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2198,"node_type":44,"src":{"id":2199,"line":807,"column":32,"start":28741,"end":28758,"length":18,"parent_index":2192},"scope":2190,"name":"_data","type_name":{"id":2200,"node_type":30,"src":{"id":2201,"line":807,"column":32,"start":28741,"end":28745,"length":5,"parent_index":2198},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":2202,"node_type":43,"src":{"id":2191,"line":807,"column":4,"start":28713,"end":28929,"length":217,"parent_index":2190},"parameters":[],"parameter_types":[]},"scope":2180,"body":{"id":2203,"node_type":46,"kind":0,"src":{"id":2204,"line":807,"column":60,"start":28769,"end":28929,"length":161,"parent_index":2190},"implemented":true,"statements":[{"id":2205,"node_type":24,"kind":24,"src":{"id":2206,"line":808,"column":8,"start":28779,"end":28873,"length":95,"parent_index":2203},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}],"arguments":[{"id":2209,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2210,"line":808,"column":15,"start":28786,"end":28872,"length":87,"parent_index":2205},"operator":11,"left_expression":{"id":2211,"node_type":16,"src":{"id":2212,"line":808,"column":15,"start":28786,"end":28805,"length":20,"parent_index":2209},"name":"_IMPLEMENTATION_SLOT","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"overloaded_declarations":[],"referenced_declaration":924,"is_pure":false},"right_expression":{"id":2213,"node_type":24,"kind":24,"src":{"id":2214,"line":808,"column":39,"start":28810,"end":28872,"length":63,"parent_index":2209},"argument_types":[{"type_identifier":"t_function_$_t_function__t_string_literal$","type_string":"function(function(string memory))"}],"arguments":[{"id":2219,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2220,"line":808,"column":47,"start":28818,"end":28871,"length":54,"parent_index":2213},"operator":2,"left_expression":{"id":2221,"node_type":24,"kind":24,"src":{"id":2222,"line":808,"column":47,"start":28818,"end":28867,"length":50,"parent_index":2219},"argument_types":[{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}],"arguments":[{"id":2227,"node_type":24,"kind":24,"src":{"id":2228,"line":808,"column":55,"start":28826,"end":28866,"length":41,"parent_index":2221},"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"eip1967.proxy.implementation\""}],"arguments":[{"id":2231,"node_type":17,"kind":50,"value":"eip1967.proxy.implementation","hex_value":"656970313936372e70726f78792e696d706c656d656e746174696f6e","src":{"id":2232,"line":808,"column":65,"start":28836,"end":28865,"length":30,"parent_index":2227},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"eip1967.proxy.implementation\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":2229,"node_type":16,"src":{"id":2230,"line":808,"column":55,"start":28826,"end":28834,"length":9,"parent_index":2227},"name":"keccak256","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}}],"expression":{"id":2223,"node_type":16,"src":{"id":2224,"line":808,"column":47,"start":28818,"end":28824,"length":7,"parent_index":2221},"name":"uint256","type_name":{"id":2225,"node_type":30,"src":{"id":2226,"line":808,"column":47,"start":28818,"end":28824,"length":7,"parent_index":2223},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_function__t_string_literal$","type_string":"function(function(string memory))"}},"right_expression":{"id":2233,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":2234,"line":808,"column":100,"start":28871,"end":28871,"length":1,"parent_index":2219},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_function_$_t_function__t_string_literal$","type_string":"function(function(string memory))"}}],"expression":{"id":2215,"node_type":16,"src":{"id":2216,"line":808,"column":39,"start":28810,"end":28816,"length":7,"parent_index":2213},"name":"bytes32","type_name":{"id":2217,"node_type":30,"src":{"id":2218,"line":808,"column":39,"start":28810,"end":28816,"length":7,"parent_index":2215},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_bytes32$","type_string":"function(bytes32)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function__t_string_literal$","type_string":"function(function(function(string memory)))"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}}],"expression":{"id":2207,"node_type":16,"src":{"id":2208,"line":808,"column":8,"start":28779,"end":28784,"length":6,"parent_index":2205},"name":"assert","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$","type_string":"function(bool)"}},{"id":2235,"node_type":24,"kind":24,"src":{"id":2236,"line":809,"column":8,"start":28884,"end":28922,"length":39,"parent_index":2203},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}],"arguments":[{"id":2239,"node_type":16,"src":{"id":2240,"line":809,"column":26,"start":28902,"end":28907,"length":6,"parent_index":2235},"name":"_logic","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2239,"is_pure":false},{"id":2241,"node_type":16,"src":{"id":2242,"line":809,"column":34,"start":28910,"end":28914,"length":5,"parent_index":2235},"name":"_data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":2241,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":2243,"node_type":17,"kind":61,"value":"false","hex_value":"66616c7365","src":{"id":2244,"line":809,"column":41,"start":28917,"end":28921,"length":5,"parent_index":2235},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":2237,"node_type":16,"src":{"id":2238,"line":809,"column":8,"start":28884,"end":28900,"length":17,"parent_index":2235},"name":"_upgradeToAndCall","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_bool$","type_string":"function(address,bytes,bool)"}}]}},{"id":2246,"name":"_implementation","node_type":42,"kind":41,"src":{"id":2247,"line":815,"column":4,"start":29008,"end":29147,"length":140,"parent_index":2180},"body":{"id":2262,"node_type":46,"kind":0,"src":{"id":2263,"line":815,"column":85,"start":29089,"end":29147,"length":59,"parent_index":2246},"implemented":true,"statements":[{"id":2264,"node_type":47,"src":{"id":2265,"line":816,"column":8,"start":29099,"end":29141,"length":43,"parent_index":2246},"function_return_parameters":2246,"expression":{"id":2266,"node_type":24,"kind":24,"src":{"id":2267,"line":816,"column":15,"start":29106,"end":29140,"length":35,"parent_index":2262},"argument_types":[],"arguments":[],"expression":{"id":2268,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2269,"line":816,"column":15,"start":29106,"end":29138,"length":33,"parent_index":2266},"expression":{"id":2270,"node_type":16,"src":{"id":2271,"line":816,"column":15,"start":29106,"end":29119,"length":14,"parent_index":2268},"name":"ERC1967Upgrade","type_description":{"type_identifier":"t_contract$_ERC1967Upgrade_$902","type_string":"contract ERC1967Upgrade"},"overloaded_declarations":[],"referenced_declaration":902,"is_pure":false},"member_name":"_getImplementation","argument_types":[],"type_description":{"type_identifier":"t_contract$_ERC1967Upgrade_$902","type_string":"contract ERC1967Upgrade"}},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[{"id":2248,"node_type":63,"name":"_implementation","src":{"id":2249,"line":815,"column":53,"start":29057,"end":29064,"length":8,"parent_index":2246},"referenced_declaration":2031,"type_descriptions":{"type_identifier":"t_address","type_string":"address"}}],"parameters":{"id":2250,"node_type":43,"src":{"id":2251,"line":815,"column":71,"start":29075,"end":29086,"length":12,"parent_index":2246},"parameters":[{"id":2252,"node_type":44,"src":{"id":2253,"line":815,"column":71,"start":29075,"end":29086,"length":12,"parent_index":2250},"scope":2246,"name":"impl","type_name":{"id":2254,"node_type":30,"src":{"id":2255,"line":815,"column":71,"start":29075,"end":29081,"length":7,"parent_index":2252},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2256,"node_type":43,"src":{"id":2257,"line":815,"column":71,"start":29075,"end":29086,"length":12,"parent_index":2246},"parameters":[{"id":2258,"node_type":44,"src":{"id":2259,"line":815,"column":71,"start":29075,"end":29086,"length":12,"parent_index":2256},"scope":2246,"name":"impl","type_name":{"id":2260,"node_type":30,"src":{"id":2261,"line":815,"column":71,"start":29075,"end":29081,"length":7,"parent_index":2258},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2180,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}],"linearized_base_contracts":[160,902,2180,2178,2179],"base_contracts":[{"id":2181,"node_type":62,"src":{"id":2182,"line":800,"column":25,"start":28345,"end":28349,"length":5,"parent_index":2180},"base_name":{"id":2183,"node_type":52,"src":{"id":2184,"line":800,"column":25,"start":28345,"end":28349,"length":5,"parent_index":2180},"name":"Proxy","referenced_declaration":160}},{"id":2185,"node_type":62,"src":{"id":2186,"line":800,"column":32,"start":28352,"end":28365,"length":14,"parent_index":2180},"base_name":{"id":2187,"node_type":52,"src":{"id":2188,"line":800,"column":32,"start":28352,"end":28365,"length":14,"parent_index":2180},"name":"ERC1967Upgrade","referenced_declaration":902}}],"contract_dependencies":[160,902,2178,2179]}],"src":{"id":2147,"line":800,"column":0,"start":28320,"end":29149,"length":830,"parent_index":118}},{"id":2272,"base_contracts":[{"id":2310,"node_type":62,"src":{"id":2311,"line":847,"column":40,"start":30741,"end":30752,"length":12,"parent_index":2309},"base_name":{"id":2312,"node_type":52,"src":{"id":2313,"line":847,"column":40,"start":30741,"end":30752,"length":12,"parent_index":2309},"name":"ERC1967Proxy","referenced_declaration":2146}}],"license":"MIT","exported_symbols":[{"id":2272,"name":"TransparentUpgradeableProxy","absolute_path":"TransparentUpgradeableProxy.sol"},{"id":2310,"name":"ERC1967Proxy","absolute_path":""}],"absolute_path":"TransparentUpgradeableProxy.sol","name":"TransparentUpgradeableProxy","node_type":1,"nodes":[{"id":2294,"node_type":10,"src":{"id":2295,"line":822,"column":0,"start":29185,"end":29207,"length":23,"parent_index":2272},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":2309,"name":"TransparentUpgradeableProxy","node_type":35,"src":{"id":0,"line":847,"column":0,"start":30701,"end":34226,"length":3526,"parent_index":2272},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":2315,"node_type":42,"src":{"id":2316,"line":852,"column":4,"start":30975,"end":31198,"length":224,"parent_index":2309},"kind":11,"state_mutability":3,"visibility":1,"implemented":true,"modifiers":[{"id":2332,"name":"ERC1967Proxy","node_type":72,"kind":72,"src":{"id":2333,"line":852,"column":76,"start":31047,"end":31073,"length":27,"parent_index":2315},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":2336,"node_type":16,"src":{"id":2337,"line":852,"column":89,"start":31060,"end":31065,"length":6,"parent_index":2332},"name":"_logic","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2336,"is_pure":false},{"id":2338,"node_type":16,"src":{"id":2339,"line":852,"column":97,"start":31068,"end":31072,"length":5,"parent_index":2332},"name":"_data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":2338,"is_pure":false}],"modifier_name":{"id":2334,"name":"ERC1967Proxy","node_type":0,"src":{"id":2335,"line":852,"column":76,"start":31047,"end":31058,"length":12,"parent_index":2332}}}],"parameters":{"id":2317,"node_type":43,"src":{"id":2318,"line":852,"column":16,"start":30987,"end":31036,"length":50,"parent_index":2315},"parameters":[{"id":2319,"node_type":44,"src":{"id":2320,"line":852,"column":16,"start":30987,"end":31000,"length":14,"parent_index":2317},"scope":2315,"name":"_logic","type_name":{"id":2321,"node_type":30,"src":{"id":2322,"line":852,"column":16,"start":30987,"end":30993,"length":7,"parent_index":2319},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2323,"node_type":44,"src":{"id":2324,"line":852,"column":32,"start":31003,"end":31016,"length":14,"parent_index":2317},"scope":2315,"name":"admin_","type_name":{"id":2325,"node_type":30,"src":{"id":2326,"line":852,"column":32,"start":31003,"end":31009,"length":7,"parent_index":2323},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2327,"node_type":44,"src":{"id":2328,"line":852,"column":48,"start":31019,"end":31036,"length":18,"parent_index":2317},"scope":2315,"name":"_data","type_name":{"id":2329,"node_type":30,"src":{"id":2330,"line":852,"column":48,"start":31019,"end":31023,"length":5,"parent_index":2327},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":2331,"node_type":43,"src":{"id":2316,"line":852,"column":4,"start":30975,"end":31198,"length":224,"parent_index":2315},"parameters":[],"parameter_types":[]},"scope":2309,"body":{"id":2340,"node_type":46,"kind":0,"src":{"id":2341,"line":852,"column":104,"start":31075,"end":31198,"length":124,"parent_index":2315},"implemented":true,"statements":[{"id":2342,"node_type":24,"kind":24,"src":{"id":2343,"line":853,"column":8,"start":31085,"end":31161,"length":77,"parent_index":2340},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}],"arguments":[{"id":2346,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2347,"line":853,"column":15,"start":31092,"end":31160,"length":69,"parent_index":2342},"operator":11,"left_expression":{"id":2348,"node_type":16,"src":{"id":2349,"line":853,"column":15,"start":31092,"end":31102,"length":11,"parent_index":2346},"name":"_ADMIN_SLOT","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"overloaded_declarations":[],"referenced_declaration":1308,"is_pure":false},"right_expression":{"id":2350,"node_type":24,"kind":24,"src":{"id":2351,"line":853,"column":30,"start":31107,"end":31160,"length":54,"parent_index":2346},"argument_types":[{"type_identifier":"t_function_$_t_function__t_string_literal$","type_string":"function(function(string memory))"}],"arguments":[{"id":2356,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2357,"line":853,"column":38,"start":31115,"end":31159,"length":45,"parent_index":2350},"operator":2,"left_expression":{"id":2358,"node_type":24,"kind":24,"src":{"id":2359,"line":853,"column":38,"start":31115,"end":31155,"length":41,"parent_index":2356},"argument_types":[{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}],"arguments":[{"id":2364,"node_type":24,"kind":24,"src":{"id":2365,"line":853,"column":46,"start":31123,"end":31154,"length":32,"parent_index":2358},"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"eip1967.proxy.admin\""}],"arguments":[{"id":2368,"node_type":17,"kind":50,"value":"eip1967.proxy.admin","hex_value":"656970313936372e70726f78792e61646d696e","src":{"id":2369,"line":853,"column":56,"start":31133,"end":31153,"length":21,"parent_index":2364},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"eip1967.proxy.admin\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":2366,"node_type":16,"src":{"id":2367,"line":853,"column":46,"start":31123,"end":31131,"length":9,"parent_index":2364},"name":"keccak256","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}}],"expression":{"id":2360,"node_type":16,"src":{"id":2361,"line":853,"column":38,"start":31115,"end":31121,"length":7,"parent_index":2358},"name":"uint256","type_name":{"id":2362,"node_type":30,"src":{"id":2363,"line":853,"column":38,"start":31115,"end":31121,"length":7,"parent_index":2360},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_function__t_string_literal$","type_string":"function(function(string memory))"}},"right_expression":{"id":2370,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":2371,"line":853,"column":82,"start":31159,"end":31159,"length":1,"parent_index":2356},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_function_$_t_function__t_string_literal$","type_string":"function(function(string memory))"}}],"expression":{"id":2352,"node_type":16,"src":{"id":2353,"line":853,"column":30,"start":31107,"end":31113,"length":7,"parent_index":2350},"name":"bytes32","type_name":{"id":2354,"node_type":30,"src":{"id":2355,"line":853,"column":30,"start":31107,"end":31113,"length":7,"parent_index":2352},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_bytes32$","type_string":"function(bytes32)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function__t_string_literal$","type_string":"function(function(function(string memory)))"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}}],"expression":{"id":2344,"node_type":16,"src":{"id":2345,"line":853,"column":8,"start":31085,"end":31090,"length":6,"parent_index":2342},"name":"assert","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$","type_string":"function(bool)"}},{"id":2372,"node_type":24,"kind":24,"src":{"id":2373,"line":854,"column":8,"start":31172,"end":31191,"length":20,"parent_index":2340},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2376,"node_type":16,"src":{"id":2377,"line":854,"column":21,"start":31185,"end":31190,"length":6,"parent_index":2372},"name":"admin_","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2376,"is_pure":false}],"expression":{"id":2374,"node_type":16,"src":{"id":2375,"line":854,"column":8,"start":31172,"end":31183,"length":12,"parent_index":2372},"name":"_changeAdmin","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}]}},{"id":2379,"name":"ifAdmin","node_type":68,"src":{"id":2380,"line":860,"column":4,"start":31340,"end":31473,"length":134,"parent_index":2309},"visibility":1,"virtual":false,"parameters":{"id":2381,"node_type":43,"src":{"id":2380,"line":860,"column":4,"start":31340,"end":31473,"length":134,"parent_index":2309},"parameters":[],"parameter_types":[]},"body":{"id":2382,"node_type":46,"kind":0,"src":{"id":2383,"line":860,"column":23,"start":31359,"end":31473,"length":115,"parent_index":2379},"implemented":true,"statements":[{"id":2384,"node_type":48,"src":{"id":2385,"line":861,"column":0,"start":31369,"end":31467,"length":99,"parent_index":2382},"condition":{"id":2386,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2387,"line":861,"column":12,"start":31373,"end":31397,"length":25,"parent_index":2384},"operator":11,"left_expression":{"id":2388,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2389,"line":861,"column":12,"start":31373,"end":31382,"length":10,"parent_index":2386},"expression":{"id":2390,"node_type":16,"src":{"id":2391,"line":861,"column":12,"start":31373,"end":31375,"length":3,"parent_index":2388},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"right_expression":{"id":2392,"node_type":24,"kind":24,"src":{"id":2393,"line":861,"column":26,"start":31387,"end":31397,"length":11,"parent_index":2386},"argument_types":[],"arguments":[],"expression":{"id":2394,"node_type":16,"src":{"id":2395,"line":861,"column":26,"start":31387,"end":31395,"length":9,"parent_index":2392},"name":"_getAdmin","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":2396,"node_type":46,"kind":0,"src":{"id":2397,"line":861,"column":39,"start":31400,"end":31425,"length":26,"parent_index":2379},"implemented":true,"statements":[{"id":2398,"node_type":82,"src":{"id":2399,"line":862,"column":12,"start":31414,"end":31414,"length":1,"parent_index":2396},"name":"_","type_description":{"type_identifier":"t_placeholder_literal","type_string":"t_placeholder"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}]}}]}},{"id":2401,"name":"admin","node_type":42,"kind":41,"src":{"id":2402,"line":877,"column":4,"start":31916,"end":32011,"length":96,"parent_index":2309},"body":{"id":2419,"node_type":46,"kind":0,"src":{"id":2420,"line":877,"column":63,"start":31975,"end":32011,"length":37,"parent_index":2401},"implemented":true,"statements":[{"id":2421,"node_type":81,"src":{"id":2422,"line":878,"column":8,"start":31985,"end":32005,"length":21,"parent_index":2419},"expression":{"id":2423,"node_type":27,"src":{"id":2424,"line":878,"column":8,"start":31985,"end":32004,"length":20,"parent_index":2419},"operator":11,"left_expression":{"id":2425,"node_type":16,"src":{"id":2426,"line":878,"column":8,"start":31985,"end":31990,"length":6,"parent_index":2423},"name":"admin_","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2425,"is_pure":false},"right_expression":{"id":2427,"node_type":24,"kind":24,"src":{"id":2428,"line":878,"column":17,"start":31994,"end":32004,"length":11,"parent_index":2423},"argument_types":[],"arguments":[],"expression":{"id":2429,"node_type":16,"src":{"id":2430,"line":878,"column":17,"start":31994,"end":32002,"length":9,"parent_index":2427},"name":"_getAdmin","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_address","type_string":"address"}}]},"implemented":true,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[{"id":2403,"name":"ifAdmin","node_type":72,"kind":72,"src":{"id":2404,"line":877,"column":30,"start":31942,"end":31948,"length":7,"parent_index":2401},"argument_types":[],"arguments":[],"modifier_name":{"id":2405,"name":"ifAdmin","node_type":0,"src":{"id":2406,"line":877,"column":30,"start":31942,"end":31948,"length":7,"parent_index":2403}}}],"overrides":[],"parameters":{"id":2407,"node_type":43,"src":{"id":2408,"line":877,"column":47,"start":31959,"end":31972,"length":14,"parent_index":2401},"parameters":[{"id":2409,"node_type":44,"src":{"id":2410,"line":877,"column":47,"start":31959,"end":31972,"length":14,"parent_index":2407},"scope":2401,"name":"admin_","type_name":{"id":2411,"node_type":30,"src":{"id":2412,"line":877,"column":47,"start":31959,"end":31965,"length":7,"parent_index":2409},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2413,"node_type":43,"src":{"id":2414,"line":877,"column":47,"start":31959,"end":31972,"length":14,"parent_index":2401},"parameters":[{"id":2415,"node_type":44,"src":{"id":2416,"line":877,"column":47,"start":31959,"end":31972,"length":14,"parent_index":2413},"scope":2401,"name":"admin_","type_name":{"id":2417,"node_type":30,"src":{"id":2418,"line":877,"column":47,"start":31959,"end":31965,"length":7,"parent_index":2415},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2309,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":2432,"name":"implementation","node_type":42,"kind":41,"src":{"id":2433,"line":890,"column":4,"start":32472,"end":32600,"length":129,"parent_index":2309},"body":{"id":2450,"node_type":46,"kind":0,"src":{"id":2451,"line":890,"column":81,"start":32549,"end":32600,"length":52,"parent_index":2432},"implemented":true,"statements":[{"id":2452,"node_type":81,"src":{"id":2453,"line":891,"column":8,"start":32559,"end":32594,"length":36,"parent_index":2450},"expression":{"id":2454,"node_type":27,"src":{"id":2455,"line":891,"column":8,"start":32559,"end":32593,"length":35,"parent_index":2450},"operator":11,"left_expression":{"id":2456,"node_type":16,"src":{"id":2457,"line":891,"column":8,"start":32559,"end":32573,"length":15,"parent_index":2454},"name":"implementation_","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2456,"is_pure":false},"right_expression":{"id":2458,"node_type":24,"kind":24,"src":{"id":2459,"line":891,"column":26,"start":32577,"end":32593,"length":17,"parent_index":2454},"argument_types":[],"arguments":[],"expression":{"id":2460,"node_type":16,"src":{"id":2461,"line":891,"column":26,"start":32577,"end":32591,"length":15,"parent_index":2458},"name":"_implementation","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_address","type_string":"address"}}]},"implemented":true,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[{"id":2434,"name":"ifAdmin","node_type":72,"kind":72,"src":{"id":2435,"line":890,"column":39,"start":32507,"end":32513,"length":7,"parent_index":2432},"argument_types":[],"arguments":[],"modifier_name":{"id":2436,"name":"ifAdmin","node_type":0,"src":{"id":2437,"line":890,"column":39,"start":32507,"end":32513,"length":7,"parent_index":2434}}}],"overrides":[],"parameters":{"id":2438,"node_type":43,"src":{"id":2439,"line":890,"column":56,"start":32524,"end":32546,"length":23,"parent_index":2432},"parameters":[{"id":2440,"node_type":44,"src":{"id":2441,"line":890,"column":56,"start":32524,"end":32546,"length":23,"parent_index":2438},"scope":2432,"name":"implementation_","type_name":{"id":2442,"node_type":30,"src":{"id":2443,"line":890,"column":56,"start":32524,"end":32530,"length":7,"parent_index":2440},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2444,"node_type":43,"src":{"id":2445,"line":890,"column":56,"start":32524,"end":32546,"length":23,"parent_index":2432},"parameters":[{"id":2446,"node_type":44,"src":{"id":2447,"line":890,"column":56,"start":32524,"end":32546,"length":23,"parent_index":2444},"scope":2432,"name":"implementation_","type_name":{"id":2448,"node_type":30,"src":{"id":2449,"line":890,"column":56,"start":32524,"end":32530,"length":7,"parent_index":2446},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2309,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":2463,"name":"changeAdmin","node_type":42,"kind":41,"src":{"id":2464,"line":901,"column":4,"start":32806,"end":32908,"length":103,"parent_index":2309},"body":{"id":2476,"node_type":46,"kind":0,"src":{"id":2477,"line":901,"column":68,"start":32870,"end":32908,"length":39,"parent_index":2463},"implemented":true,"statements":[{"id":2478,"node_type":24,"kind":24,"src":{"id":2479,"line":902,"column":8,"start":32880,"end":32901,"length":22,"parent_index":2476},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2482,"node_type":16,"src":{"id":2483,"line":902,"column":21,"start":32893,"end":32900,"length":8,"parent_index":2478},"name":"newAdmin","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2482,"is_pure":false}],"expression":{"id":2480,"node_type":16,"src":{"id":2481,"line":902,"column":8,"start":32880,"end":32891,"length":12,"parent_index":2478},"name":"_changeAdmin","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}]},"implemented":true,"visibility":4,"state_mutability":4,"virtual":true,"modifiers":[{"id":2465,"name":"ifAdmin","node_type":72,"kind":72,"src":{"id":2466,"line":901,"column":60,"start":32862,"end":32868,"length":7,"parent_index":2463},"argument_types":[],"arguments":[],"modifier_name":{"id":2467,"name":"ifAdmin","node_type":0,"src":{"id":2468,"line":901,"column":60,"start":32862,"end":32868,"length":7,"parent_index":2465}}}],"overrides":[],"parameters":{"id":2469,"node_type":43,"src":{"id":2470,"line":901,"column":25,"start":32827,"end":32842,"length":16,"parent_index":2463},"parameters":[{"id":2471,"node_type":44,"src":{"id":2472,"line":901,"column":25,"start":32827,"end":32842,"length":16,"parent_index":2469},"scope":2463,"name":"newAdmin","type_name":{"id":2473,"node_type":30,"src":{"id":2474,"line":901,"column":25,"start":32827,"end":32833,"length":7,"parent_index":2471},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2475,"node_type":43,"src":{"id":2464,"line":901,"column":4,"start":32806,"end":32908,"length":103,"parent_index":2463},"parameters":[],"parameter_types":[]},"scope":2309,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":2485,"name":"upgradeTo","node_type":42,"kind":41,"src":{"id":2486,"line":910,"column":4,"start":33069,"end":33202,"length":134,"parent_index":2309},"body":{"id":2498,"node_type":46,"kind":0,"src":{"id":2499,"line":910,"column":67,"start":33132,"end":33202,"length":71,"parent_index":2485},"implemented":true,"statements":[{"id":2500,"node_type":24,"kind":24,"src":{"id":2501,"line":911,"column":8,"start":33142,"end":33195,"length":54,"parent_index":2498},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"},{"type_identifier":"t_bool","type_string":"bool"}],"arguments":[{"id":2504,"node_type":16,"src":{"id":2505,"line":911,"column":26,"start":33160,"end":33176,"length":17,"parent_index":2500},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2504,"is_pure":false},{"id":2506,"node_type":24,"kind":24,"src":{"id":2507,"line":911,"column":45,"start":33179,"end":33187,"length":9,"parent_index":2500},"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"\""}],"arguments":[{"id":2512,"node_type":17,"kind":50,"src":{"id":2513,"line":911,"column":51,"start":33185,"end":33186,"length":2,"parent_index":2506},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":2508,"node_type":16,"src":{"id":2509,"line":911,"column":45,"start":33179,"end":33183,"length":5,"parent_index":2506},"name":"bytes","type_name":{"id":2510,"node_type":30,"src":{"id":2511,"line":911,"column":45,"start":33179,"end":33183,"length":5,"parent_index":2508},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"type_description":{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}},{"id":2514,"node_type":17,"kind":61,"value":"false","hex_value":"66616c7365","src":{"id":2515,"line":911,"column":56,"start":33190,"end":33194,"length":5,"parent_index":2500},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}]}],"expression":{"id":2502,"node_type":16,"src":{"id":2503,"line":911,"column":8,"start":33142,"end":33158,"length":17,"parent_index":2500},"name":"_upgradeToAndCall","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_function__t_string_literal$_t_bool$","type_string":"function(address,function(string memory),bool)"}}]},"implemented":true,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[{"id":2487,"name":"ifAdmin","node_type":72,"kind":72,"src":{"id":2488,"line":910,"column":59,"start":33124,"end":33130,"length":7,"parent_index":2485},"argument_types":[],"arguments":[],"modifier_name":{"id":2489,"name":"ifAdmin","node_type":0,"src":{"id":2490,"line":910,"column":59,"start":33124,"end":33130,"length":7,"parent_index":2487}}}],"overrides":[],"parameters":{"id":2491,"node_type":43,"src":{"id":2492,"line":910,"column":23,"start":33088,"end":33112,"length":25,"parent_index":2485},"parameters":[{"id":2493,"node_type":44,"src":{"id":2494,"line":910,"column":23,"start":33088,"end":33112,"length":25,"parent_index":2491},"scope":2485,"name":"newImplementation","type_name":{"id":2495,"node_type":30,"src":{"id":2496,"line":910,"column":23,"start":33088,"end":33094,"length":7,"parent_index":2493},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2497,"node_type":43,"src":{"id":2486,"line":910,"column":4,"start":33069,"end":33202,"length":134,"parent_index":2485},"parameters":[],"parameter_types":[]},"scope":2309,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":2517,"name":"upgradeToAndCall","node_type":42,"kind":41,"src":{"id":2518,"line":921,"column":4,"start":33579,"end":33742,"length":164,"parent_index":2309},"body":{"id":2534,"node_type":46,"kind":0,"src":{"id":2535,"line":921,"column":103,"start":33678,"end":33742,"length":65,"parent_index":2517},"implemented":true,"statements":[{"id":2536,"node_type":24,"kind":24,"src":{"id":2537,"line":922,"column":8,"start":33688,"end":33735,"length":48,"parent_index":2534},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bool","type_string":"bool"}],"arguments":[{"id":2540,"node_type":16,"src":{"id":2541,"line":922,"column":26,"start":33706,"end":33722,"length":17,"parent_index":2536},"name":"newImplementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2540,"is_pure":false},{"id":2542,"node_type":16,"src":{"id":2543,"line":922,"column":45,"start":33725,"end":33728,"length":4,"parent_index":2536},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":2542,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":2544,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":2545,"line":922,"column":51,"start":33731,"end":33734,"length":4,"parent_index":2536},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":2538,"node_type":16,"src":{"id":2539,"line":922,"column":8,"start":33688,"end":33704,"length":17,"parent_index":2536},"name":"_upgradeToAndCall","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_bool$","type_string":"function(address,bytes,bool)"}}]},"implemented":true,"visibility":4,"state_mutability":3,"virtual":false,"modifiers":[{"id":2519,"name":"ifAdmin","node_type":72,"kind":72,"src":{"id":2520,"line":921,"column":95,"start":33670,"end":33676,"length":7,"parent_index":2517},"argument_types":[],"arguments":[],"modifier_name":{"id":2521,"name":"ifAdmin","node_type":0,"src":{"id":2522,"line":921,"column":95,"start":33670,"end":33676,"length":7,"parent_index":2519}}}],"overrides":[],"parameters":{"id":2523,"node_type":43,"src":{"id":2524,"line":921,"column":30,"start":33605,"end":33650,"length":46,"parent_index":2517},"parameters":[{"id":2525,"node_type":44,"src":{"id":2526,"line":921,"column":30,"start":33605,"end":33629,"length":25,"parent_index":2523},"scope":2517,"name":"newImplementation","type_name":{"id":2527,"node_type":30,"src":{"id":2528,"line":921,"column":30,"start":33605,"end":33611,"length":7,"parent_index":2525},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2529,"node_type":44,"src":{"id":2530,"line":921,"column":57,"start":33632,"end":33650,"length":19,"parent_index":2523},"scope":2517,"name":"data","type_name":{"id":2531,"node_type":30,"src":{"id":2532,"line":921,"column":57,"start":33632,"end":33636,"length":5,"parent_index":2529},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":2533,"node_type":43,"src":{"id":2518,"line":921,"column":4,"start":33579,"end":33742,"length":164,"parent_index":2517},"parameters":[],"parameter_types":[]},"scope":2309,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$","type_string":"function(address,bytes)"}},{"id":2547,"name":"_admin","node_type":42,"kind":41,"src":{"id":2548,"line":928,"column":4,"start":33804,"end":33896,"length":93,"parent_index":2309},"body":{"id":2561,"node_type":46,"kind":0,"src":{"id":2562,"line":928,"column":62,"start":33862,"end":33896,"length":35,"parent_index":2547},"implemented":true,"statements":[{"id":2563,"node_type":47,"src":{"id":2564,"line":929,"column":8,"start":33872,"end":33890,"length":19,"parent_index":2547},"function_return_parameters":2547,"expression":{"id":2565,"node_type":24,"kind":24,"src":{"id":2566,"line":929,"column":15,"start":33879,"end":33889,"length":11,"parent_index":2561},"argument_types":[],"arguments":[],"expression":{"id":2567,"node_type":16,"src":{"id":2568,"line":929,"column":15,"start":33879,"end":33887,"length":9,"parent_index":2565},"name":"_getAdmin","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":2549,"node_type":43,"src":{"id":2550,"line":928,"column":53,"start":33853,"end":33859,"length":7,"parent_index":2547},"parameters":[{"id":2551,"node_type":44,"src":{"id":2552,"line":928,"column":53,"start":33853,"end":33859,"length":7,"parent_index":2549},"scope":2547,"name":"","type_name":{"id":2553,"node_type":30,"src":{"id":2554,"line":928,"column":53,"start":33853,"end":33859,"length":7,"parent_index":2551},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2555,"node_type":43,"src":{"id":2556,"line":928,"column":53,"start":33853,"end":33859,"length":7,"parent_index":2547},"parameters":[{"id":2557,"node_type":44,"src":{"id":2558,"line":928,"column":53,"start":33853,"end":33859,"length":7,"parent_index":2555},"scope":2547,"name":"","type_name":{"id":2559,"node_type":30,"src":{"id":2560,"line":928,"column":53,"start":33853,"end":33859,"length":7,"parent_index":2557},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2309,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":2570,"name":"_beforeFallback","node_type":42,"kind":41,"src":{"id":2571,"line":935,"column":4,"start":34018,"end":34224,"length":207,"parent_index":2309},"body":{"id":2576,"node_type":46,"kind":0,"src":{"id":2577,"line":935,"column":57,"start":34071,"end":34224,"length":154,"parent_index":2570},"implemented":true,"statements":[{"id":2578,"node_type":24,"kind":24,"src":{"id":2579,"line":936,"column":8,"start":34081,"end":34184,"length":104,"parent_index":2576},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\""}],"arguments":[{"id":2582,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2583,"line":936,"column":16,"start":34089,"end":34113,"length":25,"parent_index":2578},"operator":12,"left_expression":{"id":2584,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2585,"line":936,"column":16,"start":34089,"end":34098,"length":10,"parent_index":2582},"expression":{"id":2586,"node_type":16,"src":{"id":2587,"line":936,"column":16,"start":34089,"end":34091,"length":3,"parent_index":2584},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"right_expression":{"id":2588,"node_type":24,"kind":24,"src":{"id":2589,"line":936,"column":30,"start":34103,"end":34113,"length":11,"parent_index":2582},"argument_types":[],"arguments":[],"expression":{"id":2590,"node_type":16,"src":{"id":2591,"line":936,"column":30,"start":34103,"end":34111,"length":9,"parent_index":2588},"name":"_getAdmin","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":2592,"node_type":17,"kind":50,"value":"TransparentUpgradeableProxy: admin cannot fallback to proxy target","hex_value":"5472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574","src":{"id":2593,"line":936,"column":43,"start":34116,"end":34183,"length":68,"parent_index":2578},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":2580,"node_type":16,"src":{"id":2581,"line":936,"column":8,"start":34081,"end":34087,"length":7,"parent_index":2578},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":2594,"node_type":24,"kind":24,"src":{"id":2595,"line":937,"column":8,"start":34195,"end":34217,"length":23,"parent_index":2576},"argument_types":[],"arguments":[],"expression":{"id":2596,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2597,"line":937,"column":8,"start":34195,"end":34215,"length":21,"parent_index":2594},"expression":{"id":2598,"node_type":16,"src":{"id":2599,"line":937,"column":8,"start":34195,"end":34199,"length":5,"parent_index":2596},"name":"super","type_description":{"type_identifier":"t_magic_super","type_string":"super"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"_beforeFallback","argument_types":[],"type_description":{"type_identifier":"t_magic_super","type_string":"super"}},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[{"id":2572,"node_type":63,"name":"_beforeFallback","src":{"id":2573,"line":935,"column":48,"start":34062,"end":34069,"length":8,"parent_index":2570},"referenced_declaration":212,"type_descriptions":{"type_identifier":"t_function_$","type_string":"function()"}}],"parameters":{"id":2574,"node_type":43,"src":{"id":2571,"line":935,"column":4,"start":34018,"end":34224,"length":207,"parent_index":2570},"parameters":[],"parameter_types":[]},"return_parameters":{"id":2575,"node_type":43,"src":{"id":2571,"line":935,"column":4,"start":34018,"end":34224,"length":207,"parent_index":2570},"parameters":[],"parameter_types":[]},"scope":2309,"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}],"linearized_base_contracts":[2146,2309],"base_contracts":[{"id":2310,"node_type":62,"src":{"id":2311,"line":847,"column":40,"start":30741,"end":30752,"length":12,"parent_index":2309},"base_name":{"id":2312,"node_type":52,"src":{"id":2313,"line":847,"column":40,"start":30741,"end":30752,"length":12,"parent_index":2309},"name":"ERC1967Proxy","referenced_declaration":2146}}],"contract_dependencies":[2146]}],"src":{"id":2273,"line":847,"column":0,"start":30701,"end":34226,"length":3526,"parent_index":118}},{"id":2600,"base_contracts":[{"id":2642,"node_type":62,"src":{"id":2643,"line":952,"column":23,"start":34619,"end":34625,"length":7,"parent_index":2641},"base_name":{"id":2644,"node_type":52,"src":{"id":2645,"line":952,"column":23,"start":34619,"end":34625,"length":7,"parent_index":2641},"name":"Ownable","referenced_declaration":1771}}],"license":"MIT","exported_symbols":[{"id":2600,"name":"ProxyAdmin","absolute_path":"ProxyAdmin.sol"},{"id":1771,"name":"Ownable","absolute_path":"Ownable.sol"},{"id":1771,"name":"Ownable","absolute_path":"Ownable.sol"},{"id":2272,"name":"TransparentUpgradeableProxy","absolute_path":"TransparentUpgradeableProxy.sol"}],"absolute_path":"ProxyAdmin.sol","name":"ProxyAdmin","node_type":1,"nodes":[{"id":2624,"node_type":10,"src":{"id":2625,"line":943,"column":0,"start":34262,"end":34284,"length":23,"parent_index":2600},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":2639,"node_type":29,"src":{"id":0,"line":945,"column":0,"start":34287,"end":34329,"length":43,"parent_index":2600},"absolute_path":"TransparentUpgradeableProxy.sol","file":"./TransparentUpgradeableProxy.sol","scope":2600,"unit_alias":"","source_unit":2272},{"id":2640,"node_type":29,"src":{"id":0,"line":946,"column":0,"start":34331,"end":34364,"length":34,"parent_index":2600},"absolute_path":"Ownable.sol","file":"../../access/Ownable.sol","scope":2600,"unit_alias":"","source_unit":2272},{"id":2641,"name":"ProxyAdmin","node_type":35,"src":{"id":0,"line":952,"column":0,"start":34596,"end":36970,"length":2375,"parent_index":2600},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":2647,"name":"getProxyImplementation","node_type":42,"kind":41,"src":{"id":2648,"line":961,"column":4,"start":34797,"end":35233,"length":437,"parent_index":2641},"body":{"id":2663,"node_type":46,"kind":0,"src":{"id":2664,"line":961,"column":109,"start":34902,"end":35233,"length":332,"parent_index":2647},"implemented":true,"statements":[{"id":2665,"node_type":44,"src":{"id":2666,"line":964,"column":8,"start":35069,"end":35151,"length":83,"parent_index":2663},"assignments":[],"declarations":[],"initial_value":{"id":2667,"node_type":24,"kind":24,"src":{"id":2668,"line":964,"column":50,"start":35111,"end":35150,"length":40,"parent_index":2665},"argument_types":[{"type_identifier":"t_string_hex_literal","type_string":"literal_hex_string hex\"5c60da1b\""}],"arguments":[{"id":2679,"node_type":17,"kind":65,"value":"hex5c60da1b","hex_value":"6865783563363064613162","src":{"id":2680,"line":964,"column":76,"start":35137,"end":35149,"length":13,"parent_index":2667},"type_description":{"type_identifier":"t_string_hex_literal","type_string":"literal_hex_string hex\"5c60da1b\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":2669,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2670,"line":964,"column":50,"start":35111,"end":35135,"length":25,"parent_index":2667},"expression":{"id":2671,"node_type":24,"kind":24,"src":{"id":2672,"line":964,"column":50,"start":35111,"end":35124,"length":14,"parent_index":2669},"argument_types":[{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}],"arguments":[{"id":2677,"node_type":16,"src":{"id":2678,"line":964,"column":58,"start":35119,"end":35123,"length":5,"parent_index":2671},"name":"proxy","type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"overloaded_declarations":[],"referenced_declaration":2677,"is_pure":false}],"expression":{"id":2673,"node_type":16,"src":{"id":2674,"line":964,"column":50,"start":35111,"end":35117,"length":7,"parent_index":2671},"name":"address","type_name":{"id":2675,"node_type":30,"src":{"id":2676,"line":964,"column":50,"start":35111,"end":35117,"length":7,"parent_index":2673},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"staticcall","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"type_description":{"type_identifier":"t_function_$_t_string_hex_literal$","type_string":"function(literal_hex_string hex\"5c60da1b\")"}}},{"id":2681,"node_type":24,"kind":24,"src":{"id":2682,"line":965,"column":8,"start":35161,"end":35176,"length":16,"parent_index":2663},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":2685,"node_type":16,"src":{"id":2686,"line":965,"column":16,"start":35169,"end":35175,"length":7,"parent_index":2681},"name":"success","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":2683,"node_type":16,"src":{"id":2684,"line":965,"column":8,"start":35161,"end":35167,"length":7,"parent_index":2681},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},{"id":2687,"node_type":47,"src":{"id":2688,"line":966,"column":8,"start":35187,"end":35227,"length":41,"parent_index":2647},"function_return_parameters":2647,"expression":{"id":2689,"node_type":24,"kind":24,"src":{"id":2690,"line":966,"column":15,"start":35194,"end":35226,"length":33,"parent_index":2663},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_tuple_$_t_address$","type_string":"tuple(address)"}],"arguments":[{"id":2695,"node_type":16,"src":{"id":2696,"line":966,"column":26,"start":35205,"end":35214,"length":10,"parent_index":2689},"name":"returndata","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":2697,"node_type":60,"src":{"id":2698,"line":966,"column":38,"start":35217,"end":35225,"length":9,"parent_index":2689},"is_constant":false,"is_pure":false,"components":[{"id":2699,"node_type":16,"src":{"id":2700,"line":966,"column":39,"start":35218,"end":35224,"length":7,"parent_index":2697},"name":"address","type_name":{"id":2701,"node_type":30,"src":{"id":2702,"line":966,"column":39,"start":35218,"end":35224,"length":7,"parent_index":2699},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_address$","type_string":"tuple(address)"}}],"expression":{"id":2691,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2692,"line":966,"column":15,"start":35194,"end":35203,"length":10,"parent_index":2689},"expression":{"id":2693,"node_type":16,"src":{"id":2694,"line":966,"column":15,"start":35194,"end":35196,"length":3,"parent_index":2691},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"decode","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_tuple_$_t_address$","type_string":"function(function(),tuple(address))"}}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":2649,"node_type":43,"src":{"id":2650,"line":961,"column":36,"start":34829,"end":34861,"length":33,"parent_index":2647},"parameters":[{"id":2651,"node_type":44,"src":{"id":2652,"line":961,"column":36,"start":34829,"end":34861,"length":33,"parent_index":2649},"scope":2647,"name":"proxy","type_name":{"id":2653,"node_type":69,"src":{"id":2654,"line":961,"column":36,"start":34829,"end":34855,"length":27,"parent_index":2651},"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"path_node":{"id":2655,"name":"TransparentUpgradeableProxy","node_type":52,"referenced_declaration":2272,"src":{"id":2656,"line":961,"column":36,"start":34829,"end":34855,"length":27,"parent_index":2653}},"referenced_declaration":2272},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}]},"return_parameters":{"id":2657,"node_type":43,"src":{"id":2658,"line":961,"column":100,"start":34893,"end":34899,"length":7,"parent_index":2647},"parameters":[{"id":2659,"node_type":44,"src":{"id":2660,"line":961,"column":100,"start":34893,"end":34899,"length":7,"parent_index":2657},"scope":2647,"name":"","type_name":{"id":2661,"node_type":30,"src":{"id":2662,"line":961,"column":100,"start":34893,"end":34899,"length":7,"parent_index":2659},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2641,"type_description":{"type_identifier":"t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$","type_string":"function(contract TransparentUpgradeableProxy)"}},{"id":2704,"name":"getProxyAdmin","node_type":42,"kind":41,"src":{"id":2705,"line":976,"column":4,"start":35394,"end":35812,"length":419,"parent_index":2641},"body":{"id":2720,"node_type":46,"kind":0,"src":{"id":2721,"line":976,"column":100,"start":35490,"end":35812,"length":323,"parent_index":2704},"implemented":true,"statements":[{"id":2722,"node_type":44,"src":{"id":2723,"line":979,"column":8,"start":35648,"end":35730,"length":83,"parent_index":2720},"assignments":[],"declarations":[],"initial_value":{"id":2724,"node_type":24,"kind":24,"src":{"id":2725,"line":979,"column":50,"start":35690,"end":35729,"length":40,"parent_index":2722},"argument_types":[{"type_identifier":"t_string_hex_literal","type_string":"literal_hex_string hex\"f851a440\""}],"arguments":[{"id":2736,"node_type":17,"kind":65,"value":"hexf851a440","hex_value":"6865786638353161343430","src":{"id":2737,"line":979,"column":76,"start":35716,"end":35728,"length":13,"parent_index":2724},"type_description":{"type_identifier":"t_string_hex_literal","type_string":"literal_hex_string hex\"f851a440\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":2726,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2727,"line":979,"column":50,"start":35690,"end":35714,"length":25,"parent_index":2724},"expression":{"id":2728,"node_type":24,"kind":24,"src":{"id":2729,"line":979,"column":50,"start":35690,"end":35703,"length":14,"parent_index":2726},"argument_types":[{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}],"arguments":[{"id":2734,"node_type":16,"src":{"id":2735,"line":979,"column":58,"start":35698,"end":35702,"length":5,"parent_index":2728},"name":"proxy","type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"overloaded_declarations":[],"referenced_declaration":2734,"is_pure":false}],"expression":{"id":2730,"node_type":16,"src":{"id":2731,"line":979,"column":50,"start":35690,"end":35696,"length":7,"parent_index":2728},"name":"address","type_name":{"id":2732,"node_type":30,"src":{"id":2733,"line":979,"column":50,"start":35690,"end":35696,"length":7,"parent_index":2730},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"staticcall","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"type_description":{"type_identifier":"t_function_$_t_string_hex_literal$","type_string":"function(literal_hex_string hex\"f851a440\")"}}},{"id":2738,"node_type":24,"kind":24,"src":{"id":2739,"line":980,"column":8,"start":35740,"end":35755,"length":16,"parent_index":2720},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":2742,"node_type":16,"src":{"id":2743,"line":980,"column":16,"start":35748,"end":35754,"length":7,"parent_index":2738},"name":"success","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":2740,"node_type":16,"src":{"id":2741,"line":980,"column":8,"start":35740,"end":35746,"length":7,"parent_index":2738},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},{"id":2744,"node_type":47,"src":{"id":2745,"line":981,"column":8,"start":35766,"end":35806,"length":41,"parent_index":2704},"function_return_parameters":2704,"expression":{"id":2746,"node_type":24,"kind":24,"src":{"id":2747,"line":981,"column":15,"start":35773,"end":35805,"length":33,"parent_index":2720},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_tuple_$_t_address$","type_string":"tuple(address)"}],"arguments":[{"id":2752,"node_type":16,"src":{"id":2753,"line":981,"column":26,"start":35784,"end":35793,"length":10,"parent_index":2746},"name":"returndata","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":2754,"node_type":60,"src":{"id":2755,"line":981,"column":38,"start":35796,"end":35804,"length":9,"parent_index":2746},"is_constant":false,"is_pure":false,"components":[{"id":2756,"node_type":16,"src":{"id":2757,"line":981,"column":39,"start":35797,"end":35803,"length":7,"parent_index":2754},"name":"address","type_name":{"id":2758,"node_type":30,"src":{"id":2759,"line":981,"column":39,"start":35797,"end":35803,"length":7,"parent_index":2756},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_address$","type_string":"tuple(address)"}}],"expression":{"id":2748,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2749,"line":981,"column":15,"start":35773,"end":35782,"length":10,"parent_index":2746},"expression":{"id":2750,"node_type":16,"src":{"id":2751,"line":981,"column":15,"start":35773,"end":35775,"length":3,"parent_index":2748},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"decode","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_tuple_$_t_address$","type_string":"function(function(),tuple(address))"}}}]},"implemented":true,"visibility":3,"state_mutability":5,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":2706,"node_type":43,"src":{"id":2707,"line":976,"column":27,"start":35417,"end":35449,"length":33,"parent_index":2704},"parameters":[{"id":2708,"node_type":44,"src":{"id":2709,"line":976,"column":27,"start":35417,"end":35449,"length":33,"parent_index":2706},"scope":2704,"name":"proxy","type_name":{"id":2710,"node_type":69,"src":{"id":2711,"line":976,"column":27,"start":35417,"end":35443,"length":27,"parent_index":2708},"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"path_node":{"id":2712,"name":"TransparentUpgradeableProxy","node_type":52,"referenced_declaration":2272,"src":{"id":2713,"line":976,"column":27,"start":35417,"end":35443,"length":27,"parent_index":2710}},"referenced_declaration":2272},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}]},"return_parameters":{"id":2714,"node_type":43,"src":{"id":2715,"line":976,"column":91,"start":35481,"end":35487,"length":7,"parent_index":2704},"parameters":[{"id":2716,"node_type":44,"src":{"id":2717,"line":976,"column":91,"start":35481,"end":35487,"length":7,"parent_index":2714},"scope":2704,"name":"","type_name":{"id":2718,"node_type":30,"src":{"id":2719,"line":976,"column":91,"start":35481,"end":35487,"length":7,"parent_index":2716},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2641,"type_description":{"type_identifier":"t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$","type_string":"function(contract TransparentUpgradeableProxy)"}},{"id":2761,"name":"changeProxyAdmin","node_type":42,"kind":41,"src":{"id":2762,"line":991,"column":4,"start":35987,"end":36134,"length":148,"parent_index":2641},"body":{"id":2780,"node_type":46,"kind":0,"src":{"id":2781,"line":991,"column":108,"start":36091,"end":36134,"length":44,"parent_index":2761},"implemented":true,"statements":[{"id":2782,"node_type":24,"kind":24,"src":{"id":2783,"line":992,"column":8,"start":36101,"end":36127,"length":27,"parent_index":2780},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2788,"node_type":16,"src":{"id":2789,"line":992,"column":26,"start":36119,"end":36126,"length":8,"parent_index":2782},"name":"newAdmin","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2788,"is_pure":false}],"expression":{"id":2784,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2785,"line":992,"column":8,"start":36101,"end":36117,"length":17,"parent_index":2782},"expression":{"id":2786,"node_type":16,"src":{"id":2787,"line":992,"column":8,"start":36101,"end":36105,"length":5,"parent_index":2784},"name":"proxy","type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"overloaded_declarations":[],"referenced_declaration":2786,"is_pure":false},"member_name":"changeAdmin","argument_types":[],"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[{"id":2763,"name":"onlyOwner","node_type":72,"kind":72,"src":{"id":2764,"line":991,"column":98,"start":36081,"end":36089,"length":9,"parent_index":2761},"argument_types":[],"arguments":[],"modifier_name":{"id":2765,"name":"onlyOwner","node_type":0,"src":{"id":2766,"line":991,"column":98,"start":36081,"end":36089,"length":9,"parent_index":2763}}}],"overrides":[],"parameters":{"id":2767,"node_type":43,"src":{"id":2768,"line":991,"column":30,"start":36013,"end":36063,"length":51,"parent_index":2761},"parameters":[{"id":2769,"node_type":44,"src":{"id":2770,"line":991,"column":30,"start":36013,"end":36045,"length":33,"parent_index":2767},"scope":2761,"name":"proxy","type_name":{"id":2771,"node_type":69,"src":{"id":2772,"line":991,"column":30,"start":36013,"end":36039,"length":27,"parent_index":2769},"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"path_node":{"id":2773,"name":"TransparentUpgradeableProxy","node_type":52,"referenced_declaration":2272,"src":{"id":2774,"line":991,"column":30,"start":36013,"end":36039,"length":27,"parent_index":2771}},"referenced_declaration":2272},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2775,"node_type":44,"src":{"id":2776,"line":991,"column":65,"start":36048,"end":36063,"length":16,"parent_index":2767},"scope":2761,"name":"newAdmin","type_name":{"id":2777,"node_type":30,"src":{"id":2778,"line":991,"column":65,"start":36048,"end":36054,"length":7,"parent_index":2775},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2779,"node_type":43,"src":{"id":2762,"line":991,"column":4,"start":35987,"end":36134,"length":148,"parent_index":2761},"parameters":[],"parameter_types":[]},"scope":2641,"type_description":{"type_identifier":"t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$_t_address$","type_string":"function(contract TransparentUpgradeableProxy,address)"}},{"id":2791,"name":"upgrade","node_type":42,"kind":41,"src":{"id":2792,"line":1002,"column":4,"start":36340,"end":36488,"length":149,"parent_index":2641},"body":{"id":2810,"node_type":46,"kind":0,"src":{"id":2811,"line":1002,"column":105,"start":36441,"end":36488,"length":48,"parent_index":2791},"implemented":true,"statements":[{"id":2812,"node_type":24,"kind":24,"src":{"id":2813,"line":1003,"column":8,"start":36451,"end":36481,"length":31,"parent_index":2810},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2818,"node_type":16,"src":{"id":2819,"line":1003,"column":24,"start":36467,"end":36480,"length":14,"parent_index":2812},"name":"implementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2818,"is_pure":false}],"expression":{"id":2814,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2815,"line":1003,"column":8,"start":36451,"end":36465,"length":15,"parent_index":2812},"expression":{"id":2816,"node_type":16,"src":{"id":2817,"line":1003,"column":8,"start":36451,"end":36455,"length":5,"parent_index":2814},"name":"proxy","type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"overloaded_declarations":[],"referenced_declaration":2816,"is_pure":false},"member_name":"upgradeTo","argument_types":[],"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}]},"implemented":true,"visibility":3,"state_mutability":4,"virtual":true,"modifiers":[{"id":2793,"name":"onlyOwner","node_type":72,"kind":72,"src":{"id":2794,"line":1002,"column":95,"start":36431,"end":36439,"length":9,"parent_index":2791},"argument_types":[],"arguments":[],"modifier_name":{"id":2795,"name":"onlyOwner","node_type":0,"src":{"id":2796,"line":1002,"column":95,"start":36431,"end":36439,"length":9,"parent_index":2793}}}],"overrides":[],"parameters":{"id":2797,"node_type":43,"src":{"id":2798,"line":1002,"column":21,"start":36357,"end":36413,"length":57,"parent_index":2791},"parameters":[{"id":2799,"node_type":44,"src":{"id":2800,"line":1002,"column":21,"start":36357,"end":36389,"length":33,"parent_index":2797},"scope":2791,"name":"proxy","type_name":{"id":2801,"node_type":69,"src":{"id":2802,"line":1002,"column":21,"start":36357,"end":36383,"length":27,"parent_index":2799},"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"path_node":{"id":2803,"name":"TransparentUpgradeableProxy","node_type":52,"referenced_declaration":2272,"src":{"id":2804,"line":1002,"column":21,"start":36357,"end":36383,"length":27,"parent_index":2801}},"referenced_declaration":2272},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2805,"node_type":44,"src":{"id":2806,"line":1002,"column":56,"start":36392,"end":36413,"length":22,"parent_index":2797},"scope":2791,"name":"implementation","type_name":{"id":2807,"node_type":30,"src":{"id":2808,"line":1002,"column":56,"start":36392,"end":36398,"length":7,"parent_index":2805},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2809,"node_type":43,"src":{"id":2792,"line":1002,"column":4,"start":36340,"end":36488,"length":149,"parent_index":2791},"parameters":[],"parameter_types":[]},"scope":2641,"type_description":{"type_identifier":"t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$_t_address$","type_string":"function(contract TransparentUpgradeableProxy,address)"}},{"id":2821,"name":"upgradeAndCall","node_type":42,"kind":41,"src":{"id":2822,"line":1014,"column":4,"start":36755,"end":36968,"length":214,"parent_index":2641},"body":{"id":2844,"node_type":46,"kind":0,"src":{"id":2845,"line":1014,"column":139,"start":36890,"end":36968,"length":79,"parent_index":2821},"implemented":true,"statements":[{"id":2846,"node_type":24,"kind":24,"src":{"id":2847,"line":1015,"column":8,"start":36900,"end":36961,"length":62,"parent_index":2844},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":2854,"node_type":16,"src":{"id":2855,"line":1015,"column":49,"start":36941,"end":36954,"length":14,"parent_index":2846},"name":"implementation","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2854,"is_pure":false},{"id":2856,"node_type":16,"src":{"id":2857,"line":1015,"column":65,"start":36957,"end":36960,"length":4,"parent_index":2846},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":2856,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":2848,"node_type":93,"kind":93,"src":{"id":2849,"line":1015,"column":8,"start":36900,"end":36939,"length":40,"parent_index":2846},"expression":{"id":2850,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2851,"line":1015,"column":8,"start":36900,"end":36921,"length":22,"parent_index":2848},"expression":{"id":2852,"node_type":16,"src":{"id":2853,"line":1015,"column":8,"start":36900,"end":36904,"length":5,"parent_index":2850},"name":"proxy","type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"overloaded_declarations":[],"referenced_declaration":2852,"is_pure":false},"member_name":"upgradeToAndCall","argument_types":[],"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}},"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"}},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$","type_string":"function(address,bytes)"}}]},"implemented":true,"visibility":3,"state_mutability":3,"virtual":true,"modifiers":[{"id":2823,"name":"onlyOwner","node_type":72,"kind":72,"src":{"id":2824,"line":1014,"column":129,"start":36880,"end":36888,"length":9,"parent_index":2821},"argument_types":[],"arguments":[],"modifier_name":{"id":2825,"name":"onlyOwner","node_type":0,"src":{"id":2826,"line":1014,"column":129,"start":36880,"end":36888,"length":9,"parent_index":2823}}}],"overrides":[],"parameters":{"id":2827,"node_type":43,"src":{"id":2828,"line":1014,"column":28,"start":36779,"end":36854,"length":76,"parent_index":2821},"parameters":[{"id":2829,"node_type":44,"src":{"id":2830,"line":1014,"column":28,"start":36779,"end":36811,"length":33,"parent_index":2827},"scope":2821,"name":"proxy","type_name":{"id":2831,"node_type":69,"src":{"id":2832,"line":1014,"column":28,"start":36779,"end":36805,"length":27,"parent_index":2829},"type_description":{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},"path_node":{"id":2833,"name":"TransparentUpgradeableProxy","node_type":52,"referenced_declaration":2272,"src":{"id":2834,"line":1014,"column":28,"start":36779,"end":36805,"length":27,"parent_index":2831}},"referenced_declaration":2272},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2835,"node_type":44,"src":{"id":2836,"line":1014,"column":63,"start":36814,"end":36835,"length":22,"parent_index":2827},"scope":2821,"name":"implementation","type_name":{"id":2837,"node_type":30,"src":{"id":2838,"line":1014,"column":63,"start":36814,"end":36820,"length":7,"parent_index":2835},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2839,"node_type":44,"src":{"id":2840,"line":1014,"column":87,"start":36838,"end":36854,"length":17,"parent_index":2827},"scope":2821,"name":"data","type_name":{"id":2841,"node_type":30,"src":{"id":2842,"line":1014,"column":87,"start":36838,"end":36842,"length":5,"parent_index":2839},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_contract$_TransparentUpgradeableProxy_$2272","type_string":"contract TransparentUpgradeableProxy"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":2843,"node_type":43,"src":{"id":2822,"line":1014,"column":4,"start":36755,"end":36968,"length":214,"parent_index":2821},"parameters":[],"parameter_types":[]},"scope":2641,"type_description":{"type_identifier":"t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$_t_address$_t_bytes$","type_string":"function(contract TransparentUpgradeableProxy,address,bytes)"}}],"linearized_base_contracts":[1771,2641,2639,2640],"base_contracts":[{"id":2642,"node_type":62,"src":{"id":2643,"line":952,"column":23,"start":34619,"end":34625,"length":7,"parent_index":2641},"base_name":{"id":2644,"node_type":52,"src":{"id":2645,"line":952,"column":23,"start":34619,"end":34625,"length":7,"parent_index":2641},"name":"Ownable","referenced_declaration":1771}}],"contract_dependencies":[1771,2639,2640]}],"src":{"id":2601,"line":952,"column":0,"start":34596,"end":36970,"length":2375,"parent_index":118}},{"id":2858,"base_contracts":[{"id":2907,"node_type":62,"src":{"id":2908,"line":1029,"column":37,"start":37504,"end":37530,"length":27,"parent_index":2906},"base_name":{"id":2909,"node_type":52,"src":{"id":2910,"line":1029,"column":37,"start":37504,"end":37530,"length":27,"parent_index":2906},"name":"TransparentUpgradeableProxy","referenced_declaration":2272}}],"license":"MIT","exported_symbols":[{"id":2858,"name":"AdminUpgradeabilityProxy","absolute_path":""},{"id":2600,"name":"ProxyAdmin","absolute_path":"ProxyAdmin.sol"},{"id":2272,"name":"TransparentUpgradeableProxy","absolute_path":"TransparentUpgradeableProxy.sol"},{"id":2272,"name":"TransparentUpgradeableProxy","absolute_path":"TransparentUpgradeableProxy.sol"},{"id":2146,"name":"ERC1967Proxy","absolute_path":"ERC1967Proxy.sol"},{"id":1991,"name":"UpgradeableBeacon","absolute_path":"UpgradeableBeacon.sol"},{"id":1533,"name":"BeaconProxy","absolute_path":"BeaconProxy.sol"}],"absolute_path":"","name":"AdminUpgradeabilityProxy","node_type":1,"nodes":[{"id":2884,"node_type":10,"src":{"id":2885,"line":1020,"column":0,"start":37005,"end":37027,"length":23,"parent_index":2858},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":2901,"node_type":29,"src":{"id":0,"line":1022,"column":0,"start":37030,"end":37091,"length":62,"parent_index":2858},"absolute_path":"BeaconProxy.sol","file":"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol","scope":2858,"unit_alias":"","source_unit":2600},{"id":2902,"node_type":29,"src":{"id":0,"line":1023,"column":0,"start":37093,"end":37160,"length":68,"parent_index":2858},"absolute_path":"UpgradeableBeacon.sol","file":"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol","scope":2858,"unit_alias":"","source_unit":2600},{"id":2903,"node_type":29,"src":{"id":0,"line":1024,"column":0,"start":37162,"end":37225,"length":64,"parent_index":2858},"absolute_path":"ERC1967Proxy.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","scope":2858,"unit_alias":"","source_unit":2600},{"id":2904,"node_type":29,"src":{"id":0,"line":1025,"column":0,"start":37227,"end":37309,"length":83,"parent_index":2858},"absolute_path":"TransparentUpgradeableProxy.sol","file":"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","scope":2858,"unit_alias":"","source_unit":2600},{"id":2905,"node_type":29,"src":{"id":0,"line":1026,"column":0,"start":37311,"end":37376,"length":66,"parent_index":2858},"absolute_path":"ProxyAdmin.sol","file":"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol","scope":2858,"unit_alias":"","source_unit":2600},{"id":2906,"name":"AdminUpgradeabilityProxy","node_type":35,"src":{"id":0,"line":1029,"column":0,"start":37467,"end":37658,"length":192,"parent_index":2858},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":2912,"node_type":42,"src":{"id":2913,"line":1030,"column":4,"start":37538,"end":37656,"length":119,"parent_index":2906},"kind":11,"state_mutability":3,"visibility":1,"implemented":true,"modifiers":[{"id":2929,"name":"TransparentUpgradeableProxy","node_type":72,"kind":72,"src":{"id":2930,"line":1030,"column":73,"start":37607,"end":37653,"length":47,"parent_index":2912},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":2933,"node_type":16,"src":{"id":2934,"line":1030,"column":101,"start":37635,"end":37639,"length":5,"parent_index":2929},"name":"logic","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2933,"is_pure":false},{"id":2935,"node_type":16,"src":{"id":2936,"line":1030,"column":108,"start":37642,"end":37646,"length":5,"parent_index":2929},"name":"admin","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2935,"is_pure":false},{"id":2937,"node_type":16,"src":{"id":2938,"line":1030,"column":115,"start":37649,"end":37652,"length":4,"parent_index":2929},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":2937,"is_pure":false}],"modifier_name":{"id":2931,"name":"TransparentUpgradeableProxy","node_type":0,"src":{"id":2932,"line":1030,"column":73,"start":37607,"end":37633,"length":27,"parent_index":2929}}}],"parameters":{"id":2914,"node_type":43,"src":{"id":2915,"line":1030,"column":16,"start":37550,"end":37596,"length":47,"parent_index":2912},"parameters":[{"id":2916,"node_type":44,"src":{"id":2917,"line":1030,"column":16,"start":37550,"end":37562,"length":13,"parent_index":2914},"scope":2912,"name":"logic","type_name":{"id":2918,"node_type":30,"src":{"id":2919,"line":1030,"column":16,"start":37550,"end":37556,"length":7,"parent_index":2916},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2920,"node_type":44,"src":{"id":2921,"line":1030,"column":31,"start":37565,"end":37577,"length":13,"parent_index":2914},"scope":2912,"name":"admin","type_name":{"id":2922,"node_type":30,"src":{"id":2923,"line":1030,"column":31,"start":37565,"end":37571,"length":7,"parent_index":2920},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2924,"node_type":44,"src":{"id":2925,"line":1030,"column":46,"start":37580,"end":37596,"length":17,"parent_index":2914},"scope":2912,"name":"data","type_name":{"id":2926,"node_type":30,"src":{"id":2927,"line":1030,"column":46,"start":37580,"end":37584,"length":5,"parent_index":2924},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":2928,"node_type":43,"src":{"id":2913,"line":1030,"column":4,"start":37538,"end":37656,"length":119,"parent_index":2912},"parameters":[],"parameter_types":[]},"scope":2906,"body":{"id":2939,"node_type":46,"kind":0,"src":{"id":2940,"line":1030,"column":121,"start":37655,"end":37656,"length":2,"parent_index":2912},"implemented":true,"statements":[]}}],"linearized_base_contracts":[2272,2906,2901,2902,2903,2904,2905],"base_contracts":[{"id":2907,"node_type":62,"src":{"id":2908,"line":1029,"column":37,"start":37504,"end":37530,"length":27,"parent_index":2906},"base_name":{"id":2909,"node_type":52,"src":{"id":2910,"line":1029,"column":37,"start":37504,"end":37530,"length":27,"parent_index":2906},"name":"TransparentUpgradeableProxy","referenced_declaration":2272}}],"contract_dependencies":[2272,2901,2902,2903,2904,2905]}],"src":{"id":2859,"line":1029,"column":0,"start":37467,"end":37658,"length":192,"parent_index":118}}],"comments":[{"id":1,"src":{"id":0,"line":1,"column":0,"start":0,"end":30,"length":31,"parent_index":2},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":2,"src":{"id":0,"line":5,"column":0,"start":58,"end":136,"length":79,"parent_index":3},"node_type":32,"text":"/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */"},{"id":3,"src":{"id":0,"line":9,"column":4,"start":162,"end":323,"length":162,"parent_index":4},"node_type":32,"text":"/**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */"},{"id":4,"src":{"id":0,"line":17,"column":0,"start":391,"end":421,"length":31,"parent_index":5},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":5,"src":{"id":0,"line":21,"column":0,"start":449,"end":1046,"length":598,"parent_index":6},"node_type":32,"text":"/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */"},{"id":6,"src":{"id":0,"line":32,"column":4,"start":1078,"end":1268,"length":191,"parent_index":7},"node_type":32,"text":"/**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internall call site, it will return directly to the external caller.\n */"},{"id":7,"src":{"id":0,"line":38,"column":8,"start":1344,"end":1390,"length":47,"parent_index":8},"node_type":31,"text":"// solhint-disable-next-line no-inline-assembly"},{"id":8,"src":{"id":0,"line":59,"column":4,"start":2175,"end":2346,"length":172,"parent_index":9},"node_type":32,"text":"/**\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */"},{"id":9,"src":{"id":0,"line":65,"column":4,"start":2425,"end":2642,"length":218,"parent_index":10},"node_type":32,"text":"/**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internall call site, it will return directly to the external caller.\n */"},{"id":10,"src":{"id":0,"line":75,"column":4,"start":2764,"end":2949,"length":186,"parent_index":11},"node_type":32,"text":"/**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */"},{"id":11,"src":{"id":0,"line":83,"column":4,"start":3026,"end":3174,"length":149,"parent_index":12},"node_type":32,"text":"/**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */"},{"id":12,"src":{"id":0,"line":91,"column":4,"start":3250,"end":3519,"length":270,"parent_index":13},"node_type":32,"text":"/**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overriden should call `super._beforeFallback()`.\n */"},{"id":13,"src":{"id":0,"line":101,"column":0,"start":3580,"end":3610,"length":31,"parent_index":14},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":14,"src":{"id":0,"line":105,"column":0,"start":3638,"end":3704,"length":67,"parent_index":15},"node_type":32,"text":"/**\n * @dev Collection of functions related to the address type\n */"},{"id":15,"src":{"id":0,"line":109,"column":4,"start":3728,"end":4292,"length":565,"parent_index":16},"node_type":32,"text":"/**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */"},{"id":16,"src":{"id":0,"line":127,"column":8,"start":4374,"end":4443,"length":70,"parent_index":17},"node_type":31,"text":"// This method relies on extcodesize, which returns 0 for contracts in"},{"id":17,"src":{"id":0,"line":128,"column":8,"start":4453,"end":4516,"length":64,"parent_index":18},"node_type":31,"text":"// construction, since the code is only stored at the end of the"},{"id":18,"src":{"id":0,"line":129,"column":8,"start":4526,"end":4550,"length":25,"parent_index":19},"node_type":31,"text":"// constructor execution."},{"id":19,"src":{"id":0,"line":132,"column":8,"start":4583,"end":4629,"length":47,"parent_index":20},"node_type":31,"text":"// solhint-disable-next-line no-inline-assembly"},{"id":20,"src":{"id":0,"line":137,"column":4,"start":4717,"end":5622,"length":906,"parent_index":21},"node_type":32,"text":"/**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */"},{"id":21,"src":{"id":0,"line":156,"column":8,"start":5793,"end":5860,"length":68,"parent_index":22},"node_type":31,"text":"// solhint-disable-next-line avoid-low-level-calls, avoid-call-value"},{"id":22,"src":{"id":0,"line":161,"column":4,"start":6025,"end":6754,"length":730,"parent_index":23},"node_type":32,"text":"/**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain`call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */"},{"id":23,"src":{"id":0,"line":183,"column":4,"start":6937,"end":7147,"length":211,"parent_index":24},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */"},{"id":24,"src":{"id":0,"line":193,"column":4,"start":7352,"end":7702,"length":351,"parent_index":25},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */"},{"id":25,"src":{"id":0,"line":208,"column":4,"start":7938,"end":8174,"length":237,"parent_index":26},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */"},{"id":26,"src":{"id":0,"line":218,"column":8,"start":8493,"end":8542,"length":50,"parent_index":27},"node_type":31,"text":"// solhint-disable-next-line avoid-low-level-calls"},{"id":27,"src":{"id":0,"line":223,"column":4,"start":8709,"end":8874,"length":166,"parent_index":28},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */"},{"id":28,"src":{"id":0,"line":233,"column":4,"start":9083,"end":9255,"length":173,"parent_index":29},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */"},{"id":29,"src":{"id":0,"line":242,"column":8,"start":9477,"end":9526,"length":50,"parent_index":30},"node_type":31,"text":"// solhint-disable-next-line avoid-low-level-calls"},{"id":30,"src":{"id":0,"line":247,"column":4,"start":9683,"end":9850,"length":168,"parent_index":31},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */"},{"id":31,"src":{"id":0,"line":257,"column":4,"start":10060,"end":10234,"length":175,"parent_index":32},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */"},{"id":32,"src":{"id":0,"line":266,"column":8,"start":10455,"end":10504,"length":50,"parent_index":33},"node_type":31,"text":"// solhint-disable-next-line avoid-low-level-calls"},{"id":33,"src":{"id":0,"line":275,"column":12,"start":10877,"end":10929,"length":53,"parent_index":34},"node_type":31,"text":"// Look for revert reason and bubble it up if present"},{"id":34,"src":{"id":0,"line":277,"column":16,"start":10988,"end":11062,"length":75,"parent_index":35},"node_type":31,"text":"// The easiest way to bubble the revert reason is using memory via assembly"},{"id":35,"src":{"id":0,"line":279,"column":16,"start":11081,"end":11127,"length":47,"parent_index":36},"node_type":31,"text":"// solhint-disable-next-line no-inline-assembly"},{"id":36,"src":{"id":0,"line":291,"column":0,"start":11392,"end":11422,"length":31,"parent_index":37},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":37,"src":{"id":0,"line":295,"column":0,"start":11450,"end":12597,"length":1148,"parent_index":38},"node_type":32,"text":"/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */"},{"id":38,"src":{"id":0,"line":338,"column":4,"start":12842,"end":12928,"length":87,"parent_index":39},"node_type":32,"text":"/**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */"},{"id":39,"src":{"id":0,"line":347,"column":4,"start":13087,"end":13173,"length":87,"parent_index":40},"node_type":32,"text":"/**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */"},{"id":40,"src":{"id":0,"line":356,"column":4,"start":13332,"end":13418,"length":87,"parent_index":41},"node_type":32,"text":"/**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */"},{"id":41,"src":{"id":0,"line":365,"column":4,"start":13577,"end":13663,"length":87,"parent_index":42},"node_type":32,"text":"/**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */"},{"id":42,"src":{"id":0,"line":376,"column":0,"start":13821,"end":13851,"length":31,"parent_index":43},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":43,"src":{"id":0,"line":384,"column":0,"start":13984,"end":14219,"length":236,"parent_index":44},"node_type":32,"text":"/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */"},{"id":44,"src":{"id":0,"line":393,"column":4,"start":14260,"end":14333,"length":74,"parent_index":45},"node_type":31,"text":"// This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1"},{"id":45,"src":{"id":0,"line":396,"column":4,"start":14454,"end":14667,"length":214,"parent_index":46},"node_type":32,"text":"/**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */"},{"id":46,"src":{"id":0,"line":403,"column":4,"start":14795,"end":14862,"length":68,"parent_index":47},"node_type":32,"text":"/**\n * @dev Emitted when the implementation is upgraded.\n */"},{"id":47,"src":{"id":0,"line":408,"column":4,"start":14921,"end":14987,"length":67,"parent_index":48},"node_type":32,"text":"/**\n * @dev Returns the current implementation address.\n */"},{"id":48,"src":{"id":0,"line":415,"column":4,"start":15139,"end":15218,"length":80,"parent_index":49},"node_type":32,"text":"/**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */"},{"id":49,"src":{"id":0,"line":423,"column":4,"start":15489,"end":15583,"length":95,"parent_index":50},"node_type":32,"text":"/**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */"},{"id":50,"src":{"id":0,"line":433,"column":4,"start":15747,"end":15869,"length":123,"parent_index":51},"node_type":32,"text":"/**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */"},{"id":51,"src":{"id":0,"line":446,"column":4,"start":16196,"end":16356,"length":161,"parent_index":52},"node_type":32,"text":"/**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */"},{"id":52,"src":{"id":0,"line":454,"column":8,"start":16535,"end":16567,"length":33,"parent_index":53},"node_type":31,"text":"// Initial upgrade and setup call"},{"id":53,"src":{"id":0,"line":460,"column":8,"start":16746,"end":16796,"length":51,"parent_index":54},"node_type":31,"text":"// Perform rollback test if not already in progress"},{"id":54,"src":{"id":0,"line":463,"column":12,"start":16950,"end":17012,"length":63,"parent_index":55},"node_type":31,"text":"// Trigger rollback using upgradeTo from the new implementation"},{"id":55,"src":{"id":0,"line":473,"column":12,"start":17342,"end":17372,"length":31,"parent_index":56},"node_type":31,"text":"// Check rollback was effective"},{"id":56,"src":{"id":0,"line":475,"column":12,"start":17501,"end":17562,"length":62,"parent_index":57},"node_type":31,"text":"// Finally reset to the new implementation and log the upgrade"},{"id":57,"src":{"id":0,"line":481,"column":4,"start":17682,"end":17973,"length":292,"parent_index":58},"node_type":32,"text":"/**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */"},{"id":58,"src":{"id":0,"line":495,"column":4,"start":18298,"end":18486,"length":189,"parent_index":59},"node_type":32,"text":"/**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */"},{"id":59,"src":{"id":0,"line":502,"column":4,"start":18605,"end":18671,"length":67,"parent_index":60},"node_type":32,"text":"/**\n * @dev Emitted when the admin account has changed.\n */"},{"id":60,"src":{"id":0,"line":507,"column":4,"start":18743,"end":18792,"length":50,"parent_index":61},"node_type":32,"text":"/**\n * @dev Returns the current admin.\n */"},{"id":61,"src":{"id":0,"line":514,"column":4,"start":18926,"end":18996,"length":71,"parent_index":62},"node_type":32,"text":"/**\n * @dev Stores a new address in the EIP1967 admin slot.\n */"},{"id":62,"src":{"id":0,"line":522,"column":4,"start":19209,"end":19308,"length":100,"parent_index":63},"node_type":32,"text":"/**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */"},{"id":63,"src":{"id":0,"line":532,"column":4,"start":19455,"end":19686,"length":232,"parent_index":64},"node_type":32,"text":"/**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */"},{"id":64,"src":{"id":0,"line":538,"column":4,"start":19806,"end":19865,"length":60,"parent_index":65},"node_type":32,"text":"/**\n * @dev Emitted when the beacon is upgraded.\n */"},{"id":65,"src":{"id":0,"line":543,"column":4,"start":19922,"end":19972,"length":51,"parent_index":66},"node_type":32,"text":"/**\n * @dev Returns the current beacon.\n */"},{"id":66,"src":{"id":0,"line":550,"column":4,"start":20108,"end":20178,"length":71,"parent_index":67},"node_type":32,"text":"/**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */"},{"id":67,"src":{"id":0,"line":566,"column":0,"start":20593,"end":20623,"length":31,"parent_index":68},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":68,"src":{"id":0,"line":574,"column":0,"start":20739,"end":21091,"length":353,"parent_index":69},"node_type":32,"text":"/**\n * @dev This contract implements a proxy that gets the implementation address for each call from a {UpgradeableBeacon}.\n *\n * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\n * conflict with the storage layout of the implementation behind the proxy.\n *\n * _Available since v3.4._\n */"},{"id":69,"src":{"id":0,"line":583,"column":4,"start":21145,"end":21569,"length":425,"parent_index":70},"node_type":32,"text":"/**\n * @dev Initializes the proxy with `beacon`.\n *\n * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\n * will typically be an encoded function call, and allows initializating the storage of the proxy like a Solidity\n * constructor.\n *\n * Requirements:\n *\n * - `beacon` must be a contract with the interface {IBeacon}.\n */"},{"id":70,"src":{"id":0,"line":599,"column":4,"start":21786,"end":21844,"length":59,"parent_index":71},"node_type":32,"text":"/**\n * @dev Returns the current beacon address.\n */"},{"id":71,"src":{"id":0,"line":606,"column":4,"start":21951,"end":22042,"length":92,"parent_index":72},"node_type":32,"text":"/**\n * @dev Returns the current implementation address of the associated beacon.\n */"},{"id":72,"src":{"id":0,"line":613,"column":4,"start":22192,"end":22558,"length":367,"parent_index":73},"node_type":32,"text":"/**\n * @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\n *\n * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\n *\n * Requirements:\n *\n * - `beacon` must be a contract.\n * - The implementation returned by `beacon` must be a contract.\n */"},{"id":73,"src":{"id":0,"line":628,"column":0,"start":22701,"end":22731,"length":31,"parent_index":74},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":74,"src":{"id":0,"line":632,"column":0,"start":22759,"end":23253,"length":495,"parent_index":75},"node_type":32,"text":"/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */"},{"id":75,"src":{"id":0,"line":648,"column":14,"start":23472,"end":23589,"length":118,"parent_index":76},"node_type":31,"text":"// silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691"},{"id":76,"src":{"id":0,"line":653,"column":0,"start":23625,"end":23655,"length":31,"parent_index":77},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":77,"src":{"id":0,"line":658,"column":0,"start":23714,"end":24207,"length":494,"parent_index":78},"node_type":32,"text":"/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */"},{"id":78,"src":{"id":0,"line":675,"column":4,"start":24371,"end":24461,"length":91,"parent_index":79},"node_type":32,"text":"/**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */"},{"id":79,"src":{"id":0,"line":684,"column":4,"start":24623,"end":24687,"length":65,"parent_index":80},"node_type":32,"text":"/**\n * @dev Returns the address of the current owner.\n */"},{"id":80,"src":{"id":0,"line":691,"column":4,"start":24784,"end":24860,"length":77,"parent_index":81},"node_type":32,"text":"/**\n * @dev Throws if called by any account other than the owner.\n */"},{"id":81,"src":{"id":0,"line":699,"column":4,"start":24989,"end":25319,"length":331,"parent_index":82},"node_type":32,"text":"/**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */"},{"id":82,"src":{"id":0,"line":711,"column":4,"start":25476,"end":25613,"length":138,"parent_index":83},"node_type":32,"text":"/**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */"},{"id":83,"src":{"id":0,"line":722,"column":0,"start":25863,"end":25893,"length":31,"parent_index":84},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":84,"src":{"id":0,"line":730,"column":0,"start":26015,"end":26334,"length":320,"parent_index":85},"node_type":32,"text":"/**\n * @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\n * implementation contract, which is where they will delegate all function calls.\n *\n * An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.\n */"},{"id":85,"src":{"id":0,"line":739,"column":4,"start":26427,"end":26516,"length":90,"parent_index":86},"node_type":32,"text":"/**\n * @dev Emitted when the implementation returned by the beacon is changed.\n */"},{"id":86,"src":{"id":0,"line":744,"column":4,"start":26575,"end":26718,"length":144,"parent_index":87},"node_type":32,"text":"/**\n * @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the\n * beacon.\n */"},{"id":87,"src":{"id":0,"line":752,"column":4,"start":26819,"end":26885,"length":67,"parent_index":88},"node_type":32,"text":"/**\n * @dev Returns the current implementation address.\n */"},{"id":88,"src":{"id":0,"line":759,"column":4,"start":27009,"end":27256,"length":248,"parent_index":89},"node_type":32,"text":"/**\n * @dev Upgrades the beacon to a new implementation.\n *\n * Emits an {Upgraded} event.\n *\n * Requirements:\n *\n * - msg.sender must be the owner of the contract.\n * - `newImplementation` must be a contract.\n */"},{"id":89,"src":{"id":0,"line":774,"column":4,"start":27435,"end":27598,"length":164,"parent_index":90},"node_type":32,"text":"/**\n * @dev Sets the implementation contract address for this beacon\n *\n * Requirements:\n *\n * - `newImplementation` must be a contract.\n */"},{"id":90,"src":{"id":0,"line":787,"column":0,"start":27834,"end":27864,"length":31,"parent_index":91},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":91,"src":{"id":0,"line":794,"column":0,"start":27947,"end":28318,"length":372,"parent_index":92},"node_type":32,"text":"/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */"},{"id":92,"src":{"id":0,"line":801,"column":4,"start":28373,"end":28707,"length":335,"parent_index":93},"node_type":32,"text":"/**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\n */"},{"id":93,"src":{"id":0,"line":812,"column":4,"start":28936,"end":29002,"length":67,"parent_index":94},"node_type":32,"text":"/**\n * @dev Returns the current implementation address.\n */"},{"id":94,"src":{"id":0,"line":820,"column":0,"start":29152,"end":29182,"length":31,"parent_index":95},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":95,"src":{"id":0,"line":826,"column":0,"start":29249,"end":30699,"length":1451,"parent_index":96},"node_type":32,"text":"/**\n * @dev This contract implements a proxy that is upgradeable by an admin.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches one of the admin functions exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n * \"admin cannot fallback to proxy target\".\n *\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n * to sudden errors when trying to call a function from the proxy implementation.\n *\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n */"},{"id":96,"src":{"id":0,"line":848,"column":4,"start":30760,"end":30969,"length":210,"parent_index":97},"node_type":32,"text":"/**\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\n */"},{"id":97,"src":{"id":0,"line":857,"column":4,"start":31205,"end":31334,"length":130,"parent_index":98},"node_type":32,"text":"/**\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n */"},{"id":98,"src":{"id":0,"line":868,"column":4,"start":31480,"end":31910,"length":431,"parent_index":99},"node_type":32,"text":"/**\n * @dev Returns the current admin.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */"},{"id":99,"src":{"id":0,"line":881,"column":4,"start":32018,"end":32466,"length":449,"parent_index":100},"node_type":32,"text":"/**\n * @dev Returns the current implementation.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */"},{"id":100,"src":{"id":0,"line":894,"column":4,"start":32607,"end":32800,"length":194,"parent_index":101},"node_type":32,"text":"/**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\n */"},{"id":101,"src":{"id":0,"line":905,"column":4,"start":32915,"end":33063,"length":149,"parent_index":102},"node_type":32,"text":"/**\n * @dev Upgrade the implementation of the proxy.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\n */"},{"id":102,"src":{"id":0,"line":914,"column":4,"start":33209,"end":33573,"length":365,"parent_index":103},"node_type":32,"text":"/**\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n * proxied contract.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\n */"},{"id":103,"src":{"id":0,"line":925,"column":4,"start":33749,"end":33798,"length":50,"parent_index":104},"node_type":32,"text":"/**\n * @dev Returns the current admin.\n */"},{"id":104,"src":{"id":0,"line":932,"column":4,"start":33903,"end":34012,"length":110,"parent_index":105},"node_type":32,"text":"/**\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\n */"},{"id":105,"src":{"id":0,"line":941,"column":0,"start":34229,"end":34259,"length":31,"parent_index":106},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":106,"src":{"id":0,"line":948,"column":0,"start":34367,"end":34594,"length":228,"parent_index":107},"node_type":32,"text":"/**\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\n */"},{"id":107,"src":{"id":0,"line":954,"column":4,"start":34634,"end":34791,"length":158,"parent_index":108},"node_type":32,"text":"/**\n * @dev Returns the current implementation of `proxy`.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */"},{"id":108,"src":{"id":0,"line":962,"column":8,"start":34912,"end":34996,"length":85,"parent_index":109},"node_type":31,"text":"// We need to manually run the static call since the getter cannot be flagged as view"},{"id":109,"src":{"id":0,"line":963,"column":8,"start":35006,"end":35059,"length":54,"parent_index":110},"node_type":31,"text":"// bytes4(keccak256(\"implementation()\")) == 0x5c60da1b"},{"id":110,"src":{"id":0,"line":969,"column":4,"start":35240,"end":35388,"length":149,"parent_index":111},"node_type":32,"text":"/**\n * @dev Returns the current admin of `proxy`.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */"},{"id":111,"src":{"id":0,"line":977,"column":8,"start":35500,"end":35584,"length":85,"parent_index":112},"node_type":31,"text":"// We need to manually run the static call since the getter cannot be flagged as view"},{"id":112,"src":{"id":0,"line":978,"column":8,"start":35594,"end":35638,"length":45,"parent_index":113},"node_type":31,"text":"// bytes4(keccak256(\"admin()\")) == 0xf851a440"},{"id":113,"src":{"id":0,"line":984,"column":4,"start":35819,"end":35981,"length":163,"parent_index":114},"node_type":32,"text":"/**\n * @dev Changes the admin of `proxy` to `newAdmin`.\n *\n * Requirements:\n *\n * - This contract must be the current admin of `proxy`.\n */"},{"id":114,"src":{"id":0,"line":995,"column":4,"start":36141,"end":36334,"length":194,"parent_index":115},"node_type":32,"text":"/**\n * @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */"},{"id":115,"src":{"id":0,"line":1006,"column":4,"start":36495,"end":36749,"length":255,"parent_index":116},"node_type":32,"text":"/**\n * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See\n * {TransparentUpgradeableProxy-upgradeToAndCall}.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */"},{"id":116,"src":{"id":0,"line":1019,"column":0,"start":36973,"end":37003,"length":31,"parent_index":117},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":117,"src":{"id":0,"line":1028,"column":0,"start":37379,"end":37465,"length":87,"parent_index":118},"node_type":31,"text":"// Kept for backwards compatibility with older versions of Hardhat and Truffle plugins."}]} \ No newline at end of file diff --git a/data/tests/contracts/cheelee/TransparentUpgradeableProxy.solgo.ast.proto.json b/data/tests/contracts/cheelee/TransparentUpgradeableProxy.solgo.ast.proto.json index 7f5144b7..ab392fce 100644 --- a/data/tests/contracts/cheelee/TransparentUpgradeableProxy.solgo.ast.proto.json +++ b/data/tests/contracts/cheelee/TransparentUpgradeableProxy.solgo.ast.proto.json @@ -1,29255 +1,28692 @@ { - "id": 118, - "entry_source_unit": 2272, - "node_type": 80, - "source_units": [ - { - "id": 119, - "license": "MIT", - "name": "IBeacon", - "absolute_path": "IBeacon.sol", - "exported_symbols": [ - { - "id": 119, - "name": "IBeacon", - "absolute_path": "IBeacon.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "121", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "55", - "id": "122", - "length": "23", - "line": "3", - "parentIndex": "119", - "start": "33" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "fullyImplemented": true, - "id": "143", - "kind": "KIND_LIBRARY", - "linearizedBaseContracts": [ - "143" - ], - "name": "IBeacon", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "159", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "386", - "id": "146", - "length": "58", - "line": "14", - "parentIndex": "145", - "start": "329" - } - }, - "id": "145", - "kind": "KIND_FUNCTION", - "name": "implementation", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "147", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "149", - "nodeType": "VARIABLE_DECLARATION", - "scope": "149", - "src": { - "column": "53", - "end": "384", - "id": "150", - "length": "7", - "line": "14", - "parentIndex": "147", - "start": "378" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "151", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "53", - "end": "384", - "id": "152", - "length": "7", - "line": "14", - "parentIndex": "149", - "start": "378" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "53", - "end": "384", - "id": "148", - "length": "7", - "line": "14", - "parentIndex": "145", - "start": "378" - } - }, - "returnParameters": { - "id": "153", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "155", - "nodeType": "VARIABLE_DECLARATION", - "scope": "155", - "src": { - "column": "53", - "end": "384", - "id": "156", - "length": "7", - "line": "14", - "parentIndex": "153", - "start": "378" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "157", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "53", - "end": "384", - "id": "158", - "length": "7", - "line": "14", - "parentIndex": "155", - "start": "378" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "53", - "end": "384", - "id": "154", - "length": "7", - "line": "14", - "parentIndex": "145", - "start": "378" - } - }, - "scope": "143", - "src": { - "column": "4", - "end": "386", - "id": "146", - "length": "58", - "line": "14", - "parentIndex": "143", - "start": "329" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "EXTERNAL" - } - } - ], - "src": { - "end": "388", - "length": "251", - "line": "8", - "parentIndex": "119", - "start": "138" - } - } - } - ] - }, - "src": { - "id": 120, - "line": 8, - "start": 138, - "end": 388, - "length": 251, - "parent_index": 118 - } - }, - { - "id": 160, - "license": "MIT", - "name": "Proxy", - "absolute_path": "Proxy.sol", - "exported_symbols": [ - { - "id": 160, - "name": "Proxy", - "absolute_path": "Proxy.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "164", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "446", - "id": "165", - "length": "23", - "line": "19", - "parentIndex": "160", - "start": "424" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "fullyImplemented": true, - "id": "166", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "166" - ], - "name": "Proxy", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "177", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "64", - "end": "2168", - "id": "178", - "length": "835", - "line": "37", - "parentIndex": "168", - "start": "1334" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assembly", - "value": { - "id": "179", - "nodeType": "ASSEMBLY_STATEMENT", - "src": { - "column": "8", - "end": "2162", - "id": "180", - "length": "763", - "line": "39", - "parentIndex": "177", - "start": "1400" - } - } - } - ] - }, - "id": "168", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_delegate", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "170", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "172", - "name": "implementation", - "nodeType": "VARIABLE_DECLARATION", - "scope": "172", - "src": { - "column": "23", - "end": "1314", - "id": "173", - "length": "22", - "line": "37", - "parentIndex": "170", - "start": "1293" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "174", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "1299", - "id": "175", - "length": "7", - "line": "37", - "parentIndex": "172", - "start": "1293" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "1314", - "id": "171", - "length": "22", - "line": "37", - "parentIndex": "168", - "start": "1293" - } - }, - "returnParameters": { - "id": "176", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "2168", - "id": "169", - "length": "895", - "line": "37", - "parentIndex": "168", - "start": "1274" - } - }, - "scope": "166", - "src": { - "column": "4", - "end": "2168", - "id": "169", - "length": "895", - "line": "37", - "parentIndex": "166", - "start": "1274" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "202", - "nodeType": "BLOCK", - "src": { - "column": "4", - "end": "2418", - "id": "189", - "length": "67", - "line": "63", - "parentIndex": "188", - "start": "2352" - } - }, - "id": "188", - "kind": "KIND_FUNCTION", - "name": "_implementation", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "190", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "192", - "nodeType": "VARIABLE_DECLARATION", - "scope": "192", - "src": { - "column": "62", - "end": "2416", - "id": "193", - "length": "7", - "line": "63", - "parentIndex": "190", - "start": "2410" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "194", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "2416", - "id": "195", - "length": "7", - "line": "63", - "parentIndex": "192", - "start": "2410" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "62", - "end": "2416", - "id": "191", - "length": "7", - "line": "63", - "parentIndex": "188", - "start": "2410" - } - }, - "returnParameters": { - "id": "196", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "198", - "nodeType": "VARIABLE_DECLARATION", - "scope": "198", - "src": { - "column": "62", - "end": "2416", - "id": "199", - "length": "7", - "line": "63", - "parentIndex": "196", - "start": "2410" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "200", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "2416", - "id": "201", - "length": "7", - "line": "63", - "parentIndex": "198", - "start": "2410" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "62", - "end": "2416", - "id": "197", - "length": "7", - "line": "63", - "parentIndex": "188", - "start": "2410" - } - }, - "scope": "166", - "src": { - "column": "4", - "end": "2418", - "id": "189", - "length": "67", - "line": "63", - "parentIndex": "166", - "start": "2352" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "208", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "42", - "end": "2757", - "id": "209", - "length": "72", - "line": "70", - "parentIndex": "204", - "start": "2686" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "212", - "name": "_beforeFallback", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "2710", - "id": "213", - "length": "15", - "line": "71", - "parentIndex": "210", - "start": "2696" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "210", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "2712", - "id": "211", - "length": "17", - "line": "71", - "parentIndex": "208", - "start": "2696" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "218", - "name": "_implementation", - "nodeType": "IDENTIFIER", - "src": { - "column": "18", - "end": "2747", - "id": "219", - "length": "15", - "line": "72", - "parentIndex": "216", - "start": "2733" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "216", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "18", - "end": "2749", - "id": "217", - "length": "17", - "line": "72", - "parentIndex": "214", - "start": "2733" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - ], - "id": "220", - "name": "_delegate", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "2731", - "id": "221", - "length": "9", - "line": "72", - "parentIndex": "214", - "start": "2723" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "id": "214", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "2750", - "id": "215", - "length": "28", - "line": "72", - "parentIndex": "208", - "start": "2723" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$", - "typeString": "function(function())" - } - } - } - ] - }, - "id": "204", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_fallback", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "206", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "2757", - "id": "205", - "length": "110", - "line": "70", - "parentIndex": "204", - "start": "2648" - } - }, - "returnParameters": { - "id": "207", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "2757", - "id": "205", - "length": "110", - "line": "70", - "parentIndex": "204", - "start": "2648" - } - }, - "scope": "166", - "src": { - "column": "4", - "end": "2757", - "id": "205", - "length": "110", - "line": "70", - "parentIndex": "166", - "start": "2648" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Fallback", - "value": { - "body": { - "id": "227", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "41", - "end": "3019", - "id": "228", - "length": "28", - "line": "79", - "parentIndex": "223", - "start": "2992" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "231", - "name": "_fallback", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "3010", - "id": "232", - "length": "9", - "line": "80", - "parentIndex": "229", - "start": "3002" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "229", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "3012", - "id": "230", - "length": "11", - "line": "80", - "parentIndex": "227", - "start": "3002" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - } - ] - }, - "id": "223", - "implemented": true, - "kind": "FALLBACK", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "225", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "3019", - "id": "224", - "length": "65", - "line": "79", - "parentIndex": "223", - "start": "2955" - } - }, - "returnParameters": { - "id": "226", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "3019", - "id": "224", - "length": "65", - "line": "79", - "parentIndex": "223", - "start": "2955" - } - }, - "src": { - "column": "4", - "end": "3019", - "id": "224", - "length": "65", - "line": "79", - "parentIndex": "166", - "start": "2955" - }, - "stateMutability": "PAYABLE", - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Receive", - "value": { - "body": { - "id": "238", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "40", - "end": "3243", - "id": "239", - "length": "28", - "line": "87", - "parentIndex": "234", - "start": "3216" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "242", - "name": "_fallback", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "3234", - "id": "243", - "length": "9", - "line": "88", - "parentIndex": "240", - "start": "3226" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "240", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "3236", - "id": "241", - "length": "11", - "line": "88", - "parentIndex": "238", - "start": "3226" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - } - ] - }, - "id": "234", - "implemented": true, - "kind": "RECEIVE", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "236", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "3243", - "id": "235", - "length": "64", - "line": "87", - "parentIndex": "234", - "start": "3180" - } - }, - "returnParameters": { - "id": "237", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "3243", - "id": "235", - "length": "64", - "line": "87", - "parentIndex": "234", - "start": "3180" - } - }, - "src": { - "column": "4", - "end": "3243", - "id": "235", - "length": "64", - "line": "87", - "parentIndex": "166", - "start": "3180" - }, - "stateMutability": "NONPAYABLE", - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "249", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "48", - "end": "3575", - "id": "250", - "length": "7", - "line": "97", - "parentIndex": "245", - "start": "3569" - } - }, - "id": "245", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_beforeFallback", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "247", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "3575", - "id": "246", - "length": "51", - "line": "97", - "parentIndex": "245", - "start": "3525" - } - }, - "returnParameters": { - "id": "248", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "3575", - "id": "246", - "length": "51", - "line": "97", - "parentIndex": "245", - "start": "3525" - } - }, - "scope": "166", - "src": { - "column": "4", - "end": "3575", - "id": "246", - "length": "51", - "line": "97", - "parentIndex": "166", - "start": "3525" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - "virtual": true, - "visibility": "INTERNAL" - } - } - ], - "src": { - "end": "3577", - "length": "2530", - "line": "31", - "parentIndex": "160", - "start": "1048" - } - } - } - ] - }, - "src": { - "id": 161, - "line": 31, - "start": 1048, - "end": 3577, - "length": 2530, - "parent_index": 118 - } - }, - { - "id": 251, - "license": "MIT", - "name": "Address", - "absolute_path": "Address.sol", - "exported_symbols": [ - { - "id": 251, - "name": "Address", - "absolute_path": "Address.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "257", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "3635", - "id": "258", - "length": "23", - "line": "103", - "parentIndex": "251", - "start": "3613" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "fullyImplemented": true, - "id": "259", - "kind": "KIND_LIBRARY", - "linearizedBaseContracts": [ - "259" - ], - "name": "Address", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "275", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "70", - "end": "4710", - "id": "276", - "length": "347", - "line": "126", - "parentIndex": "261", - "start": "4364" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "279" - ], - "declarations": [ - { - "id": "279", - "mutability": "MUTABLE", - "name": "size", - "nodeType": "VARIABLE_DECLARATION", - "scope": "275", - "src": { - "column": "8", - "end": "4572", - "id": "280", - "length": "12", - "line": "131", - "parentIndex": "277", - "start": "4561" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "281", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "4567", - "id": "282", - "length": "7", - "line": "131", - "parentIndex": "279", - "start": "4561" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "277", - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "4573", - "id": "278", - "length": "13", - "line": "131", - "parentIndex": "275", - "start": "4561" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assembly", - "value": { - "id": "283", - "nodeType": "ASSEMBLY_STATEMENT", - "src": { - "column": "8", - "end": "4679", - "id": "284", - "length": "41", - "line": "133", - "parentIndex": "275", - "start": "4639" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "290", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "292", - "name": "size", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "277", - "src": { - "column": "15", - "end": "4699", - "id": "293", - "length": "4", - "line": "134", - "parentIndex": "290", - "start": "4696" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "294", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "22", - "end": "4703", - "id": "295", - "length": "1", - "line": "134", - "parentIndex": "290", - "start": "4703" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "15", - "end": "4703", - "id": "291", - "length": "8", - "line": "134", - "parentIndex": "275", - "start": "4696" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "functionReturnParameters": "261", - "id": "288", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "4704", - "id": "289", - "length": "16", - "line": "134", - "parentIndex": "261", - "start": "4689" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - ] - }, - "id": "261", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "isContract", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "263", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "265", - "name": "account", - "nodeType": "VARIABLE_DECLARATION", - "scope": "265", - "src": { - "column": "24", - "end": "4332", - "id": "266", - "length": "15", - "line": "126", - "parentIndex": "263", - "start": "4318" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "267", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "24", - "end": "4324", - "id": "268", - "length": "7", - "line": "126", - "parentIndex": "265", - "start": "4318" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "24", - "end": "4332", - "id": "264", - "length": "15", - "line": "126", - "parentIndex": "261", - "start": "4318" - } - }, - "returnParameters": { - "id": "269", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "271", - "nodeType": "VARIABLE_DECLARATION", - "scope": "271", - "src": { - "column": "64", - "end": "4361", - "id": "272", - "length": "4", - "line": "126", - "parentIndex": "269", - "start": "4358" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "273", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "64", - "end": "4361", - "id": "274", - "length": "4", - "line": "126", - "parentIndex": "271", - "start": "4358" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "64", - "end": "4361", - "id": "270", - "length": "4", - "line": "126", - "parentIndex": "261", - "start": "4358" - } - }, - "scope": "259", - "src": { - "column": "4", - "end": "4710", - "id": "262", - "length": "413", - "line": "126", - "parentIndex": "259", - "start": "4298" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "310", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "75", - "end": "6018", - "id": "311", - "length": "320", - "line": "153", - "parentIndex": "297", - "start": "5699" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: insufficient balance\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "314", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "320", - "name": "this", - "nodeType": "IDENTIFIER", - "src": { - "column": "24", - "end": "5728", - "id": "321", - "length": "4", - "line": "154", - "parentIndex": "318", - "start": "5725" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "id": "322", - "nodeType": "IDENTIFIER", - "src": { - "column": "16", - "end": "5723", - "id": "323", - "length": "7", - "line": "154", - "parentIndex": "318", - "start": "5717" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - }, - "typeName": { - "id": "324", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "16", - "end": "5723", - "id": "325", - "length": "7", - "line": "154", - "parentIndex": "322", - "start": "5717" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "318", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "16", - "end": "5729", - "id": "319", - "length": "13", - "line": "154", - "parentIndex": "316", - "start": "5717" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "id": "316", - "memberName": "balance", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "16", - "end": "5737", - "id": "317", - "length": "21", - "line": "154", - "parentIndex": "314", - "start": "5717" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN_OR_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "326", - "name": "amount", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "326", - "src": { - "column": "41", - "end": "5747", - "id": "327", - "length": "6", - "line": "154", - "parentIndex": "314", - "start": "5742" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "5747", - "id": "315", - "length": "31", - "line": "154", - "parentIndex": "312", - "start": "5717" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", - "id": "328", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "49", - "end": "5780", - "id": "329", - "length": "31", - "line": "154", - "parentIndex": "312", - "start": "5750" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: insufficient balance\"" - }, - "value": "Address: insufficient balance" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: insufficient balance\"" - } - ], - "id": "330", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "5715", - "id": "331", - "length": "7", - "line": "154", - "parentIndex": "312", - "start": "5709" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"Address: insufficient balance\")" - } - } - }, - "id": "312", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "5781", - "id": "313", - "length": "73", - "line": "154", - "parentIndex": "310", - "start": "5709" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "332", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "336", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "59", - "end": "5922", - "id": "337", - "length": "2", - "line": "157", - "parentIndex": "334", - "start": "5921" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"\"" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCallOption", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "342", - "name": "recipient", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "342", - "src": { - "column": "27", - "end": "5897", - "id": "343", - "length": "9", - "line": "157", - "parentIndex": "340", - "start": "5889" - }, - "typeDescription": { - "typeIdentifier": "t_address_payable", - "typeString": "address" - } - } - }, - "id": "340", - "memberName": "call", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "27", - "end": "5902", - "id": "341", - "length": "14", - "line": "157", - "parentIndex": "338", - "start": "5889" - }, - "typeDescription": { - "typeIdentifier": "t_address_payable", - "typeString": "address" - } - } - }, - "id": "338", - "kind": "FUNCTION_CALL_OPTION", - "nodeType": "FUNCTION_CALL_OPTION", - "src": { - "column": "27", - "end": "5919", - "id": "339", - "length": "31", - "line": "157", - "parentIndex": "334", - "start": "5889" - }, - "typeDescription": { - "typeIdentifier": "t_address_payable", - "typeString": "address" - } - } - }, - "id": "334", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "27", - "end": "5923", - "id": "335", - "length": "35", - "line": "157", - "parentIndex": "332", - "start": "5889" - }, - "typeDescription": { - "typeIdentifier": "t_function__t_string_literal$", - "typeString": "function(string memory)" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "5924", - "id": "333", - "length": "55", - "line": "157", - "parentIndex": "310", - "start": "5870" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "346", - "name": "success", - "nodeType": "IDENTIFIER", - "src": { - "column": "16", - "end": "5948", - "id": "347", - "length": "7", - "line": "158", - "parentIndex": "344", - "start": "5942" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", - "id": "348", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "25", - "end": "6010", - "id": "349", - "length": "60", - "line": "158", - "parentIndex": "344", - "start": "5951" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" - }, - "value": "Address: unable to send value, recipient may have reverted" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" - } - ], - "id": "350", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "5940", - "id": "351", - "length": "7", - "line": "158", - "parentIndex": "344", - "start": "5934" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_string_literal", - "typeString": "function(function(),literal_string \"Address: unable to send value, recipient may have reverted\")" - } - } - }, - "id": "344", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "6011", - "id": "345", - "length": "78", - "line": "158", - "parentIndex": "310", - "start": "5934" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_string_literal$", - "typeString": "function(function(),string memory)" - } - } - } - ] - }, - "id": "297", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "sendValue", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "299", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "301", - "name": "recipient", - "nodeType": "VARIABLE_DECLARATION", - "scope": "301", - "src": { - "column": "23", - "end": "5671", - "id": "302", - "length": "25", - "line": "153", - "parentIndex": "299", - "start": "5647" - }, - "stateMutability": "PAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address_payable", - "typeString": "address" - }, - "typeName": { - "id": "303", - "name": "addresspayable", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "5661", - "id": "304", - "length": "15", - "line": "153", - "parentIndex": "301", - "start": "5647" - }, - "stateMutability": "PAYABLE", - "typeDescription": { - "typeIdentifier": "t_address_payable", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "305", - "name": "amount", - "nodeType": "VARIABLE_DECLARATION", - "scope": "305", - "src": { - "column": "50", - "end": "5687", - "id": "306", - "length": "14", - "line": "153", - "parentIndex": "299", - "start": "5674" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "307", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "50", - "end": "5680", - "id": "308", - "length": "7", - "line": "153", - "parentIndex": "305", - "start": "5674" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "5687", - "id": "300", - "length": "41", - "line": "153", - "parentIndex": "297", - "start": "5647" - } - }, - "returnParameters": { - "id": "309", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "6018", - "id": "298", - "length": "391", - "line": "153", - "parentIndex": "297", - "start": "5628" - } - }, - "scope": "259", - "src": { - "column": "4", - "end": "6018", - "id": "298", - "length": "391", - "line": "153", - "parentIndex": "259", - "start": "5628" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address_payable$$_t_uint256", - "typeString": "function(address,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "371", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "93", - "end": "6930", - "id": "372", - "length": "82", - "line": "179", - "parentIndex": "353", - "start": "6849" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: low-level call failed\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "377", - "name": "target", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "377", - "src": { - "column": "26", - "end": "6882", - "id": "378", - "length": "6", - "line": "180", - "parentIndex": "375", - "start": "6877" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "379", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "379", - "src": { - "column": "34", - "end": "6888", - "id": "380", - "length": "4", - "line": "180", - "parentIndex": "375", - "start": "6885" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", - "id": "381", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "40", - "end": "6922", - "id": "382", - "length": "32", - "line": "180", - "parentIndex": "375", - "start": "6891" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: low-level call failed\"" - }, - "value": "Address: low-level call failed" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: low-level call failed\"" - } - ], - "id": "383", - "name": "functionCall", - "nodeType": "IDENTIFIER", - "src": { - "column": "13", - "end": "6875", - "id": "384", - "length": "12", - "line": "180", - "parentIndex": "375", - "start": "6864" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_string_literal", - "typeString": "function(address,bytes,literal_string \"Address: low-level call failed\")" - } - } - }, - "id": "375", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "13", - "end": "6923", - "id": "376", - "length": "60", - "line": "180", - "parentIndex": "371", - "start": "6864" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$_t_string_literal$", - "typeString": "function(address,bytes,string memory)" - } - } - }, - "functionReturnParameters": "353", - "id": "373", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "6", - "end": "6924", - "id": "374", - "length": "68", - "line": "180", - "parentIndex": "353", - "start": "6857" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$_t_string_literal$", - "typeString": "function(address,bytes,string memory)" - } - } - } - ] - }, - "id": "353", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "functionCall", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "355", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "357", - "name": "target", - "nodeType": "VARIABLE_DECLARATION", - "scope": "357", - "src": { - "column": "26", - "end": "6795", - "id": "358", - "length": "14", - "line": "179", - "parentIndex": "355", - "start": "6782" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "359", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "26", - "end": "6788", - "id": "360", - "length": "7", - "line": "179", - "parentIndex": "357", - "start": "6782" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "361", - "name": "data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "361", - "src": { - "column": "42", - "end": "6814", - "id": "362", - "length": "17", - "line": "179", - "parentIndex": "355", - "start": "6798" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "363", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "42", - "end": "6802", - "id": "364", - "length": "5", - "line": "179", - "parentIndex": "361", - "start": "6798" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "26", - "end": "6814", - "id": "356", - "length": "33", - "line": "179", - "parentIndex": "353", - "start": "6782" - } - }, - "returnParameters": { - "id": "365", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "367", - "nodeType": "VARIABLE_DECLARATION", - "scope": "367", - "src": { - "column": "79", - "end": "6846", - "id": "368", - "length": "12", - "line": "179", - "parentIndex": "365", - "start": "6835" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "369", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "79", - "end": "6839", - "id": "370", - "length": "5", - "line": "179", - "parentIndex": "367", - "start": "6835" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "79", - "end": "6846", - "id": "366", - "length": "12", - "line": "179", - "parentIndex": "353", - "start": "6835" - } - }, - "scope": "259", - "src": { - "column": "4", - "end": "6930", - "id": "354", - "length": "171", - "line": "179", - "parentIndex": "259", - "start": "6760" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes", - "typeString": "function(address,bytes)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "408", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "121", - "end": "7345", - "id": "409", - "length": "76", - "line": "189", - "parentIndex": "386", - "start": "7270" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "414", - "name": "target", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "414", - "src": { - "column": "37", - "end": "7314", - "id": "415", - "length": "6", - "line": "190", - "parentIndex": "412", - "start": "7309" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "416", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "416", - "src": { - "column": "45", - "end": "7320", - "id": "417", - "length": "4", - "line": "190", - "parentIndex": "412", - "start": "7317" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "hexValue": "30", - "id": "418", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "51", - "end": "7323", - "id": "419", - "length": "1", - "line": "190", - "parentIndex": "412", - "start": "7323" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "420", - "name": "errorMessage", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "420", - "src": { - "column": "54", - "end": "7337", - "id": "421", - "length": "12", - "line": "190", - "parentIndex": "412", - "start": "7326" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "id": "422", - "name": "functionCallWithValue", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "7307", - "id": "423", - "length": "21", - "line": "190", - "parentIndex": "412", - "start": "7287" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_rational_0_by_1$$_t_string", - "typeString": "function(address,bytes,int_const 0,string)" - } - } - }, - "id": "412", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "7338", - "id": "413", - "length": "52", - "line": "190", - "parentIndex": "408", - "start": "7287" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_rational_0_by_1$$_t_string$", - "typeString": "function(address,bytes,int_const 0,string)" - } - } - }, - "functionReturnParameters": "386", - "id": "410", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "7339", - "id": "411", - "length": "60", - "line": "190", - "parentIndex": "386", - "start": "7280" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_rational_0_by_1$$_t_string$", - "typeString": "function(address,bytes,int_const 0,string)" - } - } - } - ] - }, - "id": "386", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "functionCall", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "388", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "390", - "name": "target", - "nodeType": "VARIABLE_DECLARATION", - "scope": "390", - "src": { - "column": "26", - "end": "7188", - "id": "391", - "length": "14", - "line": "189", - "parentIndex": "388", - "start": "7175" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "392", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "26", - "end": "7181", - "id": "393", - "length": "7", - "line": "189", - "parentIndex": "390", - "start": "7175" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "394", - "name": "data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "394", - "src": { - "column": "42", - "end": "7207", - "id": "395", - "length": "17", - "line": "189", - "parentIndex": "388", - "start": "7191" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "396", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "42", - "end": "7195", - "id": "397", - "length": "5", - "line": "189", - "parentIndex": "394", - "start": "7191" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "398", - "name": "errorMessage", - "nodeType": "VARIABLE_DECLARATION", - "scope": "398", - "src": { - "column": "61", - "end": "7235", - "id": "399", - "length": "26", - "line": "189", - "parentIndex": "388", - "start": "7210" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "400", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "61", - "end": "7215", - "id": "401", - "length": "6", - "line": "189", - "parentIndex": "398", - "start": "7210" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "26", - "end": "7235", - "id": "389", - "length": "61", - "line": "189", - "parentIndex": "386", - "start": "7175" - } - }, - "returnParameters": { - "id": "402", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "404", - "nodeType": "VARIABLE_DECLARATION", - "scope": "404", - "src": { - "column": "107", - "end": "7267", - "id": "405", - "length": "12", - "line": "189", - "parentIndex": "402", - "start": "7256" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "406", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "107", - "end": "7260", - "id": "407", - "length": "5", - "line": "189", - "parentIndex": "404", - "start": "7256" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "107", - "end": "7267", - "id": "403", - "length": "12", - "line": "189", - "parentIndex": "386", - "start": "7256" - } - }, - "scope": "259", - "src": { - "column": "4", - "end": "7345", - "id": "387", - "length": "193", - "line": "189", - "parentIndex": "259", - "start": "7153" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_string", - "typeString": "function(address,bytes,string)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "447", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "117", - "end": "7931", - "id": "448", - "length": "111", - "line": "204", - "parentIndex": "425", - "start": "7821" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: low-level call with value failed\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "453", - "name": "target", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "453", - "src": { - "column": "37", - "end": "7865", - "id": "454", - "length": "6", - "line": "205", - "parentIndex": "451", - "start": "7860" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "455", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "455", - "src": { - "column": "45", - "end": "7871", - "id": "456", - "length": "4", - "line": "205", - "parentIndex": "451", - "start": "7868" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "id": "457", - "name": "value", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "457", - "src": { - "column": "51", - "end": "7878", - "id": "458", - "length": "5", - "line": "205", - "parentIndex": "451", - "start": "7874" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", - "id": "459", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "58", - "end": "7923", - "id": "460", - "length": "43", - "line": "205", - "parentIndex": "451", - "start": "7881" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: low-level call with value failed\"" - }, - "value": "Address: low-level call with value failed" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: low-level call with value failed\"" - } - ], - "id": "461", - "name": "functionCallWithValue", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "7858", - "id": "462", - "length": "21", - "line": "205", - "parentIndex": "451", - "start": "7838" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_uint256$$_t_string_literal", - "typeString": "function(address,bytes,uint256,literal_string \"Address: low-level call with value failed\")" - } - } - }, - "id": "451", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "7924", - "id": "452", - "length": "87", - "line": "205", - "parentIndex": "447", - "start": "7838" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_uint256$_t_string_literal$", - "typeString": "function(address,bytes,uint256,string memory)" - } - } - }, - "functionReturnParameters": "425", - "id": "449", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "7925", - "id": "450", - "length": "95", - "line": "205", - "parentIndex": "425", - "start": "7831" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_uint256$_t_string_literal$", - "typeString": "function(address,bytes,uint256,string memory)" - } - } - } - ] - }, - "id": "425", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "functionCallWithValue", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "427", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "429", - "name": "target", - "nodeType": "VARIABLE_DECLARATION", - "scope": "429", - "src": { - "column": "35", - "end": "7752", - "id": "430", - "length": "14", - "line": "204", - "parentIndex": "427", - "start": "7739" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "431", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "35", - "end": "7745", - "id": "432", - "length": "7", - "line": "204", - "parentIndex": "429", - "start": "7739" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "433", - "name": "data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "433", - "src": { - "column": "51", - "end": "7771", - "id": "434", - "length": "17", - "line": "204", - "parentIndex": "427", - "start": "7755" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "435", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "51", - "end": "7759", - "id": "436", - "length": "5", - "line": "204", - "parentIndex": "433", - "start": "7755" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "437", - "name": "value", - "nodeType": "VARIABLE_DECLARATION", - "scope": "437", - "src": { - "column": "70", - "end": "7786", - "id": "438", - "length": "13", - "line": "204", - "parentIndex": "427", - "start": "7774" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "439", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "70", - "end": "7780", - "id": "440", - "length": "7", - "line": "204", - "parentIndex": "437", - "start": "7774" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "35", - "end": "7786", - "id": "428", - "length": "48", - "line": "204", - "parentIndex": "425", - "start": "7739" - } - }, - "returnParameters": { - "id": "441", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "443", - "nodeType": "VARIABLE_DECLARATION", - "scope": "443", - "src": { - "column": "103", - "end": "7818", - "id": "444", - "length": "12", - "line": "204", - "parentIndex": "441", - "start": "7807" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "445", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "103", - "end": "7811", - "id": "446", - "length": "5", - "line": "204", - "parentIndex": "443", - "start": "7807" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "103", - "end": "7818", - "id": "442", - "length": "12", - "line": "204", - "parentIndex": "425", - "start": "7807" - } - }, - "scope": "259", - "src": { - "column": "4", - "end": "7931", - "id": "426", - "length": "224", - "line": "204", - "parentIndex": "259", - "start": "7708" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_uint256", - "typeString": "function(address,bytes,uint256)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "490", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "145", - "end": "8702", - "id": "491", - "length": "382", - "line": "214", - "parentIndex": "464", - "start": "8321" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: insufficient balance for call\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "494", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "500", - "name": "this", - "nodeType": "IDENTIFIER", - "src": { - "column": "24", - "end": "8350", - "id": "501", - "length": "4", - "line": "215", - "parentIndex": "498", - "start": "8347" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "id": "502", - "nodeType": "IDENTIFIER", - "src": { - "column": "16", - "end": "8345", - "id": "503", - "length": "7", - "line": "215", - "parentIndex": "498", - "start": "8339" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - }, - "typeName": { - "id": "504", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "16", - "end": "8345", - "id": "505", - "length": "7", - "line": "215", - "parentIndex": "502", - "start": "8339" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "498", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "16", - "end": "8351", - "id": "499", - "length": "13", - "line": "215", - "parentIndex": "496", - "start": "8339" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "id": "496", - "memberName": "balance", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "16", - "end": "8359", - "id": "497", - "length": "21", - "line": "215", - "parentIndex": "494", - "start": "8339" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN_OR_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "506", - "name": "value", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "506", - "src": { - "column": "41", - "end": "8368", - "id": "507", - "length": "5", - "line": "215", - "parentIndex": "494", - "start": "8364" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "src": { - "column": "16", - "end": "8368", - "id": "495", - "length": "30", - "line": "215", - "parentIndex": "492", - "start": "8339" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", - "id": "508", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "48", - "end": "8410", - "id": "509", - "length": "40", - "line": "215", - "parentIndex": "492", - "start": "8371" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: insufficient balance for call\"" - }, - "value": "Address: insufficient balance for call" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: insufficient balance for call\"" - } - ], - "id": "510", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "8337", - "id": "511", - "length": "7", - "line": "215", - "parentIndex": "492", - "start": "8331" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"Address: insufficient balance for call\")" - } - } - }, - "id": "492", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "8411", - "id": "493", - "length": "81", - "line": "215", - "parentIndex": "490", - "start": "8331" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: call to non-contract\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "516", - "name": "target", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "516", - "src": { - "column": "27", - "end": "8446", - "id": "517", - "length": "6", - "line": "216", - "parentIndex": "514", - "start": "8441" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "518", - "name": "isContract", - "nodeType": "IDENTIFIER", - "src": { - "column": "16", - "end": "8439", - "id": "519", - "length": "10", - "line": "216", - "parentIndex": "514", - "start": "8430" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "514", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "16", - "end": "8447", - "id": "515", - "length": "18", - "line": "216", - "parentIndex": "512", - "start": "8430" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - ], - "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", - "id": "520", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "36", - "end": "8480", - "id": "521", - "length": "31", - "line": "216", - "parentIndex": "512", - "start": "8450" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: call to non-contract\"" - }, - "value": "Address: call to non-contract" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: call to non-contract\"" - } - ], - "id": "522", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "8428", - "id": "523", - "length": "7", - "line": "216", - "parentIndex": "512", - "start": "8422" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$$_t_string_literal", - "typeString": "function(function(address),literal_string \"Address: call to non-contract\")" - } - } - }, - "id": "512", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "8481", - "id": "513", - "length": "60", - "line": "216", - "parentIndex": "490", - "start": "8422" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", - "typeString": "function(function(address),string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "524", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "528", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "528", - "src": { - "column": "78", - "end": "8625", - "id": "529", - "length": "4", - "line": "219", - "parentIndex": "526", - "start": "8622" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCallOption", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "534", - "name": "target", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "534", - "src": { - "column": "50", - "end": "8599", - "id": "535", - "length": "6", - "line": "219", - "parentIndex": "532", - "start": "8594" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "532", - "memberName": "call", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "50", - "end": "8604", - "id": "533", - "length": "11", - "line": "219", - "parentIndex": "530", - "start": "8594" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "530", - "kind": "FUNCTION_CALL_OPTION", - "nodeType": "FUNCTION_CALL_OPTION", - "src": { - "column": "50", - "end": "8620", - "id": "531", - "length": "27", - "line": "219", - "parentIndex": "526", - "start": "8594" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "526", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "50", - "end": "8626", - "id": "527", - "length": "33", - "line": "219", - "parentIndex": "524", - "start": "8594" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bytes$", - "typeString": "function(bytes)" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "8627", - "id": "525", - "length": "76", - "line": "219", - "parentIndex": "490", - "start": "8552" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "540", - "name": "success", - "nodeType": "IDENTIFIER", - "src": { - "column": "33", - "end": "8668", - "id": "541", - "length": "7", - "line": "220", - "parentIndex": "538", - "start": "8662" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "id": "542", - "name": "returndata", - "nodeType": "IDENTIFIER", - "src": { - "column": "42", - "end": "8680", - "id": "543", - "length": "10", - "line": "220", - "parentIndex": "538", - "start": "8671" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - } - ], - "id": "544", - "name": "errorMessage", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "544", - "src": { - "column": "54", - "end": "8694", - "id": "545", - "length": "12", - "line": "220", - "parentIndex": "538", - "start": "8683" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "id": "546", - "name": "_verifyCallResult", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "8660", - "id": "547", - "length": "17", - "line": "220", - "parentIndex": "538", - "start": "8644" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_function_$_t_function_$$_t_string", - "typeString": "function(function(),function(function()),string)" - } - } - }, - "id": "538", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "8695", - "id": "539", - "length": "52", - "line": "220", - "parentIndex": "490", - "start": "8644" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_function_$_t_function_$$_t_string$", - "typeString": "function(function(),function(function()),string)" - } - } - }, - "functionReturnParameters": "464", - "id": "536", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "8696", - "id": "537", - "length": "60", - "line": "220", - "parentIndex": "464", - "start": "8637" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_function_$_t_function_$$_t_string$", - "typeString": "function(function(),function(function()),string)" - } - } - } - ] - }, - "id": "464", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "functionCallWithValue", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "466", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "468", - "name": "target", - "nodeType": "VARIABLE_DECLARATION", - "scope": "468", - "src": { - "column": "35", - "end": "8224", - "id": "469", - "length": "14", - "line": "214", - "parentIndex": "466", - "start": "8211" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "470", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "35", - "end": "8217", - "id": "471", - "length": "7", - "line": "214", - "parentIndex": "468", - "start": "8211" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "472", - "name": "data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "472", - "src": { - "column": "51", - "end": "8243", - "id": "473", - "length": "17", - "line": "214", - "parentIndex": "466", - "start": "8227" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "474", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "51", - "end": "8231", - "id": "475", - "length": "5", - "line": "214", - "parentIndex": "472", - "start": "8227" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "476", - "name": "value", - "nodeType": "VARIABLE_DECLARATION", - "scope": "476", - "src": { - "column": "70", - "end": "8258", - "id": "477", - "length": "13", - "line": "214", - "parentIndex": "466", - "start": "8246" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "478", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "70", - "end": "8252", - "id": "479", - "length": "7", - "line": "214", - "parentIndex": "476", - "start": "8246" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "480", - "name": "errorMessage", - "nodeType": "VARIABLE_DECLARATION", - "scope": "480", - "src": { - "column": "85", - "end": "8286", - "id": "481", - "length": "26", - "line": "214", - "parentIndex": "466", - "start": "8261" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "482", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "85", - "end": "8266", - "id": "483", - "length": "6", - "line": "214", - "parentIndex": "480", - "start": "8261" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "35", - "end": "8286", - "id": "467", - "length": "76", - "line": "214", - "parentIndex": "464", - "start": "8211" - } - }, - "returnParameters": { - "id": "484", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "486", - "nodeType": "VARIABLE_DECLARATION", - "scope": "486", - "src": { - "column": "131", - "end": "8318", - "id": "487", - "length": "12", - "line": "214", - "parentIndex": "484", - "start": "8307" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "488", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "131", - "end": "8311", - "id": "489", - "length": "5", - "line": "214", - "parentIndex": "486", - "start": "8307" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "131", - "end": "8318", - "id": "485", - "length": "12", - "line": "214", - "parentIndex": "464", - "start": "8307" - } - }, - "scope": "259", - "src": { - "column": "4", - "end": "8702", - "id": "465", - "length": "523", - "line": "214", - "parentIndex": "259", - "start": "8180" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_uint256$$_t_string", - "typeString": "function(address,bytes,uint256,string)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "567", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "104", - "end": "9076", - "id": "568", - "length": "97", - "line": "229", - "parentIndex": "549", - "start": "8980" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: low-level static call failed\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "573", - "name": "target", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "573", - "src": { - "column": "34", - "end": "9021", - "id": "574", - "length": "6", - "line": "230", - "parentIndex": "571", - "start": "9016" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "575", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "575", - "src": { - "column": "42", - "end": "9027", - "id": "576", - "length": "4", - "line": "230", - "parentIndex": "571", - "start": "9024" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", - "id": "577", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "48", - "end": "9068", - "id": "578", - "length": "39", - "line": "230", - "parentIndex": "571", - "start": "9030" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: low-level static call failed\"" - }, - "value": "Address: low-level static call failed" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: low-level static call failed\"" - } - ], - "id": "579", - "name": "functionStaticCall", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "9014", - "id": "580", - "length": "18", - "line": "230", - "parentIndex": "571", - "start": "8997" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_string_literal", - "typeString": "function(address,bytes,literal_string \"Address: low-level static call failed\")" - } - } - }, - "id": "571", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "9069", - "id": "572", - "length": "73", - "line": "230", - "parentIndex": "567", - "start": "8997" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$_t_string_literal$", - "typeString": "function(address,bytes,string memory)" - } - } - }, - "functionReturnParameters": "549", - "id": "569", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "9070", - "id": "570", - "length": "81", - "line": "230", - "parentIndex": "549", - "start": "8990" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$_t_string_literal$", - "typeString": "function(address,bytes,string memory)" - } - } - } - ] - }, - "id": "549", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "functionStaticCall", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "551", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "553", - "name": "target", - "nodeType": "VARIABLE_DECLARATION", - "scope": "553", - "src": { - "column": "32", - "end": "8921", - "id": "554", - "length": "14", - "line": "229", - "parentIndex": "551", - "start": "8908" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "555", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "32", - "end": "8914", - "id": "556", - "length": "7", - "line": "229", - "parentIndex": "553", - "start": "8908" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "557", - "name": "data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "557", - "src": { - "column": "48", - "end": "8940", - "id": "558", - "length": "17", - "line": "229", - "parentIndex": "551", - "start": "8924" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "559", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "48", - "end": "8928", - "id": "560", - "length": "5", - "line": "229", - "parentIndex": "557", - "start": "8924" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "32", - "end": "8940", - "id": "552", - "length": "33", - "line": "229", - "parentIndex": "549", - "start": "8908" - } - }, - "returnParameters": { - "id": "561", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "563", - "nodeType": "VARIABLE_DECLARATION", - "scope": "563", - "src": { - "column": "90", - "end": "8977", - "id": "564", - "length": "12", - "line": "229", - "parentIndex": "561", - "start": "8966" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "565", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "90", - "end": "8970", - "id": "566", - "length": "5", - "line": "229", - "parentIndex": "563", - "start": "8966" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "90", - "end": "8977", - "id": "562", - "length": "12", - "line": "229", - "parentIndex": "549", - "start": "8966" - } - }, - "scope": "259", - "src": { - "column": "4", - "end": "9076", - "id": "550", - "length": "197", - "line": "229", - "parentIndex": "259", - "start": "8880" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes", - "typeString": "function(address,bytes)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "604", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "132", - "end": "9676", - "id": "605", - "length": "288", - "line": "239", - "parentIndex": "582", - "start": "9389" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: static call to non-contract\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "610", - "name": "target", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "610", - "src": { - "column": "27", - "end": "9423", - "id": "611", - "length": "6", - "line": "240", - "parentIndex": "608", - "start": "9418" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "612", - "name": "isContract", - "nodeType": "IDENTIFIER", - "src": { - "column": "16", - "end": "9416", - "id": "613", - "length": "10", - "line": "240", - "parentIndex": "608", - "start": "9407" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "608", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "16", - "end": "9424", - "id": "609", - "length": "18", - "line": "240", - "parentIndex": "606", - "start": "9407" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - ], - "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374", - "id": "614", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "36", - "end": "9464", - "id": "615", - "length": "38", - "line": "240", - "parentIndex": "606", - "start": "9427" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: static call to non-contract\"" - }, - "value": "Address: static call to non-contract" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: static call to non-contract\"" - } - ], - "id": "616", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "9405", - "id": "617", - "length": "7", - "line": "240", - "parentIndex": "606", - "start": "9399" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$$_t_string_literal", - "typeString": "function(function(address),literal_string \"Address: static call to non-contract\")" - } - } - }, - "id": "606", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "9465", - "id": "607", - "length": "67", - "line": "240", - "parentIndex": "604", - "start": "9399" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", - "typeString": "function(function(address),string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "618", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "622", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "622", - "src": { - "column": "68", - "end": "9599", - "id": "623", - "length": "4", - "line": "243", - "parentIndex": "620", - "start": "9596" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "626", - "name": "target", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "626", - "src": { - "column": "50", - "end": "9583", - "id": "627", - "length": "6", - "line": "243", - "parentIndex": "624", - "start": "9578" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "624", - "memberName": "staticcall", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "50", - "end": "9594", - "id": "625", - "length": "17", - "line": "243", - "parentIndex": "620", - "start": "9578" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "620", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "50", - "end": "9600", - "id": "621", - "length": "23", - "line": "243", - "parentIndex": "618", - "start": "9578" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bytes$", - "typeString": "function(bytes)" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "9601", - "id": "619", - "length": "66", - "line": "243", - "parentIndex": "604", - "start": "9536" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "632", - "name": "success", - "nodeType": "IDENTIFIER", - "src": { - "column": "33", - "end": "9642", - "id": "633", - "length": "7", - "line": "244", - "parentIndex": "630", - "start": "9636" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "id": "634", - "name": "returndata", - "nodeType": "IDENTIFIER", - "src": { - "column": "42", - "end": "9654", - "id": "635", - "length": "10", - "line": "244", - "parentIndex": "630", - "start": "9645" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - } - ], - "id": "636", - "name": "errorMessage", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "636", - "src": { - "column": "54", - "end": "9668", - "id": "637", - "length": "12", - "line": "244", - "parentIndex": "630", - "start": "9657" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "id": "638", - "name": "_verifyCallResult", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "9634", - "id": "639", - "length": "17", - "line": "244", - "parentIndex": "630", - "start": "9618" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_function_$_t_function_$$_t_string", - "typeString": "function(function(),function(function()),string)" - } - } - }, - "id": "630", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "9669", - "id": "631", - "length": "52", - "line": "244", - "parentIndex": "604", - "start": "9618" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_function_$_t_function_$$_t_string$", - "typeString": "function(function(),function(function()),string)" - } - } - }, - "functionReturnParameters": "582", - "id": "628", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "9670", - "id": "629", - "length": "60", - "line": "244", - "parentIndex": "582", - "start": "9611" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_function_$_t_function_$$_t_string$", - "typeString": "function(function(),function(function()),string)" - } - } - } - ] - }, - "id": "582", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "functionStaticCall", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "584", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "586", - "name": "target", - "nodeType": "VARIABLE_DECLARATION", - "scope": "586", - "src": { - "column": "32", - "end": "9302", - "id": "587", - "length": "14", - "line": "239", - "parentIndex": "584", - "start": "9289" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "588", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "32", - "end": "9295", - "id": "589", - "length": "7", - "line": "239", - "parentIndex": "586", - "start": "9289" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "590", - "name": "data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "590", - "src": { - "column": "48", - "end": "9321", - "id": "591", - "length": "17", - "line": "239", - "parentIndex": "584", - "start": "9305" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "592", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "48", - "end": "9309", - "id": "593", - "length": "5", - "line": "239", - "parentIndex": "590", - "start": "9305" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "594", - "name": "errorMessage", - "nodeType": "VARIABLE_DECLARATION", - "scope": "594", - "src": { - "column": "67", - "end": "9349", - "id": "595", - "length": "26", - "line": "239", - "parentIndex": "584", - "start": "9324" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "596", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "67", - "end": "9329", - "id": "597", - "length": "6", - "line": "239", - "parentIndex": "594", - "start": "9324" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "32", - "end": "9349", - "id": "585", - "length": "61", - "line": "239", - "parentIndex": "582", - "start": "9289" - } - }, - "returnParameters": { - "id": "598", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "600", - "nodeType": "VARIABLE_DECLARATION", - "scope": "600", - "src": { - "column": "118", - "end": "9386", - "id": "601", - "length": "12", - "line": "239", - "parentIndex": "598", - "start": "9375" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "602", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "118", - "end": "9379", - "id": "603", - "length": "5", - "line": "239", - "parentIndex": "600", - "start": "9375" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "118", - "end": "9386", - "id": "599", - "length": "12", - "line": "239", - "parentIndex": "582", - "start": "9375" - } - }, - "scope": "259", - "src": { - "column": "4", - "end": "9676", - "id": "583", - "length": "416", - "line": "239", - "parentIndex": "259", - "start": "9261" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_string", - "typeString": "function(address,bytes,string)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "659", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "101", - "end": "10053", - "id": "660", - "length": "101", - "line": "253", - "parentIndex": "641", - "start": "9953" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: low-level delegate call failed\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "665", - "name": "target", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "665", - "src": { - "column": "36", - "end": "9996", - "id": "666", - "length": "6", - "line": "254", - "parentIndex": "663", - "start": "9991" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "667", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "667", - "src": { - "column": "44", - "end": "10002", - "id": "668", - "length": "4", - "line": "254", - "parentIndex": "663", - "start": "9999" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "id": "669", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "50", - "end": "10045", - "id": "670", - "length": "41", - "line": "254", - "parentIndex": "663", - "start": "10005" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: low-level delegate call failed\"" - }, - "value": "Address: low-level delegate call failed" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: low-level delegate call failed\"" - } - ], - "id": "671", - "name": "functionDelegateCall", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "9989", - "id": "672", - "length": "20", - "line": "254", - "parentIndex": "663", - "start": "9970" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_string_literal", - "typeString": "function(address,bytes,literal_string \"Address: low-level delegate call failed\")" - } - } - }, - "id": "663", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "10046", - "id": "664", - "length": "77", - "line": "254", - "parentIndex": "659", - "start": "9970" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$_t_string_literal$", - "typeString": "function(address,bytes,string memory)" - } - } - }, - "functionReturnParameters": "641", - "id": "661", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "10047", - "id": "662", - "length": "85", - "line": "254", - "parentIndex": "641", - "start": "9963" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$_t_string_literal$", - "typeString": "function(address,bytes,string memory)" - } - } - } - ] - }, - "id": "641", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "functionDelegateCall", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "643", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "645", - "name": "target", - "nodeType": "VARIABLE_DECLARATION", - "scope": "645", - "src": { - "column": "34", - "end": "9899", - "id": "646", - "length": "14", - "line": "253", - "parentIndex": "643", - "start": "9886" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "647", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "34", - "end": "9892", - "id": "648", - "length": "7", - "line": "253", - "parentIndex": "645", - "start": "9886" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "649", - "name": "data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "649", - "src": { - "column": "50", - "end": "9918", - "id": "650", - "length": "17", - "line": "253", - "parentIndex": "643", - "start": "9902" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "651", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "50", - "end": "9906", - "id": "652", - "length": "5", - "line": "253", - "parentIndex": "649", - "start": "9902" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "34", - "end": "9918", - "id": "644", - "length": "33", - "line": "253", - "parentIndex": "641", - "start": "9886" - } - }, - "returnParameters": { - "id": "653", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "655", - "nodeType": "VARIABLE_DECLARATION", - "scope": "655", - "src": { - "column": "87", - "end": "9950", - "id": "656", - "length": "12", - "line": "253", - "parentIndex": "653", - "start": "9939" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "657", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "87", - "end": "9943", - "id": "658", - "length": "5", - "line": "253", - "parentIndex": "655", - "start": "9939" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "87", - "end": "9950", - "id": "654", - "length": "12", - "line": "253", - "parentIndex": "641", - "start": "9939" - } - }, - "scope": "259", - "src": { - "column": "4", - "end": "10053", - "id": "642", - "length": "198", - "line": "253", - "parentIndex": "259", - "start": "9856" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes", - "typeString": "function(address,bytes)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "696", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "129", - "end": "10656", - "id": "697", - "length": "292", - "line": "263", - "parentIndex": "674", - "start": "10365" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: delegate call to non-contract\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "702", - "name": "target", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "702", - "src": { - "column": "27", - "end": "10399", - "id": "703", - "length": "6", - "line": "264", - "parentIndex": "700", - "start": "10394" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "704", - "name": "isContract", - "nodeType": "IDENTIFIER", - "src": { - "column": "16", - "end": "10392", - "id": "705", - "length": "10", - "line": "264", - "parentIndex": "700", - "start": "10383" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "700", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "16", - "end": "10400", - "id": "701", - "length": "18", - "line": "264", - "parentIndex": "698", - "start": "10383" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - ], - "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374", - "id": "706", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "36", - "end": "10442", - "id": "707", - "length": "40", - "line": "264", - "parentIndex": "698", - "start": "10403" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: delegate call to non-contract\"" - }, - "value": "Address: delegate call to non-contract" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Address: delegate call to non-contract\"" - } - ], - "id": "708", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "10381", - "id": "709", - "length": "7", - "line": "264", - "parentIndex": "698", - "start": "10375" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$$_t_string_literal", - "typeString": "function(function(address),literal_string \"Address: delegate call to non-contract\")" - } - } - }, - "id": "698", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "10443", - "id": "699", - "length": "69", - "line": "264", - "parentIndex": "696", - "start": "10375" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", - "typeString": "function(function(address),string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "710", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "714", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "714", - "src": { - "column": "70", - "end": "10579", - "id": "715", - "length": "4", - "line": "267", - "parentIndex": "712", - "start": "10576" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "718", - "name": "target", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "718", - "src": { - "column": "50", - "end": "10561", - "id": "719", - "length": "6", - "line": "267", - "parentIndex": "716", - "start": "10556" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "716", - "memberName": "delegatecall", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "50", - "end": "10574", - "id": "717", - "length": "19", - "line": "267", - "parentIndex": "712", - "start": "10556" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "712", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "50", - "end": "10580", - "id": "713", - "length": "25", - "line": "267", - "parentIndex": "710", - "start": "10556" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bytes$", - "typeString": "function(bytes)" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "10581", - "id": "711", - "length": "68", - "line": "267", - "parentIndex": "696", - "start": "10514" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "724", - "name": "success", - "nodeType": "IDENTIFIER", - "src": { - "column": "33", - "end": "10622", - "id": "725", - "length": "7", - "line": "268", - "parentIndex": "722", - "start": "10616" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "id": "726", - "name": "returndata", - "nodeType": "IDENTIFIER", - "src": { - "column": "42", - "end": "10634", - "id": "727", - "length": "10", - "line": "268", - "parentIndex": "722", - "start": "10625" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - } - ], - "id": "728", - "name": "errorMessage", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "728", - "src": { - "column": "54", - "end": "10648", - "id": "729", - "length": "12", - "line": "268", - "parentIndex": "722", - "start": "10637" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - }, - { - "typeIdentifier": "t_string", - "typeString": "string" - } - ], - "id": "730", - "name": "_verifyCallResult", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "10614", - "id": "731", - "length": "17", - "line": "268", - "parentIndex": "722", - "start": "10598" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_function_$_t_function_$$_t_string", - "typeString": "function(function(),function(function()),string)" - } - } - }, - "id": "722", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "10649", - "id": "723", - "length": "52", - "line": "268", - "parentIndex": "696", - "start": "10598" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_function_$_t_function_$$_t_string$", - "typeString": "function(function(),function(function()),string)" - } - } - }, - "functionReturnParameters": "674", - "id": "720", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "10650", - "id": "721", - "length": "60", - "line": "268", - "parentIndex": "674", - "start": "10591" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_function_$_t_function_$$_t_string$", - "typeString": "function(function(),function(function()),string)" - } - } - } - ] - }, - "id": "674", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "functionDelegateCall", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "676", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "678", - "name": "target", - "nodeType": "VARIABLE_DECLARATION", - "scope": "678", - "src": { - "column": "34", - "end": "10283", - "id": "679", - "length": "14", - "line": "263", - "parentIndex": "676", - "start": "10270" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "680", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "34", - "end": "10276", - "id": "681", - "length": "7", - "line": "263", - "parentIndex": "678", - "start": "10270" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "682", - "name": "data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "682", - "src": { - "column": "50", - "end": "10302", - "id": "683", - "length": "17", - "line": "263", - "parentIndex": "676", - "start": "10286" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "684", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "50", - "end": "10290", - "id": "685", - "length": "5", - "line": "263", - "parentIndex": "682", - "start": "10286" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "686", - "name": "errorMessage", - "nodeType": "VARIABLE_DECLARATION", - "scope": "686", - "src": { - "column": "69", - "end": "10330", - "id": "687", - "length": "26", - "line": "263", - "parentIndex": "676", - "start": "10305" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "688", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "69", - "end": "10310", - "id": "689", - "length": "6", - "line": "263", - "parentIndex": "686", - "start": "10305" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "34", - "end": "10330", - "id": "677", - "length": "61", - "line": "263", - "parentIndex": "674", - "start": "10270" - } - }, - "returnParameters": { - "id": "690", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "692", - "nodeType": "VARIABLE_DECLARATION", - "scope": "692", - "src": { - "column": "115", - "end": "10362", - "id": "693", - "length": "12", - "line": "263", - "parentIndex": "690", - "start": "10351" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "694", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "115", - "end": "10355", - "id": "695", - "length": "5", - "line": "263", - "parentIndex": "692", - "start": "10351" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "115", - "end": "10362", - "id": "691", - "length": "12", - "line": "263", - "parentIndex": "674", - "start": "10351" - } - }, - "scope": "259", - "src": { - "column": "4", - "end": "10656", - "id": "675", - "length": "417", - "line": "263", - "parentIndex": "259", - "start": "10240" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_string", - "typeString": "function(address,bytes,string)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "755", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "133", - "end": "11387", - "id": "756", - "length": "596", - "line": "271", - "parentIndex": "733", - "start": "10792" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "761", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "21", - "end": "10856", - "id": "762", - "length": "42", - "line": "272", - "parentIndex": "733", - "start": "10815" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "765", - "name": "returndata", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "765", - "src": { - "column": "19", - "end": "10845", - "id": "766", - "length": "10", - "line": "273", - "parentIndex": "761", - "start": "10836" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - "functionReturnParameters": "733", - "id": "763", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "12", - "end": "10846", - "id": "764", - "length": "18", - "line": "273", - "parentIndex": "733", - "start": "10829" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "759", - "name": "success", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "759", - "src": { - "column": "12", - "end": "10812", - "id": "760", - "length": "7", - "line": "272", - "parentIndex": "757", - "start": "10806" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "757", - "nodeType": "IF_STATEMENT", - "src": { - "end": "11381", - "id": "758", - "length": "580", - "line": "272", - "parentIndex": "755", - "start": "10802" - } - } - } - ] - }, - "id": "733", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_verifyCallResult", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "735", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "737", - "name": "success", - "nodeType": "VARIABLE_DECLARATION", - "scope": "737", - "src": { - "column": "31", - "end": "10701", - "id": "738", - "length": "12", - "line": "271", - "parentIndex": "735", - "start": "10690" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "739", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "10693", - "id": "740", - "length": "4", - "line": "271", - "parentIndex": "737", - "start": "10690" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "741", - "name": "returndata", - "nodeType": "VARIABLE_DECLARATION", - "scope": "741", - "src": { - "column": "45", - "end": "10726", - "id": "742", - "length": "23", - "line": "271", - "parentIndex": "735", - "start": "10704" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "743", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "45", - "end": "10708", - "id": "744", - "length": "5", - "line": "271", - "parentIndex": "741", - "start": "10704" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "745", - "name": "errorMessage", - "nodeType": "VARIABLE_DECLARATION", - "scope": "745", - "src": { - "column": "70", - "end": "10754", - "id": "746", - "length": "26", - "line": "271", - "parentIndex": "735", - "start": "10729" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - }, - "typeName": { - "id": "747", - "name": "string", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "70", - "end": "10734", - "id": "748", - "length": "6", - "line": "271", - "parentIndex": "745", - "start": "10729" - }, - "typeDescription": { - "typeIdentifier": "t_string", - "typeString": "string" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "31", - "end": "10754", - "id": "736", - "length": "65", - "line": "271", - "parentIndex": "733", - "start": "10690" - } - }, - "returnParameters": { - "id": "749", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "751", - "nodeType": "VARIABLE_DECLARATION", - "scope": "751", - "src": { - "column": "119", - "end": "10789", - "id": "752", - "length": "12", - "line": "271", - "parentIndex": "749", - "start": "10778" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "753", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "119", - "end": "10782", - "id": "754", - "length": "5", - "line": "271", - "parentIndex": "751", - "start": "10778" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "119", - "end": "10789", - "id": "750", - "length": "12", - "line": "271", - "parentIndex": "733", - "start": "10778" - } - }, - "scope": "259", - "src": { - "column": "4", - "end": "11387", - "id": "734", - "length": "725", - "line": "271", - "parentIndex": "259", - "start": "10663" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_bytes$$_t_string", - "typeString": "function(bool,bytes,string)" - }, - "visibility": "PRIVATE" - } - } - ], - "src": { - "end": "11389", - "length": "7684", - "line": "108", - "parentIndex": "251", - "start": "3706" - } - } - } - ] - }, - "src": { - "id": 252, - "line": 108, - "start": 3706, - "end": 11389, - "length": 7684, - "parent_index": 118 - } - }, - { - "id": 767, - "license": "MIT", - "name": "StorageSlot", - "absolute_path": "StorageSlot.sol", - "exported_symbols": [ - { - "id": 767, - "name": "StorageSlot", - "absolute_path": "StorageSlot.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "775", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "11447", - "id": "776", - "length": "23", - "line": "293", - "parentIndex": "767", - "start": "11425" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "fullyImplemented": true, - "id": "777", - "kind": "KIND_LIBRARY", - "linearizedBaseContracts": [ - "777" - ], - "name": "StorageSlot", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", - "value": { - "canonicalName": "StorageSlot.AddressSlot", - "id": "779", - "members": [ - { - "id": "781", - "name": "value", - "nodeType": "VARIABLE_DECLARATION", - "scope": "781", - "src": { - "column": "8", - "end": "12667", - "id": "782", - "length": "14", - "line": "323", - "parentIndex": "779", - "start": "12654" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "783", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "12660", - "id": "784", - "length": "7", - "line": "323", - "parentIndex": "781", - "start": "12654" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "name": "AddressSlot", - "nodeType": "STRUCT_DEFINITION", - "src": { - "column": "4", - "end": "12673", - "id": "780", - "length": "49", - "line": "322", - "parentIndex": "767", - "start": "12625" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_struct$_StorageSlot_AddressSlot_$779", - "typeString": "struct StorageSlot.AddressSlot" - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", - "value": { - "canonicalName": "StorageSlot.BooleanSlot", - "id": "786", - "members": [ - { - "id": "788", - "name": "value", - "nodeType": "VARIABLE_DECLARATION", - "scope": "788", - "src": { - "column": "8", - "end": "12719", - "id": "789", - "length": "11", - "line": "327", - "parentIndex": "786", - "start": "12709" - }, - "stateMutability": "MUTABLE", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "790", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "12712", - "id": "791", - "length": "4", - "line": "327", - "parentIndex": "788", - "start": "12709" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "name": "BooleanSlot", - "nodeType": "STRUCT_DEFINITION", - "src": { - "column": "4", - "end": "12725", - "id": "787", - "length": "46", - "line": "326", - "parentIndex": "767", - "start": "12680" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_struct$_StorageSlot_BooleanSlot_$786", - "typeString": "struct StorageSlot.BooleanSlot" - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", - "value": { - "canonicalName": "StorageSlot.Bytes32Slot", - "id": "793", - "members": [ - { - "id": "795", - "name": "value", - "nodeType": "VARIABLE_DECLARATION", - "scope": "795", - "src": { - "column": "8", - "end": "12774", - "id": "796", - "length": "14", - "line": "331", - "parentIndex": "793", - "start": "12761" - }, - "stateMutability": "MUTABLE", - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": "797", - "name": "bytes32", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "12767", - "id": "798", - "length": "7", - "line": "331", - "parentIndex": "795", - "start": "12761" - }, - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "INTERNAL" - } - ], - "name": "Bytes32Slot", - "nodeType": "STRUCT_DEFINITION", - "src": { - "column": "4", - "end": "12780", - "id": "794", - "length": "49", - "line": "330", - "parentIndex": "767", - "start": "12732" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_struct$_StorageSlot_Bytes32Slot_$793", - "typeString": "struct StorageSlot.Bytes32Slot" - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", - "value": { - "canonicalName": "StorageSlot.Uint256Slot", - "id": "800", - "members": [ - { - "id": "802", - "name": "value", - "nodeType": "VARIABLE_DECLARATION", - "scope": "802", - "src": { - "column": "8", - "end": "12829", - "id": "803", - "length": "14", - "line": "335", - "parentIndex": "800", - "start": "12816" - }, - "stateMutability": "MUTABLE", - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": "804", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "12822", - "id": "805", - "length": "7", - "line": "335", - "parentIndex": "802", - "start": "12816" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "INTERNAL" - } - ], - "name": "Uint256Slot", - "nodeType": "STRUCT_DEFINITION", - "src": { - "column": "4", - "end": "12835", - "id": "801", - "length": "49", - "line": "334", - "parentIndex": "767", - "start": "12787" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_struct$_StorageSlot_Uint256Slot_$800", - "typeString": "struct StorageSlot.Uint256Slot" - }, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "823", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "88", - "end": "13080", - "id": "824", - "length": "63", - "line": "341", - "parentIndex": "807", - "start": "13018" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assembly", - "value": { - "id": "825", - "nodeType": "ASSEMBLY_STATEMENT", - "src": { - "column": "8", - "end": "13074", - "id": "826", - "length": "47", - "line": "342", - "parentIndex": "823", - "start": "13028" - } - } - } - ] - }, - "id": "807", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "getAddressSlot", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "809", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "811", - "name": "slot", - "nodeType": "VARIABLE_DECLARATION", - "scope": "811", - "src": { - "column": "28", - "end": "12969", - "id": "812", - "length": "12", - "line": "341", - "parentIndex": "809", - "start": "12958" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": "813", - "name": "bytes32", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "12964", - "id": "814", - "length": "7", - "line": "341", - "parentIndex": "811", - "start": "12958" - }, - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "28", - "end": "12969", - "id": "810", - "length": "12", - "line": "341", - "parentIndex": "807", - "start": "12958" - } - }, - "returnParameters": { - "id": "815", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "817", - "name": "r", - "nodeType": "VARIABLE_DECLARATION", - "scope": "817", - "src": { - "column": "65", - "end": "13015", - "id": "818", - "length": "21", - "line": "341", - "parentIndex": "815", - "start": "12995" - }, - "stateMutability": "MUTABLE", - "storageLocation": "STORAGE", - "typeDescription": { - "typeIdentifier": "t_struct$_StorageSlot_AddressSlot_$779", - "typeString": "struct StorageSlot.AddressSlot" - }, - "typeName": { - "id": "819", - "nodeType": "USER_DEFINED_PATH_NAME", - "pathNode": { - "id": "821", - "name": "AddressSlot", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "779", - "src": { - "column": "65", - "end": "13005", - "id": "822", - "length": "11", - "line": "341", - "parentIndex": "819", - "start": "12995" - } - }, - "referencedDeclaration": "779", - "src": { - "column": "65", - "end": "13005", - "id": "820", - "length": "11", - "line": "341", - "parentIndex": "817", - "start": "12995" - }, - "typeDescription": { - "typeIdentifier": "t_struct$_StorageSlot_AddressSlot_$779", - "typeString": "struct StorageSlot.AddressSlot" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "13015", - "id": "816", - "length": "21", - "line": "341", - "parentIndex": "807", - "start": "12995" - } - }, - "scope": "777", - "src": { - "column": "4", - "end": "13080", - "id": "808", - "length": "147", - "line": "341", - "parentIndex": "777", - "start": "12934" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_bytes32", - "typeString": "function(bytes32)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "847", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "88", - "end": "13325", - "id": "848", - "length": "63", - "line": "350", - "parentIndex": "831", - "start": "13263" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assembly", - "value": { - "id": "849", - "nodeType": "ASSEMBLY_STATEMENT", - "src": { - "column": "8", - "end": "13319", - "id": "850", - "length": "47", - "line": "351", - "parentIndex": "847", - "start": "13273" - } - } - } - ] - }, - "id": "831", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "getBooleanSlot", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "833", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "835", - "name": "slot", - "nodeType": "VARIABLE_DECLARATION", - "scope": "835", - "src": { - "column": "28", - "end": "13214", - "id": "836", - "length": "12", - "line": "350", - "parentIndex": "833", - "start": "13203" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": "837", - "name": "bytes32", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "13209", - "id": "838", - "length": "7", - "line": "350", - "parentIndex": "835", - "start": "13203" - }, - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "28", - "end": "13214", - "id": "834", - "length": "12", - "line": "350", - "parentIndex": "831", - "start": "13203" - } - }, - "returnParameters": { - "id": "839", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "841", - "name": "r", - "nodeType": "VARIABLE_DECLARATION", - "scope": "841", - "src": { - "column": "65", - "end": "13260", - "id": "842", - "length": "21", - "line": "350", - "parentIndex": "839", - "start": "13240" - }, - "stateMutability": "MUTABLE", - "storageLocation": "STORAGE", - "typeDescription": { - "typeIdentifier": "t_struct$_StorageSlot_BooleanSlot_$786", - "typeString": "struct StorageSlot.BooleanSlot" - }, - "typeName": { - "id": "843", - "nodeType": "USER_DEFINED_PATH_NAME", - "pathNode": { - "id": "845", - "name": "BooleanSlot", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "786", - "src": { - "column": "65", - "end": "13250", - "id": "846", - "length": "11", - "line": "350", - "parentIndex": "843", - "start": "13240" - } - }, - "referencedDeclaration": "786", - "src": { - "column": "65", - "end": "13250", - "id": "844", - "length": "11", - "line": "350", - "parentIndex": "841", - "start": "13240" - }, - "typeDescription": { - "typeIdentifier": "t_struct$_StorageSlot_BooleanSlot_$786", - "typeString": "struct StorageSlot.BooleanSlot" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "13260", - "id": "840", - "length": "21", - "line": "350", - "parentIndex": "831", - "start": "13240" - } - }, - "scope": "777", - "src": { - "column": "4", - "end": "13325", - "id": "832", - "length": "147", - "line": "350", - "parentIndex": "777", - "start": "13179" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_bytes32", - "typeString": "function(bytes32)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "871", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "88", - "end": "13570", - "id": "872", - "length": "63", - "line": "359", - "parentIndex": "855", - "start": "13508" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assembly", - "value": { - "id": "873", - "nodeType": "ASSEMBLY_STATEMENT", - "src": { - "column": "8", - "end": "13564", - "id": "874", - "length": "47", - "line": "360", - "parentIndex": "871", - "start": "13518" - } - } - } - ] - }, - "id": "855", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "getBytes32Slot", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "857", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "859", - "name": "slot", - "nodeType": "VARIABLE_DECLARATION", - "scope": "859", - "src": { - "column": "28", - "end": "13459", - "id": "860", - "length": "12", - "line": "359", - "parentIndex": "857", - "start": "13448" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": "861", - "name": "bytes32", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "13454", - "id": "862", - "length": "7", - "line": "359", - "parentIndex": "859", - "start": "13448" - }, - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "28", - "end": "13459", - "id": "858", - "length": "12", - "line": "359", - "parentIndex": "855", - "start": "13448" - } - }, - "returnParameters": { - "id": "863", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "865", - "name": "r", - "nodeType": "VARIABLE_DECLARATION", - "scope": "865", - "src": { - "column": "65", - "end": "13505", - "id": "866", - "length": "21", - "line": "359", - "parentIndex": "863", - "start": "13485" - }, - "stateMutability": "MUTABLE", - "storageLocation": "STORAGE", - "typeDescription": { - "typeIdentifier": "t_struct$_StorageSlot_Bytes32Slot_$793", - "typeString": "struct StorageSlot.Bytes32Slot" - }, - "typeName": { - "id": "867", - "nodeType": "USER_DEFINED_PATH_NAME", - "pathNode": { - "id": "869", - "name": "Bytes32Slot", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "793", - "src": { - "column": "65", - "end": "13495", - "id": "870", - "length": "11", - "line": "359", - "parentIndex": "867", - "start": "13485" - } - }, - "referencedDeclaration": "793", - "src": { - "column": "65", - "end": "13495", - "id": "868", - "length": "11", - "line": "359", - "parentIndex": "865", - "start": "13485" - }, - "typeDescription": { - "typeIdentifier": "t_struct$_StorageSlot_Bytes32Slot_$793", - "typeString": "struct StorageSlot.Bytes32Slot" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "13505", - "id": "864", - "length": "21", - "line": "359", - "parentIndex": "855", - "start": "13485" - } - }, - "scope": "777", - "src": { - "column": "4", - "end": "13570", - "id": "856", - "length": "147", - "line": "359", - "parentIndex": "777", - "start": "13424" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_bytes32", - "typeString": "function(bytes32)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "895", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "88", - "end": "13815", - "id": "896", - "length": "63", - "line": "368", - "parentIndex": "879", - "start": "13753" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assembly", - "value": { - "id": "897", - "nodeType": "ASSEMBLY_STATEMENT", - "src": { - "column": "8", - "end": "13809", - "id": "898", - "length": "47", - "line": "369", - "parentIndex": "895", - "start": "13763" - } - } - } - ] - }, - "id": "879", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "getUint256Slot", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "881", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "883", - "name": "slot", - "nodeType": "VARIABLE_DECLARATION", - "scope": "883", - "src": { - "column": "28", - "end": "13704", - "id": "884", - "length": "12", - "line": "368", - "parentIndex": "881", - "start": "13693" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": "885", - "name": "bytes32", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "13699", - "id": "886", - "length": "7", - "line": "368", - "parentIndex": "883", - "start": "13693" - }, - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "28", - "end": "13704", - "id": "882", - "length": "12", - "line": "368", - "parentIndex": "879", - "start": "13693" - } - }, - "returnParameters": { - "id": "887", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "889", - "name": "r", - "nodeType": "VARIABLE_DECLARATION", - "scope": "889", - "src": { - "column": "65", - "end": "13750", - "id": "890", - "length": "21", - "line": "368", - "parentIndex": "887", - "start": "13730" - }, - "stateMutability": "MUTABLE", - "storageLocation": "STORAGE", - "typeDescription": { - "typeIdentifier": "t_struct$_StorageSlot_Uint256Slot_$800", - "typeString": "struct StorageSlot.Uint256Slot" - }, - "typeName": { - "id": "891", - "nodeType": "USER_DEFINED_PATH_NAME", - "pathNode": { - "id": "893", - "name": "Uint256Slot", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "800", - "src": { - "column": "65", - "end": "13740", - "id": "894", - "length": "11", - "line": "368", - "parentIndex": "891", - "start": "13730" - } - }, - "referencedDeclaration": "800", - "src": { - "column": "65", - "end": "13740", - "id": "892", - "length": "11", - "line": "368", - "parentIndex": "889", - "start": "13730" - }, - "typeDescription": { - "typeIdentifier": "t_struct$_StorageSlot_Uint256Slot_$800", - "typeString": "struct StorageSlot.Uint256Slot" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "65", - "end": "13750", - "id": "888", - "length": "21", - "line": "368", - "parentIndex": "879", - "start": "13730" - } - }, - "scope": "777", - "src": { - "column": "4", - "end": "13815", - "id": "880", - "length": "147", - "line": "368", - "parentIndex": "777", - "start": "13669" - }, - "stateMutability": "PURE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_bytes32", - "typeString": "function(bytes32)" - }, - "visibility": "INTERNAL" - } - } - ], - "src": { - "end": "13817", - "length": "1219", - "line": "321", - "parentIndex": "767", - "start": "12599" - } - } - } - ] - }, - "src": { - "id": 768, - "line": 321, - "start": 12599, - "end": 13817, - "length": 1219, - "parent_index": 118 - } - }, - { - "id": 902, - "license": "MIT", - "name": "ERC1967Upgrade", - "absolute_path": "ERC1967Upgrade.sol", - "exported_symbols": [ - { - "id": 902, - "name": "ERC1967Upgrade", - "absolute_path": "ERC1967Upgrade.sol" - }, - { - "id": 767, - "name": "StorageSlot", - "absolute_path": "StorageSlot.sol" - }, - { - "id": 251, - "name": "Address", - "absolute_path": "Address.sol" - }, - { - "id": 119, - "name": "IBeacon", - "absolute_path": "IBeacon.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "912", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "2", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "13876", - "id": "913", - "length": "23", - "line": "378", - "parentIndex": "902", - "start": "13854" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "IBeacon.sol", - "file": "../beacon/IBeacon.sol", - "id": "914", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "902", - "sourceUnit": "767", - "src": { - "end": "13909", - "length": "31", - "line": "380", - "parentIndex": "902", - "start": "13879" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "Address.sol", - "file": "../../utils/Address.sol", - "id": "915", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "902", - "sourceUnit": "767", - "src": { - "end": "13943", - "length": "33", - "line": "381", - "parentIndex": "902", - "start": "13911" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "StorageSlot.sol", - "file": "../../utils/StorageSlot.sol", - "id": "916", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "902", - "sourceUnit": "767", - "src": { - "end": "13981", - "length": "37", - "line": "382", - "parentIndex": "902", - "start": "13945" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "contractDependencies": [ - "914", - "915", - "916" - ], - "fullyImplemented": true, - "id": "917", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "917", - "914", - "915", - "916" - ], - "name": "ERC1967Upgrade", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "919", - "isConstant": true, - "isStateVariable": true, - "name": "_ROLLBACK_SLOT", - "nodeType": "VARIABLE_DECLARATION", - "scope": "917", - "src": { - "column": "4", - "end": "14447", - "id": "920", - "length": "109", - "line": "394", - "parentIndex": "917", - "start": "14339" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": "921", - "name": "bytes32", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "4", - "end": "14345", - "id": "922", - "length": "7", - "line": "394", - "parentIndex": "919", - "start": "14339" - }, - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "924", - "isConstant": true, - "isStateVariable": true, - "name": "_IMPLEMENTATION_SLOT", - "nodeType": "VARIABLE_DECLARATION", - "scope": "917", - "src": { - "column": "4", - "end": "14788", - "id": "925", - "length": "116", - "line": "401", - "parentIndex": "917", - "start": "14673" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": "926", - "name": "bytes32", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "4", - "end": "14679", - "id": "927", - "length": "7", - "line": "401", - "parentIndex": "924", - "start": "14673" - }, - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", - "value": { - "id": "929", - "name": "Upgraded", - "nodeType": "EVENT_DEFINITION", - "parameters": { - "id": "931", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "932", - "indexed": true, - "name": "implementation", - "nodeType": "VARIABLE_DECLARATION", - "scope": "932", - "src": { - "column": "19", - "end": "14912", - "id": "933", - "length": "30", - "line": "406", - "parentIndex": "931", - "start": "14883" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "934", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "19", - "end": "14889", - "id": "935", - "length": "7", - "line": "406", - "parentIndex": "932", - "start": "14883" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "4", - "end": "14914", - "id": "930", - "length": "47", - "line": "406", - "parentIndex": "929", - "start": "14868" - } - }, - "src": { - "column": "4", - "end": "14914", - "id": "930", - "length": "47", - "line": "406", - "parentIndex": "917", - "start": "14868" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", - "typeString": "event ERC1967Upgrade.Upgraded" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "951", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "66", - "end": "15132", - "id": "952", - "length": "78", - "line": "411", - "parentIndex": "937", - "start": "15055" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "959", - "name": "_IMPLEMENTATION_SLOT", - "nodeType": "IDENTIFIER", - "src": { - "column": "42", - "end": "15118", - "id": "960", - "length": "20", - "line": "412", - "parentIndex": "957", - "start": "15099" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "963", - "name": "StorageSlot", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "767", - "src": { - "column": "15", - "end": "15082", - "id": "964", - "length": "11", - "line": "412", - "parentIndex": "961", - "start": "15072" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "961", - "memberName": "getAddressSlot", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "15097", - "id": "962", - "length": "26", - "line": "412", - "parentIndex": "957", - "start": "15072" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "957", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "15119", - "id": "958", - "length": "48", - "line": "412", - "parentIndex": "955", - "start": "15072" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "id": "955", - "memberName": "value", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "15125", - "id": "956", - "length": "54", - "line": "412", - "parentIndex": "951", - "start": "15072" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "functionReturnParameters": "937", - "id": "953", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "15126", - "id": "954", - "length": "62", - "line": "412", - "parentIndex": "937", - "start": "15065" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - } - ] - }, - "id": "937", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_getImplementation", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "939", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "941", - "nodeType": "VARIABLE_DECLARATION", - "scope": "941", - "src": { - "column": "57", - "end": "15052", - "id": "942", - "length": "7", - "line": "411", - "parentIndex": "939", - "start": "15046" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "943", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "57", - "end": "15052", - "id": "944", - "length": "7", - "line": "411", - "parentIndex": "941", - "start": "15046" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "57", - "end": "15052", - "id": "940", - "length": "7", - "line": "411", - "parentIndex": "937", - "start": "15046" - } - }, - "returnParameters": { - "id": "945", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "947", - "nodeType": "VARIABLE_DECLARATION", - "scope": "947", - "src": { - "column": "57", - "end": "15052", - "id": "948", - "length": "7", - "line": "411", - "parentIndex": "945", - "start": "15046" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "949", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "57", - "end": "15052", - "id": "950", - "length": "7", - "line": "411", - "parentIndex": "947", - "start": "15046" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "57", - "end": "15052", - "id": "946", - "length": "7", - "line": "411", - "parentIndex": "937", - "start": "15046" - } - }, - "scope": "917", - "src": { - "column": "4", - "end": "15132", - "id": "938", - "length": "140", - "line": "411", - "parentIndex": "917", - "start": "14993" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "975", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "67", - "end": "15482", - "id": "976", - "length": "196", - "line": "418", - "parentIndex": "966", - "start": "15287" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC1967: new implementation is not a contract\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "981", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "981", - "src": { - "column": "35", - "end": "15340", - "id": "982", - "length": "17", - "line": "419", - "parentIndex": "979", - "start": "15324" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "985", - "name": "Address", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "251", - "src": { - "column": "16", - "end": "15311", - "id": "986", - "length": "7", - "line": "419", - "parentIndex": "983", - "start": "15305" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Address_$251", - "typeString": "contract Address" - } - } - }, - "id": "983", - "memberName": "isContract", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "16", - "end": "15322", - "id": "984", - "length": "18", - "line": "419", - "parentIndex": "979", - "start": "15305" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Address_$251", - "typeString": "contract Address" - } - } - }, - "id": "979", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "16", - "end": "15341", - "id": "980", - "length": "37", - "line": "419", - "parentIndex": "977", - "start": "15305" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - ], - "hexValue": "455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374", - "id": "987", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "55", - "end": "15390", - "id": "988", - "length": "47", - "line": "419", - "parentIndex": "977", - "start": "15344" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC1967: new implementation is not a contract\"" - }, - "value": "ERC1967: new implementation is not a contract" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC1967: new implementation is not a contract\"" - } - ], - "id": "989", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "15303", - "id": "990", - "length": "7", - "line": "419", - "parentIndex": "977", - "start": "15297" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$$_t_string_literal", - "typeString": "function(function(address),literal_string \"ERC1967: new implementation is not a contract\")" - } - } - }, - "id": "977", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "15391", - "id": "978", - "length": "95", - "line": "419", - "parentIndex": "975", - "start": "15297" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", - "typeString": "function(function(address),string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "993", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "999", - "name": "_IMPLEMENTATION_SLOT", - "nodeType": "IDENTIFIER", - "src": { - "column": "35", - "end": "15448", - "id": "1000", - "length": "20", - "line": "420", - "parentIndex": "997", - "start": "15429" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1003", - "name": "StorageSlot", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "767", - "src": { - "column": "8", - "end": "15412", - "id": "1004", - "length": "11", - "line": "420", - "parentIndex": "1001", - "start": "15402" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1001", - "memberName": "getAddressSlot", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "8", - "end": "15427", - "id": "1002", - "length": "26", - "line": "420", - "parentIndex": "997", - "start": "15402" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "997", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "15449", - "id": "998", - "length": "48", - "line": "420", - "parentIndex": "995", - "start": "15402" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "id": "995", - "memberName": "value", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "8", - "end": "15455", - "id": "996", - "length": "54", - "line": "420", - "parentIndex": "993", - "start": "15402" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1005", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1005", - "src": { - "column": "65", - "end": "15475", - "id": "1006", - "length": "17", - "line": "420", - "parentIndex": "993", - "start": "15459" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "src": { - "column": "8", - "end": "15475", - "id": "994", - "length": "74", - "line": "420", - "parentIndex": "975", - "start": "15402" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "id": "991", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "15476", - "id": "992", - "length": "75", - "line": "420", - "parentIndex": "975", - "start": "15402" - } - } - } - ] - }, - "id": "966", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_setImplementation", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "968", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "970", - "name": "newImplementation", - "nodeType": "VARIABLE_DECLARATION", - "scope": "970", - "src": { - "column": "32", - "end": "15276", - "id": "971", - "length": "25", - "line": "418", - "parentIndex": "968", - "start": "15252" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "972", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "32", - "end": "15258", - "id": "973", - "length": "7", - "line": "418", - "parentIndex": "970", - "start": "15252" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "32", - "end": "15276", - "id": "969", - "length": "25", - "line": "418", - "parentIndex": "966", - "start": "15252" - } - }, - "returnParameters": { - "id": "974", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "15482", - "id": "967", - "length": "259", - "line": "418", - "parentIndex": "966", - "start": "15224" - } - }, - "scope": "917", - "src": { - "column": "4", - "end": "15482", - "id": "967", - "length": "259", - "line": "418", - "parentIndex": "917", - "start": "15224" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1017", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "60", - "end": "15740", - "id": "1018", - "length": "96", - "line": "428", - "parentIndex": "1008", - "start": "15645" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1021", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1021", - "src": { - "column": "27", - "end": "15690", - "id": "1022", - "length": "17", - "line": "429", - "parentIndex": "1019", - "start": "15674" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1023", - "name": "_setImplementation", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "15672", - "id": "1024", - "length": "18", - "line": "429", - "parentIndex": "1019", - "start": "15655" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "1019", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "15691", - "id": "1020", - "length": "37", - "line": "429", - "parentIndex": "1017", - "start": "15655" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1027", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1027", - "src": { - "column": "22", - "end": "15732", - "id": "1028", - "length": "17", - "line": "430", - "parentIndex": "1017", - "start": "15716" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1029", - "name": "Upgraded", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "929", - "src": { - "column": "13", - "end": "15714", - "id": "1030", - "length": "8", - "line": "430", - "parentIndex": "1017", - "start": "15707" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", - "typeString": "event ERC1967Upgrade.Upgraded" - } - } - }, - "id": "1025", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "15734", - "id": "1026", - "length": "33", - "line": "430", - "parentIndex": "1008", - "start": "15702" - } - } - } - ] - }, - "id": "1008", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_upgradeTo", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1010", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1012", - "name": "newImplementation", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1012", - "src": { - "column": "24", - "end": "15633", - "id": "1013", - "length": "25", - "line": "428", - "parentIndex": "1010", - "start": "15609" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1014", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "24", - "end": "15615", - "id": "1015", - "length": "7", - "line": "428", - "parentIndex": "1012", - "start": "15609" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "24", - "end": "15633", - "id": "1011", - "length": "25", - "line": "428", - "parentIndex": "1008", - "start": "15609" - } - }, - "returnParameters": { - "id": "1016", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "15740", - "id": "1009", - "length": "152", - "line": "428", - "parentIndex": "1008", - "start": "15589" - } - }, - "scope": "917", - "src": { - "column": "4", - "end": "15740", - "id": "1009", - "length": "152", - "line": "428", - "parentIndex": "917", - "start": "15589" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1049", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "102", - "end": "16189", - "id": "1050", - "length": "217", - "line": "438", - "parentIndex": "1032", - "start": "15973" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1053", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1053", - "src": { - "column": "27", - "end": "16018", - "id": "1054", - "length": "17", - "line": "439", - "parentIndex": "1051", - "start": "16002" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1055", - "name": "_setImplementation", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "16000", - "id": "1056", - "length": "18", - "line": "439", - "parentIndex": "1051", - "start": "15983" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "1051", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "16019", - "id": "1052", - "length": "37", - "line": "439", - "parentIndex": "1049", - "start": "15983" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1059", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1059", - "src": { - "column": "22", - "end": "16060", - "id": "1060", - "length": "17", - "line": "440", - "parentIndex": "1049", - "start": "16044" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1061", - "name": "Upgraded", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "929", - "src": { - "column": "13", - "end": "16042", - "id": "1062", - "length": "8", - "line": "440", - "parentIndex": "1049", - "start": "16035" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", - "typeString": "event ERC1967Upgrade.Upgraded" - } - } - }, - "id": "1057", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "16062", - "id": "1058", - "length": "33", - "line": "440", - "parentIndex": "1032", - "start": "16030" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "1077", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "42", - "end": "16183", - "id": "1078", - "length": "78", - "line": "441", - "parentIndex": "1032", - "start": "16106" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1081", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1081", - "src": { - "column": "41", - "end": "16165", - "id": "1082", - "length": "17", - "line": "442", - "parentIndex": "1079", - "start": "16149" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1083", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1083", - "src": { - "column": "60", - "end": "16171", - "id": "1084", - "length": "4", - "line": "442", - "parentIndex": "1079", - "start": "16168" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1087", - "name": "Address", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "251", - "src": { - "column": "12", - "end": "16126", - "id": "1088", - "length": "7", - "line": "442", - "parentIndex": "1085", - "start": "16120" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Address_$251", - "typeString": "contract Address" - } - } - }, - "id": "1085", - "memberName": "functionDelegateCall", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "16147", - "id": "1086", - "length": "28", - "line": "442", - "parentIndex": "1079", - "start": "16120" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Address_$251", - "typeString": "contract Address" - } - } - }, - "id": "1079", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "16172", - "id": "1080", - "length": "53", - "line": "442", - "parentIndex": "1077", - "start": "16120" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$", - "typeString": "function(address,bytes)" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1065", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1067", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1071", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1071", - "src": { - "column": "12", - "end": "16079", - "id": "1072", - "length": "4", - "line": "441", - "parentIndex": "1069", - "start": "16076" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - "id": "1069", - "memberName": "length", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "16086", - "id": "1070", - "length": "11", - "line": "441", - "parentIndex": "1067", - "start": "16076" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1073", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "26", - "end": "16090", - "id": "1074", - "length": "1", - "line": "441", - "parentIndex": "1067", - "start": "16090" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "12", - "end": "16090", - "id": "1068", - "length": "15", - "line": "441", - "parentIndex": "1065", - "start": "16076" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "OR", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1075", - "name": "forceCall", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1075", - "src": { - "column": "31", - "end": "16103", - "id": "1076", - "length": "9", - "line": "441", - "parentIndex": "1065", - "start": "16095" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "src": { - "column": "12", - "end": "16103", - "id": "1066", - "length": "28", - "line": "441", - "parentIndex": "1063", - "start": "16076" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "1063", - "nodeType": "IF_STATEMENT", - "src": { - "end": "16183", - "id": "1064", - "length": "112", - "line": "441", - "parentIndex": "1049", - "start": "16072" - } - } - } - ] - }, - "id": "1032", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_upgradeToAndCall", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1034", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1036", - "name": "newImplementation", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1036", - "src": { - "column": "31", - "end": "15926", - "id": "1037", - "length": "25", - "line": "438", - "parentIndex": "1034", - "start": "15902" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1038", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "15908", - "id": "1039", - "length": "7", - "line": "438", - "parentIndex": "1036", - "start": "15902" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1040", - "name": "data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1040", - "src": { - "column": "58", - "end": "15945", - "id": "1041", - "length": "17", - "line": "438", - "parentIndex": "1034", - "start": "15929" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "1042", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "58", - "end": "15933", - "id": "1043", - "length": "5", - "line": "438", - "parentIndex": "1040", - "start": "15929" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1044", - "name": "forceCall", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1044", - "src": { - "column": "77", - "end": "15961", - "id": "1045", - "length": "14", - "line": "438", - "parentIndex": "1034", - "start": "15948" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "1046", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "77", - "end": "15951", - "id": "1047", - "length": "4", - "line": "438", - "parentIndex": "1044", - "start": "15948" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "31", - "end": "15961", - "id": "1035", - "length": "60", - "line": "438", - "parentIndex": "1032", - "start": "15902" - } - }, - "returnParameters": { - "id": "1048", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "16189", - "id": "1033", - "length": "315", - "line": "438", - "parentIndex": "1032", - "start": "15875" - } - }, - "scope": "917", - "src": { - "column": "4", - "end": "16189", - "id": "1033", - "length": "315", - "line": "438", - "parentIndex": "917", - "start": "15875" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_bool", - "typeString": "function(address,bytes,bool)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1107", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "108", - "end": "17675", - "id": "1108", - "length": "1210", - "line": "451", - "parentIndex": "1090", - "start": "16466" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "1111" - ], - "declarations": [ - { - "id": "1111", - "mutability": "MUTABLE", - "name": "oldImplementation", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1107", - "src": { - "column": "8", - "end": "16500", - "id": "1112", - "length": "25", - "line": "452", - "parentIndex": "1109", - "start": "16476" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1113", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "16482", - "id": "1114", - "length": "7", - "line": "452", - "parentIndex": "1111", - "start": "16476" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "1109", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1117", - "name": "_getImplementation", - "nodeType": "IDENTIFIER", - "src": { - "column": "36", - "end": "16521", - "id": "1118", - "length": "18", - "line": "452", - "parentIndex": "1115", - "start": "16504" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "1115", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "36", - "end": "16523", - "id": "1116", - "length": "20", - "line": "452", - "parentIndex": "1109", - "start": "16504" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "16524", - "id": "1110", - "length": "49", - "line": "452", - "parentIndex": "1107", - "start": "16476" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1121", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1121", - "src": { - "column": "27", - "end": "16612", - "id": "1122", - "length": "17", - "line": "455", - "parentIndex": "1119", - "start": "16596" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1123", - "name": "_setImplementation", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "16594", - "id": "1124", - "length": "18", - "line": "455", - "parentIndex": "1119", - "start": "16577" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "1119", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "16613", - "id": "1120", - "length": "37", - "line": "455", - "parentIndex": "1107", - "start": "16577" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "1139", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "42", - "end": "16735", - "id": "1140", - "length": "78", - "line": "456", - "parentIndex": "1090", - "start": "16658" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1143", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1143", - "src": { - "column": "41", - "end": "16717", - "id": "1144", - "length": "17", - "line": "457", - "parentIndex": "1141", - "start": "16701" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1145", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1145", - "src": { - "column": "60", - "end": "16723", - "id": "1146", - "length": "4", - "line": "457", - "parentIndex": "1141", - "start": "16720" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1149", - "name": "Address", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "251", - "src": { - "column": "12", - "end": "16678", - "id": "1150", - "length": "7", - "line": "457", - "parentIndex": "1147", - "start": "16672" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Address_$251", - "typeString": "contract Address" - } - } - }, - "id": "1147", - "memberName": "functionDelegateCall", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "16699", - "id": "1148", - "length": "28", - "line": "457", - "parentIndex": "1141", - "start": "16672" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Address_$251", - "typeString": "contract Address" - } - } - }, - "id": "1141", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "16724", - "id": "1142", - "length": "53", - "line": "457", - "parentIndex": "1139", - "start": "16672" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$", - "typeString": "function(address,bytes)" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1127", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1129", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1133", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1133", - "src": { - "column": "12", - "end": "16631", - "id": "1134", - "length": "4", - "line": "456", - "parentIndex": "1131", - "start": "16628" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - "id": "1131", - "memberName": "length", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "16638", - "id": "1132", - "length": "11", - "line": "456", - "parentIndex": "1129", - "start": "16628" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1135", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "26", - "end": "16642", - "id": "1136", - "length": "1", - "line": "456", - "parentIndex": "1129", - "start": "16642" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "12", - "end": "16642", - "id": "1130", - "length": "15", - "line": "456", - "parentIndex": "1127", - "start": "16628" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "OR", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1137", - "name": "forceCall", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1137", - "src": { - "column": "31", - "end": "16655", - "id": "1138", - "length": "9", - "line": "456", - "parentIndex": "1127", - "start": "16647" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "src": { - "column": "12", - "end": "16655", - "id": "1128", - "length": "28", - "line": "456", - "parentIndex": "1125", - "start": "16628" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "1125", - "nodeType": "IF_STATEMENT", - "src": { - "end": "16735", - "id": "1126", - "length": "112", - "line": "456", - "parentIndex": "1107", - "start": "16624" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "1153" - ], - "declarations": [ - { - "id": "1153", - "mutability": "MUTABLE", - "name": "rollbackTesting", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1107", - "src": { - "column": "8", - "end": "16852", - "id": "1154", - "length": "47", - "line": "461", - "parentIndex": "1151", - "start": "16806" - }, - "storageLocation": "STORAGE", - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - }, - "typeName": { - "id": "1155", - "nodeType": "USER_DEFINED_PATH_NAME", - "pathNode": { - "id": "1157", - "name": "StorageSlot", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "767", - "src": { - "column": "8", - "end": "16816", - "id": "1158", - "length": "11", - "line": "461", - "parentIndex": "1155", - "start": "16806" - } - }, - "referencedDeclaration": "767", - "src": { - "column": "8", - "end": "16828", - "id": "1156", - "length": "23", - "line": "461", - "parentIndex": "1153", - "start": "16806" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "1151", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1161", - "name": "_ROLLBACK_SLOT", - "nodeType": "IDENTIFIER", - "src": { - "column": "85", - "end": "16896", - "id": "1162", - "length": "14", - "line": "461", - "parentIndex": "1159", - "start": "16883" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1165", - "name": "StorageSlot", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "767", - "src": { - "column": "58", - "end": "16866", - "id": "1166", - "length": "11", - "line": "461", - "parentIndex": "1163", - "start": "16856" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1163", - "memberName": "getBooleanSlot", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "58", - "end": "16881", - "id": "1164", - "length": "26", - "line": "461", - "parentIndex": "1159", - "start": "16856" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1159", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "58", - "end": "16897", - "id": "1160", - "length": "42", - "line": "461", - "parentIndex": "1151", - "start": "16856" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "16898", - "id": "1152", - "length": "93", - "line": "461", - "parentIndex": "1107", - "start": "16806" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "1175", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "36", - "end": "17669", - "id": "1176", - "length": "734", - "line": "462", - "parentIndex": "1090", - "start": "16936" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1179", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1183", - "name": "rollbackTesting", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1151", - "src": { - "column": "12", - "end": "17040", - "id": "1184", - "length": "15", - "line": "464", - "parentIndex": "1181", - "start": "17026" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1181", - "memberName": "value", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "17046", - "id": "1182", - "length": "21", - "line": "464", - "parentIndex": "1179", - "start": "17026" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "74727565", - "id": "1185", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "36", - "end": "17053", - "id": "1186", - "length": "4", - "line": "464", - "parentIndex": "1179", - "start": "17050" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - }, - "src": { - "column": "12", - "end": "17053", - "id": "1180", - "length": "28", - "line": "464", - "parentIndex": "1175", - "start": "17026" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1177", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "12", - "end": "17054", - "id": "1178", - "length": "29", - "line": "464", - "parentIndex": "1175", - "start": "17026" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function__t_string_literal$_t_function_$_t_string_literal$", - "typeString": "function(string memory,string memory)" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1189", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1189", - "src": { - "column": "16", - "end": "17130", - "id": "1190", - "length": "17", - "line": "466", - "parentIndex": "1187", - "start": "17114" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"upgradeTo(address)\"" - }, - { - "typeIdentifier": "t_function_$_t_string_literal", - "typeString": "function(literal_string \"upgradeTo(address)\")" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "75706772616465546f286164647265737329", - "id": "1193", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "20", - "end": "17213", - "id": "1194", - "length": "20", - "line": "468", - "parentIndex": "1191", - "start": "17194" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"upgradeTo(address)\"" - }, - "value": "upgradeTo(address)" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"upgradeTo(address)\"" - } - ], - "id": "1195", - "name": "oldImplementation", - "nodeType": "IDENTIFIER", - "src": { - "column": "20", - "end": "17252", - "id": "1196", - "length": "17", - "line": "469", - "parentIndex": "1191", - "start": "17236" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_string_literal", - "typeString": "function(literal_string \"upgradeTo(address)\")" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"upgradeTo(address)\"" - }, - { - "typeIdentifier": "t_function_$_t_string_literal", - "typeString": "function(literal_string \"upgradeTo(address)\")" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1199", - "name": "abi", - "nodeType": "IDENTIFIER", - "src": { - "column": "16", - "end": "17151", - "id": "1200", - "length": "3", - "line": "467", - "parentIndex": "1197", - "start": "17149" - }, - "typeDescription": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - } - }, - "id": "1197", - "memberName": "encodeWithSignature", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "16", - "end": "17171", - "id": "1198", - "length": "23", - "line": "467", - "parentIndex": "1191", - "start": "17149" - }, - "typeDescription": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - } - }, - "id": "1191", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "16", - "end": "17270", - "id": "1192", - "length": "122", - "line": "467", - "parentIndex": "1187", - "start": "17149" - }, - "typeDescription": { - "typeIdentifier": "t_function__t_string_literal$_t_function_$_t_string_literal$", - "typeString": "function(string memory,string memory)" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function__t_string_literal$_t_function_$_t_string_literal$", - "typeString": "function(string memory,string memory)" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1203", - "name": "Address", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "251", - "src": { - "column": "12", - "end": "17074", - "id": "1204", - "length": "7", - "line": "465", - "parentIndex": "1201", - "start": "17068" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Address_$251", - "typeString": "contract Address" - } - } - }, - "id": "1201", - "memberName": "functionDelegateCall", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "17095", - "id": "1202", - "length": "28", - "line": "465", - "parentIndex": "1187", - "start": "17068" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Address_$251", - "typeString": "contract Address" - } - } - }, - "id": "1187", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "17284", - "id": "1188", - "length": "217", - "line": "465", - "parentIndex": "1175", - "start": "17068" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_function__t_string_literal$_t_function_$_t_string_literal$$", - "typeString": "function(address,function(string memory,string memory))" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1207", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1211", - "name": "rollbackTesting", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1151", - "src": { - "column": "12", - "end": "17313", - "id": "1212", - "length": "15", - "line": "472", - "parentIndex": "1209", - "start": "17299" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1209", - "memberName": "value", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "17319", - "id": "1210", - "length": "21", - "line": "472", - "parentIndex": "1207", - "start": "17299" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "66616c7365", - "id": "1213", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "36", - "end": "17327", - "id": "1214", - "length": "5", - "line": "472", - "parentIndex": "1207", - "start": "17323" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - }, - "src": { - "column": "12", - "end": "17327", - "id": "1208", - "length": "29", - "line": "472", - "parentIndex": "1175", - "start": "17299" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1205", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "12", - "end": "17328", - "id": "1206", - "length": "30", - "line": "472", - "parentIndex": "1175", - "start": "17299" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1217", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1219", - "name": "oldImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1109", - "src": { - "column": "20", - "end": "17410", - "id": "1220", - "length": "17", - "line": "474", - "parentIndex": "1217", - "start": "17394" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1223", - "name": "_getImplementation", - "nodeType": "IDENTIFIER", - "src": { - "column": "41", - "end": "17432", - "id": "1224", - "length": "18", - "line": "474", - "parentIndex": "1221", - "start": "17415" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "1221", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "41", - "end": "17434", - "id": "1222", - "length": "20", - "line": "474", - "parentIndex": "1217", - "start": "17415" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "src": { - "column": "20", - "end": "17434", - "id": "1218", - "length": "41", - "line": "474", - "parentIndex": "1215", - "start": "17394" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "45524331393637557067726164653a207570677261646520627265616b732066757274686572207570677261646573", - "id": "1225", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "63", - "end": "17485", - "id": "1226", - "length": "49", - "line": "474", - "parentIndex": "1215", - "start": "17437" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\"" - }, - "value": "ERC1967Upgrade: upgrade breaks further upgrades" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\"" - } - ], - "id": "1227", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "12", - "end": "17392", - "id": "1228", - "length": "7", - "line": "474", - "parentIndex": "1215", - "start": "17386" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\")" - } - } - }, - "id": "1215", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "17486", - "id": "1216", - "length": "101", - "line": "474", - "parentIndex": "1175", - "start": "17386" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1231", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1231", - "src": { - "column": "31", - "end": "17611", - "id": "1232", - "length": "17", - "line": "476", - "parentIndex": "1229", - "start": "17595" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1233", - "name": "_setImplementation", - "nodeType": "IDENTIFIER", - "src": { - "column": "12", - "end": "17593", - "id": "1234", - "length": "18", - "line": "476", - "parentIndex": "1229", - "start": "17576" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "1229", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "17612", - "id": "1230", - "length": "37", - "line": "476", - "parentIndex": "1175", - "start": "17576" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1237", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1237", - "src": { - "column": "26", - "end": "17657", - "id": "1238", - "length": "17", - "line": "477", - "parentIndex": "1175", - "start": "17641" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1239", - "name": "Upgraded", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "929", - "src": { - "column": "17", - "end": "17639", - "id": "1240", - "length": "8", - "line": "477", - "parentIndex": "1175", - "start": "17632" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", - "typeString": "event ERC1967Upgrade.Upgraded" - } - } - }, - "id": "1235", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "12", - "end": "17659", - "id": "1236", - "length": "33", - "line": "477", - "parentIndex": "1090", - "start": "17627" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.UnaryPrefix", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1173", - "name": "rollbackTesting", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1151", - "src": { - "column": "13", - "end": "16927", - "id": "1174", - "length": "15", - "line": "462", - "parentIndex": "1171", - "start": "16913" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1171", - "memberName": "value", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "13", - "end": "16933", - "id": "1172", - "length": "21", - "line": "462", - "parentIndex": "1169", - "start": "16913" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1169", - "nodeType": "UNARY_OPERATION", - "operator": "NOT", - "src": { - "column": "12", - "end": "16933", - "id": "1170", - "length": "22", - "line": "462", - "parentIndex": "1090", - "start": "16912" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1167", - "nodeType": "IF_STATEMENT", - "src": { - "end": "17669", - "id": "1168", - "length": "762", - "line": "462", - "parentIndex": "1107", - "start": "16908" - } - } - } - ] - }, - "id": "1090", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_upgradeToAndCallSecure", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1092", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1094", - "name": "newImplementation", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1094", - "src": { - "column": "37", - "end": "16419", - "id": "1095", - "length": "25", - "line": "451", - "parentIndex": "1092", - "start": "16395" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1096", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "37", - "end": "16401", - "id": "1097", - "length": "7", - "line": "451", - "parentIndex": "1094", - "start": "16395" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1098", - "name": "data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1098", - "src": { - "column": "64", - "end": "16438", - "id": "1099", - "length": "17", - "line": "451", - "parentIndex": "1092", - "start": "16422" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "1100", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "64", - "end": "16426", - "id": "1101", - "length": "5", - "line": "451", - "parentIndex": "1098", - "start": "16422" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1102", - "name": "forceCall", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1102", - "src": { - "column": "83", - "end": "16454", - "id": "1103", - "length": "14", - "line": "451", - "parentIndex": "1092", - "start": "16441" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "1104", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "83", - "end": "16444", - "id": "1105", - "length": "4", - "line": "451", - "parentIndex": "1102", - "start": "16441" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "37", - "end": "16454", - "id": "1093", - "length": "60", - "line": "451", - "parentIndex": "1090", - "start": "16395" - } - }, - "returnParameters": { - "id": "1106", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "17675", - "id": "1091", - "length": "1314", - "line": "451", - "parentIndex": "1090", - "start": "16362" - } - }, - "scope": "917", - "src": { - "column": "4", - "end": "17675", - "id": "1091", - "length": "1314", - "line": "451", - "parentIndex": "917", - "start": "16362" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_bool", - "typeString": "function(address,bytes,bool)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1259", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "100", - "end": "18291", - "id": "1260", - "length": "217", - "line": "487", - "parentIndex": "1242", - "start": "18075" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1263", - "name": "newBeacon", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1263", - "src": { - "column": "19", - "end": "18104", - "id": "1264", - "length": "9", - "line": "488", - "parentIndex": "1261", - "start": "18096" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1265", - "name": "_setBeacon", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "18094", - "id": "1266", - "length": "10", - "line": "488", - "parentIndex": "1261", - "start": "18085" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "1261", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "18105", - "id": "1262", - "length": "21", - "line": "488", - "parentIndex": "1259", - "start": "18085" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1269", - "name": "newBeacon", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1269", - "src": { - "column": "28", - "end": "18144", - "id": "1270", - "length": "9", - "line": "489", - "parentIndex": "1259", - "start": "18136" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1271", - "name": "BeaconUpgraded", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1433", - "src": { - "column": "13", - "end": "18134", - "id": "1272", - "length": "14", - "line": "489", - "parentIndex": "1259", - "start": "18121" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_ERC1967Upgrade_BeaconUpgraded_\u00261433", - "typeString": "event ERC1967Upgrade.BeaconUpgraded" - } - } - }, - "id": "1267", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "18146", - "id": "1268", - "length": "31", - "line": "489", - "parentIndex": "1242", - "start": "18116" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "1287", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "42", - "end": "18285", - "id": "1288", - "length": "96", - "line": "490", - "parentIndex": "1242", - "start": "18190" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$", - "typeString": "function()" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1297", - "name": "newBeacon", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1297", - "src": { - "column": "49", - "end": "18249", - "id": "1298", - "length": "9", - "line": "491", - "parentIndex": "1295", - "start": "18241" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1299", - "name": "IBeacon", - "nodeType": "IDENTIFIER", - "src": { - "column": "41", - "end": "18239", - "id": "1300", - "length": "7", - "line": "491", - "parentIndex": "1295", - "start": "18233" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "1295", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "41", - "end": "18250", - "id": "1296", - "length": "18", - "line": "491", - "parentIndex": "1293", - "start": "18233" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - "id": "1293", - "memberName": "implementation", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "41", - "end": "18265", - "id": "1294", - "length": "33", - "line": "491", - "parentIndex": "1291", - "start": "18233" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - "id": "1291", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "41", - "end": "18267", - "id": "1292", - "length": "35", - "line": "491", - "parentIndex": "1289", - "start": "18233" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - ], - "id": "1301", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1301", - "src": { - "column": "78", - "end": "18273", - "id": "1302", - "length": "4", - "line": "491", - "parentIndex": "1289", - "start": "18270" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$", - "typeString": "function()" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1305", - "name": "Address", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "251", - "src": { - "column": "12", - "end": "18210", - "id": "1306", - "length": "7", - "line": "491", - "parentIndex": "1303", - "start": "18204" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Address_$251", - "typeString": "contract Address" - } - } - }, - "id": "1303", - "memberName": "functionDelegateCall", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "18231", - "id": "1304", - "length": "28", - "line": "491", - "parentIndex": "1289", - "start": "18204" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Address_$251", - "typeString": "contract Address" - } - } - }, - "id": "1289", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "18274", - "id": "1290", - "length": "71", - "line": "491", - "parentIndex": "1287", - "start": "18204" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$$_t_bytes$", - "typeString": "function(function(),bytes)" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1275", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1277", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1281", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1281", - "src": { - "column": "12", - "end": "18163", - "id": "1282", - "length": "4", - "line": "490", - "parentIndex": "1279", - "start": "18160" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - "id": "1279", - "memberName": "length", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "18170", - "id": "1280", - "length": "11", - "line": "490", - "parentIndex": "1277", - "start": "18160" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "GREATER_THAN", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1283", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "26", - "end": "18174", - "id": "1284", - "length": "1", - "line": "490", - "parentIndex": "1277", - "start": "18174" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - }, - "src": { - "column": "12", - "end": "18174", - "id": "1278", - "length": "15", - "line": "490", - "parentIndex": "1275", - "start": "18160" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "OR", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1285", - "name": "forceCall", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1285", - "src": { - "column": "31", - "end": "18187", - "id": "1286", - "length": "9", - "line": "490", - "parentIndex": "1275", - "start": "18179" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "src": { - "column": "12", - "end": "18187", - "id": "1276", - "length": "28", - "line": "490", - "parentIndex": "1273", - "start": "18160" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "1273", - "nodeType": "IF_STATEMENT", - "src": { - "end": "18285", - "id": "1274", - "length": "130", - "line": "490", - "parentIndex": "1259", - "start": "18156" - } - } - } - ] - }, - "id": "1242", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_upgradeBeaconToAndCall", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1244", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1246", - "name": "newBeacon", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1246", - "src": { - "column": "37", - "end": "18028", - "id": "1247", - "length": "17", - "line": "487", - "parentIndex": "1244", - "start": "18012" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1248", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "37", - "end": "18018", - "id": "1249", - "length": "7", - "line": "487", - "parentIndex": "1246", - "start": "18012" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1250", - "name": "data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1250", - "src": { - "column": "56", - "end": "18047", - "id": "1251", - "length": "17", - "line": "487", - "parentIndex": "1244", - "start": "18031" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "1252", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "56", - "end": "18035", - "id": "1253", - "length": "5", - "line": "487", - "parentIndex": "1250", - "start": "18031" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1254", - "name": "forceCall", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1254", - "src": { - "column": "75", - "end": "18063", - "id": "1255", - "length": "14", - "line": "487", - "parentIndex": "1244", - "start": "18050" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": "1256", - "name": "bool", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "75", - "end": "18053", - "id": "1257", - "length": "4", - "line": "487", - "parentIndex": "1254", - "start": "18050" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "37", - "end": "18063", - "id": "1245", - "length": "52", - "line": "487", - "parentIndex": "1242", - "start": "18012" - } - }, - "returnParameters": { - "id": "1258", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "18291", - "id": "1243", - "length": "313", - "line": "487", - "parentIndex": "1242", - "start": "17979" - } - }, - "scope": "917", - "src": { - "column": "4", - "end": "18291", - "id": "1243", - "length": "313", - "line": "487", - "parentIndex": "917", - "start": "17979" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_bool", - "typeString": "function(address,bytes,bool)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "1308", - "isConstant": true, - "isStateVariable": true, - "name": "_ADMIN_SLOT", - "nodeType": "VARIABLE_DECLARATION", - "scope": "917", - "src": { - "column": "4", - "end": "18598", - "id": "1309", - "length": "107", - "line": "500", - "parentIndex": "917", - "start": "18492" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": "1310", - "name": "bytes32", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "4", - "end": "18498", - "id": "1311", - "length": "7", - "line": "500", - "parentIndex": "1308", - "start": "18492" - }, - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", - "value": { - "id": "1313", - "name": "AdminChanged", - "nodeType": "EVENT_DEFINITION", - "parameters": { - "id": "1315", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1316", - "name": "previousAdmin", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1316", - "src": { - "column": "23", - "end": "18716", - "id": "1317", - "length": "21", - "line": "505", - "parentIndex": "1315", - "start": "18696" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1318", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "18702", - "id": "1319", - "length": "7", - "line": "505", - "parentIndex": "1316", - "start": "18696" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1320", - "name": "newAdmin", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1320", - "src": { - "column": "46", - "end": "18734", - "id": "1321", - "length": "16", - "line": "505", - "parentIndex": "1315", - "start": "18719" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1322", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "46", - "end": "18725", - "id": "1323", - "length": "7", - "line": "505", - "parentIndex": "1320", - "start": "18719" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "4", - "end": "18736", - "id": "1314", - "length": "60", - "line": "505", - "parentIndex": "1313", - "start": "18677" - } - }, - "src": { - "column": "4", - "end": "18736", - "id": "1314", - "length": "60", - "line": "505", - "parentIndex": "917", - "start": "18677" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_ERC1967Upgrade_AdminChanged_\u00261313", - "typeString": "event ERC1967Upgrade.AdminChanged" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1339", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "57", - "end": "18919", - "id": "1340", - "length": "69", - "line": "510", - "parentIndex": "1325", - "start": "18851" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1347", - "name": "_ADMIN_SLOT", - "nodeType": "IDENTIFIER", - "src": { - "column": "42", - "end": "18905", - "id": "1348", - "length": "11", - "line": "511", - "parentIndex": "1345", - "start": "18895" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1351", - "name": "StorageSlot", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "767", - "src": { - "column": "15", - "end": "18878", - "id": "1352", - "length": "11", - "line": "511", - "parentIndex": "1349", - "start": "18868" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1349", - "memberName": "getAddressSlot", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "18893", - "id": "1350", - "length": "26", - "line": "511", - "parentIndex": "1345", - "start": "18868" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1345", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "18906", - "id": "1346", - "length": "39", - "line": "511", - "parentIndex": "1343", - "start": "18868" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "id": "1343", - "memberName": "value", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "18912", - "id": "1344", - "length": "45", - "line": "511", - "parentIndex": "1339", - "start": "18868" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "functionReturnParameters": "1325", - "id": "1341", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "18913", - "id": "1342", - "length": "53", - "line": "511", - "parentIndex": "1325", - "start": "18861" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - } - ] - }, - "id": "1325", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_getAdmin", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1327", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1329", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1329", - "src": { - "column": "48", - "end": "18848", - "id": "1330", - "length": "7", - "line": "510", - "parentIndex": "1327", - "start": "18842" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1331", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "48", - "end": "18848", - "id": "1332", - "length": "7", - "line": "510", - "parentIndex": "1329", - "start": "18842" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "48", - "end": "18848", - "id": "1328", - "length": "7", - "line": "510", - "parentIndex": "1325", - "start": "18842" - } - }, - "returnParameters": { - "id": "1333", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1335", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1335", - "src": { - "column": "48", - "end": "18848", - "id": "1336", - "length": "7", - "line": "510", - "parentIndex": "1333", - "start": "18842" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1337", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "48", - "end": "18848", - "id": "1338", - "length": "7", - "line": "510", - "parentIndex": "1335", - "start": "18842" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "48", - "end": "18848", - "id": "1334", - "length": "7", - "line": "510", - "parentIndex": "1325", - "start": "18842" - } - }, - "scope": "917", - "src": { - "column": "4", - "end": "18919", - "id": "1326", - "length": "122", - "line": "510", - "parentIndex": "917", - "start": "18798" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1363", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "49", - "end": "19202", - "id": "1364", - "length": "156", - "line": "517", - "parentIndex": "1354", - "start": "19047" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC1967: new admin is the zero address\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1367", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1369", - "name": "newAdmin", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1369", - "src": { - "column": "16", - "end": "19072", - "id": "1370", - "length": "8", - "line": "518", - "parentIndex": "1367", - "start": "19065" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1373", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "36", - "end": "19085", - "id": "1374", - "length": "1", - "line": "518", - "parentIndex": "1371", - "start": "19085" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1375", - "nodeType": "IDENTIFIER", - "src": { - "column": "28", - "end": "19083", - "id": "1376", - "length": "7", - "line": "518", - "parentIndex": "1371", - "start": "19077" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1377", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "19083", - "id": "1378", - "length": "7", - "line": "518", - "parentIndex": "1375", - "start": "19077" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1371", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "28", - "end": "19086", - "id": "1372", - "length": "10", - "line": "518", - "parentIndex": "1367", - "start": "19077" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "16", - "end": "19086", - "id": "1368", - "length": "22", - "line": "518", - "parentIndex": "1365", - "start": "19065" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373", - "id": "1379", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "40", - "end": "19128", - "id": "1380", - "length": "40", - "line": "518", - "parentIndex": "1365", - "start": "19089" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC1967: new admin is the zero address\"" - }, - "value": "ERC1967: new admin is the zero address" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC1967: new admin is the zero address\"" - } - ], - "id": "1381", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "19063", - "id": "1382", - "length": "7", - "line": "518", - "parentIndex": "1365", - "start": "19057" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"ERC1967: new admin is the zero address\")" - } - } - }, - "id": "1365", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "19129", - "id": "1366", - "length": "73", - "line": "518", - "parentIndex": "1363", - "start": "19057" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1385", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1391", - "name": "_ADMIN_SLOT", - "nodeType": "IDENTIFIER", - "src": { - "column": "35", - "end": "19177", - "id": "1392", - "length": "11", - "line": "519", - "parentIndex": "1389", - "start": "19167" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1395", - "name": "StorageSlot", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "767", - "src": { - "column": "8", - "end": "19150", - "id": "1396", - "length": "11", - "line": "519", - "parentIndex": "1393", - "start": "19140" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1393", - "memberName": "getAddressSlot", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "8", - "end": "19165", - "id": "1394", - "length": "26", - "line": "519", - "parentIndex": "1389", - "start": "19140" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1389", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "19178", - "id": "1390", - "length": "39", - "line": "519", - "parentIndex": "1387", - "start": "19140" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "id": "1387", - "memberName": "value", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "8", - "end": "19184", - "id": "1388", - "length": "45", - "line": "519", - "parentIndex": "1385", - "start": "19140" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1397", - "name": "newAdmin", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1397", - "src": { - "column": "56", - "end": "19195", - "id": "1398", - "length": "8", - "line": "519", - "parentIndex": "1385", - "start": "19188" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "src": { - "column": "8", - "end": "19195", - "id": "1386", - "length": "56", - "line": "519", - "parentIndex": "1363", - "start": "19140" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "id": "1383", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "19196", - "id": "1384", - "length": "57", - "line": "519", - "parentIndex": "1363", - "start": "19140" - } - } - } - ] - }, - "id": "1354", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_setAdmin", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1356", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1358", - "name": "newAdmin", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1358", - "src": { - "column": "23", - "end": "19036", - "id": "1359", - "length": "16", - "line": "517", - "parentIndex": "1356", - "start": "19021" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1360", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "19027", - "id": "1361", - "length": "7", - "line": "517", - "parentIndex": "1358", - "start": "19021" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "19036", - "id": "1357", - "length": "16", - "line": "517", - "parentIndex": "1354", - "start": "19021" - } - }, - "returnParameters": { - "id": "1362", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "19202", - "id": "1355", - "length": "201", - "line": "517", - "parentIndex": "1354", - "start": "19002" - } - }, - "scope": "917", - "src": { - "column": "4", - "end": "19202", - "id": "1355", - "length": "201", - "line": "517", - "parentIndex": "917", - "start": "19002" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1409", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "53", - "end": "19448", - "id": "1410", - "length": "86", - "line": "527", - "parentIndex": "1400", - "start": "19363" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1415", - "name": "_getAdmin", - "nodeType": "IDENTIFIER", - "src": { - "column": "26", - "end": "19399", - "id": "1416", - "length": "9", - "line": "528", - "parentIndex": "1413", - "start": "19391" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "1413", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "26", - "end": "19401", - "id": "1414", - "length": "11", - "line": "528", - "parentIndex": "1409", - "start": "19391" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1417", - "name": "newAdmin", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1417", - "src": { - "column": "39", - "end": "19411", - "id": "1418", - "length": "8", - "line": "528", - "parentIndex": "1409", - "start": "19404" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1419", - "name": "AdminChanged", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1313", - "src": { - "column": "13", - "end": "19389", - "id": "1420", - "length": "12", - "line": "528", - "parentIndex": "1409", - "start": "19378" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_ERC1967Upgrade_AdminChanged_\u00261313", - "typeString": "event ERC1967Upgrade.AdminChanged" - } - } - }, - "id": "1411", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "19413", - "id": "1412", - "length": "41", - "line": "528", - "parentIndex": "1400", - "start": "19373" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1423", - "name": "newAdmin", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1423", - "src": { - "column": "18", - "end": "19440", - "id": "1424", - "length": "8", - "line": "529", - "parentIndex": "1421", - "start": "19433" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1425", - "name": "_setAdmin", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "19431", - "id": "1426", - "length": "9", - "line": "529", - "parentIndex": "1421", - "start": "19423" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "1421", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "19441", - "id": "1422", - "length": "19", - "line": "529", - "parentIndex": "1409", - "start": "19423" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - } - ] - }, - "id": "1400", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_changeAdmin", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1402", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1404", - "name": "newAdmin", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1404", - "src": { - "column": "26", - "end": "19351", - "id": "1405", - "length": "16", - "line": "527", - "parentIndex": "1402", - "start": "19336" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1406", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "26", - "end": "19342", - "id": "1407", - "length": "7", - "line": "527", - "parentIndex": "1404", - "start": "19336" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "26", - "end": "19351", - "id": "1403", - "length": "16", - "line": "527", - "parentIndex": "1400", - "start": "19336" - } - }, - "returnParameters": { - "id": "1408", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "19448", - "id": "1401", - "length": "135", - "line": "527", - "parentIndex": "1400", - "start": "19314" - } - }, - "scope": "917", - "src": { - "column": "4", - "end": "19448", - "id": "1401", - "length": "135", - "line": "527", - "parentIndex": "917", - "start": "19314" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "1428", - "isConstant": true, - "isStateVariable": true, - "name": "_BEACON_SLOT", - "nodeType": "VARIABLE_DECLARATION", - "scope": "917", - "src": { - "column": "4", - "end": "19799", - "id": "1429", - "length": "108", - "line": "536", - "parentIndex": "917", - "start": "19692" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": "1430", - "name": "bytes32", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "4", - "end": "19698", - "id": "1431", - "length": "7", - "line": "536", - "parentIndex": "1428", - "start": "19692" - }, - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", - "value": { - "id": "1433", - "name": "BeaconUpgraded", - "nodeType": "EVENT_DEFINITION", - "parameters": { - "id": "1435", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1436", - "indexed": true, - "name": "beacon", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1436", - "src": { - "column": "25", - "end": "19913", - "id": "1437", - "length": "22", - "line": "541", - "parentIndex": "1435", - "start": "19892" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1438", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "25", - "end": "19898", - "id": "1439", - "length": "7", - "line": "541", - "parentIndex": "1436", - "start": "19892" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "4", - "end": "19915", - "id": "1434", - "length": "45", - "line": "541", - "parentIndex": "1433", - "start": "19871" - } - }, - "src": { - "column": "4", - "end": "19915", - "id": "1434", - "length": "45", - "line": "541", - "parentIndex": "917", - "start": "19871" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_ERC1967Upgrade_BeaconUpgraded_\u00261433", - "typeString": "event ERC1967Upgrade.BeaconUpgraded" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1455", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "58", - "end": "20101", - "id": "1456", - "length": "70", - "line": "546", - "parentIndex": "1441", - "start": "20032" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1463", - "name": "_BEACON_SLOT", - "nodeType": "IDENTIFIER", - "src": { - "column": "42", - "end": "20087", - "id": "1464", - "length": "12", - "line": "547", - "parentIndex": "1461", - "start": "20076" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1467", - "name": "StorageSlot", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "767", - "src": { - "column": "15", - "end": "20059", - "id": "1468", - "length": "11", - "line": "547", - "parentIndex": "1465", - "start": "20049" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1465", - "memberName": "getAddressSlot", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "20074", - "id": "1466", - "length": "26", - "line": "547", - "parentIndex": "1461", - "start": "20049" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1461", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "20088", - "id": "1462", - "length": "40", - "line": "547", - "parentIndex": "1459", - "start": "20049" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "id": "1459", - "memberName": "value", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "20094", - "id": "1460", - "length": "46", - "line": "547", - "parentIndex": "1455", - "start": "20049" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "functionReturnParameters": "1441", - "id": "1457", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "20095", - "id": "1458", - "length": "54", - "line": "547", - "parentIndex": "1441", - "start": "20042" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - } - ] - }, - "id": "1441", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_getBeacon", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1443", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1445", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1445", - "src": { - "column": "49", - "end": "20029", - "id": "1446", - "length": "7", - "line": "546", - "parentIndex": "1443", - "start": "20023" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1447", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "49", - "end": "20029", - "id": "1448", - "length": "7", - "line": "546", - "parentIndex": "1445", - "start": "20023" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "49", - "end": "20029", - "id": "1444", - "length": "7", - "line": "546", - "parentIndex": "1441", - "start": "20023" - } - }, - "returnParameters": { - "id": "1449", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1451", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1451", - "src": { - "column": "49", - "end": "20029", - "id": "1452", - "length": "7", - "line": "546", - "parentIndex": "1449", - "start": "20023" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1453", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "49", - "end": "20029", - "id": "1454", - "length": "7", - "line": "546", - "parentIndex": "1451", - "start": "20023" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "49", - "end": "20029", - "id": "1450", - "length": "7", - "line": "546", - "parentIndex": "1441", - "start": "20023" - } - }, - "scope": "917", - "src": { - "column": "4", - "end": "20101", - "id": "1442", - "length": "124", - "line": "546", - "parentIndex": "917", - "start": "19978" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1479", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "51", - "end": "20588", - "id": "1480", - "length": "358", - "line": "553", - "parentIndex": "1470", - "start": "20231" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC1967: new beacon is not a contract\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1485", - "name": "newBeacon", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1485", - "src": { - "column": "31", - "end": "20289", - "id": "1486", - "length": "9", - "line": "555", - "parentIndex": "1483", - "start": "20281" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1489", - "name": "Address", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "251", - "src": { - "column": "12", - "end": "20268", - "id": "1490", - "length": "7", - "line": "555", - "parentIndex": "1487", - "start": "20262" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Address_$251", - "typeString": "contract Address" - } - } - }, - "id": "1487", - "memberName": "isContract", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "20279", - "id": "1488", - "length": "18", - "line": "555", - "parentIndex": "1483", - "start": "20262" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Address_$251", - "typeString": "contract Address" - } - } - }, - "id": "1483", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "20290", - "id": "1484", - "length": "29", - "line": "555", - "parentIndex": "1481", - "start": "20262" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - ], - "hexValue": "455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374", - "id": "1491", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "12", - "end": "20343", - "id": "1492", - "length": "39", - "line": "556", - "parentIndex": "1481", - "start": "20305" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC1967: new beacon is not a contract\"" - }, - "value": "ERC1967: new beacon is not a contract" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC1967: new beacon is not a contract\"" - } - ], - "id": "1493", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "20247", - "id": "1494", - "length": "7", - "line": "554", - "parentIndex": "1481", - "start": "20241" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$$_t_string_literal", - "typeString": "function(function(address),literal_string \"ERC1967: new beacon is not a contract\")" - } - } - }, - "id": "1481", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "20353", - "id": "1482", - "length": "113", - "line": "554", - "parentIndex": "1479", - "start": "20241" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", - "typeString": "function(function(address),string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_function_$$", - "typeString": "function(function())" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC1967: beacon implementation is not a contract\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1505", - "name": "newBeacon", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1505", - "src": { - "column": "39", - "end": "20420", - "id": "1506", - "length": "9", - "line": "559", - "parentIndex": "1503", - "start": "20412" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1507", - "name": "IBeacon", - "nodeType": "IDENTIFIER", - "src": { - "column": "31", - "end": "20410", - "id": "1508", - "length": "7", - "line": "559", - "parentIndex": "1503", - "start": "20404" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "1503", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "31", - "end": "20421", - "id": "1504", - "length": "18", - "line": "559", - "parentIndex": "1501", - "start": "20404" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - "id": "1501", - "memberName": "implementation", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "31", - "end": "20436", - "id": "1502", - "length": "33", - "line": "559", - "parentIndex": "1499", - "start": "20404" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - "id": "1499", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "31", - "end": "20438", - "id": "1500", - "length": "35", - "line": "559", - "parentIndex": "1497", - "start": "20404" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1511", - "name": "Address", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "251", - "src": { - "column": "12", - "end": "20391", - "id": "1512", - "length": "7", - "line": "559", - "parentIndex": "1509", - "start": "20385" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Address_$251", - "typeString": "contract Address" - } - } - }, - "id": "1509", - "memberName": "isContract", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "20402", - "id": "1510", - "length": "18", - "line": "559", - "parentIndex": "1497", - "start": "20385" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Address_$251", - "typeString": "contract Address" - } - } - }, - "id": "1497", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "12", - "end": "20439", - "id": "1498", - "length": "55", - "line": "559", - "parentIndex": "1495", - "start": "20385" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$", - "typeString": "function(function())" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_function_$$", - "typeString": "function(function())" - } - ], - "hexValue": "455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374", - "id": "1513", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "12", - "end": "20503", - "id": "1514", - "length": "50", - "line": "560", - "parentIndex": "1495", - "start": "20454" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC1967: beacon implementation is not a contract\"" - }, - "value": "ERC1967: beacon implementation is not a contract" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_function_$$", - "typeString": "function(function())" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"ERC1967: beacon implementation is not a contract\"" - } - ], - "id": "1515", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "20370", - "id": "1516", - "length": "7", - "line": "558", - "parentIndex": "1495", - "start": "20364" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_function_$$$$_t_string_literal", - "typeString": "function(function(function()),literal_string \"ERC1967: beacon implementation is not a contract\")" - } - } - }, - "id": "1495", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "20513", - "id": "1496", - "length": "150", - "line": "558", - "parentIndex": "1479", - "start": "20364" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_function_$$$_t_string_literal$", - "typeString": "function(function(function()),string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1519", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1525", - "name": "_BEACON_SLOT", - "nodeType": "IDENTIFIER", - "src": { - "column": "35", - "end": "20562", - "id": "1526", - "length": "12", - "line": "562", - "parentIndex": "1523", - "start": "20551" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1529", - "name": "StorageSlot", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "767", - "src": { - "column": "8", - "end": "20534", - "id": "1530", - "length": "11", - "line": "562", - "parentIndex": "1527", - "start": "20524" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1527", - "memberName": "getAddressSlot", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "8", - "end": "20549", - "id": "1528", - "length": "26", - "line": "562", - "parentIndex": "1523", - "start": "20524" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_StorageSlot_$767", - "typeString": "contract StorageSlot" - } - } - }, - "id": "1523", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "20563", - "id": "1524", - "length": "40", - "line": "562", - "parentIndex": "1521", - "start": "20524" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "id": "1521", - "memberName": "value", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "8", - "end": "20569", - "id": "1522", - "length": "46", - "line": "562", - "parentIndex": "1519", - "start": "20524" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1531", - "name": "newBeacon", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1531", - "src": { - "column": "57", - "end": "20581", - "id": "1532", - "length": "9", - "line": "562", - "parentIndex": "1519", - "start": "20573" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "src": { - "column": "8", - "end": "20581", - "id": "1520", - "length": "58", - "line": "562", - "parentIndex": "1479", - "start": "20524" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "id": "1517", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "20582", - "id": "1518", - "length": "59", - "line": "562", - "parentIndex": "1479", - "start": "20524" - } - } - } - ] - }, - "id": "1470", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_setBeacon", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1472", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1474", - "name": "newBeacon", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1474", - "src": { - "column": "24", - "end": "20220", - "id": "1475", - "length": "17", - "line": "553", - "parentIndex": "1472", - "start": "20204" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1476", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "24", - "end": "20210", - "id": "1477", - "length": "7", - "line": "553", - "parentIndex": "1474", - "start": "20204" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "24", - "end": "20220", - "id": "1473", - "length": "17", - "line": "553", - "parentIndex": "1470", - "start": "20204" - } - }, - "returnParameters": { - "id": "1478", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "20588", - "id": "1471", - "length": "405", - "line": "553", - "parentIndex": "1470", - "start": "20184" - } - }, - "scope": "917", - "src": { - "column": "4", - "end": "20588", - "id": "1471", - "length": "405", - "line": "553", - "parentIndex": "917", - "start": "20184" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "PRIVATE" - } - } - ], - "src": { - "end": "20590", - "length": "6370", - "line": "392", - "parentIndex": "902", - "start": "14221" - } - } - } - ] - }, - "src": { - "id": 903, - "line": 392, - "start": 14221, - "end": 20590, - "length": 6370, - "parent_index": 118 - } - }, - { - "id": 1533, - "license": "MIT", - "name": "BeaconProxy", - "absolute_path": "BeaconProxy.sol", - "exported_symbols": [ - { - "id": 1533, - "name": "BeaconProxy", - "absolute_path": "BeaconProxy.sol" - }, - { - "id": 902, - "name": "ERC1967Upgrade", - "absolute_path": "ERC1967Upgrade.sol" - }, - { - "id": 160, - "name": "Proxy", - "absolute_path": "Proxy.sol" - }, - { - "id": 119, - "name": "IBeacon", - "absolute_path": "IBeacon.sol" - }, - { - "id": 119, - "name": "IBeacon", - "absolute_path": "IBeacon.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "1545", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "20648", - "id": "1546", - "length": "23", - "line": "568", - "parentIndex": "1533", - "start": "20626" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "IBeacon.sol", - "file": "./IBeacon.sol", - "id": "1550", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "1533", - "sourceUnit": "902", - "src": { - "end": "20673", - "length": "23", - "line": "570", - "parentIndex": "1533", - "start": "20651" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "Proxy.sol", - "file": "../Proxy.sol", - "id": "1551", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "1533", - "sourceUnit": "902", - "src": { - "end": "20696", - "length": "22", - "line": "571", - "parentIndex": "1533", - "start": "20675" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "ERC1967Upgrade.sol", - "file": "../ERC1967/ERC1967Upgrade.sol", - "id": "1552", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "1533", - "sourceUnit": "902", - "src": { - "end": "20736", - "length": "39", - "line": "572", - "parentIndex": "1533", - "start": "20698" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "baseContracts": [ - { - "baseName": { - "id": "1556", - "name": "Proxy", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "160", - "src": { - "column": "24", - "end": "21121", - "id": "1557", - "length": "5", - "line": "582", - "parentIndex": "1553", - "start": "21117" - } - }, - "id": "1554", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "24", - "end": "21121", - "id": "1555", - "length": "5", - "line": "582", - "parentIndex": "1553", - "start": "21117" - } - }, - { - "baseName": { - "id": "1560", - "name": "ERC1967Upgrade", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "902", - "src": { - "column": "31", - "end": "21137", - "id": "1561", - "length": "14", - "line": "582", - "parentIndex": "1553", - "start": "21124" - } - }, - "id": "1558", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "31", - "end": "21137", - "id": "1559", - "length": "14", - "line": "582", - "parentIndex": "1553", - "start": "21124" - } - } - ], - "contractDependencies": [ - "160", - "902", - "1550", - "1551", - "1552" - ], - "fullyImplemented": true, - "id": "1553", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "160", - "902", - "1553", - "1550", - "1551", - "1552" - ], - "name": "BeaconProxy", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1576", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "59", - "end": "21779", - "id": "1577", - "length": "150", - "line": "594", - "parentIndex": "1563", - "start": "21630" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1580", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1582", - "name": "_BEACON_SLOT", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1428", - "src": { - "column": "15", - "end": "21658", - "id": "1583", - "length": "12", - "line": "595", - "parentIndex": "1580", - "start": "21647" - }, - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_function__t_string_literal$$", - "typeString": "function(function(string memory))" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1586", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function__t_string_literal$", - "typeString": "function(string memory)" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"eip1967.proxy.beacon\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "656970313936372e70726f78792e626561636f6e", - "id": "1592", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "57", - "end": "21710", - "id": "1593", - "length": "22", - "line": "595", - "parentIndex": "1590", - "start": "21689" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"eip1967.proxy.beacon\"" - }, - "value": "eip1967.proxy.beacon" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"eip1967.proxy.beacon\"" - } - ], - "id": "1594", - "name": "keccak256", - "nodeType": "IDENTIFIER", - "src": { - "column": "47", - "end": "21687", - "id": "1595", - "length": "9", - "line": "595", - "parentIndex": "1590", - "start": "21679" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_string_literal", - "typeString": "function(literal_string \"eip1967.proxy.beacon\")" - } - } - }, - "id": "1590", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "47", - "end": "21711", - "id": "1591", - "length": "33", - "line": "595", - "parentIndex": "1588", - "start": "21679" - }, - "typeDescription": { - "typeIdentifier": "t_function__t_string_literal$", - "typeString": "function(string memory)" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function__t_string_literal$", - "typeString": "function(string memory)" - } - ], - "id": "1596", - "nodeType": "IDENTIFIER", - "src": { - "column": "39", - "end": "21677", - "id": "1597", - "length": "7", - "line": "595", - "parentIndex": "1588", - "start": "21671" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function__t_string_literal$", - "typeString": "function(function(string memory))" - }, - "typeName": { - "id": "1598", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "39", - "end": "21677", - "id": "1599", - "length": "7", - "line": "595", - "parentIndex": "1596", - "start": "21671" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - }, - "id": "1588", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "39", - "end": "21712", - "id": "1589", - "length": "42", - "line": "595", - "parentIndex": "1586", - "start": "21671" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function__t_string_literal$$", - "typeString": "function(function(string memory))" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "31", - "id": "1600", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "84", - "end": "21716", - "id": "1601", - "length": "1", - "line": "595", - "parentIndex": "1586", - "start": "21716" - }, - "typeDescription": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - }, - "src": { - "column": "39", - "end": "21716", - "id": "1587", - "length": "46", - "line": "595", - "parentIndex": "1584", - "start": "21671" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function__t_string_literal$$", - "typeString": "function(function(string memory))" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_function__t_string_literal$$", - "typeString": "function(function(string memory))" - } - ], - "id": "1602", - "nodeType": "IDENTIFIER", - "src": { - "column": "31", - "end": "21669", - "id": "1603", - "length": "7", - "line": "595", - "parentIndex": "1584", - "start": "21663" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_function__t_string_literal$$", - "typeString": "function(function(function(string memory)))" - }, - "typeName": { - "id": "1604", - "name": "bytes32", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "21669", - "id": "1605", - "length": "7", - "line": "595", - "parentIndex": "1602", - "start": "21663" - }, - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - } - }, - "id": "1584", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "31", - "end": "21717", - "id": "1585", - "length": "55", - "line": "595", - "parentIndex": "1580", - "start": "21663" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_function__t_string_literal$$$", - "typeString": "function(function(function(string memory)))" - } - } - }, - "src": { - "column": "15", - "end": "21717", - "id": "1581", - "length": "71", - "line": "595", - "parentIndex": "1578", - "start": "21647" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": "1606", - "name": "assert", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "21645", - "id": "1607", - "length": "6", - "line": "595", - "parentIndex": "1578", - "start": "21640" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool", - "typeString": "function(bool)" - } - } - }, - "id": "1578", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "21718", - "id": "1579", - "length": "79", - "line": "595", - "parentIndex": "1576", - "start": "21640" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$", - "typeString": "function(bool)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1610", - "name": "beacon", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1610", - "src": { - "column": "32", - "end": "21758", - "id": "1611", - "length": "6", - "line": "596", - "parentIndex": "1608", - "start": "21753" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1612", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1612", - "src": { - "column": "40", - "end": "21764", - "id": "1613", - "length": "4", - "line": "596", - "parentIndex": "1608", - "start": "21761" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "hexValue": "66616c7365", - "id": "1614", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "46", - "end": "21771", - "id": "1615", - "length": "5", - "line": "596", - "parentIndex": "1608", - "start": "21767" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": "1616", - "name": "_upgradeBeaconToAndCall", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "21751", - "id": "1617", - "length": "23", - "line": "596", - "parentIndex": "1608", - "start": "21729" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_bool", - "typeString": "function(address,bytes,bool)" - } - } - }, - "id": "1608", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "21772", - "id": "1609", - "length": "44", - "line": "596", - "parentIndex": "1576", - "start": "21729" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_bool$", - "typeString": "function(address,bytes,bool)" - } - } - } - ] - }, - "id": "1563", - "implemented": true, - "kind": "CONSTRUCTOR", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1565", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1567", - "name": "beacon", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1567", - "src": { - "column": "16", - "end": "21600", - "id": "1568", - "length": "14", - "line": "594", - "parentIndex": "1565", - "start": "21587" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1569", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "16", - "end": "21593", - "id": "1570", - "length": "7", - "line": "594", - "parentIndex": "1567", - "start": "21587" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1571", - "name": "data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1571", - "src": { - "column": "32", - "end": "21619", - "id": "1572", - "length": "17", - "line": "594", - "parentIndex": "1565", - "start": "21603" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "1573", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "32", - "end": "21607", - "id": "1574", - "length": "5", - "line": "594", - "parentIndex": "1571", - "start": "21603" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "16", - "end": "21619", - "id": "1566", - "length": "33", - "line": "594", - "parentIndex": "1563", - "start": "21587" - } - }, - "returnParameters": { - "id": "1575", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "21779", - "id": "1564", - "length": "205", - "line": "594", - "parentIndex": "1563", - "start": "21575" - } - }, - "scope": "1553", - "src": { - "column": "4", - "end": "21779", - "id": "1564", - "length": "205", - "line": "594", - "parentIndex": "1553", - "start": "21575" - }, - "stateMutability": "PAYABLE", - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1633", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "63", - "end": "21944", - "id": "1634", - "length": "36", - "line": "602", - "parentIndex": "1619", - "start": "21909" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1639", - "name": "_getBeacon", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "21935", - "id": "1640", - "length": "10", - "line": "603", - "parentIndex": "1637", - "start": "21926" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "1637", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "21937", - "id": "1638", - "length": "12", - "line": "603", - "parentIndex": "1633", - "start": "21926" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "functionReturnParameters": "1619", - "id": "1635", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "21938", - "id": "1636", - "length": "20", - "line": "603", - "parentIndex": "1619", - "start": "21919" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - } - ] - }, - "id": "1619", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_beacon", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1621", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1623", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1623", - "src": { - "column": "54", - "end": "21906", - "id": "1624", - "length": "7", - "line": "602", - "parentIndex": "1621", - "start": "21900" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1625", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "54", - "end": "21906", - "id": "1626", - "length": "7", - "line": "602", - "parentIndex": "1623", - "start": "21900" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "54", - "end": "21906", - "id": "1622", - "length": "7", - "line": "602", - "parentIndex": "1619", - "start": "21900" - } - }, - "returnParameters": { - "id": "1627", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1629", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1629", - "src": { - "column": "54", - "end": "21906", - "id": "1630", - "length": "7", - "line": "602", - "parentIndex": "1627", - "start": "21900" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1631", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "54", - "end": "21906", - "id": "1632", - "length": "7", - "line": "602", - "parentIndex": "1629", - "start": "21900" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "54", - "end": "21906", - "id": "1628", - "length": "7", - "line": "602", - "parentIndex": "1619", - "start": "21900" - } - }, - "scope": "1553", - "src": { - "column": "4", - "end": "21944", - "id": "1620", - "length": "95", - "line": "602", - "parentIndex": "1553", - "start": "21850" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1658", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "80", - "end": "22185", - "id": "1659", - "length": "62", - "line": "609", - "parentIndex": "1642", - "start": "22124" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1670", - "name": "_getBeacon", - "nodeType": "IDENTIFIER", - "src": { - "column": "23", - "end": "22158", - "id": "1671", - "length": "10", - "line": "610", - "parentIndex": "1668", - "start": "22149" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "1668", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "23", - "end": "22160", - "id": "1669", - "length": "12", - "line": "610", - "parentIndex": "1666", - "start": "22149" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - ], - "id": "1672", - "name": "IBeacon", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "22147", - "id": "1673", - "length": "7", - "line": "610", - "parentIndex": "1666", - "start": "22141" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - "id": "1666", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "22161", - "id": "1667", - "length": "21", - "line": "610", - "parentIndex": "1664", - "start": "22141" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$", - "typeString": "function(function())" - } - } - }, - "id": "1664", - "memberName": "implementation", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "22176", - "id": "1665", - "length": "36", - "line": "610", - "parentIndex": "1662", - "start": "22141" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$", - "typeString": "function(function())" - } - } - }, - "id": "1662", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "22178", - "id": "1663", - "length": "38", - "line": "610", - "parentIndex": "1658", - "start": "22141" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "functionReturnParameters": "1642", - "id": "1660", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "22179", - "id": "1661", - "length": "46", - "line": "610", - "parentIndex": "1642", - "start": "22134" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - } - ] - }, - "id": "1642", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_implementation", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "1644", - "name": "_implementation", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "188", - "src": { - "column": "53", - "end": "22104", - "id": "1645", - "length": "8", - "line": "609", - "parentIndex": "1642", - "start": "22097" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - ], - "parameters": { - "id": "1646", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1648", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1648", - "src": { - "column": "71", - "end": "22121", - "id": "1649", - "length": "7", - "line": "609", - "parentIndex": "1646", - "start": "22115" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1650", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "71", - "end": "22121", - "id": "1651", - "length": "7", - "line": "609", - "parentIndex": "1648", - "start": "22115" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "71", - "end": "22121", - "id": "1647", - "length": "7", - "line": "609", - "parentIndex": "1642", - "start": "22115" - } - }, - "returnParameters": { - "id": "1652", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1654", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1654", - "src": { - "column": "71", - "end": "22121", - "id": "1655", - "length": "7", - "line": "609", - "parentIndex": "1652", - "start": "22115" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1656", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "71", - "end": "22121", - "id": "1657", - "length": "7", - "line": "609", - "parentIndex": "1654", - "start": "22115" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "71", - "end": "22121", - "id": "1653", - "length": "7", - "line": "609", - "parentIndex": "1642", - "start": "22115" - } - }, - "scope": "1553", - "src": { - "column": "4", - "end": "22185", - "id": "1643", - "length": "138", - "line": "609", - "parentIndex": "1553", - "start": "22048" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1688", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "76", - "end": "22696", - "id": "1689", - "length": "61", - "line": "623", - "parentIndex": "1675", - "start": "22636" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1692", - "name": "beacon", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1692", - "src": { - "column": "32", - "end": "22675", - "id": "1693", - "length": "6", - "line": "624", - "parentIndex": "1690", - "start": "22670" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "1694", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1694", - "src": { - "column": "40", - "end": "22681", - "id": "1695", - "length": "4", - "line": "624", - "parentIndex": "1690", - "start": "22678" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "hexValue": "66616c7365", - "id": "1696", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "46", - "end": "22688", - "id": "1697", - "length": "5", - "line": "624", - "parentIndex": "1690", - "start": "22684" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": "1698", - "name": "_upgradeBeaconToAndCall", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "22668", - "id": "1699", - "length": "23", - "line": "624", - "parentIndex": "1690", - "start": "22646" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_bool", - "typeString": "function(address,bytes,bool)" - } - } - }, - "id": "1690", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "22689", - "id": "1691", - "length": "44", - "line": "624", - "parentIndex": "1688", - "start": "22646" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_bool$", - "typeString": "function(address,bytes,bool)" - } - } - } - ] - }, - "id": "1675", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_setBeacon", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1677", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1679", - "name": "beacon", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1679", - "src": { - "column": "24", - "end": "22597", - "id": "1680", - "length": "14", - "line": "623", - "parentIndex": "1677", - "start": "22584" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1681", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "24", - "end": "22590", - "id": "1682", - "length": "7", - "line": "623", - "parentIndex": "1679", - "start": "22584" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1683", - "name": "data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1683", - "src": { - "column": "40", - "end": "22616", - "id": "1684", - "length": "17", - "line": "623", - "parentIndex": "1677", - "start": "22600" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "1685", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "40", - "end": "22604", - "id": "1686", - "length": "5", - "line": "623", - "parentIndex": "1683", - "start": "22600" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "24", - "end": "22616", - "id": "1678", - "length": "33", - "line": "623", - "parentIndex": "1675", - "start": "22584" - } - }, - "returnParameters": { - "id": "1687", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "22696", - "id": "1676", - "length": "133", - "line": "623", - "parentIndex": "1675", - "start": "22564" - } - }, - "scope": "1553", - "src": { - "column": "4", - "end": "22696", - "id": "1676", - "length": "133", - "line": "623", - "parentIndex": "1553", - "start": "22564" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes", - "typeString": "function(address,bytes)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - } - ], - "src": { - "end": "22698", - "length": "1606", - "line": "582", - "parentIndex": "1533", - "start": "21093" - } - } - } - ] - }, - "src": { - "id": 1534, - "line": 582, - "start": 21093, - "end": 22698, - "length": 1606, - "parent_index": 118 - } - }, - { - "id": 1700, - "license": "MIT", - "name": "Context", - "absolute_path": "Context.sol", - "exported_symbols": [ - { - "id": 1700, - "name": "Context", - "absolute_path": "Context.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "1714", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "22756", - "id": "1715", - "length": "23", - "line": "630", - "parentIndex": "1700", - "start": "22734" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "fullyImplemented": true, - "id": "1722", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "1722" - ], - "name": "Context", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1738", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "66", - "end": "23382", - "id": "1739", - "length": "34", - "line": "643", - "parentIndex": "1724", - "start": "23349" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1744", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "23368", - "id": "1745", - "length": "3", - "line": "644", - "parentIndex": "1742", - "start": "23366" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "1742", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "23375", - "id": "1743", - "length": "10", - "line": "644", - "parentIndex": "1738", - "start": "23366" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "functionReturnParameters": "1724", - "id": "1740", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "23376", - "id": "1741", - "length": "18", - "line": "644", - "parentIndex": "1724", - "start": "23359" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ] - }, - "id": "1724", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_msgSender", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1726", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1728", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1728", - "src": { - "column": "57", - "end": "23346", - "id": "1729", - "length": "7", - "line": "643", - "parentIndex": "1726", - "start": "23340" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1730", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "57", - "end": "23346", - "id": "1731", - "length": "7", - "line": "643", - "parentIndex": "1728", - "start": "23340" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "57", - "end": "23346", - "id": "1727", - "length": "7", - "line": "643", - "parentIndex": "1724", - "start": "23340" - } - }, - "returnParameters": { - "id": "1732", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1734", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1734", - "src": { - "column": "57", - "end": "23346", - "id": "1735", - "length": "7", - "line": "643", - "parentIndex": "1732", - "start": "23340" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1736", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "57", - "end": "23346", - "id": "1737", - "length": "7", - "line": "643", - "parentIndex": "1734", - "start": "23340" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "57", - "end": "23346", - "id": "1733", - "length": "7", - "line": "643", - "parentIndex": "1724", - "start": "23340" - } - }, - "scope": "1722", - "src": { - "column": "4", - "end": "23382", - "id": "1725", - "length": "96", - "line": "643", - "parentIndex": "1722", - "start": "23287" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1761", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "71", - "end": "23620", - "id": "1762", - "length": "165", - "line": "647", - "parentIndex": "1747", - "start": "23456" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1763", - "name": "this", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "23469", - "id": "1764", - "length": "4", - "line": "648", - "parentIndex": "1761", - "start": "23466" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Context_$1700", - "typeString": "contract Context" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1769", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "23608", - "id": "1770", - "length": "3", - "line": "649", - "parentIndex": "1767", - "start": "23606" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "1767", - "memberName": "data", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "23613", - "id": "1768", - "length": "8", - "line": "649", - "parentIndex": "1761", - "start": "23606" - }, - "typeDescription": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - }, - "functionReturnParameters": "1747", - "id": "1765", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "23614", - "id": "1766", - "length": "16", - "line": "649", - "parentIndex": "1747", - "start": "23599" - }, - "typeDescription": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - } - ] - }, - "id": "1747", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_msgData", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1749", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1751", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1751", - "src": { - "column": "55", - "end": "23453", - "id": "1752", - "length": "14", - "line": "647", - "parentIndex": "1749", - "start": "23440" - }, - "stateMutability": "MUTABLE", - "storageLocation": "CALLDATA", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "1753", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "55", - "end": "23444", - "id": "1754", - "length": "5", - "line": "647", - "parentIndex": "1751", - "start": "23440" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "55", - "end": "23453", - "id": "1750", - "length": "14", - "line": "647", - "parentIndex": "1747", - "start": "23440" - } - }, - "returnParameters": { - "id": "1755", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1757", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1757", - "src": { - "column": "55", - "end": "23453", - "id": "1758", - "length": "14", - "line": "647", - "parentIndex": "1755", - "start": "23440" - }, - "stateMutability": "MUTABLE", - "storageLocation": "CALLDATA", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "1759", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "55", - "end": "23444", - "id": "1760", - "length": "5", - "line": "647", - "parentIndex": "1757", - "start": "23440" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "55", - "end": "23453", - "id": "1756", - "length": "14", - "line": "647", - "parentIndex": "1747", - "start": "23440" - } - }, - "scope": "1722", - "src": { - "column": "4", - "end": "23620", - "id": "1748", - "length": "232", - "line": "647", - "parentIndex": "1722", - "start": "23389" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_bytes", - "typeString": "function(bytes)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - } - ], - "src": { - "end": "23622", - "length": "368", - "line": "642", - "parentIndex": "1700", - "start": "23255" - } - } - } - ] - }, - "src": { - "id": 1701, - "line": 642, - "start": 23255, - "end": 23622, - "length": 368, - "parent_index": 118 - } - }, - { - "id": 1771, - "license": "MIT", - "name": "Ownable", - "absolute_path": "Ownable.sol", - "exported_symbols": [ - { - "id": 1771, - "name": "Ownable", - "absolute_path": "Ownable.sol" - }, - { - "id": 1700, - "name": "Context", - "absolute_path": "Context.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "1787", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "23680", - "id": "1788", - "length": "23", - "line": "655", - "parentIndex": "1771", - "start": "23658" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "Context.sol", - "file": "../utils/Context.sol", - "id": "1795", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "1771", - "sourceUnit": "1700", - "src": { - "end": "23712", - "length": "30", - "line": "657", - "parentIndex": "1771", - "start": "23683" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "baseContracts": [ - { - "baseName": { - "id": "1799", - "name": "Context", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "1700", - "src": { - "column": "29", - "end": "24244", - "id": "1800", - "length": "7", - "line": "670", - "parentIndex": "1796", - "start": "24238" - } - }, - "id": "1797", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "29", - "end": "24244", - "id": "1798", - "length": "7", - "line": "670", - "parentIndex": "1796", - "start": "24238" - } - } - ], - "contractDependencies": [ - "1700", - "1795" - ], - "fullyImplemented": true, - "id": "1796", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "1700", - "1796", - "1795" - ], - "name": "Ownable", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "1802", - "isStateVariable": true, - "name": "_owner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1796", - "src": { - "column": "4", - "end": "24274", - "id": "1803", - "length": "23", - "line": "671", - "parentIndex": "1796", - "start": "24252" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1804", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "4", - "end": "24258", - "id": "1805", - "length": "7", - "line": "671", - "parentIndex": "1802", - "start": "24252" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", - "value": { - "id": "1807", - "name": "OwnershipTransferred", - "nodeType": "EVENT_DEFINITION", - "parameters": { - "id": "1809", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1810", - "indexed": true, - "name": "previousOwner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1810", - "src": { - "column": "31", - "end": "24336", - "id": "1811", - "length": "29", - "line": "673", - "parentIndex": "1809", - "start": "24308" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1812", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "24314", - "id": "1813", - "length": "7", - "line": "673", - "parentIndex": "1810", - "start": "24308" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "1814", - "indexed": true, - "name": "newOwner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1814", - "src": { - "column": "62", - "end": "24362", - "id": "1815", - "length": "24", - "line": "673", - "parentIndex": "1809", - "start": "24339" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1816", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "62", - "end": "24345", - "id": "1817", - "length": "7", - "line": "673", - "parentIndex": "1814", - "start": "24339" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "4", - "end": "24364", - "id": "1808", - "length": "84", - "line": "673", - "parentIndex": "1807", - "start": "24281" - } - }, - "src": { - "column": "4", - "end": "24364", - "id": "1808", - "length": "84", - "line": "673", - "parentIndex": "1796", - "start": "24281" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_Ownable_OwnershipTransferred_\u00261807", - "typeString": "event Ownable.OwnershipTransferred" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1823", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "19", - "end": "24616", - "id": "1824", - "length": "135", - "line": "678", - "parentIndex": "1819", - "start": "24482" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "assignments": [ - "1827" - ], - "declarations": [ - { - "id": "1827", - "mutability": "MUTABLE", - "name": "msgSender", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1823", - "src": { - "column": "8", - "end": "24508", - "id": "1828", - "length": "17", - "line": "679", - "parentIndex": "1825", - "start": "24492" - }, - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1829", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "8", - "end": "24498", - "id": "1830", - "length": "7", - "line": "679", - "parentIndex": "1827", - "start": "24492" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "id": "1825", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1833", - "name": "_msgSender", - "nodeType": "IDENTIFIER", - "src": { - "column": "28", - "end": "24521", - "id": "1834", - "length": "10", - "line": "679", - "parentIndex": "1831", - "start": "24512" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "1831", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "28", - "end": "24523", - "id": "1832", - "length": "12", - "line": "679", - "parentIndex": "1825", - "start": "24512" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "24524", - "id": "1826", - "length": "33", - "line": "679", - "parentIndex": "1823", - "start": "24492" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1837", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1839", - "name": "_owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1802", - "src": { - "column": "8", - "end": "24539", - "id": "1840", - "length": "6", - "line": "680", - "parentIndex": "1837", - "start": "24534" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1841", - "name": "msgSender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1825", - "src": { - "column": "17", - "end": "24551", - "id": "1842", - "length": "9", - "line": "680", - "parentIndex": "1837", - "start": "24543" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "src": { - "column": "8", - "end": "24551", - "id": "1838", - "length": "18", - "line": "680", - "parentIndex": "1823", - "start": "24534" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1835", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "24552", - "id": "1836", - "length": "19", - "line": "680", - "parentIndex": "1823", - "start": "24534" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1847", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "42", - "end": "24596", - "id": "1848", - "length": "1", - "line": "681", - "parentIndex": "1845", - "start": "24596" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1849", - "nodeType": "IDENTIFIER", - "src": { - "column": "34", - "end": "24594", - "id": "1850", - "length": "7", - "line": "681", - "parentIndex": "1845", - "start": "24588" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1851", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "34", - "end": "24594", - "id": "1852", - "length": "7", - "line": "681", - "parentIndex": "1849", - "start": "24588" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1845", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "34", - "end": "24597", - "id": "1846", - "length": "10", - "line": "681", - "parentIndex": "1823", - "start": "24588" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1853", - "name": "msgSender", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1825", - "src": { - "column": "46", - "end": "24608", - "id": "1854", - "length": "9", - "line": "681", - "parentIndex": "1823", - "start": "24600" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1855", - "name": "OwnershipTransferred", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1807", - "src": { - "column": "13", - "end": "24586", - "id": "1856", - "length": "20", - "line": "681", - "parentIndex": "1823", - "start": "24567" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_Ownable_OwnershipTransferred_\u00261807", - "typeString": "event Ownable.OwnershipTransferred" - } - } - }, - "id": "1843", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "24610", - "id": "1844", - "length": "49", - "line": "681", - "parentIndex": "1819", - "start": "24562" - } - } - } - ] - }, - "id": "1819", - "implemented": true, - "kind": "CONSTRUCTOR", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1821", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "24616", - "id": "1820", - "length": "150", - "line": "678", - "parentIndex": "1819", - "start": "24467" - } - }, - "returnParameters": { - "id": "1822", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "24616", - "id": "1820", - "length": "150", - "line": "678", - "parentIndex": "1819", - "start": "24467" - } - }, - "scope": "1796", - "src": { - "column": "4", - "end": "24616", - "id": "1820", - "length": "150", - "line": "678", - "parentIndex": "1796", - "start": "24467" - }, - "stateMutability": "NONPAYABLE", - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1872", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "59", - "end": "24777", - "id": "1873", - "length": "30", - "line": "687", - "parentIndex": "1858", - "start": "24748" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1876", - "name": "_owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1802", - "src": { - "column": "15", - "end": "24770", - "id": "1877", - "length": "6", - "line": "688", - "parentIndex": "1872", - "start": "24765" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "functionReturnParameters": "1858", - "id": "1874", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "24771", - "id": "1875", - "length": "14", - "line": "688", - "parentIndex": "1858", - "start": "24758" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ] - }, - "id": "1858", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "owner", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1860", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1862", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1862", - "src": { - "column": "50", - "end": "24745", - "id": "1863", - "length": "7", - "line": "687", - "parentIndex": "1860", - "start": "24739" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1864", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "50", - "end": "24745", - "id": "1865", - "length": "7", - "line": "687", - "parentIndex": "1862", - "start": "24739" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "50", - "end": "24745", - "id": "1861", - "length": "7", - "line": "687", - "parentIndex": "1858", - "start": "24739" - } - }, - "returnParameters": { - "id": "1866", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1868", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1868", - "src": { - "column": "50", - "end": "24745", - "id": "1869", - "length": "7", - "line": "687", - "parentIndex": "1866", - "start": "24739" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1870", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "50", - "end": "24745", - "id": "1871", - "length": "7", - "line": "687", - "parentIndex": "1868", - "start": "24739" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "50", - "end": "24745", - "id": "1867", - "length": "7", - "line": "687", - "parentIndex": "1858", - "start": "24739" - } - }, - "scope": "1796", - "src": { - "column": "4", - "end": "24777", - "id": "1859", - "length": "85", - "line": "687", - "parentIndex": "1796", - "start": "24693" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Modifier", - "value": { - "body": { - "id": "1882", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "25", - "end": "24982", - "id": "1883", - "length": "96", - "line": "694", - "parentIndex": "1879", - "start": "24887" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Ownable: caller is not the owner\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1886", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1890", - "name": "owner", - "nodeType": "IDENTIFIER", - "src": { - "column": "16", - "end": "24909", - "id": "1891", - "length": "5", - "line": "695", - "parentIndex": "1888", - "start": "24905" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "1888", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "16", - "end": "24911", - "id": "1889", - "length": "7", - "line": "695", - "parentIndex": "1886", - "start": "24905" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1894", - "name": "_msgSender", - "nodeType": "IDENTIFIER", - "src": { - "column": "27", - "end": "24925", - "id": "1895", - "length": "10", - "line": "695", - "parentIndex": "1892", - "start": "24916" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "1892", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "27", - "end": "24927", - "id": "1893", - "length": "12", - "line": "695", - "parentIndex": "1886", - "start": "24916" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "src": { - "column": "16", - "end": "24927", - "id": "1887", - "length": "23", - "line": "695", - "parentIndex": "1884", - "start": "24905" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", - "id": "1896", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "41", - "end": "24963", - "id": "1897", - "length": "34", - "line": "695", - "parentIndex": "1884", - "start": "24930" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Ownable: caller is not the owner\"" - }, - "value": "Ownable: caller is not the owner" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Ownable: caller is not the owner\"" - } - ], - "id": "1898", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "24903", - "id": "1899", - "length": "7", - "line": "695", - "parentIndex": "1884", - "start": "24897" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"Ownable: caller is not the owner\")" - } - } - }, - "id": "1884", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "24964", - "id": "1885", - "length": "68", - "line": "695", - "parentIndex": "1882", - "start": "24897" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1900", - "name": "_", - "nodeType": "PLACEHOLDER_STATEMENT", - "src": { - "column": "8", - "end": "24975", - "id": "1901", - "length": "1", - "line": "696", - "parentIndex": "1882", - "start": "24975" - }, - "typeDescription": { - "typeIdentifier": "t_placeholder_literal", - "typeString": "t_placeholder" - } - } - } - ] - }, - "id": "1879", - "name": "onlyOwner", - "nodeType": "MODIFIER_DEFINITION", - "parameters": { - "id": "1881", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "24982", - "id": "1880", - "length": "117", - "line": "694", - "parentIndex": "1796", - "start": "24866" - } - }, - "src": { - "column": "4", - "end": "24982", - "id": "1880", - "length": "117", - "line": "694", - "parentIndex": "1796", - "start": "24866" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1911", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "58", - "end": "25469", - "id": "1912", - "length": "91", - "line": "706", - "parentIndex": "1903", - "start": "25379" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1915", - "name": "_owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1802", - "src": { - "column": "34", - "end": "25420", - "id": "1916", - "length": "6", - "line": "707", - "parentIndex": "1911", - "start": "25415" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1919", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "50", - "end": "25431", - "id": "1920", - "length": "1", - "line": "707", - "parentIndex": "1917", - "start": "25431" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1921", - "nodeType": "IDENTIFIER", - "src": { - "column": "42", - "end": "25429", - "id": "1922", - "length": "7", - "line": "707", - "parentIndex": "1917", - "start": "25423" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1923", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "42", - "end": "25429", - "id": "1924", - "length": "7", - "line": "707", - "parentIndex": "1921", - "start": "25423" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1917", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "42", - "end": "25432", - "id": "1918", - "length": "10", - "line": "707", - "parentIndex": "1911", - "start": "25423" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1925", - "name": "OwnershipTransferred", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1807", - "src": { - "column": "13", - "end": "25413", - "id": "1926", - "length": "20", - "line": "707", - "parentIndex": "1911", - "start": "25394" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_Ownable_OwnershipTransferred_\u00261807", - "typeString": "event Ownable.OwnershipTransferred" - } - } - }, - "id": "1913", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "25434", - "id": "1914", - "length": "46", - "line": "707", - "parentIndex": "1903", - "start": "25389" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1929", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1931", - "name": "_owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1802", - "src": { - "column": "8", - "end": "25449", - "id": "1932", - "length": "6", - "line": "708", - "parentIndex": "1929", - "start": "25444" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1935", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "25", - "end": "25461", - "id": "1936", - "length": "1", - "line": "708", - "parentIndex": "1933", - "start": "25461" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1937", - "nodeType": "IDENTIFIER", - "src": { - "column": "17", - "end": "25459", - "id": "1938", - "length": "7", - "line": "708", - "parentIndex": "1933", - "start": "25453" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1939", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "17", - "end": "25459", - "id": "1940", - "length": "7", - "line": "708", - "parentIndex": "1937", - "start": "25453" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1933", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "17", - "end": "25462", - "id": "1934", - "length": "10", - "line": "708", - "parentIndex": "1929", - "start": "25453" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "8", - "end": "25462", - "id": "1930", - "length": "19", - "line": "708", - "parentIndex": "1911", - "start": "25444" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1927", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "25463", - "id": "1928", - "length": "20", - "line": "708", - "parentIndex": "1911", - "start": "25444" - } - } - } - ] - }, - "id": "1903", - "implemented": true, - "kind": "KIND_FUNCTION", - "modifiers": [ - { - "id": "1905", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "1907", - "name": "onlyOwner", - "src": { - "column": "48", - "end": "25377", - "id": "1908", - "length": "9", - "line": "706", - "parentIndex": "1905", - "start": "25369" - } - }, - "name": "onlyOwner", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "48", - "end": "25377", - "id": "1906", - "length": "9", - "line": "706", - "parentIndex": "1903", - "start": "25369" - } - } - ], - "name": "renounceOwnership", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1909", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "25469", - "id": "1904", - "length": "145", - "line": "706", - "parentIndex": "1903", - "start": "25325" - } - }, - "returnParameters": { - "id": "1910", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "25469", - "id": "1904", - "length": "145", - "line": "706", - "parentIndex": "1903", - "start": "25325" - } - }, - "scope": "1796", - "src": { - "column": "4", - "end": "25469", - "id": "1904", - "length": "145", - "line": "706", - "parentIndex": "1796", - "start": "25325" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "1955", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "74", - "end": "25858", - "id": "1956", - "length": "170", - "line": "715", - "parentIndex": "1942", - "start": "25689" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Ownable: new owner is the zero address\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "1959", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1961", - "name": "newOwner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1961", - "src": { - "column": "16", - "end": "25714", - "id": "1962", - "length": "8", - "line": "716", - "parentIndex": "1959", - "start": "25707" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "30", - "id": "1965", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "36", - "end": "25727", - "id": "1966", - "length": "1", - "line": "716", - "parentIndex": "1963", - "start": "25727" - }, - "typeDescription": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": "1967", - "nodeType": "IDENTIFIER", - "src": { - "column": "28", - "end": "25725", - "id": "1968", - "length": "7", - "line": "716", - "parentIndex": "1963", - "start": "25719" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1", - "typeString": "function(int_const 0)" - }, - "typeName": { - "id": "1969", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "28", - "end": "25725", - "id": "1970", - "length": "7", - "line": "716", - "parentIndex": "1967", - "start": "25719" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "1963", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "28", - "end": "25728", - "id": "1964", - "length": "10", - "line": "716", - "parentIndex": "1959", - "start": "25719" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_rational_0_by_1$", - "typeString": "function(int_const 0)" - } - } - }, - "src": { - "column": "16", - "end": "25728", - "id": "1960", - "length": "22", - "line": "716", - "parentIndex": "1957", - "start": "25707" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", - "id": "1971", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "40", - "end": "25770", - "id": "1972", - "length": "40", - "line": "716", - "parentIndex": "1957", - "start": "25731" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Ownable: new owner is the zero address\"" - }, - "value": "Ownable: new owner is the zero address" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"Ownable: new owner is the zero address\"" - } - ], - "id": "1973", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "25705", - "id": "1974", - "length": "7", - "line": "716", - "parentIndex": "1957", - "start": "25699" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"Ownable: new owner is the zero address\")" - } - } - }, - "id": "1957", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "25771", - "id": "1958", - "length": "73", - "line": "716", - "parentIndex": "1955", - "start": "25699" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1977", - "name": "_owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1802", - "src": { - "column": "34", - "end": "25813", - "id": "1978", - "length": "6", - "line": "717", - "parentIndex": "1955", - "start": "25808" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1979", - "name": "newOwner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1979", - "src": { - "column": "42", - "end": "25823", - "id": "1980", - "length": "8", - "line": "717", - "parentIndex": "1955", - "start": "25816" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1981", - "name": "OwnershipTransferred", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1807", - "src": { - "column": "13", - "end": "25806", - "id": "1982", - "length": "20", - "line": "717", - "parentIndex": "1955", - "start": "25787" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_Ownable_OwnershipTransferred_\u00261807", - "typeString": "event Ownable.OwnershipTransferred" - } - } - }, - "id": "1975", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "25825", - "id": "1976", - "length": "44", - "line": "717", - "parentIndex": "1942", - "start": "25782" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "1985", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1987", - "name": "_owner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1802", - "src": { - "column": "8", - "end": "25840", - "id": "1988", - "length": "6", - "line": "718", - "parentIndex": "1985", - "start": "25835" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "1989", - "name": "newOwner", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1989", - "src": { - "column": "17", - "end": "25851", - "id": "1990", - "length": "8", - "line": "718", - "parentIndex": "1985", - "start": "25844" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "src": { - "column": "8", - "end": "25851", - "id": "1986", - "length": "17", - "line": "718", - "parentIndex": "1955", - "start": "25835" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "1983", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "25852", - "id": "1984", - "length": "18", - "line": "718", - "parentIndex": "1955", - "start": "25835" - } - } - } - ] - }, - "id": "1942", - "implemented": true, - "kind": "KIND_FUNCTION", - "modifiers": [ - { - "id": "1944", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "1946", - "name": "onlyOwner", - "src": { - "column": "64", - "end": "25687", - "id": "1947", - "length": "9", - "line": "715", - "parentIndex": "1944", - "start": "25679" - } - }, - "name": "onlyOwner", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "64", - "end": "25687", - "id": "1945", - "length": "9", - "line": "715", - "parentIndex": "1942", - "start": "25679" - } - } - ], - "name": "transferOwnership", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "1948", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "1950", - "name": "newOwner", - "nodeType": "VARIABLE_DECLARATION", - "scope": "1950", - "src": { - "column": "31", - "end": "25661", - "id": "1951", - "length": "16", - "line": "715", - "parentIndex": "1948", - "start": "25646" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "1952", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "25652", - "id": "1953", - "length": "7", - "line": "715", - "parentIndex": "1950", - "start": "25646" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "31", - "end": "25661", - "id": "1949", - "length": "16", - "line": "715", - "parentIndex": "1942", - "start": "25646" - } - }, - "returnParameters": { - "id": "1954", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "25858", - "id": "1943", - "length": "240", - "line": "715", - "parentIndex": "1942", - "start": "25619" - } - }, - "scope": "1796", - "src": { - "column": "4", - "end": "25858", - "id": "1943", - "length": "240", - "line": "715", - "parentIndex": "1796", - "start": "25619" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - } - ], - "src": { - "end": "25860", - "length": "1652", - "line": "670", - "parentIndex": "1771", - "start": "24209" - } - } - } - ] - }, - "src": { - "id": 1772, - "line": 670, - "start": 24209, - "end": 25860, - "length": 1652, - "parent_index": 118 - } - }, - { - "id": 1991, - "license": "MIT", - "name": "UpgradeableBeacon", - "absolute_path": "UpgradeableBeacon.sol", - "exported_symbols": [ - { - "id": 1991, - "name": "UpgradeableBeacon", - "absolute_path": "UpgradeableBeacon.sol" - }, - { - "id": 251, - "name": "Address", - "absolute_path": "Address.sol" - }, - { - "id": 251, - "name": "Address", - "absolute_path": "Address.sol" - }, - { - "id": 1771, - "name": "Ownable", - "absolute_path": "Ownable.sol" - }, - { - "id": 119, - "name": "IBeacon", - "absolute_path": "IBeacon.sol" - }, - { - "id": 119, - "name": "IBeacon", - "absolute_path": "IBeacon.sol" - }, - { - "id": 119, - "name": "IBeacon", - "absolute_path": "IBeacon.sol" - }, - { - "id": 119, - "name": "IBeacon", - "absolute_path": "IBeacon.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "2009", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "25918", - "id": "2010", - "length": "23", - "line": "724", - "parentIndex": "1991", - "start": "25896" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "IBeacon.sol", - "file": "./IBeacon.sol", - "id": "2018", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "1991", - "sourceUnit": "1771", - "src": { - "end": "25943", - "length": "23", - "line": "726", - "parentIndex": "1991", - "start": "25921" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "Ownable.sol", - "file": "../../access/Ownable.sol", - "id": "2019", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "1991", - "sourceUnit": "1771", - "src": { - "end": "25978", - "length": "34", - "line": "727", - "parentIndex": "1991", - "start": "25945" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "Address.sol", - "file": "../../utils/Address.sol", - "id": "2020", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "1991", - "sourceUnit": "1771", - "src": { - "end": "26012", - "length": "33", - "line": "728", - "parentIndex": "1991", - "start": "25980" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "baseContracts": [ - { - "baseName": { - "id": "2024", - "name": "IBeacon", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "119", - "src": { - "column": "30", - "end": "26372", - "id": "2025", - "length": "7", - "line": "736", - "parentIndex": "2021", - "start": "26366" - } - }, - "id": "2022", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "30", - "end": "26372", - "id": "2023", - "length": "7", - "line": "736", - "parentIndex": "2021", - "start": "26366" - } - }, - { - "baseName": { - "id": "2028", - "name": "Ownable", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "1771", - "src": { - "column": "39", - "end": "26381", - "id": "2029", - "length": "7", - "line": "736", - "parentIndex": "2021", - "start": "26375" - } - }, - "id": "2026", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "39", - "end": "26381", - "id": "2027", - "length": "7", - "line": "736", - "parentIndex": "2021", - "start": "26375" - } - } - ], - "contractDependencies": [ - "119", - "1771", - "2018", - "2019", - "2020" - ], - "fullyImplemented": true, - "id": "2021", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "119", - "1771", - "2021", - "2018", - "2019", - "2020" - ], - "name": "UpgradeableBeacon", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "2031", - "isStateVariable": true, - "name": "_implementation", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2021", - "src": { - "column": "4", - "end": "26420", - "id": "2032", - "length": "32", - "line": "737", - "parentIndex": "2021", - "start": "26389" - }, - "stateMutability": "MUTABLE", - "storageLocation": "DEFAULT", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2033", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "4", - "end": "26395", - "id": "2034", - "length": "7", - "line": "737", - "parentIndex": "2031", - "start": "26389" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "PRIVATE" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", - "value": { - "id": "2036", - "name": "Upgraded", - "nodeType": "EVENT_DEFINITION", - "parameters": { - "id": "2038", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2039", - "indexed": true, - "name": "implementation", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2039", - "src": { - "column": "19", - "end": "26566", - "id": "2040", - "length": "30", - "line": "742", - "parentIndex": "2038", - "start": "26537" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2041", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "19", - "end": "26543", - "id": "2042", - "length": "7", - "line": "742", - "parentIndex": "2039", - "start": "26537" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "4", - "end": "26568", - "id": "2037", - "length": "47", - "line": "742", - "parentIndex": "2036", - "start": "26522" - } - }, - "src": { - "column": "4", - "end": "26568", - "id": "2037", - "length": "47", - "line": "742", - "parentIndex": "2021", - "start": "26522" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_UpgradeableBeacon_Upgraded_\u00262036", - "typeString": "event UpgradeableBeacon.Upgraded" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2053", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "41", - "end": "26812", - "id": "2054", - "length": "52", - "line": "748", - "parentIndex": "2044", - "start": "26761" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2057", - "name": "implementation_", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2057", - "src": { - "column": "27", - "end": "26804", - "id": "2058", - "length": "15", - "line": "749", - "parentIndex": "2055", - "start": "26790" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "2059", - "name": "_setImplementation", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "26788", - "id": "2060", - "length": "18", - "line": "749", - "parentIndex": "2055", - "start": "26771" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "2055", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "26805", - "id": "2056", - "length": "35", - "line": "749", - "parentIndex": "2053", - "start": "26771" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - } - ] - }, - "id": "2044", - "implemented": true, - "kind": "CONSTRUCTOR", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2046", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2048", - "name": "implementation_", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2048", - "src": { - "column": "16", - "end": "26758", - "id": "2049", - "length": "23", - "line": "748", - "parentIndex": "2046", - "start": "26736" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2050", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "16", - "end": "26742", - "id": "2051", - "length": "7", - "line": "748", - "parentIndex": "2048", - "start": "26736" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "16", - "end": "26758", - "id": "2047", - "length": "23", - "line": "748", - "parentIndex": "2044", - "start": "26736" - } - }, - "returnParameters": { - "id": "2052", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "26812", - "id": "2045", - "length": "89", - "line": "748", - "parentIndex": "2044", - "start": "26724" - } - }, - "scope": "2021", - "src": { - "column": "4", - "end": "26812", - "id": "2045", - "length": "89", - "line": "748", - "parentIndex": "2021", - "start": "26724" - }, - "stateMutability": "NONPAYABLE", - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2078", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "77", - "end": "27002", - "id": "2079", - "length": "39", - "line": "755", - "parentIndex": "2062", - "start": "26964" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2082", - "name": "_implementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2031", - "src": { - "column": "15", - "end": "26995", - "id": "2083", - "length": "15", - "line": "756", - "parentIndex": "2078", - "start": "26981" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "functionReturnParameters": "2062", - "id": "2080", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "26996", - "id": "2081", - "length": "23", - "line": "756", - "parentIndex": "2062", - "start": "26974" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ] - }, - "id": "2062", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "implementation", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "2064", - "name": "implementation", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "929", - "src": { - "column": "50", - "end": "26944", - "id": "2065", - "length": "8", - "line": "755", - "parentIndex": "2062", - "start": "26937" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "parameters": { - "id": "2066", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2068", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2068", - "src": { - "column": "68", - "end": "26961", - "id": "2069", - "length": "7", - "line": "755", - "parentIndex": "2066", - "start": "26955" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2070", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "68", - "end": "26961", - "id": "2071", - "length": "7", - "line": "755", - "parentIndex": "2068", - "start": "26955" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "68", - "end": "26961", - "id": "2067", - "length": "7", - "line": "755", - "parentIndex": "2062", - "start": "26955" - } - }, - "returnParameters": { - "id": "2072", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2074", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2074", - "src": { - "column": "68", - "end": "26961", - "id": "2075", - "length": "7", - "line": "755", - "parentIndex": "2072", - "start": "26955" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2076", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "68", - "end": "26961", - "id": "2077", - "length": "7", - "line": "755", - "parentIndex": "2074", - "start": "26955" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "68", - "end": "26961", - "id": "2073", - "length": "7", - "line": "755", - "parentIndex": "2062", - "start": "26955" - } - }, - "scope": "2021", - "src": { - "column": "4", - "end": "27002", - "id": "2063", - "length": "112", - "line": "755", - "parentIndex": "2021", - "start": "26891" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2098", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "75", - "end": "27428", - "id": "2099", - "length": "96", - "line": "769", - "parentIndex": "2085", - "start": "27333" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2102", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2102", - "src": { - "column": "27", - "end": "27378", - "id": "2103", - "length": "17", - "line": "770", - "parentIndex": "2100", - "start": "27362" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "2104", - "name": "_setImplementation", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "27360", - "id": "2105", - "length": "18", - "line": "770", - "parentIndex": "2100", - "start": "27343" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "2100", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "27379", - "id": "2101", - "length": "37", - "line": "770", - "parentIndex": "2098", - "start": "27343" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", - "value": { - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2108", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2108", - "src": { - "column": "22", - "end": "27420", - "id": "2109", - "length": "17", - "line": "771", - "parentIndex": "2098", - "start": "27404" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2110", - "name": "Upgraded", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "929", - "src": { - "column": "13", - "end": "27402", - "id": "2111", - "length": "8", - "line": "771", - "parentIndex": "2098", - "start": "27395" - }, - "typeDescription": { - "typeIdentifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", - "typeString": "event ERC1967Upgrade.Upgraded" - } - } - }, - "id": "2106", - "nodeType": "EMIT_STATEMENT", - "src": { - "column": "8", - "end": "27422", - "id": "2107", - "length": "33", - "line": "771", - "parentIndex": "2085", - "start": "27390" - } - } - } - ] - }, - "id": "2085", - "implemented": true, - "kind": "KIND_FUNCTION", - "modifiers": [ - { - "id": "2087", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "2089", - "name": "onlyOwner", - "src": { - "column": "65", - "end": "27331", - "id": "2090", - "length": "9", - "line": "769", - "parentIndex": "2087", - "start": "27323" - } - }, - "name": "onlyOwner", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "65", - "end": "27331", - "id": "2088", - "length": "9", - "line": "769", - "parentIndex": "2085", - "start": "27323" - } - } - ], - "name": "upgradeTo", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2091", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2093", - "name": "newImplementation", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2093", - "src": { - "column": "23", - "end": "27305", - "id": "2094", - "length": "25", - "line": "769", - "parentIndex": "2091", - "start": "27281" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2095", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "27287", - "id": "2096", - "length": "7", - "line": "769", - "parentIndex": "2093", - "start": "27281" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "27305", - "id": "2092", - "length": "25", - "line": "769", - "parentIndex": "2085", - "start": "27281" - } - }, - "returnParameters": { - "id": "2097", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "27428", - "id": "2086", - "length": "167", - "line": "769", - "parentIndex": "2085", - "start": "27262" - } - }, - "scope": "2021", - "src": { - "column": "4", - "end": "27428", - "id": "2086", - "length": "167", - "line": "769", - "parentIndex": "2021", - "start": "27262" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2122", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "67", - "end": "27829", - "id": "2123", - "length": "163", - "line": "781", - "parentIndex": "2113", - "start": "27667" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"UpgradeableBeacon: implementation is not a contract\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2128", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2128", - "src": { - "column": "35", - "end": "27720", - "id": "2129", - "length": "17", - "line": "782", - "parentIndex": "2126", - "start": "27704" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2132", - "name": "Address", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "251", - "src": { - "column": "16", - "end": "27691", - "id": "2133", - "length": "7", - "line": "782", - "parentIndex": "2130", - "start": "27685" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Address_$251", - "typeString": "contract Address" - } - } - }, - "id": "2130", - "memberName": "isContract", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "16", - "end": "27702", - "id": "2131", - "length": "18", - "line": "782", - "parentIndex": "2126", - "start": "27685" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_Address_$251", - "typeString": "contract Address" - } - } - }, - "id": "2126", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "16", - "end": "27721", - "id": "2127", - "length": "37", - "line": "782", - "parentIndex": "2124", - "start": "27685" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - ], - "hexValue": "5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374", - "id": "2134", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "55", - "end": "27776", - "id": "2135", - "length": "53", - "line": "782", - "parentIndex": "2124", - "start": "27724" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"UpgradeableBeacon: implementation is not a contract\"" - }, - "value": "UpgradeableBeacon: implementation is not a contract" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"UpgradeableBeacon: implementation is not a contract\"" - } - ], - "id": "2136", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "27683", - "id": "2137", - "length": "7", - "line": "782", - "parentIndex": "2124", - "start": "27677" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$$_t_string_literal", - "typeString": "function(function(address),literal_string \"UpgradeableBeacon: implementation is not a contract\")" - } - } - }, - "id": "2124", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "27777", - "id": "2125", - "length": "101", - "line": "782", - "parentIndex": "2122", - "start": "27677" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", - "typeString": "function(function(address),string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "2140", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2142", - "name": "_implementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2031", - "src": { - "column": "8", - "end": "27802", - "id": "2143", - "length": "15", - "line": "783", - "parentIndex": "2140", - "start": "27788" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2144", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2144", - "src": { - "column": "26", - "end": "27822", - "id": "2145", - "length": "17", - "line": "783", - "parentIndex": "2140", - "start": "27806" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "src": { - "column": "8", - "end": "27822", - "id": "2141", - "length": "35", - "line": "783", - "parentIndex": "2122", - "start": "27788" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "2138", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "27823", - "id": "2139", - "length": "36", - "line": "783", - "parentIndex": "2122", - "start": "27788" - } - } - } - ] - }, - "id": "2113", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_setImplementation", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2115", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2117", - "name": "newImplementation", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2117", - "src": { - "column": "32", - "end": "27656", - "id": "2118", - "length": "25", - "line": "781", - "parentIndex": "2115", - "start": "27632" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2119", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "32", - "end": "27638", - "id": "2120", - "length": "7", - "line": "781", - "parentIndex": "2117", - "start": "27632" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "32", - "end": "27656", - "id": "2116", - "length": "25", - "line": "781", - "parentIndex": "2113", - "start": "27632" - } - }, - "returnParameters": { - "id": "2121", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "27829", - "id": "2114", - "length": "226", - "line": "781", - "parentIndex": "2113", - "start": "27604" - } - }, - "scope": "2021", - "src": { - "column": "4", - "end": "27829", - "id": "2114", - "length": "226", - "line": "781", - "parentIndex": "2021", - "start": "27604" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "PRIVATE" - } - } - ], - "src": { - "end": "27831", - "length": "1496", - "line": "736", - "parentIndex": "1991", - "start": "26336" - } - } - } - ] - }, - "src": { - "id": 1992, - "line": 736, - "start": 26336, - "end": 27831, - "length": 1496, - "parent_index": 118 - } - }, - { - "id": 2146, - "license": "MIT", - "name": "ERC1967Proxy", - "absolute_path": "ERC1967Proxy.sol", - "exported_symbols": [ - { - "id": 2146, - "name": "ERC1967Proxy", - "absolute_path": "ERC1967Proxy.sol" - }, - { - "id": 902, - "name": "ERC1967Upgrade", - "absolute_path": "ERC1967Upgrade.sol" - }, - { - "id": 902, - "name": "ERC1967Upgrade", - "absolute_path": "ERC1967Upgrade.sol" - }, - { - "id": 160, - "name": "Proxy", - "absolute_path": "Proxy.sol" - }, - { - "id": 160, - "name": "Proxy", - "absolute_path": "Proxy.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "2166", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "27889", - "id": "2167", - "length": "23", - "line": "789", - "parentIndex": "2146", - "start": "27867" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "Proxy.sol", - "file": "../Proxy.sol", - "id": "2178", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "2146", - "sourceUnit": "1991", - "src": { - "end": "27913", - "length": "22", - "line": "791", - "parentIndex": "2146", - "start": "27892" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "ERC1967Upgrade.sol", - "file": "./ERC1967Upgrade.sol", - "id": "2179", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "2146", - "sourceUnit": "1991", - "src": { - "end": "27944", - "length": "30", - "line": "792", - "parentIndex": "2146", - "start": "27915" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "baseContracts": [ - { - "baseName": { - "id": "2183", - "name": "Proxy", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "160", - "src": { - "column": "25", - "end": "28349", - "id": "2184", - "length": "5", - "line": "800", - "parentIndex": "2180", - "start": "28345" - } - }, - "id": "2181", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "25", - "end": "28349", - "id": "2182", - "length": "5", - "line": "800", - "parentIndex": "2180", - "start": "28345" - } - }, - { - "baseName": { - "id": "2187", - "name": "ERC1967Upgrade", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "902", - "src": { - "column": "32", - "end": "28365", - "id": "2188", - "length": "14", - "line": "800", - "parentIndex": "2180", - "start": "28352" - } - }, - "id": "2185", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "32", - "end": "28365", - "id": "2186", - "length": "14", - "line": "800", - "parentIndex": "2180", - "start": "28352" - } - } - ], - "contractDependencies": [ - "160", - "902", - "2178", - "2179" - ], - "fullyImplemented": true, - "id": "2180", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "160", - "902", - "2180", - "2178", - "2179" - ], - "name": "ERC1967Proxy", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2203", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "60", - "end": "28929", - "id": "2204", - "length": "161", - "line": "807", - "parentIndex": "2190", - "start": "28769" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "2207", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2209", - "name": "_IMPLEMENTATION_SLOT", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "924", - "src": { - "column": "15", - "end": "28805", - "id": "2210", - "length": "20", - "line": "808", - "parentIndex": "2207", - "start": "28786" - }, - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_function__t_string_literal$$", - "typeString": "function(function(string memory))" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "2213", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function__t_string_literal$", - "typeString": "function(string memory)" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"eip1967.proxy.implementation\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "656970313936372e70726f78792e696d706c656d656e746174696f6e", - "id": "2219", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "65", - "end": "28865", - "id": "2220", - "length": "30", - "line": "808", - "parentIndex": "2217", - "start": "28836" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"eip1967.proxy.implementation\"" - }, - "value": "eip1967.proxy.implementation" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"eip1967.proxy.implementation\"" - } - ], - "id": "2221", - "name": "keccak256", - "nodeType": "IDENTIFIER", - "src": { - "column": "55", - "end": "28834", - "id": "2222", - "length": "9", - "line": "808", - "parentIndex": "2217", - "start": "28826" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_string_literal", - "typeString": "function(literal_string \"eip1967.proxy.implementation\")" - } - } - }, - "id": "2217", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "55", - "end": "28866", - "id": "2218", - "length": "41", - "line": "808", - "parentIndex": "2215", - "start": "28826" - }, - "typeDescription": { - "typeIdentifier": "t_function__t_string_literal$", - "typeString": "function(string memory)" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function__t_string_literal$", - "typeString": "function(string memory)" - } - ], - "id": "2223", - "nodeType": "IDENTIFIER", - "src": { - "column": "47", - "end": "28824", - "id": "2224", - "length": "7", - "line": "808", - "parentIndex": "2215", - "start": "28818" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function__t_string_literal$", - "typeString": "function(function(string memory))" - }, - "typeName": { - "id": "2225", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "47", - "end": "28824", - "id": "2226", - "length": "7", - "line": "808", - "parentIndex": "2223", - "start": "28818" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - }, - "id": "2215", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "47", - "end": "28867", - "id": "2216", - "length": "50", - "line": "808", - "parentIndex": "2213", - "start": "28818" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function__t_string_literal$$", - "typeString": "function(function(string memory))" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "31", - "id": "2227", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "100", - "end": "28871", - "id": "2228", - "length": "1", - "line": "808", - "parentIndex": "2213", - "start": "28871" - }, - "typeDescription": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - }, - "src": { - "column": "47", - "end": "28871", - "id": "2214", - "length": "54", - "line": "808", - "parentIndex": "2211", - "start": "28818" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function__t_string_literal$$", - "typeString": "function(function(string memory))" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_function__t_string_literal$$", - "typeString": "function(function(string memory))" - } - ], - "id": "2229", - "nodeType": "IDENTIFIER", - "src": { - "column": "39", - "end": "28816", - "id": "2230", - "length": "7", - "line": "808", - "parentIndex": "2211", - "start": "28810" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_function__t_string_literal$$", - "typeString": "function(function(function(string memory)))" - }, - "typeName": { - "id": "2231", - "name": "bytes32", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "39", - "end": "28816", - "id": "2232", - "length": "7", - "line": "808", - "parentIndex": "2229", - "start": "28810" - }, - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - } - }, - "id": "2211", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "39", - "end": "28872", - "id": "2212", - "length": "63", - "line": "808", - "parentIndex": "2207", - "start": "28810" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_function__t_string_literal$$$", - "typeString": "function(function(function(string memory)))" - } - } - }, - "src": { - "column": "15", - "end": "28872", - "id": "2208", - "length": "87", - "line": "808", - "parentIndex": "2205", - "start": "28786" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": "2233", - "name": "assert", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "28784", - "id": "2234", - "length": "6", - "line": "808", - "parentIndex": "2205", - "start": "28779" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool", - "typeString": "function(bool)" - } - } - }, - "id": "2205", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "28873", - "id": "2206", - "length": "95", - "line": "808", - "parentIndex": "2203", - "start": "28779" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$", - "typeString": "function(bool)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2237", - "name": "_logic", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2237", - "src": { - "column": "26", - "end": "28907", - "id": "2238", - "length": "6", - "line": "809", - "parentIndex": "2235", - "start": "28902" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "2239", - "name": "_data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2239", - "src": { - "column": "34", - "end": "28914", - "id": "2240", - "length": "5", - "line": "809", - "parentIndex": "2235", - "start": "28910" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "hexValue": "66616c7365", - "id": "2241", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "41", - "end": "28921", - "id": "2242", - "length": "5", - "line": "809", - "parentIndex": "2235", - "start": "28917" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": "2243", - "name": "_upgradeToAndCall", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "28900", - "id": "2244", - "length": "17", - "line": "809", - "parentIndex": "2235", - "start": "28884" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_bool", - "typeString": "function(address,bytes,bool)" - } - } - }, - "id": "2235", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "28922", - "id": "2236", - "length": "39", - "line": "809", - "parentIndex": "2203", - "start": "28884" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_bool$", - "typeString": "function(address,bytes,bool)" - } - } - } - ] - }, - "id": "2190", - "implemented": true, - "kind": "CONSTRUCTOR", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2192", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2194", - "name": "_logic", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2194", - "src": { - "column": "16", - "end": "28738", - "id": "2195", - "length": "14", - "line": "807", - "parentIndex": "2192", - "start": "28725" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2196", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "16", - "end": "28731", - "id": "2197", - "length": "7", - "line": "807", - "parentIndex": "2194", - "start": "28725" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "2198", - "name": "_data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2198", - "src": { - "column": "32", - "end": "28758", - "id": "2199", - "length": "18", - "line": "807", - "parentIndex": "2192", - "start": "28741" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "2200", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "32", - "end": "28745", - "id": "2201", - "length": "5", - "line": "807", - "parentIndex": "2198", - "start": "28741" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "16", - "end": "28758", - "id": "2193", - "length": "34", - "line": "807", - "parentIndex": "2190", - "start": "28725" - } - }, - "returnParameters": { - "id": "2202", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "28929", - "id": "2191", - "length": "217", - "line": "807", - "parentIndex": "2190", - "start": "28713" - } - }, - "scope": "2180", - "src": { - "column": "4", - "end": "28929", - "id": "2191", - "length": "217", - "line": "807", - "parentIndex": "2180", - "start": "28713" - }, - "stateMutability": "PAYABLE", - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2262", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "85", - "end": "29147", - "id": "2263", - "length": "59", - "line": "815", - "parentIndex": "2246", - "start": "29089" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2270", - "name": "ERC1967Upgrade", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "902", - "src": { - "column": "15", - "end": "29119", - "id": "2271", - "length": "14", - "line": "816", - "parentIndex": "2268", - "start": "29106" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_ERC1967Upgrade_$902", - "typeString": "contract ERC1967Upgrade" - } - } - }, - "id": "2268", - "memberName": "_getImplementation", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "29138", - "id": "2269", - "length": "33", - "line": "816", - "parentIndex": "2266", - "start": "29106" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_ERC1967Upgrade_$902", - "typeString": "contract ERC1967Upgrade" - } - } - }, - "id": "2266", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "29140", - "id": "2267", - "length": "35", - "line": "816", - "parentIndex": "2262", - "start": "29106" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "functionReturnParameters": "2246", - "id": "2264", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "29141", - "id": "2265", - "length": "43", - "line": "816", - "parentIndex": "2246", - "start": "29099" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - } - ] - }, - "id": "2246", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_implementation", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "2248", - "name": "_implementation", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "2031", - "src": { - "column": "53", - "end": "29064", - "id": "2249", - "length": "8", - "line": "815", - "parentIndex": "2246", - "start": "29057" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "parameters": { - "id": "2250", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2252", - "name": "impl", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2252", - "src": { - "column": "71", - "end": "29086", - "id": "2253", - "length": "12", - "line": "815", - "parentIndex": "2250", - "start": "29075" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2254", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "71", - "end": "29081", - "id": "2255", - "length": "7", - "line": "815", - "parentIndex": "2252", - "start": "29075" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "71", - "end": "29086", - "id": "2251", - "length": "12", - "line": "815", - "parentIndex": "2246", - "start": "29075" - } - }, - "returnParameters": { - "id": "2256", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2258", - "name": "impl", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2258", - "src": { - "column": "71", - "end": "29086", - "id": "2259", - "length": "12", - "line": "815", - "parentIndex": "2256", - "start": "29075" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2260", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "71", - "end": "29081", - "id": "2261", - "length": "7", - "line": "815", - "parentIndex": "2258", - "start": "29075" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "71", - "end": "29086", - "id": "2257", - "length": "12", - "line": "815", - "parentIndex": "2246", - "start": "29075" - } - }, - "scope": "2180", - "src": { - "column": "4", - "end": "29147", - "id": "2247", - "length": "140", - "line": "815", - "parentIndex": "2180", - "start": "29008" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - } - ], - "src": { - "end": "29149", - "length": "830", - "line": "800", - "parentIndex": "2146", - "start": "28320" - } - } - } - ] - }, - "src": { - "id": 2147, - "line": 800, - "start": 28320, - "end": 29149, - "length": 830, - "parent_index": 118 - } - }, - { - "id": 2272, - "license": "MIT", - "name": "TransparentUpgradeableProxy", - "absolute_path": "TransparentUpgradeableProxy.sol", - "exported_symbols": [ - { - "id": 2272, - "name": "TransparentUpgradeableProxy", - "absolute_path": "TransparentUpgradeableProxy.sol" - }, - { - "id": 2310, - "name": "ERC1967Proxy" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "2294", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "29207", - "id": "2295", - "length": "23", - "line": "822", - "parentIndex": "2272", - "start": "29185" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "baseContracts": [ - { - "baseName": { - "id": "2312", - "name": "ERC1967Proxy", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "2146", - "src": { - "column": "40", - "end": "30752", - "id": "2313", - "length": "12", - "line": "847", - "parentIndex": "2309", - "start": "30741" - } - }, - "id": "2310", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "40", - "end": "30752", - "id": "2311", - "length": "12", - "line": "847", - "parentIndex": "2309", - "start": "30741" - } - } - ], - "contractDependencies": [ - "2146" - ], - "fullyImplemented": true, - "id": "2309", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "2146", - "2309" - ], - "name": "TransparentUpgradeableProxy", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2340", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "104", - "end": "31198", - "id": "2341", - "length": "124", - "line": "852", - "parentIndex": "2315", - "start": "31075" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "2344", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2346", - "name": "_ADMIN_SLOT", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "1308", - "src": { - "column": "15", - "end": "31102", - "id": "2347", - "length": "11", - "line": "853", - "parentIndex": "2344", - "start": "31092" - }, - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_function__t_string_literal$$", - "typeString": "function(function(string memory))" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "2350", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function__t_string_literal$", - "typeString": "function(string memory)" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"eip1967.proxy.admin\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "656970313936372e70726f78792e61646d696e", - "id": "2356", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "56", - "end": "31153", - "id": "2357", - "length": "21", - "line": "853", - "parentIndex": "2354", - "start": "31133" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"eip1967.proxy.admin\"" - }, - "value": "eip1967.proxy.admin" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"eip1967.proxy.admin\"" - } - ], - "id": "2358", - "name": "keccak256", - "nodeType": "IDENTIFIER", - "src": { - "column": "46", - "end": "31131", - "id": "2359", - "length": "9", - "line": "853", - "parentIndex": "2354", - "start": "31123" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_string_literal", - "typeString": "function(literal_string \"eip1967.proxy.admin\")" - } - } - }, - "id": "2354", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "46", - "end": "31154", - "id": "2355", - "length": "32", - "line": "853", - "parentIndex": "2352", - "start": "31123" - }, - "typeDescription": { - "typeIdentifier": "t_function__t_string_literal$", - "typeString": "function(string memory)" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function__t_string_literal$", - "typeString": "function(string memory)" - } - ], - "id": "2360", - "nodeType": "IDENTIFIER", - "src": { - "column": "38", - "end": "31121", - "id": "2361", - "length": "7", - "line": "853", - "parentIndex": "2352", - "start": "31115" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function__t_string_literal$", - "typeString": "function(function(string memory))" - }, - "typeName": { - "id": "2362", - "name": "uint256", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "38", - "end": "31121", - "id": "2363", - "length": "7", - "line": "853", - "parentIndex": "2360", - "start": "31115" - }, - "typeDescription": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - }, - "id": "2352", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "38", - "end": "31155", - "id": "2353", - "length": "41", - "line": "853", - "parentIndex": "2350", - "start": "31115" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function__t_string_literal$$", - "typeString": "function(function(string memory))" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "SUBTRACTION", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "31", - "id": "2364", - "isPure": true, - "kind": "NUMBER", - "nodeType": "LITERAL", - "src": { - "column": "82", - "end": "31159", - "id": "2365", - "length": "1", - "line": "853", - "parentIndex": "2350", - "start": "31159" - }, - "typeDescription": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - }, - "src": { - "column": "38", - "end": "31159", - "id": "2351", - "length": "45", - "line": "853", - "parentIndex": "2348", - "start": "31115" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function__t_string_literal$$", - "typeString": "function(function(string memory))" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_$_t_function__t_string_literal$$", - "typeString": "function(function(string memory))" - } - ], - "id": "2366", - "nodeType": "IDENTIFIER", - "src": { - "column": "30", - "end": "31113", - "id": "2367", - "length": "7", - "line": "853", - "parentIndex": "2348", - "start": "31107" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_function__t_string_literal$$", - "typeString": "function(function(function(string memory)))" - }, - "typeName": { - "id": "2368", - "name": "bytes32", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "30", - "end": "31113", - "id": "2369", - "length": "7", - "line": "853", - "parentIndex": "2366", - "start": "31107" - }, - "typeDescription": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - } - }, - "id": "2348", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "30", - "end": "31160", - "id": "2349", - "length": "54", - "line": "853", - "parentIndex": "2344", - "start": "31107" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_function__t_string_literal$$$", - "typeString": "function(function(function(string memory)))" - } - } - }, - "src": { - "column": "15", - "end": "31160", - "id": "2345", - "length": "69", - "line": "853", - "parentIndex": "2342", - "start": "31092" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": "2370", - "name": "assert", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "31090", - "id": "2371", - "length": "6", - "line": "853", - "parentIndex": "2342", - "start": "31085" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool", - "typeString": "function(bool)" - } - } - }, - "id": "2342", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "31161", - "id": "2343", - "length": "77", - "line": "853", - "parentIndex": "2340", - "start": "31085" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$", - "typeString": "function(bool)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2374", - "name": "admin_", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2374", - "src": { - "column": "21", - "end": "31190", - "id": "2375", - "length": "6", - "line": "854", - "parentIndex": "2372", - "start": "31185" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "2376", - "name": "_changeAdmin", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "31183", - "id": "2377", - "length": "12", - "line": "854", - "parentIndex": "2372", - "start": "31172" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "2372", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "31191", - "id": "2373", - "length": "20", - "line": "854", - "parentIndex": "2340", - "start": "31172" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - } - ] - }, - "id": "2315", - "implemented": true, - "kind": "CONSTRUCTOR", - "modifiers": [ - { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2336", - "name": "_logic", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2336", - "src": { - "column": "89", - "end": "31065", - "id": "2337", - "length": "6", - "line": "852", - "parentIndex": "2332", - "start": "31060" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2338", - "name": "_data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2338", - "src": { - "column": "97", - "end": "31072", - "id": "2339", - "length": "5", - "line": "852", - "parentIndex": "2332", - "start": "31068" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - } - ], - "id": "2332", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "2334", - "name": "ERC1967Proxy", - "src": { - "column": "76", - "end": "31058", - "id": "2335", - "length": "12", - "line": "852", - "parentIndex": "2332", - "start": "31047" - } - }, - "name": "ERC1967Proxy", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "76", - "end": "31073", - "id": "2333", - "length": "27", - "line": "852", - "parentIndex": "2315", - "start": "31047" - } - } - ], - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2317", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2319", - "name": "_logic", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2319", - "src": { - "column": "16", - "end": "31000", - "id": "2320", - "length": "14", - "line": "852", - "parentIndex": "2317", - "start": "30987" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2321", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "16", - "end": "30993", - "id": "2322", - "length": "7", - "line": "852", - "parentIndex": "2319", - "start": "30987" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "2323", - "name": "admin_", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2323", - "src": { - "column": "32", - "end": "31016", - "id": "2324", - "length": "14", - "line": "852", - "parentIndex": "2317", - "start": "31003" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2325", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "32", - "end": "31009", - "id": "2326", - "length": "7", - "line": "852", - "parentIndex": "2323", - "start": "31003" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "2327", - "name": "_data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2327", - "src": { - "column": "48", - "end": "31036", - "id": "2328", - "length": "18", - "line": "852", - "parentIndex": "2317", - "start": "31019" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "2329", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "48", - "end": "31023", - "id": "2330", - "length": "5", - "line": "852", - "parentIndex": "2327", - "start": "31019" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "16", - "end": "31036", - "id": "2318", - "length": "50", - "line": "852", - "parentIndex": "2315", - "start": "30987" - } - }, - "returnParameters": { - "id": "2331", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "31198", - "id": "2316", - "length": "224", - "line": "852", - "parentIndex": "2315", - "start": "30975" - } - }, - "scope": "2309", - "src": { - "column": "4", - "end": "31198", - "id": "2316", - "length": "224", - "line": "852", - "parentIndex": "2309", - "start": "30975" - }, - "stateMutability": "PAYABLE", - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Modifier", - "value": { - "body": { - "id": "2382", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "23", - "end": "31473", - "id": "2383", - "length": "115", - "line": "860", - "parentIndex": "2379", - "start": "31359" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", - "value": { - "body": { - "id": "2396", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "39", - "end": "31425", - "id": "2397", - "length": "26", - "line": "861", - "parentIndex": "2379", - "start": "31400" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2398", - "name": "_", - "nodeType": "PLACEHOLDER_STATEMENT", - "src": { - "column": "12", - "end": "31414", - "id": "2399", - "length": "1", - "line": "862", - "parentIndex": "2396", - "start": "31414" - }, - "typeDescription": { - "typeIdentifier": "t_placeholder_literal", - "typeString": "t_placeholder" - } - } - } - ] - }, - "condition": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "2386", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2390", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "12", - "end": "31375", - "id": "2391", - "length": "3", - "line": "861", - "parentIndex": "2388", - "start": "31373" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "2388", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "12", - "end": "31382", - "id": "2389", - "length": "10", - "line": "861", - "parentIndex": "2386", - "start": "31373" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2394", - "name": "_getAdmin", - "nodeType": "IDENTIFIER", - "src": { - "column": "26", - "end": "31395", - "id": "2395", - "length": "9", - "line": "861", - "parentIndex": "2392", - "start": "31387" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "2392", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "26", - "end": "31397", - "id": "2393", - "length": "11", - "line": "861", - "parentIndex": "2386", - "start": "31387" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "src": { - "column": "12", - "end": "31397", - "id": "2387", - "length": "25", - "line": "861", - "parentIndex": "2384", - "start": "31373" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "id": "2384", - "nodeType": "IF_STATEMENT", - "src": { - "end": "31467", - "id": "2385", - "length": "99", - "line": "861", - "parentIndex": "2382", - "start": "31369" - } - } - } - ] - }, - "id": "2379", - "name": "ifAdmin", - "nodeType": "MODIFIER_DEFINITION", - "parameters": { - "id": "2381", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "31473", - "id": "2380", - "length": "134", - "line": "860", - "parentIndex": "2309", - "start": "31340" - } - }, - "src": { - "column": "4", - "end": "31473", - "id": "2380", - "length": "134", - "line": "860", - "parentIndex": "2309", - "start": "31340" - }, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2419", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "63", - "end": "32011", - "id": "2420", - "length": "37", - "line": "877", - "parentIndex": "2401", - "start": "31975" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "2423", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2425", - "name": "admin_", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2425", - "src": { - "column": "8", - "end": "31990", - "id": "2426", - "length": "6", - "line": "878", - "parentIndex": "2423", - "start": "31985" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2429", - "name": "_getAdmin", - "nodeType": "IDENTIFIER", - "src": { - "column": "17", - "end": "32002", - "id": "2430", - "length": "9", - "line": "878", - "parentIndex": "2427", - "start": "31994" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "2427", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "17", - "end": "32004", - "id": "2428", - "length": "11", - "line": "878", - "parentIndex": "2423", - "start": "31994" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "src": { - "column": "8", - "end": "32004", - "id": "2424", - "length": "20", - "line": "878", - "parentIndex": "2419", - "start": "31985" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "2421", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "32005", - "id": "2422", - "length": "21", - "line": "878", - "parentIndex": "2419", - "start": "31985" - } - } - } - ] - }, - "id": "2401", - "implemented": true, - "kind": "KIND_FUNCTION", - "modifiers": [ - { - "id": "2403", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "2405", - "name": "ifAdmin", - "src": { - "column": "30", - "end": "31948", - "id": "2406", - "length": "7", - "line": "877", - "parentIndex": "2403", - "start": "31942" - } - }, - "name": "ifAdmin", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "30", - "end": "31948", - "id": "2404", - "length": "7", - "line": "877", - "parentIndex": "2401", - "start": "31942" - } - } - ], - "name": "admin", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2407", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2409", - "name": "admin_", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2409", - "src": { - "column": "47", - "end": "31972", - "id": "2410", - "length": "14", - "line": "877", - "parentIndex": "2407", - "start": "31959" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2411", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "47", - "end": "31965", - "id": "2412", - "length": "7", - "line": "877", - "parentIndex": "2409", - "start": "31959" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "47", - "end": "31972", - "id": "2408", - "length": "14", - "line": "877", - "parentIndex": "2401", - "start": "31959" - } - }, - "returnParameters": { - "id": "2413", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2415", - "name": "admin_", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2415", - "src": { - "column": "47", - "end": "31972", - "id": "2416", - "length": "14", - "line": "877", - "parentIndex": "2413", - "start": "31959" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2417", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "47", - "end": "31965", - "id": "2418", - "length": "7", - "line": "877", - "parentIndex": "2415", - "start": "31959" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "47", - "end": "31972", - "id": "2414", - "length": "14", - "line": "877", - "parentIndex": "2401", - "start": "31959" - } - }, - "scope": "2309", - "src": { - "column": "4", - "end": "32011", - "id": "2402", - "length": "96", - "line": "877", - "parentIndex": "2309", - "start": "31916" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2450", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "81", - "end": "32600", - "id": "2451", - "length": "52", - "line": "890", - "parentIndex": "2432", - "start": "32549" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", - "value": { - "id": "2454", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2456", - "name": "implementation_", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2456", - "src": { - "column": "8", - "end": "32573", - "id": "2457", - "length": "15", - "line": "891", - "parentIndex": "2454", - "start": "32559" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "ASSIGNMENT", - "operator": "EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2460", - "name": "_implementation", - "nodeType": "IDENTIFIER", - "src": { - "column": "26", - "end": "32591", - "id": "2461", - "length": "15", - "line": "891", - "parentIndex": "2458", - "start": "32577" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "2458", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "26", - "end": "32593", - "id": "2459", - "length": "17", - "line": "891", - "parentIndex": "2454", - "start": "32577" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "src": { - "column": "8", - "end": "32593", - "id": "2455", - "length": "35", - "line": "891", - "parentIndex": "2450", - "start": "32559" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "id": "2452", - "nodeType": "EXPRESSION_STATEMENT", - "src": { - "column": "8", - "end": "32594", - "id": "2453", - "length": "36", - "line": "891", - "parentIndex": "2450", - "start": "32559" - } - } - } - ] - }, - "id": "2432", - "implemented": true, - "kind": "KIND_FUNCTION", - "modifiers": [ - { - "id": "2434", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "2436", - "name": "ifAdmin", - "src": { - "column": "39", - "end": "32513", - "id": "2437", - "length": "7", - "line": "890", - "parentIndex": "2434", - "start": "32507" - } - }, - "name": "ifAdmin", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "39", - "end": "32513", - "id": "2435", - "length": "7", - "line": "890", - "parentIndex": "2432", - "start": "32507" - } - } - ], - "name": "implementation", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2438", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2440", - "name": "implementation_", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2440", - "src": { - "column": "56", - "end": "32546", - "id": "2441", - "length": "23", - "line": "890", - "parentIndex": "2438", - "start": "32524" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2442", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "56", - "end": "32530", - "id": "2443", - "length": "7", - "line": "890", - "parentIndex": "2440", - "start": "32524" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "56", - "end": "32546", - "id": "2439", - "length": "23", - "line": "890", - "parentIndex": "2432", - "start": "32524" - } - }, - "returnParameters": { - "id": "2444", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2446", - "name": "implementation_", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2446", - "src": { - "column": "56", - "end": "32546", - "id": "2447", - "length": "23", - "line": "890", - "parentIndex": "2444", - "start": "32524" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2448", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "56", - "end": "32530", - "id": "2449", - "length": "7", - "line": "890", - "parentIndex": "2446", - "start": "32524" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "56", - "end": "32546", - "id": "2445", - "length": "23", - "line": "890", - "parentIndex": "2432", - "start": "32524" - } - }, - "scope": "2309", - "src": { - "column": "4", - "end": "32600", - "id": "2433", - "length": "129", - "line": "890", - "parentIndex": "2309", - "start": "32472" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2476", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "68", - "end": "32908", - "id": "2477", - "length": "39", - "line": "901", - "parentIndex": "2463", - "start": "32870" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2480", - "name": "newAdmin", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2480", - "src": { - "column": "21", - "end": "32900", - "id": "2481", - "length": "8", - "line": "902", - "parentIndex": "2478", - "start": "32893" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "2482", - "name": "_changeAdmin", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "32891", - "id": "2483", - "length": "12", - "line": "902", - "parentIndex": "2478", - "start": "32880" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - } - } - }, - "id": "2478", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "32901", - "id": "2479", - "length": "22", - "line": "902", - "parentIndex": "2476", - "start": "32880" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - } - ] - }, - "id": "2463", - "implemented": true, - "kind": "KIND_FUNCTION", - "modifiers": [ - { - "id": "2465", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "2467", - "name": "ifAdmin", - "src": { - "column": "60", - "end": "32868", - "id": "2468", - "length": "7", - "line": "901", - "parentIndex": "2465", - "start": "32862" - } - }, - "name": "ifAdmin", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "60", - "end": "32868", - "id": "2466", - "length": "7", - "line": "901", - "parentIndex": "2463", - "start": "32862" - } - } - ], - "name": "changeAdmin", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2469", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2471", - "name": "newAdmin", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2471", - "src": { - "column": "25", - "end": "32842", - "id": "2472", - "length": "16", - "line": "901", - "parentIndex": "2469", - "start": "32827" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2473", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "25", - "end": "32833", - "id": "2474", - "length": "7", - "line": "901", - "parentIndex": "2471", - "start": "32827" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "25", - "end": "32842", - "id": "2470", - "length": "16", - "line": "901", - "parentIndex": "2463", - "start": "32827" - } - }, - "returnParameters": { - "id": "2475", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "32908", - "id": "2464", - "length": "103", - "line": "901", - "parentIndex": "2463", - "start": "32806" - } - }, - "scope": "2309", - "src": { - "column": "4", - "end": "32908", - "id": "2464", - "length": "103", - "line": "901", - "parentIndex": "2309", - "start": "32806" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "virtual": true, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2498", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "67", - "end": "33202", - "id": "2499", - "length": "71", - "line": "910", - "parentIndex": "2485", - "start": "33132" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function__t_string_literal$", - "typeString": "function(string memory)" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2502", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2502", - "src": { - "column": "26", - "end": "33176", - "id": "2503", - "length": "17", - "line": "911", - "parentIndex": "2500", - "start": "33160" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2506", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "51", - "end": "33186", - "id": "2507", - "length": "2", - "line": "911", - "parentIndex": "2504", - "start": "33185" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"\"" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"\"" - } - ], - "id": "2508", - "nodeType": "IDENTIFIER", - "src": { - "column": "45", - "end": "33183", - "id": "2509", - "length": "5", - "line": "911", - "parentIndex": "2504", - "start": "33179" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_string_literal", - "typeString": "function(literal_string \"\")" - }, - "typeName": { - "id": "2510", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "45", - "end": "33183", - "id": "2511", - "length": "5", - "line": "911", - "parentIndex": "2508", - "start": "33179" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - } - }, - "id": "2504", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "45", - "end": "33187", - "id": "2505", - "length": "9", - "line": "911", - "parentIndex": "2500", - "start": "33179" - }, - "typeDescription": { - "typeIdentifier": "t_function__t_string_literal$", - "typeString": "function(string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function__t_string_literal$", - "typeString": "function(string memory)" - } - ], - "hexValue": "66616c7365", - "id": "2512", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "56", - "end": "33194", - "id": "2513", - "length": "5", - "line": "911", - "parentIndex": "2500", - "start": "33190" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_function__t_string_literal$", - "typeString": "function(string memory)" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": "2514", - "name": "_upgradeToAndCall", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "33158", - "id": "2515", - "length": "17", - "line": "911", - "parentIndex": "2500", - "start": "33142" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_function__t_string_literal$$$_t_bool", - "typeString": "function(address,function(string memory),bool)" - } - } - }, - "id": "2500", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "33195", - "id": "2501", - "length": "54", - "line": "911", - "parentIndex": "2498", - "start": "33142" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_function__t_string_literal$$$_t_bool$", - "typeString": "function(address,function(string memory),bool)" - } - } - } - ] - }, - "id": "2485", - "implemented": true, - "kind": "KIND_FUNCTION", - "modifiers": [ - { - "id": "2487", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "2489", - "name": "ifAdmin", - "src": { - "column": "59", - "end": "33130", - "id": "2490", - "length": "7", - "line": "910", - "parentIndex": "2487", - "start": "33124" - } - }, - "name": "ifAdmin", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "59", - "end": "33130", - "id": "2488", - "length": "7", - "line": "910", - "parentIndex": "2485", - "start": "33124" - } - } - ], - "name": "upgradeTo", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2491", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2493", - "name": "newImplementation", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2493", - "src": { - "column": "23", - "end": "33112", - "id": "2494", - "length": "25", - "line": "910", - "parentIndex": "2491", - "start": "33088" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2495", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "23", - "end": "33094", - "id": "2496", - "length": "7", - "line": "910", - "parentIndex": "2493", - "start": "33088" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "23", - "end": "33112", - "id": "2492", - "length": "25", - "line": "910", - "parentIndex": "2485", - "start": "33088" - } - }, - "returnParameters": { - "id": "2497", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "33202", - "id": "2486", - "length": "134", - "line": "910", - "parentIndex": "2485", - "start": "33069" - } - }, - "scope": "2309", - "src": { - "column": "4", - "end": "33202", - "id": "2486", - "length": "134", - "line": "910", - "parentIndex": "2309", - "start": "33069" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2534", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "103", - "end": "33742", - "id": "2535", - "length": "65", - "line": "921", - "parentIndex": "2517", - "start": "33678" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2538", - "name": "newImplementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2538", - "src": { - "column": "26", - "end": "33722", - "id": "2539", - "length": "17", - "line": "922", - "parentIndex": "2536", - "start": "33706" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "2540", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2540", - "src": { - "column": "45", - "end": "33728", - "id": "2541", - "length": "4", - "line": "922", - "parentIndex": "2536", - "start": "33725" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "hexValue": "74727565", - "id": "2542", - "isPure": true, - "kind": "BOOLEAN", - "nodeType": "LITERAL", - "src": { - "column": "51", - "end": "33734", - "id": "2543", - "length": "4", - "line": "922", - "parentIndex": "2536", - "start": "33731" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": "2544", - "name": "_upgradeToAndCall", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "33704", - "id": "2545", - "length": "17", - "line": "922", - "parentIndex": "2536", - "start": "33688" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_bool", - "typeString": "function(address,bytes,bool)" - } - } - }, - "id": "2536", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "33735", - "id": "2537", - "length": "48", - "line": "922", - "parentIndex": "2534", - "start": "33688" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_bool$", - "typeString": "function(address,bytes,bool)" - } - } - } - ] - }, - "id": "2517", - "implemented": true, - "kind": "KIND_FUNCTION", - "modifiers": [ - { - "id": "2519", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "2521", - "name": "ifAdmin", - "src": { - "column": "95", - "end": "33676", - "id": "2522", - "length": "7", - "line": "921", - "parentIndex": "2519", - "start": "33670" - } - }, - "name": "ifAdmin", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "95", - "end": "33676", - "id": "2520", - "length": "7", - "line": "921", - "parentIndex": "2517", - "start": "33670" - } - } - ], - "name": "upgradeToAndCall", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2523", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2525", - "name": "newImplementation", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2525", - "src": { - "column": "30", - "end": "33629", - "id": "2526", - "length": "25", - "line": "921", - "parentIndex": "2523", - "start": "33605" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2527", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "30", - "end": "33611", - "id": "2528", - "length": "7", - "line": "921", - "parentIndex": "2525", - "start": "33605" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "2529", - "name": "data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2529", - "src": { - "column": "57", - "end": "33650", - "id": "2530", - "length": "19", - "line": "921", - "parentIndex": "2523", - "start": "33632" - }, - "stateMutability": "MUTABLE", - "storageLocation": "CALLDATA", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "2531", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "57", - "end": "33636", - "id": "2532", - "length": "5", - "line": "921", - "parentIndex": "2529", - "start": "33632" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "30", - "end": "33650", - "id": "2524", - "length": "46", - "line": "921", - "parentIndex": "2517", - "start": "33605" - } - }, - "returnParameters": { - "id": "2533", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "33742", - "id": "2518", - "length": "164", - "line": "921", - "parentIndex": "2517", - "start": "33579" - } - }, - "scope": "2309", - "src": { - "column": "4", - "end": "33742", - "id": "2518", - "length": "164", - "line": "921", - "parentIndex": "2309", - "start": "33579" - }, - "stateMutability": "PAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes", - "typeString": "function(address,bytes)" - }, - "visibility": "EXTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2561", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "62", - "end": "33896", - "id": "2562", - "length": "35", - "line": "928", - "parentIndex": "2547", - "start": "33862" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2567", - "name": "_getAdmin", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "33887", - "id": "2568", - "length": "9", - "line": "929", - "parentIndex": "2565", - "start": "33879" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "2565", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "33889", - "id": "2566", - "length": "11", - "line": "929", - "parentIndex": "2561", - "start": "33879" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "functionReturnParameters": "2547", - "id": "2563", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "33890", - "id": "2564", - "length": "19", - "line": "929", - "parentIndex": "2547", - "start": "33872" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - } - ] - }, - "id": "2547", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_admin", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2549", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2551", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2551", - "src": { - "column": "53", - "end": "33859", - "id": "2552", - "length": "7", - "line": "928", - "parentIndex": "2549", - "start": "33853" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2553", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "53", - "end": "33859", - "id": "2554", - "length": "7", - "line": "928", - "parentIndex": "2551", - "start": "33853" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "53", - "end": "33859", - "id": "2550", - "length": "7", - "line": "928", - "parentIndex": "2547", - "start": "33853" - } - }, - "returnParameters": { - "id": "2555", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2557", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2557", - "src": { - "column": "53", - "end": "33859", - "id": "2558", - "length": "7", - "line": "928", - "parentIndex": "2555", - "start": "33853" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2559", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "53", - "end": "33859", - "id": "2560", - "length": "7", - "line": "928", - "parentIndex": "2557", - "start": "33853" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "53", - "end": "33859", - "id": "2556", - "length": "7", - "line": "928", - "parentIndex": "2547", - "start": "33853" - } - }, - "scope": "2309", - "src": { - "column": "4", - "end": "33896", - "id": "2548", - "length": "93", - "line": "928", - "parentIndex": "2309", - "start": "33804" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_address", - "typeString": "function(address)" - }, - "virtual": true, - "visibility": "INTERNAL" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2576", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "57", - "end": "34224", - "id": "2577", - "length": "154", - "line": "935", - "parentIndex": "2570", - "start": "34071" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", - "value": { - "id": "2580", - "leftExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2584", - "name": "msg", - "nodeType": "IDENTIFIER", - "src": { - "column": "16", - "end": "34091", - "id": "2585", - "length": "3", - "line": "936", - "parentIndex": "2582", - "start": "34089" - }, - "typeDescription": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - } - }, - "id": "2582", - "memberName": "sender", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "16", - "end": "34098", - "id": "2583", - "length": "10", - "line": "936", - "parentIndex": "2580", - "start": "34089" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "nodeType": "BINARY_OPERATION", - "operator": "NOT_EQUAL", - "rightExpression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2588", - "name": "_getAdmin", - "nodeType": "IDENTIFIER", - "src": { - "column": "30", - "end": "34111", - "id": "2589", - "length": "9", - "line": "936", - "parentIndex": "2586", - "start": "34103" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - "id": "2586", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "30", - "end": "34113", - "id": "2587", - "length": "11", - "line": "936", - "parentIndex": "2580", - "start": "34103" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - }, - "src": { - "column": "16", - "end": "34113", - "id": "2581", - "length": "25", - "line": "936", - "parentIndex": "2578", - "start": "34089" - }, - "typeDescription": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "hexValue": "5472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574", - "id": "2590", - "isPure": true, - "kind": "STRING", - "nodeType": "LITERAL", - "src": { - "column": "43", - "end": "34183", - "id": "2591", - "length": "68", - "line": "936", - "parentIndex": "2578", - "start": "34116" - }, - "typeDescription": { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\"" - }, - "value": "TransparentUpgradeableProxy: admin cannot fallback to proxy target" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_literal", - "typeString": "literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\"" - } - ], - "id": "2592", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "34087", - "id": "2593", - "length": "7", - "line": "936", - "parentIndex": "2578", - "start": "34081" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$$_t_string_literal", - "typeString": "function(bool,literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\")" - } - } - }, - "id": "2578", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "34184", - "id": "2579", - "length": "104", - "line": "936", - "parentIndex": "2576", - "start": "34081" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", - "typeString": "function(bool,string memory)" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2598", - "name": "super", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "34199", - "id": "2599", - "length": "5", - "line": "937", - "parentIndex": "2596", - "start": "34195" - }, - "typeDescription": { - "typeIdentifier": "t_magic_super", - "typeString": "super" - } - } - }, - "id": "2596", - "memberName": "_beforeFallback", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "8", - "end": "34215", - "id": "2597", - "length": "21", - "line": "937", - "parentIndex": "2594", - "start": "34195" - }, - "typeDescription": { - "typeIdentifier": "t_magic_super", - "typeString": "super" - } - } - }, - "id": "2594", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "34217", - "id": "2595", - "length": "23", - "line": "937", - "parentIndex": "2576", - "start": "34195" - }, - "typeDescription": { - "typeIdentifier": "t_function_$", - "typeString": "function()" - } - } - } - ] - }, - "id": "2570", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "_beforeFallback", - "nodeType": "FUNCTION_DEFINITION", - "overrides": [ - { - "id": "2572", - "name": "_beforeFallback", - "nodeType": "OVERRIDE_SPECIFIER", - "referencedDeclaration": "212", - "src": { - "column": "48", - "end": "34069", - "id": "2573", - "length": "8", - "line": "935", - "parentIndex": "2570", - "start": "34062" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - ], - "parameters": { - "id": "2574", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "34224", - "id": "2571", - "length": "207", - "line": "935", - "parentIndex": "2570", - "start": "34018" - } - }, - "returnParameters": { - "id": "2575", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "34224", - "id": "2571", - "length": "207", - "line": "935", - "parentIndex": "2570", - "start": "34018" - } - }, - "scope": "2309", - "src": { - "column": "4", - "end": "34224", - "id": "2571", - "length": "207", - "line": "935", - "parentIndex": "2309", - "start": "34018" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - "virtual": true, - "visibility": "INTERNAL" - } - } - ], - "src": { - "end": "34226", - "length": "3526", - "line": "847", - "parentIndex": "2272", - "start": "30701" - } - } - } - ] - }, - "src": { - "id": 2273, - "line": 847, - "start": 30701, - "end": 34226, - "length": 3526, - "parent_index": 118 - } - }, - { - "id": 2600, - "license": "MIT", - "name": "ProxyAdmin", - "absolute_path": "ProxyAdmin.sol", - "exported_symbols": [ - { - "id": 2600, - "name": "ProxyAdmin", - "absolute_path": "ProxyAdmin.sol" - }, - { - "id": 1771, - "name": "Ownable", - "absolute_path": "Ownable.sol" - }, - { - "id": 1771, - "name": "Ownable", - "absolute_path": "Ownable.sol" - }, - { - "id": 2272, - "name": "TransparentUpgradeableProxy", - "absolute_path": "TransparentUpgradeableProxy.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "2624", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "34284", - "id": "2625", - "length": "23", - "line": "943", - "parentIndex": "2600", - "start": "34262" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "TransparentUpgradeableProxy.sol", - "file": "./TransparentUpgradeableProxy.sol", - "id": "2639", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "2600", - "sourceUnit": "2272", - "src": { - "end": "34329", - "length": "43", - "line": "945", - "parentIndex": "2600", - "start": "34287" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "Ownable.sol", - "file": "../../access/Ownable.sol", - "id": "2640", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "2600", - "sourceUnit": "2272", - "src": { - "end": "34364", - "length": "34", - "line": "946", - "parentIndex": "2600", - "start": "34331" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "baseContracts": [ - { - "baseName": { - "id": "2644", - "name": "Ownable", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "1771", - "src": { - "column": "23", - "end": "34625", - "id": "2645", - "length": "7", - "line": "952", - "parentIndex": "2641", - "start": "34619" - } - }, - "id": "2642", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "23", - "end": "34625", - "id": "2643", - "length": "7", - "line": "952", - "parentIndex": "2641", - "start": "34619" - } - } - ], - "contractDependencies": [ - "1771", - "2639", - "2640" - ], - "fullyImplemented": true, - "id": "2641", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "1771", - "2641", - "2639", - "2640" - ], - "name": "ProxyAdmin", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2663", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "109", - "end": "35233", - "id": "2664", - "length": "332", - "line": "961", - "parentIndex": "2647", - "start": "34902" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "2665", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_hex_literal", - "typeString": "literal_hex_string hex\"5c60da1b\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "6865783563363064613162", - "id": "2669", - "isPure": true, - "kind": "HEX_STRING", - "nodeType": "LITERAL", - "src": { - "column": "76", - "end": "35149", - "id": "2670", - "length": "13", - "line": "964", - "parentIndex": "2667", - "start": "35137" - }, - "typeDescription": { - "typeIdentifier": "t_string_hex_literal", - "typeString": "literal_hex_string hex\"5c60da1b\"" - }, - "value": "hex5c60da1b" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_hex_literal", - "typeString": "literal_hex_string hex\"5c60da1b\"" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2675", - "name": "proxy", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2675", - "src": { - "column": "58", - "end": "35123", - "id": "2676", - "length": "5", - "line": "964", - "parentIndex": "2673", - "start": "35119" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - ], - "id": "2677", - "nodeType": "IDENTIFIER", - "src": { - "column": "50", - "end": "35117", - "id": "2678", - "length": "7", - "line": "964", - "parentIndex": "2673", - "start": "35111" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "function(contract TransparentUpgradeableProxy)" - }, - "typeName": { - "id": "2679", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "50", - "end": "35117", - "id": "2680", - "length": "7", - "line": "964", - "parentIndex": "2677", - "start": "35111" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "2673", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "50", - "end": "35124", - "id": "2674", - "length": "14", - "line": "964", - "parentIndex": "2671", - "start": "35111" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$", - "typeString": "function(contract TransparentUpgradeableProxy)" - } - } - }, - "id": "2671", - "memberName": "staticcall", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "50", - "end": "35135", - "id": "2672", - "length": "25", - "line": "964", - "parentIndex": "2667", - "start": "35111" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$", - "typeString": "function(contract TransparentUpgradeableProxy)" - } - } - }, - "id": "2667", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "50", - "end": "35150", - "id": "2668", - "length": "40", - "line": "964", - "parentIndex": "2665", - "start": "35111" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_string_hex_literal$", - "typeString": "function(literal_hex_string hex\"5c60da1b\")" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "35151", - "id": "2666", - "length": "83", - "line": "964", - "parentIndex": "2663", - "start": "35069" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2683", - "name": "success", - "nodeType": "IDENTIFIER", - "src": { - "column": "16", - "end": "35175", - "id": "2684", - "length": "7", - "line": "965", - "parentIndex": "2681", - "start": "35169" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "id": "2685", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "35167", - "id": "2686", - "length": "7", - "line": "965", - "parentIndex": "2681", - "start": "35161" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - } - } - }, - "id": "2681", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "35176", - "id": "2682", - "length": "16", - "line": "965", - "parentIndex": "2663", - "start": "35161" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_tuple_$_t_address$", - "typeString": "tuple(address)" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2691", - "name": "returndata", - "nodeType": "IDENTIFIER", - "src": { - "column": "26", - "end": "35214", - "id": "2692", - "length": "10", - "line": "966", - "parentIndex": "2689", - "start": "35205" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", - "value": { - "components": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2695", - "nodeType": "IDENTIFIER", - "src": { - "column": "39", - "end": "35224", - "id": "2696", - "length": "7", - "line": "966", - "parentIndex": "2693", - "start": "35218" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2697", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "39", - "end": "35224", - "id": "2698", - "length": "7", - "line": "966", - "parentIndex": "2695", - "start": "35218" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - } - ], - "id": "2693", - "nodeType": "TUPLE_EXPRESSION", - "src": { - "column": "38", - "end": "35225", - "id": "2694", - "length": "9", - "line": "966", - "parentIndex": "2689", - "start": "35217" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_address$", - "typeString": "tuple(address)" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_tuple_$_t_address$", - "typeString": "tuple(address)" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2701", - "name": "abi", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "35196", - "id": "2702", - "length": "3", - "line": "966", - "parentIndex": "2699", - "start": "35194" - }, - "typeDescription": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - } - }, - "id": "2699", - "memberName": "decode", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "35203", - "id": "2700", - "length": "10", - "line": "966", - "parentIndex": "2689", - "start": "35194" - }, - "typeDescription": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - } - }, - "id": "2689", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "35226", - "id": "2690", - "length": "33", - "line": "966", - "parentIndex": "2663", - "start": "35194" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_tuple_$_t_address$$", - "typeString": "function(function(),tuple(address))" - } - } - }, - "functionReturnParameters": "2647", - "id": "2687", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "35227", - "id": "2688", - "length": "41", - "line": "966", - "parentIndex": "2647", - "start": "35187" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_tuple_$_t_address$$", - "typeString": "function(function(),tuple(address))" - } - } - } - ] - }, - "id": "2647", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "getProxyImplementation", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2649", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2651", - "name": "proxy", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2651", - "src": { - "column": "36", - "end": "34861", - "id": "2652", - "length": "33", - "line": "961", - "parentIndex": "2649", - "start": "34829" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - }, - "typeName": { - "id": "2653", - "nodeType": "USER_DEFINED_PATH_NAME", - "pathNode": { - "id": "2655", - "name": "TransparentUpgradeableProxy", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "2272", - "src": { - "column": "36", - "end": "34855", - "id": "2656", - "length": "27", - "line": "961", - "parentIndex": "2653", - "start": "34829" - } - }, - "referencedDeclaration": "2272", - "src": { - "column": "36", - "end": "34855", - "id": "2654", - "length": "27", - "line": "961", - "parentIndex": "2651", - "start": "34829" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "36", - "end": "34861", - "id": "2650", - "length": "33", - "line": "961", - "parentIndex": "2647", - "start": "34829" - } - }, - "returnParameters": { - "id": "2657", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2659", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2659", - "src": { - "column": "100", - "end": "34899", - "id": "2660", - "length": "7", - "line": "961", - "parentIndex": "2657", - "start": "34893" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2661", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "100", - "end": "34899", - "id": "2662", - "length": "7", - "line": "961", - "parentIndex": "2659", - "start": "34893" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "100", - "end": "34899", - "id": "2658", - "length": "7", - "line": "961", - "parentIndex": "2647", - "start": "34893" - } - }, - "scope": "2641", - "src": { - "column": "4", - "end": "35233", - "id": "2648", - "length": "437", - "line": "961", - "parentIndex": "2641", - "start": "34797" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "function(contract TransparentUpgradeableProxy)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2720", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "100", - "end": "35812", - "id": "2721", - "length": "323", - "line": "976", - "parentIndex": "2704", - "start": "35490" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", - "value": { - "id": "2722", - "initialValue": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_hex_literal", - "typeString": "literal_hex_string hex\"f851a440\"" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "hexValue": "6865786638353161343430", - "id": "2726", - "isPure": true, - "kind": "HEX_STRING", - "nodeType": "LITERAL", - "src": { - "column": "76", - "end": "35728", - "id": "2727", - "length": "13", - "line": "979", - "parentIndex": "2724", - "start": "35716" - }, - "typeDescription": { - "typeIdentifier": "t_string_hex_literal", - "typeString": "literal_hex_string hex\"f851a440\"" - }, - "value": "hexf851a440" - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_hex_literal", - "typeString": "literal_hex_string hex\"f851a440\"" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2732", - "name": "proxy", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2732", - "src": { - "column": "58", - "end": "35702", - "id": "2733", - "length": "5", - "line": "979", - "parentIndex": "2730", - "start": "35698" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - ], - "id": "2734", - "nodeType": "IDENTIFIER", - "src": { - "column": "50", - "end": "35696", - "id": "2735", - "length": "7", - "line": "979", - "parentIndex": "2730", - "start": "35690" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "function(contract TransparentUpgradeableProxy)" - }, - "typeName": { - "id": "2736", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "50", - "end": "35696", - "id": "2737", - "length": "7", - "line": "979", - "parentIndex": "2734", - "start": "35690" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - }, - "id": "2730", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "50", - "end": "35703", - "id": "2731", - "length": "14", - "line": "979", - "parentIndex": "2728", - "start": "35690" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$", - "typeString": "function(contract TransparentUpgradeableProxy)" - } - } - }, - "id": "2728", - "memberName": "staticcall", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "50", - "end": "35714", - "id": "2729", - "length": "25", - "line": "979", - "parentIndex": "2724", - "start": "35690" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$", - "typeString": "function(contract TransparentUpgradeableProxy)" - } - } - }, - "id": "2724", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "50", - "end": "35729", - "id": "2725", - "length": "40", - "line": "979", - "parentIndex": "2722", - "start": "35690" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_string_hex_literal$", - "typeString": "function(literal_hex_string hex\"f851a440\")" - } - } - }, - "nodeType": "VARIABLE_DECLARATION", - "src": { - "column": "8", - "end": "35730", - "id": "2723", - "length": "83", - "line": "979", - "parentIndex": "2720", - "start": "35648" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2740", - "name": "success", - "nodeType": "IDENTIFIER", - "src": { - "column": "16", - "end": "35754", - "id": "2741", - "length": "7", - "line": "980", - "parentIndex": "2738", - "start": "35748" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - ], - "id": "2742", - "name": "require", - "nodeType": "IDENTIFIER", - "src": { - "column": "8", - "end": "35746", - "id": "2743", - "length": "7", - "line": "980", - "parentIndex": "2738", - "start": "35740" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_", - "typeString": "function(function())" - } - } - }, - "id": "2738", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "35755", - "id": "2739", - "length": "16", - "line": "980", - "parentIndex": "2720", - "start": "35740" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$", - "typeString": "function(function())" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_tuple_$_t_address$", - "typeString": "tuple(address)" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2748", - "name": "returndata", - "nodeType": "IDENTIFIER", - "src": { - "column": "26", - "end": "35793", - "id": "2749", - "length": "10", - "line": "981", - "parentIndex": "2746", - "start": "35784" - }, - "typeDescription": { - "typeIdentifier": "t_function_", - "typeString": "function()" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", - "value": { - "components": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2752", - "nodeType": "IDENTIFIER", - "src": { - "column": "39", - "end": "35803", - "id": "2753", - "length": "7", - "line": "981", - "parentIndex": "2750", - "start": "35797" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2754", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "39", - "end": "35803", - "id": "2755", - "length": "7", - "line": "981", - "parentIndex": "2752", - "start": "35797" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - } - ], - "id": "2750", - "nodeType": "TUPLE_EXPRESSION", - "src": { - "column": "38", - "end": "35804", - "id": "2751", - "length": "9", - "line": "981", - "parentIndex": "2746", - "start": "35796" - }, - "typeDescription": { - "typeIdentifier": "t_tuple_$_t_address$", - "typeString": "tuple(address)" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_function_", - "typeString": "function()" - }, - { - "typeIdentifier": "t_tuple_$_t_address$", - "typeString": "tuple(address)" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2758", - "name": "abi", - "nodeType": "IDENTIFIER", - "src": { - "column": "15", - "end": "35775", - "id": "2759", - "length": "3", - "line": "981", - "parentIndex": "2756", - "start": "35773" - }, - "typeDescription": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - } - }, - "id": "2756", - "memberName": "decode", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "15", - "end": "35782", - "id": "2757", - "length": "10", - "line": "981", - "parentIndex": "2746", - "start": "35773" - }, - "typeDescription": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - } - }, - "id": "2746", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "15", - "end": "35805", - "id": "2747", - "length": "33", - "line": "981", - "parentIndex": "2720", - "start": "35773" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_tuple_$_t_address$$", - "typeString": "function(function(),tuple(address))" - } - } - }, - "functionReturnParameters": "2704", - "id": "2744", - "nodeType": "RETURN_STATEMENT", - "src": { - "column": "8", - "end": "35806", - "id": "2745", - "length": "41", - "line": "981", - "parentIndex": "2704", - "start": "35766" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_tuple_$_t_address$$", - "typeString": "function(function(),tuple(address))" - } - } - } - ] - }, - "id": "2704", - "implemented": true, - "kind": "KIND_FUNCTION", - "name": "getProxyAdmin", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2706", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2708", - "name": "proxy", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2708", - "src": { - "column": "27", - "end": "35449", - "id": "2709", - "length": "33", - "line": "976", - "parentIndex": "2706", - "start": "35417" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - }, - "typeName": { - "id": "2710", - "nodeType": "USER_DEFINED_PATH_NAME", - "pathNode": { - "id": "2712", - "name": "TransparentUpgradeableProxy", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "2272", - "src": { - "column": "27", - "end": "35443", - "id": "2713", - "length": "27", - "line": "976", - "parentIndex": "2710", - "start": "35417" - } - }, - "referencedDeclaration": "2272", - "src": { - "column": "27", - "end": "35443", - "id": "2711", - "length": "27", - "line": "976", - "parentIndex": "2708", - "start": "35417" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "27", - "end": "35449", - "id": "2707", - "length": "33", - "line": "976", - "parentIndex": "2704", - "start": "35417" - } - }, - "returnParameters": { - "id": "2714", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2716", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2716", - "src": { - "column": "91", - "end": "35487", - "id": "2717", - "length": "7", - "line": "976", - "parentIndex": "2714", - "start": "35481" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2718", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "91", - "end": "35487", - "id": "2719", - "length": "7", - "line": "976", - "parentIndex": "2716", - "start": "35481" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "91", - "end": "35487", - "id": "2715", - "length": "7", - "line": "976", - "parentIndex": "2704", - "start": "35481" - } - }, - "scope": "2641", - "src": { - "column": "4", - "end": "35812", - "id": "2705", - "length": "419", - "line": "976", - "parentIndex": "2641", - "start": "35394" - }, - "stateMutability": "VIEW", - "typeDescription": { - "typeIdentifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "function(contract TransparentUpgradeableProxy)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2780", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "108", - "end": "36134", - "id": "2781", - "length": "44", - "line": "991", - "parentIndex": "2761", - "start": "36091" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2784", - "name": "newAdmin", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2784", - "src": { - "column": "26", - "end": "36126", - "id": "2785", - "length": "8", - "line": "992", - "parentIndex": "2782", - "start": "36119" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2788", - "name": "proxy", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2788", - "src": { - "column": "8", - "end": "36105", - "id": "2789", - "length": "5", - "line": "992", - "parentIndex": "2786", - "start": "36101" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - } - }, - "id": "2786", - "memberName": "changeAdmin", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "8", - "end": "36117", - "id": "2787", - "length": "17", - "line": "992", - "parentIndex": "2782", - "start": "36101" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - } - }, - "id": "2782", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "36127", - "id": "2783", - "length": "27", - "line": "992", - "parentIndex": "2780", - "start": "36101" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - } - ] - }, - "id": "2761", - "implemented": true, - "kind": "KIND_FUNCTION", - "modifiers": [ - { - "id": "2763", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "2765", - "name": "onlyOwner", - "src": { - "column": "98", - "end": "36089", - "id": "2766", - "length": "9", - "line": "991", - "parentIndex": "2763", - "start": "36081" - } - }, - "name": "onlyOwner", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "98", - "end": "36089", - "id": "2764", - "length": "9", - "line": "991", - "parentIndex": "2761", - "start": "36081" - } - } - ], - "name": "changeProxyAdmin", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2767", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2769", - "name": "proxy", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2769", - "src": { - "column": "30", - "end": "36045", - "id": "2770", - "length": "33", - "line": "991", - "parentIndex": "2767", - "start": "36013" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - }, - "typeName": { - "id": "2771", - "nodeType": "USER_DEFINED_PATH_NAME", - "pathNode": { - "id": "2773", - "name": "TransparentUpgradeableProxy", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "2272", - "src": { - "column": "30", - "end": "36039", - "id": "2774", - "length": "27", - "line": "991", - "parentIndex": "2771", - "start": "36013" - } - }, - "referencedDeclaration": "2272", - "src": { - "column": "30", - "end": "36039", - "id": "2772", - "length": "27", - "line": "991", - "parentIndex": "2769", - "start": "36013" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "2775", - "name": "newAdmin", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2775", - "src": { - "column": "65", - "end": "36063", - "id": "2776", - "length": "16", - "line": "991", - "parentIndex": "2767", - "start": "36048" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2777", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "65", - "end": "36054", - "id": "2778", - "length": "7", - "line": "991", - "parentIndex": "2775", - "start": "36048" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "30", - "end": "36063", - "id": "2768", - "length": "51", - "line": "991", - "parentIndex": "2761", - "start": "36013" - } - }, - "returnParameters": { - "id": "2779", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "36134", - "id": "2762", - "length": "148", - "line": "991", - "parentIndex": "2761", - "start": "35987" - } - }, - "scope": "2641", - "src": { - "column": "4", - "end": "36134", - "id": "2762", - "length": "148", - "line": "991", - "parentIndex": "2641", - "start": "35987" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$$_t_address", - "typeString": "function(contract TransparentUpgradeableProxy,address)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2810", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "105", - "end": "36488", - "id": "2811", - "length": "48", - "line": "1002", - "parentIndex": "2791", - "start": "36441" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2814", - "name": "implementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2814", - "src": { - "column": "24", - "end": "36480", - "id": "2815", - "length": "14", - "line": "1003", - "parentIndex": "2812", - "start": "36467" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2818", - "name": "proxy", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2818", - "src": { - "column": "8", - "end": "36455", - "id": "2819", - "length": "5", - "line": "1003", - "parentIndex": "2816", - "start": "36451" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - } - }, - "id": "2816", - "memberName": "upgradeTo", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "8", - "end": "36465", - "id": "2817", - "length": "15", - "line": "1003", - "parentIndex": "2812", - "start": "36451" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - } - }, - "id": "2812", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "36481", - "id": "2813", - "length": "31", - "line": "1003", - "parentIndex": "2810", - "start": "36451" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$", - "typeString": "function(address)" - } - } - } - ] - }, - "id": "2791", - "implemented": true, - "kind": "KIND_FUNCTION", - "modifiers": [ - { - "id": "2793", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "2795", - "name": "onlyOwner", - "src": { - "column": "95", - "end": "36439", - "id": "2796", - "length": "9", - "line": "1002", - "parentIndex": "2793", - "start": "36431" - } - }, - "name": "onlyOwner", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "95", - "end": "36439", - "id": "2794", - "length": "9", - "line": "1002", - "parentIndex": "2791", - "start": "36431" - } - } - ], - "name": "upgrade", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2797", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2799", - "name": "proxy", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2799", - "src": { - "column": "21", - "end": "36389", - "id": "2800", - "length": "33", - "line": "1002", - "parentIndex": "2797", - "start": "36357" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - }, - "typeName": { - "id": "2801", - "nodeType": "USER_DEFINED_PATH_NAME", - "pathNode": { - "id": "2803", - "name": "TransparentUpgradeableProxy", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "2272", - "src": { - "column": "21", - "end": "36383", - "id": "2804", - "length": "27", - "line": "1002", - "parentIndex": "2801", - "start": "36357" - } - }, - "referencedDeclaration": "2272", - "src": { - "column": "21", - "end": "36383", - "id": "2802", - "length": "27", - "line": "1002", - "parentIndex": "2799", - "start": "36357" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "2805", - "name": "implementation", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2805", - "src": { - "column": "56", - "end": "36413", - "id": "2806", - "length": "22", - "line": "1002", - "parentIndex": "2797", - "start": "36392" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2807", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "56", - "end": "36398", - "id": "2808", - "length": "7", - "line": "1002", - "parentIndex": "2805", - "start": "36392" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "21", - "end": "36413", - "id": "2798", - "length": "57", - "line": "1002", - "parentIndex": "2791", - "start": "36357" - } - }, - "returnParameters": { - "id": "2809", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "36488", - "id": "2792", - "length": "149", - "line": "1002", - "parentIndex": "2791", - "start": "36340" - } - }, - "scope": "2641", - "src": { - "column": "4", - "end": "36488", - "id": "2792", - "length": "149", - "line": "1002", - "parentIndex": "2641", - "start": "36340" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$$_t_address", - "typeString": "function(contract TransparentUpgradeableProxy,address)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2844", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "139", - "end": "36968", - "id": "2845", - "length": "79", - "line": "1014", - "parentIndex": "2821", - "start": "36890" - }, - "statements": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2848", - "name": "implementation", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2848", - "src": { - "column": "49", - "end": "36954", - "id": "2849", - "length": "14", - "line": "1015", - "parentIndex": "2846", - "start": "36941" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": "2850", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2850", - "src": { - "column": "65", - "end": "36960", - "id": "2851", - "length": "4", - "line": "1015", - "parentIndex": "2846", - "start": "36957" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - } - ], - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCallOption", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", - "value": { - "expression": { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2856", - "name": "proxy", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2856", - "src": { - "column": "8", - "end": "36904", - "id": "2857", - "length": "5", - "line": "1015", - "parentIndex": "2854", - "start": "36900" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - } - }, - "id": "2854", - "memberName": "upgradeToAndCall", - "nodeType": "MEMBER_ACCESS", - "src": { - "column": "8", - "end": "36921", - "id": "2855", - "length": "22", - "line": "1015", - "parentIndex": "2852", - "start": "36900" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - } - }, - "id": "2852", - "kind": "FUNCTION_CALL_OPTION", - "nodeType": "FUNCTION_CALL_OPTION", - "src": { - "column": "8", - "end": "36939", - "id": "2853", - "length": "40", - "line": "1015", - "parentIndex": "2846", - "start": "36900" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - } - }, - "id": "2846", - "kind": "FUNCTION_CALL", - "nodeType": "FUNCTION_CALL", - "src": { - "column": "8", - "end": "36961", - "id": "2847", - "length": "62", - "line": "1015", - "parentIndex": "2844", - "start": "36900" - }, - "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$", - "typeString": "function(address,bytes)" - } - } - } - ] - }, - "id": "2821", - "implemented": true, - "kind": "KIND_FUNCTION", - "modifiers": [ - { - "id": "2823", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "2825", - "name": "onlyOwner", - "src": { - "column": "129", - "end": "36888", - "id": "2826", - "length": "9", - "line": "1014", - "parentIndex": "2823", - "start": "36880" - } - }, - "name": "onlyOwner", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "129", - "end": "36888", - "id": "2824", - "length": "9", - "line": "1014", - "parentIndex": "2821", - "start": "36880" - } - } - ], - "name": "upgradeAndCall", - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2827", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2829", - "name": "proxy", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2829", - "src": { - "column": "28", - "end": "36811", - "id": "2830", - "length": "33", - "line": "1014", - "parentIndex": "2827", - "start": "36779" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - }, - "typeName": { - "id": "2831", - "nodeType": "USER_DEFINED_PATH_NAME", - "pathNode": { - "id": "2833", - "name": "TransparentUpgradeableProxy", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "2272", - "src": { - "column": "28", - "end": "36805", - "id": "2834", - "length": "27", - "line": "1014", - "parentIndex": "2831", - "start": "36779" - } - }, - "referencedDeclaration": "2272", - "src": { - "column": "28", - "end": "36805", - "id": "2832", - "length": "27", - "line": "1014", - "parentIndex": "2829", - "start": "36779" - }, - "typeDescription": { - "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", - "typeString": "contract TransparentUpgradeableProxy" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "2835", - "name": "implementation", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2835", - "src": { - "column": "63", - "end": "36835", - "id": "2836", - "length": "22", - "line": "1014", - "parentIndex": "2827", - "start": "36814" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2837", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "63", - "end": "36820", - "id": "2838", - "length": "7", - "line": "1014", - "parentIndex": "2835", - "start": "36814" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "2839", - "name": "data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2839", - "src": { - "column": "87", - "end": "36854", - "id": "2840", - "length": "17", - "line": "1014", - "parentIndex": "2827", - "start": "36838" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "2841", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "87", - "end": "36842", - "id": "2842", - "length": "5", - "line": "1014", - "parentIndex": "2839", - "start": "36838" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "28", - "end": "36854", - "id": "2828", - "length": "76", - "line": "1014", - "parentIndex": "2821", - "start": "36779" - } - }, - "returnParameters": { - "id": "2843", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "36968", - "id": "2822", - "length": "214", - "line": "1014", - "parentIndex": "2821", - "start": "36755" - } - }, - "scope": "2641", - "src": { - "column": "4", - "end": "36968", - "id": "2822", - "length": "214", - "line": "1014", - "parentIndex": "2641", - "start": "36755" - }, - "stateMutability": "PAYABLE", - "typeDescription": { - "typeIdentifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$$_t_address$$_t_bytes", - "typeString": "function(contract TransparentUpgradeableProxy,address,bytes)" - }, - "virtual": true, - "visibility": "PUBLIC" - } - } - ], - "src": { - "end": "36970", - "length": "2375", - "line": "952", - "parentIndex": "2600", - "start": "34596" - } - } - } - ] - }, - "src": { - "id": 2601, - "line": 952, - "start": 34596, - "end": 36970, - "length": 2375, - "parent_index": 118 - } - }, - { - "id": 2858, - "license": "MIT", - "name": "AdminUpgradeabilityProxy", - "exported_symbols": [ - { - "id": 2858, - "name": "AdminUpgradeabilityProxy" - }, - { - "id": 2600, - "name": "ProxyAdmin", - "absolute_path": "ProxyAdmin.sol" - }, - { - "id": 2272, - "name": "TransparentUpgradeableProxy", - "absolute_path": "TransparentUpgradeableProxy.sol" - }, - { - "id": 2272, - "name": "TransparentUpgradeableProxy", - "absolute_path": "TransparentUpgradeableProxy.sol" - }, - { - "id": 2146, - "name": "ERC1967Proxy", - "absolute_path": "ERC1967Proxy.sol" - }, - { - "id": 1991, - "name": "UpgradeableBeacon", - "absolute_path": "UpgradeableBeacon.sol" - }, - { - "id": 1533, - "name": "BeaconProxy", - "absolute_path": "BeaconProxy.sol" - } - ], - "node_type": 1, - "root": { - "nodes": [ - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", - "value": { - "id": "2884", - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "nodeType": "PRAGMA_DIRECTIVE", - "src": { - "end": "37027", - "id": "2885", - "length": "23", - "line": "1020", - "parentIndex": "2858", - "start": "37005" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "BeaconProxy.sol", - "file": "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol", - "id": "2901", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "2858", - "sourceUnit": "2600", - "src": { - "end": "37091", - "length": "62", - "line": "1022", - "parentIndex": "2858", - "start": "37030" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "UpgradeableBeacon.sol", - "file": "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol", - "id": "2902", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "2858", - "sourceUnit": "2600", - "src": { - "end": "37160", - "length": "68", - "line": "1023", - "parentIndex": "2858", - "start": "37093" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "ERC1967Proxy.sol", - "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", - "id": "2903", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "2858", - "sourceUnit": "2600", - "src": { - "end": "37225", - "length": "64", - "line": "1024", - "parentIndex": "2858", - "start": "37162" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "TransparentUpgradeableProxy.sol", - "file": "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", - "id": "2904", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "2858", - "sourceUnit": "2600", - "src": { - "end": "37309", - "length": "83", - "line": "1025", - "parentIndex": "2858", - "start": "37227" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", - "value": { - "absolutePath": "ProxyAdmin.sol", - "file": "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol", - "id": "2905", - "nodeType": "IMPORT_DIRECTIVE", - "scope": "2858", - "sourceUnit": "2600", - "src": { - "end": "37376", - "length": "66", - "line": "1026", - "parentIndex": "2858", - "start": "37311" - } - } - }, - { - "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", - "value": { - "baseContracts": [ - { - "baseName": { - "id": "2909", - "name": "TransparentUpgradeableProxy", - "nodeType": "IDENTIFIER_PATH", - "referencedDeclaration": "2272", - "src": { - "column": "37", - "end": "37530", - "id": "2910", - "length": "27", - "line": "1029", - "parentIndex": "2906", - "start": "37504" - } - }, - "id": "2907", - "nodeType": "INHERITANCE_SPECIFIER", - "src": { - "column": "37", - "end": "37530", - "id": "2908", - "length": "27", - "line": "1029", - "parentIndex": "2906", - "start": "37504" - } - } - ], - "contractDependencies": [ - "2272", - "2901", - "2902", - "2903", - "2904", - "2905" - ], - "fullyImplemented": true, - "id": "2906", - "kind": "KIND_CONTRACT", - "linearizedBaseContracts": [ - "2272", - "2906", - "2901", - "2902", - "2903", - "2904", - "2905" - ], - "name": "AdminUpgradeabilityProxy", - "nodeType": "CONTRACT_DEFINITION", - "nodes": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", - "value": { - "body": { - "id": "2939", - "implemented": true, - "nodeType": "BLOCK", - "src": { - "column": "121", - "end": "37656", - "id": "2940", - "length": "2", - "line": "1030", - "parentIndex": "2912", - "start": "37655" - } - }, - "id": "2912", - "implemented": true, - "kind": "CONSTRUCTOR", - "modifiers": [ - { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - ], - "arguments": [ - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2933", - "name": "logic", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2933", - "src": { - "column": "101", - "end": "37639", - "id": "2934", - "length": "5", - "line": "1030", - "parentIndex": "2929", - "start": "37635" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2935", - "name": "admin", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2935", - "src": { - "column": "108", - "end": "37646", - "id": "2936", - "length": "5", - "line": "1030", - "parentIndex": "2929", - "start": "37642" - }, - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", - "value": { - "id": "2937", - "name": "data", - "nodeType": "IDENTIFIER", - "referencedDeclaration": "2937", - "src": { - "column": "115", - "end": "37652", - "id": "2938", - "length": "4", - "line": "1030", - "parentIndex": "2929", - "start": "37649" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - } - } - ], - "id": "2929", - "kind": "MODIFIER_INVOCATION", - "modifierName": { - "id": "2931", - "name": "TransparentUpgradeableProxy", - "src": { - "column": "73", - "end": "37633", - "id": "2932", - "length": "27", - "line": "1030", - "parentIndex": "2929", - "start": "37607" - } - }, - "name": "TransparentUpgradeableProxy", - "nodeType": "MODIFIER_INVOCATION", - "src": { - "column": "73", - "end": "37653", - "id": "2930", - "length": "47", - "line": "1030", - "parentIndex": "2912", - "start": "37607" - } - } - ], - "nodeType": "FUNCTION_DEFINITION", - "parameters": { - "id": "2914", - "nodeType": "PARAMETER_LIST", - "parameters": [ - { - "id": "2916", - "name": "logic", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2916", - "src": { - "column": "16", - "end": "37562", - "id": "2917", - "length": "13", - "line": "1030", - "parentIndex": "2914", - "start": "37550" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2918", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "16", - "end": "37556", - "id": "2919", - "length": "7", - "line": "1030", - "parentIndex": "2916", - "start": "37550" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "2920", - "name": "admin", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2920", - "src": { - "column": "31", - "end": "37577", - "id": "2921", - "length": "13", - "line": "1030", - "parentIndex": "2914", - "start": "37565" - }, - "stateMutability": "NONPAYABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": "2922", - "name": "address", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "31", - "end": "37571", - "id": "2923", - "length": "7", - "line": "1030", - "parentIndex": "2920", - "start": "37565" - }, - "stateMutability": "NONPAYABLE", - "typeDescription": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "INTERNAL" - }, - { - "id": "2924", - "name": "data", - "nodeType": "VARIABLE_DECLARATION", - "scope": "2924", - "src": { - "column": "46", - "end": "37596", - "id": "2925", - "length": "17", - "line": "1030", - "parentIndex": "2914", - "start": "37580" - }, - "stateMutability": "MUTABLE", - "storageLocation": "MEMORY", - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - }, - "typeName": { - "id": "2926", - "name": "bytes", - "nodeType": "ELEMENTARY_TYPE_NAME", - "src": { - "column": "46", - "end": "37584", - "id": "2927", - "length": "5", - "line": "1030", - "parentIndex": "2924", - "start": "37580" - }, - "typeDescription": { - "typeIdentifier": "t_bytes", - "typeString": "bytes" - } - }, - "visibility": "INTERNAL" - } - ], - "src": { - "column": "16", - "end": "37596", - "id": "2915", - "length": "47", - "line": "1030", - "parentIndex": "2912", - "start": "37550" - } - }, - "returnParameters": { - "id": "2928", - "nodeType": "PARAMETER_LIST", - "src": { - "column": "4", - "end": "37656", - "id": "2913", - "length": "119", - "line": "1030", - "parentIndex": "2912", - "start": "37538" - } - }, - "scope": "2906", - "src": { - "column": "4", - "end": "37656", - "id": "2913", - "length": "119", - "line": "1030", - "parentIndex": "2906", - "start": "37538" - }, - "stateMutability": "PAYABLE", - "visibility": "INTERNAL" - } - } - ], - "src": { - "end": "37658", - "length": "192", - "line": "1029", - "parentIndex": "2858", - "start": "37467" - } - } - } - ] - }, - "src": { - "id": 2859, - "line": 1029, - "start": 37467, - "end": 37658, - "length": 192, - "parent_index": 118 - } - } - ], - "comments": [ - { - "id": 1, - "node_type": 33, - "src": { - "line": 1, - "end": 30, - "length": 31, - "parent_index": 2 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 2, - "node_type": 32, - "src": { - "line": 5, - "start": 58, - "end": 136, - "length": 79, - "parent_index": 3 - }, - "text": "/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */" - }, - { - "id": 3, - "node_type": 32, - "src": { - "line": 9, - "column": 4, - "start": 162, - "end": 323, - "length": 162, - "parent_index": 4 - }, - "text": "/**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */" - }, - { - "id": 4, - "node_type": 33, - "src": { - "line": 17, - "start": 391, - "end": 421, - "length": 31, - "parent_index": 5 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 5, - "node_type": 32, - "src": { - "line": 21, - "start": 449, - "end": 1046, - "length": 598, - "parent_index": 6 - }, - "text": "/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */" - }, - { - "id": 6, - "node_type": 32, - "src": { - "line": 32, - "column": 4, - "start": 1078, - "end": 1268, - "length": 191, - "parent_index": 7 - }, - "text": "/**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internall call site, it will return directly to the external caller.\n */" - }, - { - "id": 7, - "node_type": 31, - "src": { - "line": 38, - "column": 8, - "start": 1344, - "end": 1390, - "length": 47, - "parent_index": 8 - }, - "text": "// solhint-disable-next-line no-inline-assembly" - }, - { - "id": 8, - "node_type": 32, - "src": { - "line": 59, - "column": 4, - "start": 2175, - "end": 2346, - "length": 172, - "parent_index": 9 - }, - "text": "/**\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */" - }, - { - "id": 9, - "node_type": 32, - "src": { - "line": 65, - "column": 4, - "start": 2425, - "end": 2642, - "length": 218, - "parent_index": 10 - }, - "text": "/**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internall call site, it will return directly to the external caller.\n */" - }, - { - "id": 10, - "node_type": 32, - "src": { - "line": 75, - "column": 4, - "start": 2764, - "end": 2949, - "length": 186, - "parent_index": 11 - }, - "text": "/**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */" - }, - { - "id": 11, - "node_type": 32, - "src": { - "line": 83, - "column": 4, - "start": 3026, - "end": 3174, - "length": 149, - "parent_index": 12 - }, - "text": "/**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */" - }, - { - "id": 12, - "node_type": 32, - "src": { - "line": 91, - "column": 4, - "start": 3250, - "end": 3519, - "length": 270, - "parent_index": 13 - }, - "text": "/**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overriden should call `super._beforeFallback()`.\n */" - }, - { - "id": 13, - "node_type": 33, - "src": { - "line": 101, - "start": 3580, - "end": 3610, - "length": 31, - "parent_index": 14 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 14, - "node_type": 32, - "src": { - "line": 105, - "start": 3638, - "end": 3704, - "length": 67, - "parent_index": 15 - }, - "text": "/**\n * @dev Collection of functions related to the address type\n */" - }, - { - "id": 15, - "node_type": 32, - "src": { - "line": 109, - "column": 4, - "start": 3728, - "end": 4292, - "length": 565, - "parent_index": 16 - }, - "text": "/**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */" - }, - { - "id": 16, - "node_type": 31, - "src": { - "line": 127, - "column": 8, - "start": 4374, - "end": 4443, - "length": 70, - "parent_index": 17 - }, - "text": "// This method relies on extcodesize, which returns 0 for contracts in" - }, - { - "id": 17, - "node_type": 31, - "src": { - "line": 128, - "column": 8, - "start": 4453, - "end": 4516, - "length": 64, - "parent_index": 18 - }, - "text": "// construction, since the code is only stored at the end of the" - }, - { - "id": 18, - "node_type": 31, - "src": { - "line": 129, - "column": 8, - "start": 4526, - "end": 4550, - "length": 25, - "parent_index": 19 - }, - "text": "// constructor execution." - }, - { - "id": 19, - "node_type": 31, - "src": { - "line": 132, - "column": 8, - "start": 4583, - "end": 4629, - "length": 47, - "parent_index": 20 - }, - "text": "// solhint-disable-next-line no-inline-assembly" - }, - { - "id": 20, - "node_type": 32, - "src": { - "line": 137, - "column": 4, - "start": 4717, - "end": 5622, - "length": 906, - "parent_index": 21 - }, - "text": "/**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */" - }, - { - "id": 21, - "node_type": 31, - "src": { - "line": 156, - "column": 8, - "start": 5793, - "end": 5860, - "length": 68, - "parent_index": 22 - }, - "text": "// solhint-disable-next-line avoid-low-level-calls, avoid-call-value" - }, - { - "id": 22, - "node_type": 32, - "src": { - "line": 161, - "column": 4, - "start": 6025, - "end": 6754, - "length": 730, - "parent_index": 23 - }, - "text": "/**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain`call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */" - }, - { - "id": 23, - "node_type": 32, - "src": { - "line": 183, - "column": 4, - "start": 6937, - "end": 7147, - "length": 211, - "parent_index": 24 - }, - "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */" - }, - { - "id": 24, - "node_type": 32, - "src": { - "line": 193, - "column": 4, - "start": 7352, - "end": 7702, - "length": 351, - "parent_index": 25 - }, - "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */" - }, - { - "id": 25, - "node_type": 32, - "src": { - "line": 208, - "column": 4, - "start": 7938, - "end": 8174, - "length": 237, - "parent_index": 26 - }, - "text": "/**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */" - }, - { - "id": 26, - "node_type": 31, - "src": { - "line": 218, - "column": 8, - "start": 8493, - "end": 8542, - "length": 50, - "parent_index": 27 - }, - "text": "// solhint-disable-next-line avoid-low-level-calls" - }, - { - "id": 27, - "node_type": 32, - "src": { - "line": 223, - "column": 4, - "start": 8709, - "end": 8874, - "length": 166, - "parent_index": 28 - }, - "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */" - }, - { - "id": 28, - "node_type": 32, - "src": { - "line": 233, - "column": 4, - "start": 9083, - "end": 9255, - "length": 173, - "parent_index": 29 - }, - "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */" - }, - { - "id": 29, - "node_type": 31, - "src": { - "line": 242, - "column": 8, - "start": 9477, - "end": 9526, - "length": 50, - "parent_index": 30 - }, - "text": "// solhint-disable-next-line avoid-low-level-calls" - }, - { - "id": 30, - "node_type": 32, - "src": { - "line": 247, - "column": 4, - "start": 9683, - "end": 9850, - "length": 168, - "parent_index": 31 - }, - "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */" - }, - { - "id": 31, - "node_type": 32, - "src": { - "line": 257, - "column": 4, - "start": 10060, - "end": 10234, - "length": 175, - "parent_index": 32 - }, - "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */" - }, - { - "id": 32, - "node_type": 31, - "src": { - "line": 266, - "column": 8, - "start": 10455, - "end": 10504, - "length": 50, - "parent_index": 33 - }, - "text": "// solhint-disable-next-line avoid-low-level-calls" - }, - { - "id": 33, - "node_type": 31, - "src": { - "line": 275, - "column": 12, - "start": 10877, - "end": 10929, - "length": 53, - "parent_index": 34 - }, - "text": "// Look for revert reason and bubble it up if present" - }, - { - "id": 34, - "node_type": 31, - "src": { - "line": 277, - "column": 16, - "start": 10988, - "end": 11062, - "length": 75, - "parent_index": 35 - }, - "text": "// The easiest way to bubble the revert reason is using memory via assembly" - }, - { - "id": 35, - "node_type": 31, - "src": { - "line": 279, - "column": 16, - "start": 11081, - "end": 11127, - "length": 47, - "parent_index": 36 - }, - "text": "// solhint-disable-next-line no-inline-assembly" - }, - { - "id": 36, - "node_type": 33, - "src": { - "line": 291, - "start": 11392, - "end": 11422, - "length": 31, - "parent_index": 37 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 37, - "node_type": 32, - "src": { - "line": 295, - "start": 11450, - "end": 12597, - "length": 1148, - "parent_index": 38 - }, - "text": "/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */" - }, - { - "id": 38, - "node_type": 32, - "src": { - "line": 338, - "column": 4, - "start": 12842, - "end": 12928, - "length": 87, - "parent_index": 39 - }, - "text": "/**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */" - }, - { - "id": 39, - "node_type": 32, - "src": { - "line": 347, - "column": 4, - "start": 13087, - "end": 13173, - "length": 87, - "parent_index": 40 - }, - "text": "/**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */" - }, - { - "id": 40, - "node_type": 32, - "src": { - "line": 356, - "column": 4, - "start": 13332, - "end": 13418, - "length": 87, - "parent_index": 41 - }, - "text": "/**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */" - }, - { - "id": 41, - "node_type": 32, - "src": { - "line": 365, - "column": 4, - "start": 13577, - "end": 13663, - "length": 87, - "parent_index": 42 - }, - "text": "/**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */" - }, - { - "id": 42, - "node_type": 33, - "src": { - "line": 376, - "start": 13821, - "end": 13851, - "length": 31, - "parent_index": 43 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 43, - "node_type": 32, - "src": { - "line": 384, - "start": 13984, - "end": 14219, - "length": 236, - "parent_index": 44 - }, - "text": "/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */" - }, - { - "id": 44, - "node_type": 31, - "src": { - "line": 393, - "column": 4, - "start": 14260, - "end": 14333, - "length": 74, - "parent_index": 45 - }, - "text": "// This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1" - }, - { - "id": 45, - "node_type": 32, - "src": { - "line": 396, - "column": 4, - "start": 14454, - "end": 14667, - "length": 214, - "parent_index": 46 - }, - "text": "/**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */" - }, - { - "id": 46, - "node_type": 32, - "src": { - "line": 403, - "column": 4, - "start": 14795, - "end": 14862, - "length": 68, - "parent_index": 47 - }, - "text": "/**\n * @dev Emitted when the implementation is upgraded.\n */" - }, - { - "id": 47, - "node_type": 32, - "src": { - "line": 408, - "column": 4, - "start": 14921, - "end": 14987, - "length": 67, - "parent_index": 48 - }, - "text": "/**\n * @dev Returns the current implementation address.\n */" - }, - { - "id": 48, - "node_type": 32, - "src": { - "line": 415, - "column": 4, - "start": 15139, - "end": 15218, - "length": 80, - "parent_index": 49 - }, - "text": "/**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */" - }, - { - "id": 49, - "node_type": 32, - "src": { - "line": 423, - "column": 4, - "start": 15489, - "end": 15583, - "length": 95, - "parent_index": 50 - }, - "text": "/**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */" - }, - { - "id": 50, - "node_type": 32, - "src": { - "line": 433, - "column": 4, - "start": 15747, - "end": 15869, - "length": 123, - "parent_index": 51 - }, - "text": "/**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */" - }, - { - "id": 51, - "node_type": 32, - "src": { - "line": 446, - "column": 4, - "start": 16196, - "end": 16356, - "length": 161, - "parent_index": 52 - }, - "text": "/**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */" - }, - { - "id": 52, - "node_type": 31, - "src": { - "line": 454, - "column": 8, - "start": 16535, - "end": 16567, - "length": 33, - "parent_index": 53 - }, - "text": "// Initial upgrade and setup call" - }, - { - "id": 53, - "node_type": 31, - "src": { - "line": 460, - "column": 8, - "start": 16746, - "end": 16796, - "length": 51, - "parent_index": 54 - }, - "text": "// Perform rollback test if not already in progress" - }, - { - "id": 54, - "node_type": 31, - "src": { - "line": 463, - "column": 12, - "start": 16950, - "end": 17012, - "length": 63, - "parent_index": 55 - }, - "text": "// Trigger rollback using upgradeTo from the new implementation" - }, - { - "id": 55, - "node_type": 31, - "src": { - "line": 473, - "column": 12, - "start": 17342, - "end": 17372, - "length": 31, - "parent_index": 56 - }, - "text": "// Check rollback was effective" - }, - { - "id": 56, - "node_type": 31, - "src": { - "line": 475, - "column": 12, - "start": 17501, - "end": 17562, - "length": 62, - "parent_index": 57 - }, - "text": "// Finally reset to the new implementation and log the upgrade" - }, - { - "id": 57, - "node_type": 32, - "src": { - "line": 481, - "column": 4, - "start": 17682, - "end": 17973, - "length": 292, - "parent_index": 58 - }, - "text": "/**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */" - }, - { - "id": 58, - "node_type": 32, - "src": { - "line": 495, - "column": 4, - "start": 18298, - "end": 18486, - "length": 189, - "parent_index": 59 - }, - "text": "/**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */" - }, - { - "id": 59, - "node_type": 32, - "src": { - "line": 502, - "column": 4, - "start": 18605, - "end": 18671, - "length": 67, - "parent_index": 60 - }, - "text": "/**\n * @dev Emitted when the admin account has changed.\n */" - }, - { - "id": 60, - "node_type": 32, - "src": { - "line": 507, - "column": 4, - "start": 18743, - "end": 18792, - "length": 50, - "parent_index": 61 - }, - "text": "/**\n * @dev Returns the current admin.\n */" - }, - { - "id": 61, - "node_type": 32, - "src": { - "line": 514, - "column": 4, - "start": 18926, - "end": 18996, - "length": 71, - "parent_index": 62 - }, - "text": "/**\n * @dev Stores a new address in the EIP1967 admin slot.\n */" - }, - { - "id": 62, - "node_type": 32, - "src": { - "line": 522, - "column": 4, - "start": 19209, - "end": 19308, - "length": 100, - "parent_index": 63 - }, - "text": "/**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */" - }, - { - "id": 63, - "node_type": 32, - "src": { - "line": 532, - "column": 4, - "start": 19455, - "end": 19686, - "length": 232, - "parent_index": 64 - }, - "text": "/**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */" - }, - { - "id": 64, - "node_type": 32, - "src": { - "line": 538, - "column": 4, - "start": 19806, - "end": 19865, - "length": 60, - "parent_index": 65 - }, - "text": "/**\n * @dev Emitted when the beacon is upgraded.\n */" - }, - { - "id": 65, - "node_type": 32, - "src": { - "line": 543, - "column": 4, - "start": 19922, - "end": 19972, - "length": 51, - "parent_index": 66 - }, - "text": "/**\n * @dev Returns the current beacon.\n */" - }, - { - "id": 66, - "node_type": 32, - "src": { - "line": 550, - "column": 4, - "start": 20108, - "end": 20178, - "length": 71, - "parent_index": 67 - }, - "text": "/**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */" - }, - { - "id": 67, - "node_type": 33, - "src": { - "line": 566, - "start": 20593, - "end": 20623, - "length": 31, - "parent_index": 68 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 68, - "node_type": 32, - "src": { - "line": 574, - "start": 20739, - "end": 21091, - "length": 353, - "parent_index": 69 - }, - "text": "/**\n * @dev This contract implements a proxy that gets the implementation address for each call from a {UpgradeableBeacon}.\n *\n * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\n * conflict with the storage layout of the implementation behind the proxy.\n *\n * _Available since v3.4._\n */" - }, - { - "id": 69, - "node_type": 32, - "src": { - "line": 583, - "column": 4, - "start": 21145, - "end": 21569, - "length": 425, - "parent_index": 70 - }, - "text": "/**\n * @dev Initializes the proxy with `beacon`.\n *\n * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\n * will typically be an encoded function call, and allows initializating the storage of the proxy like a Solidity\n * constructor.\n *\n * Requirements:\n *\n * - `beacon` must be a contract with the interface {IBeacon}.\n */" - }, - { - "id": 70, - "node_type": 32, - "src": { - "line": 599, - "column": 4, - "start": 21786, - "end": 21844, - "length": 59, - "parent_index": 71 - }, - "text": "/**\n * @dev Returns the current beacon address.\n */" - }, - { - "id": 71, - "node_type": 32, - "src": { - "line": 606, - "column": 4, - "start": 21951, - "end": 22042, - "length": 92, - "parent_index": 72 - }, - "text": "/**\n * @dev Returns the current implementation address of the associated beacon.\n */" - }, - { - "id": 72, - "node_type": 32, - "src": { - "line": 613, - "column": 4, - "start": 22192, - "end": 22558, - "length": 367, - "parent_index": 73 - }, - "text": "/**\n * @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\n *\n * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\n *\n * Requirements:\n *\n * - `beacon` must be a contract.\n * - The implementation returned by `beacon` must be a contract.\n */" - }, - { - "id": 73, - "node_type": 33, - "src": { - "line": 628, - "start": 22701, - "end": 22731, - "length": 31, - "parent_index": 74 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 74, - "node_type": 32, - "src": { - "line": 632, - "start": 22759, - "end": 23253, - "length": 495, - "parent_index": 75 - }, - "text": "/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */" - }, - { - "id": 75, - "node_type": 31, - "src": { - "line": 648, - "column": 14, - "start": 23472, - "end": 23589, - "length": 118, - "parent_index": 76 - }, - "text": "// silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691" - }, - { - "id": 76, - "node_type": 33, - "src": { - "line": 653, - "start": 23625, - "end": 23655, - "length": 31, - "parent_index": 77 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 77, - "node_type": 32, - "src": { - "line": 658, - "start": 23714, - "end": 24207, - "length": 494, - "parent_index": 78 - }, - "text": "/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */" - }, - { - "id": 78, - "node_type": 32, - "src": { - "line": 675, - "column": 4, - "start": 24371, - "end": 24461, - "length": 91, - "parent_index": 79 - }, - "text": "/**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */" - }, - { - "id": 79, - "node_type": 32, - "src": { - "line": 684, - "column": 4, - "start": 24623, - "end": 24687, - "length": 65, - "parent_index": 80 - }, - "text": "/**\n * @dev Returns the address of the current owner.\n */" - }, - { - "id": 80, - "node_type": 32, - "src": { - "line": 691, - "column": 4, - "start": 24784, - "end": 24860, - "length": 77, - "parent_index": 81 - }, - "text": "/**\n * @dev Throws if called by any account other than the owner.\n */" - }, - { - "id": 81, - "node_type": 32, - "src": { - "line": 699, - "column": 4, - "start": 24989, - "end": 25319, - "length": 331, - "parent_index": 82 - }, - "text": "/**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */" - }, - { - "id": 82, - "node_type": 32, - "src": { - "line": 711, - "column": 4, - "start": 25476, - "end": 25613, - "length": 138, - "parent_index": 83 - }, - "text": "/**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */" - }, - { - "id": 83, - "node_type": 33, - "src": { - "line": 722, - "start": 25863, - "end": 25893, - "length": 31, - "parent_index": 84 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 84, - "node_type": 32, - "src": { - "line": 730, - "start": 26015, - "end": 26334, - "length": 320, - "parent_index": 85 - }, - "text": "/**\n * @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\n * implementation contract, which is where they will delegate all function calls.\n *\n * An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.\n */" - }, - { - "id": 85, - "node_type": 32, - "src": { - "line": 739, - "column": 4, - "start": 26427, - "end": 26516, - "length": 90, - "parent_index": 86 - }, - "text": "/**\n * @dev Emitted when the implementation returned by the beacon is changed.\n */" - }, - { - "id": 86, - "node_type": 32, - "src": { - "line": 744, - "column": 4, - "start": 26575, - "end": 26718, - "length": 144, - "parent_index": 87 - }, - "text": "/**\n * @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the\n * beacon.\n */" - }, - { - "id": 87, - "node_type": 32, - "src": { - "line": 752, - "column": 4, - "start": 26819, - "end": 26885, - "length": 67, - "parent_index": 88 - }, - "text": "/**\n * @dev Returns the current implementation address.\n */" - }, - { - "id": 88, - "node_type": 32, - "src": { - "line": 759, - "column": 4, - "start": 27009, - "end": 27256, - "length": 248, - "parent_index": 89 - }, - "text": "/**\n * @dev Upgrades the beacon to a new implementation.\n *\n * Emits an {Upgraded} event.\n *\n * Requirements:\n *\n * - msg.sender must be the owner of the contract.\n * - `newImplementation` must be a contract.\n */" - }, - { - "id": 89, - "node_type": 32, - "src": { - "line": 774, - "column": 4, - "start": 27435, - "end": 27598, - "length": 164, - "parent_index": 90 - }, - "text": "/**\n * @dev Sets the implementation contract address for this beacon\n *\n * Requirements:\n *\n * - `newImplementation` must be a contract.\n */" - }, - { - "id": 90, - "node_type": 33, - "src": { - "line": 787, - "start": 27834, - "end": 27864, - "length": 31, - "parent_index": 91 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 91, - "node_type": 32, - "src": { - "line": 794, - "start": 27947, - "end": 28318, - "length": 372, - "parent_index": 92 - }, - "text": "/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */" - }, - { - "id": 92, - "node_type": 32, - "src": { - "line": 801, - "column": 4, - "start": 28373, - "end": 28707, - "length": 335, - "parent_index": 93 - }, - "text": "/**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\n */" - }, - { - "id": 93, - "node_type": 32, - "src": { - "line": 812, - "column": 4, - "start": 28936, - "end": 29002, - "length": 67, - "parent_index": 94 - }, - "text": "/**\n * @dev Returns the current implementation address.\n */" - }, - { - "id": 94, - "node_type": 33, - "src": { - "line": 820, - "start": 29152, - "end": 29182, - "length": 31, - "parent_index": 95 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 95, - "node_type": 32, - "src": { - "line": 826, - "start": 29249, - "end": 30699, - "length": 1451, - "parent_index": 96 - }, - "text": "/**\n * @dev This contract implements a proxy that is upgradeable by an admin.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches one of the admin functions exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n * \"admin cannot fallback to proxy target\".\n *\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n * to sudden errors when trying to call a function from the proxy implementation.\n *\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n */" - }, - { - "id": 96, - "node_type": 32, - "src": { - "line": 848, - "column": 4, - "start": 30760, - "end": 30969, - "length": 210, - "parent_index": 97 - }, - "text": "/**\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\n */" - }, - { - "id": 97, - "node_type": 32, - "src": { - "line": 857, - "column": 4, - "start": 31205, - "end": 31334, - "length": 130, - "parent_index": 98 - }, - "text": "/**\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n */" - }, - { - "id": 98, - "node_type": 32, - "src": { - "line": 868, - "column": 4, - "start": 31480, - "end": 31910, - "length": 431, - "parent_index": 99 - }, - "text": "/**\n * @dev Returns the current admin.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */" - }, - { - "id": 99, - "node_type": 32, - "src": { - "line": 881, - "column": 4, - "start": 32018, - "end": 32466, - "length": 449, - "parent_index": 100 - }, - "text": "/**\n * @dev Returns the current implementation.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */" - }, - { - "id": 100, - "node_type": 32, - "src": { - "line": 894, - "column": 4, - "start": 32607, - "end": 32800, - "length": 194, - "parent_index": 101 - }, - "text": "/**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\n */" - }, - { - "id": 101, - "node_type": 32, - "src": { - "line": 905, - "column": 4, - "start": 32915, - "end": 33063, - "length": 149, - "parent_index": 102 - }, - "text": "/**\n * @dev Upgrade the implementation of the proxy.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\n */" - }, - { - "id": 102, - "node_type": 32, - "src": { - "line": 914, - "column": 4, - "start": 33209, - "end": 33573, - "length": 365, - "parent_index": 103 - }, - "text": "/**\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n * proxied contract.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\n */" - }, - { - "id": 103, - "node_type": 32, - "src": { - "line": 925, - "column": 4, - "start": 33749, - "end": 33798, - "length": 50, - "parent_index": 104 - }, - "text": "/**\n * @dev Returns the current admin.\n */" - }, - { - "id": 104, - "node_type": 32, - "src": { - "line": 932, - "column": 4, - "start": 33903, - "end": 34012, - "length": 110, - "parent_index": 105 - }, - "text": "/**\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\n */" - }, - { - "id": 105, - "node_type": 33, - "src": { - "line": 941, - "start": 34229, - "end": 34259, - "length": 31, - "parent_index": 106 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 106, - "node_type": 32, - "src": { - "line": 948, - "start": 34367, - "end": 34594, - "length": 228, - "parent_index": 107 - }, - "text": "/**\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\n */" - }, - { - "id": 107, - "node_type": 32, - "src": { - "line": 954, - "column": 4, - "start": 34634, - "end": 34791, - "length": 158, - "parent_index": 108 - }, - "text": "/**\n * @dev Returns the current implementation of `proxy`.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */" - }, - { - "id": 108, - "node_type": 31, - "src": { - "line": 962, - "column": 8, - "start": 34912, - "end": 34996, - "length": 85, - "parent_index": 109 - }, - "text": "// We need to manually run the static call since the getter cannot be flagged as view" - }, - { - "id": 109, - "node_type": 31, - "src": { - "line": 963, - "column": 8, - "start": 35006, - "end": 35059, - "length": 54, - "parent_index": 110 - }, - "text": "// bytes4(keccak256(\"implementation()\")) == 0x5c60da1b" - }, - { - "id": 110, - "node_type": 32, - "src": { - "line": 969, - "column": 4, - "start": 35240, - "end": 35388, - "length": 149, - "parent_index": 111 - }, - "text": "/**\n * @dev Returns the current admin of `proxy`.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */" - }, - { - "id": 111, - "node_type": 31, - "src": { - "line": 977, - "column": 8, - "start": 35500, - "end": 35584, - "length": 85, - "parent_index": 112 - }, - "text": "// We need to manually run the static call since the getter cannot be flagged as view" - }, - { - "id": 112, - "node_type": 31, - "src": { - "line": 978, - "column": 8, - "start": 35594, - "end": 35638, - "length": 45, - "parent_index": 113 - }, - "text": "// bytes4(keccak256(\"admin()\")) == 0xf851a440" - }, - { - "id": 113, - "node_type": 32, - "src": { - "line": 984, - "column": 4, - "start": 35819, - "end": 35981, - "length": 163, - "parent_index": 114 - }, - "text": "/**\n * @dev Changes the admin of `proxy` to `newAdmin`.\n *\n * Requirements:\n *\n * - This contract must be the current admin of `proxy`.\n */" - }, - { - "id": 114, - "node_type": 32, - "src": { - "line": 995, - "column": 4, - "start": 36141, - "end": 36334, - "length": 194, - "parent_index": 115 - }, - "text": "/**\n * @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */" - }, - { - "id": 115, - "node_type": 32, - "src": { - "line": 1006, - "column": 4, - "start": 36495, - "end": 36749, - "length": 255, - "parent_index": 116 - }, - "text": "/**\n * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See\n * {TransparentUpgradeableProxy-upgradeToAndCall}.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */" - }, - { - "id": 116, - "node_type": 33, - "src": { - "line": 1019, - "start": 36973, - "end": 37003, - "length": 31, - "parent_index": 117 - }, - "text": "// SPDX-License-Identifier: MIT" - }, - { - "id": 117, - "node_type": 31, - "src": { - "line": 1028, - "start": 37379, - "end": 37465, - "length": 87, - "parent_index": 118 - }, - "text": "// Kept for backwards compatibility with older versions of Hardhat and Truffle plugins." - } - ] + "id": 118, + "entry_source_unit": 2272, + "node_type": 80, + "source_units": [ + { + "id": 119, + "license": "MIT", + "name": "IBeacon", + "absolute_path": "IBeacon.sol", + "exported_symbols": [ + { + "id": 119, + "name": "IBeacon", + "absolute_path": "IBeacon.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "121", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "55", + "id": "122", + "length": "23", + "line": "3", + "parentIndex": "119", + "start": "33" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "143", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "143" + ], + "name": "IBeacon", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "159", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "386", + "id": "146", + "length": "58", + "line": "14", + "parentIndex": "145", + "start": "329" + } + }, + "id": "145", + "kind": "KIND_FUNCTION", + "name": "implementation", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "147", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "149", + "nodeType": "VARIABLE_DECLARATION", + "scope": "149", + "src": { + "column": "53", + "end": "384", + "id": "150", + "length": "7", + "line": "14", + "parentIndex": "147", + "start": "378" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "151", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "53", + "end": "384", + "id": "152", + "length": "7", + "line": "14", + "parentIndex": "149", + "start": "378" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "53", + "end": "384", + "id": "148", + "length": "7", + "line": "14", + "parentIndex": "145", + "start": "378" + } + }, + "returnParameters": { + "id": "153", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "155", + "nodeType": "VARIABLE_DECLARATION", + "scope": "155", + "src": { + "column": "53", + "end": "384", + "id": "156", + "length": "7", + "line": "14", + "parentIndex": "153", + "start": "378" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "157", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "53", + "end": "384", + "id": "158", + "length": "7", + "line": "14", + "parentIndex": "155", + "start": "378" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "53", + "end": "384", + "id": "154", + "length": "7", + "line": "14", + "parentIndex": "145", + "start": "378" + } + }, + "scope": "143", + "src": { + "column": "4", + "end": "386", + "id": "146", + "length": "58", + "line": "14", + "parentIndex": "143", + "start": "329" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + } + ], + "src": { + "end": "388", + "length": "251", + "line": "8", + "parentIndex": "119", + "start": "138" + } + } + } + ] + }, + "src": { + "id": 120, + "line": 8, + "start": 138, + "end": 388, + "length": 251, + "parent_index": 118 + } + }, + { + "id": 160, + "license": "MIT", + "name": "Proxy", + "absolute_path": "Proxy.sol", + "exported_symbols": [ + { + "id": 160, + "name": "Proxy", + "absolute_path": "Proxy.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "164", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "446", + "id": "165", + "length": "23", + "line": "19", + "parentIndex": "160", + "start": "424" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "166", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "166" + ], + "name": "Proxy", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "177", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "64", + "end": "2168", + "id": "178", + "length": "835", + "line": "37", + "parentIndex": "168", + "start": "1334" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assembly", + "value": { + "id": "179", + "nodeType": "ASSEMBLY_STATEMENT", + "src": { + "column": "8", + "end": "2162", + "id": "180", + "length": "763", + "line": "39", + "parentIndex": "177", + "start": "1400" + } + } + } + ] + }, + "id": "168", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_delegate", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "170", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "172", + "name": "implementation", + "nodeType": "VARIABLE_DECLARATION", + "scope": "172", + "src": { + "column": "23", + "end": "1314", + "id": "173", + "length": "22", + "line": "37", + "parentIndex": "170", + "start": "1293" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "174", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "1299", + "id": "175", + "length": "7", + "line": "37", + "parentIndex": "172", + "start": "1293" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "1314", + "id": "171", + "length": "22", + "line": "37", + "parentIndex": "168", + "start": "1293" + } + }, + "returnParameters": { + "id": "176", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "2168", + "id": "169", + "length": "895", + "line": "37", + "parentIndex": "168", + "start": "1274" + } + }, + "scope": "166", + "src": { + "column": "4", + "end": "2168", + "id": "169", + "length": "895", + "line": "37", + "parentIndex": "166", + "start": "1274" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "202", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "2418", + "id": "189", + "length": "67", + "line": "63", + "parentIndex": "188", + "start": "2352" + } + }, + "id": "188", + "kind": "KIND_FUNCTION", + "name": "_implementation", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "190", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "192", + "nodeType": "VARIABLE_DECLARATION", + "scope": "192", + "src": { + "column": "62", + "end": "2416", + "id": "193", + "length": "7", + "line": "63", + "parentIndex": "190", + "start": "2410" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "194", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "2416", + "id": "195", + "length": "7", + "line": "63", + "parentIndex": "192", + "start": "2410" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "2416", + "id": "191", + "length": "7", + "line": "63", + "parentIndex": "188", + "start": "2410" + } + }, + "returnParameters": { + "id": "196", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "198", + "nodeType": "VARIABLE_DECLARATION", + "scope": "198", + "src": { + "column": "62", + "end": "2416", + "id": "199", + "length": "7", + "line": "63", + "parentIndex": "196", + "start": "2410" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "200", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "2416", + "id": "201", + "length": "7", + "line": "63", + "parentIndex": "198", + "start": "2410" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "2416", + "id": "197", + "length": "7", + "line": "63", + "parentIndex": "188", + "start": "2410" + } + }, + "scope": "166", + "src": { + "column": "4", + "end": "2418", + "id": "189", + "length": "67", + "line": "63", + "parentIndex": "166", + "start": "2352" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "208", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "42", + "end": "2757", + "id": "209", + "length": "72", + "line": "70", + "parentIndex": "204", + "start": "2686" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "212", + "name": "_beforeFallback", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "2710", + "id": "213", + "length": "15", + "line": "71", + "parentIndex": "210", + "start": "2696" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "210", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "2712", + "id": "211", + "length": "17", + "line": "71", + "parentIndex": "208", + "start": "2696" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "220", + "name": "_implementation", + "nodeType": "IDENTIFIER", + "src": { + "column": "18", + "end": "2747", + "id": "221", + "length": "15", + "line": "72", + "parentIndex": "218", + "start": "2733" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "218", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "18", + "end": "2749", + "id": "219", + "length": "17", + "line": "72", + "parentIndex": "214", + "start": "2733" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "216", + "name": "_delegate", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "2731", + "id": "217", + "length": "9", + "line": "72", + "parentIndex": "214", + "start": "2723" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "214", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "2750", + "id": "215", + "length": "28", + "line": "72", + "parentIndex": "208", + "start": "2723" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + } + ] + }, + "id": "204", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_fallback", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "206", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "2757", + "id": "205", + "length": "110", + "line": "70", + "parentIndex": "204", + "start": "2648" + } + }, + "returnParameters": { + "id": "207", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "2757", + "id": "205", + "length": "110", + "line": "70", + "parentIndex": "204", + "start": "2648" + } + }, + "scope": "166", + "src": { + "column": "4", + "end": "2757", + "id": "205", + "length": "110", + "line": "70", + "parentIndex": "166", + "start": "2648" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Fallback", + "value": { + "body": { + "id": "227", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "41", + "end": "3019", + "id": "228", + "length": "28", + "line": "79", + "parentIndex": "223", + "start": "2992" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "231", + "name": "_fallback", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "3010", + "id": "232", + "length": "9", + "line": "80", + "parentIndex": "229", + "start": "3002" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "229", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "3012", + "id": "230", + "length": "11", + "line": "80", + "parentIndex": "227", + "start": "3002" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ] + }, + "id": "223", + "implemented": true, + "kind": "FALLBACK", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "225", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "3019", + "id": "224", + "length": "65", + "line": "79", + "parentIndex": "223", + "start": "2955" + } + }, + "returnParameters": { + "id": "226", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "3019", + "id": "224", + "length": "65", + "line": "79", + "parentIndex": "223", + "start": "2955" + } + }, + "src": { + "column": "4", + "end": "3019", + "id": "224", + "length": "65", + "line": "79", + "parentIndex": "166", + "start": "2955" + }, + "stateMutability": "PAYABLE", + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Receive", + "value": { + "body": { + "id": "238", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "40", + "end": "3243", + "id": "239", + "length": "28", + "line": "87", + "parentIndex": "234", + "start": "3216" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "242", + "name": "_fallback", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "3234", + "id": "243", + "length": "9", + "line": "88", + "parentIndex": "240", + "start": "3226" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "240", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "3236", + "id": "241", + "length": "11", + "line": "88", + "parentIndex": "238", + "start": "3226" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ] + }, + "id": "234", + "implemented": true, + "kind": "RECEIVE", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "236", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "3243", + "id": "235", + "length": "64", + "line": "87", + "parentIndex": "234", + "start": "3180" + } + }, + "returnParameters": { + "id": "237", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "3243", + "id": "235", + "length": "64", + "line": "87", + "parentIndex": "234", + "start": "3180" + } + }, + "src": { + "column": "4", + "end": "3243", + "id": "235", + "length": "64", + "line": "87", + "parentIndex": "166", + "start": "3180" + }, + "stateMutability": "NONPAYABLE", + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "249", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "48", + "end": "3575", + "id": "250", + "length": "7", + "line": "97", + "parentIndex": "245", + "start": "3569" + } + }, + "id": "245", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_beforeFallback", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "247", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "3575", + "id": "246", + "length": "51", + "line": "97", + "parentIndex": "245", + "start": "3525" + } + }, + "returnParameters": { + "id": "248", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "3575", + "id": "246", + "length": "51", + "line": "97", + "parentIndex": "245", + "start": "3525" + } + }, + "scope": "166", + "src": { + "column": "4", + "end": "3575", + "id": "246", + "length": "51", + "line": "97", + "parentIndex": "166", + "start": "3525" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "virtual": true, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "3577", + "length": "2530", + "line": "31", + "parentIndex": "160", + "start": "1048" + } + } + } + ] + }, + "src": { + "id": 161, + "line": 31, + "start": 1048, + "end": 3577, + "length": 2530, + "parent_index": 118 + } + }, + { + "id": 251, + "license": "MIT", + "name": "Address", + "absolute_path": "Address.sol", + "exported_symbols": [ + { + "id": 251, + "name": "Address", + "absolute_path": "Address.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "257", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "3635", + "id": "258", + "length": "23", + "line": "103", + "parentIndex": "251", + "start": "3613" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "259", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "259" + ], + "name": "Address", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "275", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "70", + "end": "4710", + "id": "276", + "length": "347", + "line": "126", + "parentIndex": "261", + "start": "4364" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "279" + ], + "declarations": [ + { + "id": "279", + "mutability": "MUTABLE", + "name": "size", + "nodeType": "VARIABLE_DECLARATION", + "scope": "275", + "src": { + "column": "8", + "end": "4572", + "id": "280", + "length": "12", + "line": "131", + "parentIndex": "277", + "start": "4561" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "281", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "4567", + "id": "282", + "length": "7", + "line": "131", + "parentIndex": "279", + "start": "4561" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "277", + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "4573", + "id": "278", + "length": "13", + "line": "131", + "parentIndex": "275", + "start": "4561" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assembly", + "value": { + "id": "283", + "nodeType": "ASSEMBLY_STATEMENT", + "src": { + "column": "8", + "end": "4679", + "id": "284", + "length": "41", + "line": "133", + "parentIndex": "275", + "start": "4639" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "290", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "292", + "name": "size", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "277", + "src": { + "column": "15", + "end": "4699", + "id": "293", + "length": "4", + "line": "134", + "parentIndex": "290", + "start": "4696" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "294", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "22", + "end": "4703", + "id": "295", + "length": "1", + "line": "134", + "parentIndex": "290", + "start": "4703" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "15", + "end": "4703", + "id": "291", + "length": "8", + "line": "134", + "parentIndex": "275", + "start": "4696" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "functionReturnParameters": "261", + "id": "288", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "4704", + "id": "289", + "length": "16", + "line": "134", + "parentIndex": "261", + "start": "4689" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ] + }, + "id": "261", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "isContract", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "263", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "265", + "name": "account", + "nodeType": "VARIABLE_DECLARATION", + "scope": "265", + "src": { + "column": "24", + "end": "4332", + "id": "266", + "length": "15", + "line": "126", + "parentIndex": "263", + "start": "4318" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "267", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "4324", + "id": "268", + "length": "7", + "line": "126", + "parentIndex": "265", + "start": "4318" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "4332", + "id": "264", + "length": "15", + "line": "126", + "parentIndex": "261", + "start": "4318" + } + }, + "returnParameters": { + "id": "269", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "271", + "nodeType": "VARIABLE_DECLARATION", + "scope": "271", + "src": { + "column": "64", + "end": "4361", + "id": "272", + "length": "4", + "line": "126", + "parentIndex": "269", + "start": "4358" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "273", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "64", + "end": "4361", + "id": "274", + "length": "4", + "line": "126", + "parentIndex": "271", + "start": "4358" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "64", + "end": "4361", + "id": "270", + "length": "4", + "line": "126", + "parentIndex": "261", + "start": "4358" + } + }, + "scope": "259", + "src": { + "column": "4", + "end": "4710", + "id": "262", + "length": "413", + "line": "126", + "parentIndex": "259", + "start": "4298" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "310", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "75", + "end": "6018", + "id": "311", + "length": "320", + "line": "153", + "parentIndex": "297", + "start": "5699" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: insufficient balance\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "316", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "326", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "5728", + "id": "327", + "length": "4", + "line": "154", + "parentIndex": "320", + "start": "5725" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "322", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "5723", + "id": "323", + "length": "7", + "line": "154", + "parentIndex": "320", + "start": "5717" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "324", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "5723", + "id": "325", + "length": "7", + "line": "154", + "parentIndex": "322", + "start": "5717" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "320", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "5729", + "id": "321", + "length": "13", + "line": "154", + "parentIndex": "318", + "start": "5717" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "318", + "memberName": "balance", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "5737", + "id": "319", + "length": "21", + "line": "154", + "parentIndex": "316", + "start": "5717" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "328", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "328", + "src": { + "column": "41", + "end": "5747", + "id": "329", + "length": "6", + "line": "154", + "parentIndex": "316", + "start": "5742" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "5747", + "id": "317", + "length": "31", + "line": "154", + "parentIndex": "312", + "start": "5717" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", + "id": "330", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "49", + "end": "5780", + "id": "331", + "length": "31", + "line": "154", + "parentIndex": "312", + "start": "5750" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: insufficient balance\"" + }, + "value": "Address: insufficient balance" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "314", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "5715", + "id": "315", + "length": "7", + "line": "154", + "parentIndex": "312", + "start": "5709" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "312", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "5781", + "id": "313", + "length": "73", + "line": "154", + "parentIndex": "310", + "start": "5709" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "332", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "342", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "59", + "end": "5922", + "id": "343", + "length": "2", + "line": "157", + "parentIndex": "334", + "start": "5921" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"\"" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCallOption", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "340", + "name": "recipient", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "340", + "src": { + "column": "27", + "end": "5897", + "id": "341", + "length": "9", + "line": "157", + "parentIndex": "338", + "start": "5889" + }, + "typeDescription": { + "typeIdentifier": "t_address_payable", + "typeString": "address" + } + } + }, + "id": "338", + "memberName": "call", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "27", + "end": "5902", + "id": "339", + "length": "14", + "line": "157", + "parentIndex": "336", + "start": "5889" + }, + "typeDescription": { + "typeIdentifier": "t_address_payable", + "typeString": "address" + } + } + }, + "id": "336", + "kind": "FUNCTION_CALL_OPTION", + "nodeType": "FUNCTION_CALL_OPTION", + "src": { + "column": "27", + "end": "5919", + "id": "337", + "length": "31", + "line": "157", + "parentIndex": "334", + "start": "5889" + }, + "typeDescription": { + "typeIdentifier": "t_address_payable", + "typeString": "address" + } + } + }, + "id": "334", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "27", + "end": "5923", + "id": "335", + "length": "35", + "line": "157", + "parentIndex": "332", + "start": "5889" + }, + "typeDescription": { + "typeIdentifier": "t_function__t_string_literal$", + "typeString": "function(string memory)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "5924", + "id": "333", + "length": "55", + "line": "157", + "parentIndex": "310", + "start": "5870" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "348", + "name": "success", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "5948", + "id": "349", + "length": "7", + "line": "158", + "parentIndex": "344", + "start": "5942" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", + "id": "350", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "25", + "end": "6010", + "id": "351", + "length": "60", + "line": "158", + "parentIndex": "344", + "start": "5951" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" + }, + "value": "Address: unable to send value, recipient may have reverted" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "346", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "5940", + "id": "347", + "length": "7", + "line": "158", + "parentIndex": "344", + "start": "5934" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "344", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "6011", + "id": "345", + "length": "78", + "line": "158", + "parentIndex": "310", + "start": "5934" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_string_literal$", + "typeString": "function(function(),string memory)" + } + } + } + ] + }, + "id": "297", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "sendValue", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "299", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "301", + "name": "recipient", + "nodeType": "VARIABLE_DECLARATION", + "scope": "301", + "src": { + "column": "23", + "end": "5671", + "id": "302", + "length": "25", + "line": "153", + "parentIndex": "299", + "start": "5647" + }, + "stateMutability": "PAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address_payable", + "typeString": "address" + }, + "typeName": { + "id": "303", + "name": "addresspayable", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "5661", + "id": "304", + "length": "15", + "line": "153", + "parentIndex": "301", + "start": "5647" + }, + "stateMutability": "PAYABLE", + "typeDescription": { + "typeIdentifier": "t_address_payable", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "305", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "305", + "src": { + "column": "50", + "end": "5687", + "id": "306", + "length": "14", + "line": "153", + "parentIndex": "299", + "start": "5674" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "307", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "5680", + "id": "308", + "length": "7", + "line": "153", + "parentIndex": "305", + "start": "5674" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "5687", + "id": "300", + "length": "41", + "line": "153", + "parentIndex": "297", + "start": "5647" + } + }, + "returnParameters": { + "id": "309", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "6018", + "id": "298", + "length": "391", + "line": "153", + "parentIndex": "297", + "start": "5628" + } + }, + "scope": "259", + "src": { + "column": "4", + "end": "6018", + "id": "298", + "length": "391", + "line": "153", + "parentIndex": "259", + "start": "5628" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address_payable$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "371", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "93", + "end": "6930", + "id": "372", + "length": "82", + "line": "179", + "parentIndex": "353", + "start": "6849" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: low-level call failed\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "379", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "379", + "src": { + "column": "26", + "end": "6882", + "id": "380", + "length": "6", + "line": "180", + "parentIndex": "375", + "start": "6877" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "381", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "381", + "src": { + "column": "34", + "end": "6888", + "id": "382", + "length": "4", + "line": "180", + "parentIndex": "375", + "start": "6885" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", + "id": "383", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "40", + "end": "6922", + "id": "384", + "length": "32", + "line": "180", + "parentIndex": "375", + "start": "6891" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: low-level call failed\"" + }, + "value": "Address: low-level call failed" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "377", + "name": "functionCall", + "nodeType": "IDENTIFIER", + "src": { + "column": "13", + "end": "6875", + "id": "378", + "length": "12", + "line": "180", + "parentIndex": "375", + "start": "6864" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "375", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "13", + "end": "6923", + "id": "376", + "length": "60", + "line": "180", + "parentIndex": "371", + "start": "6864" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "typeString": "function(address,bytes,string memory)" + } + } + }, + "functionReturnParameters": "353", + "id": "373", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "6", + "end": "6924", + "id": "374", + "length": "68", + "line": "180", + "parentIndex": "353", + "start": "6857" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "typeString": "function(address,bytes,string memory)" + } + } + } + ] + }, + "id": "353", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "functionCall", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "355", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "357", + "name": "target", + "nodeType": "VARIABLE_DECLARATION", + "scope": "357", + "src": { + "column": "26", + "end": "6795", + "id": "358", + "length": "14", + "line": "179", + "parentIndex": "355", + "start": "6782" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "359", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "26", + "end": "6788", + "id": "360", + "length": "7", + "line": "179", + "parentIndex": "357", + "start": "6782" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "361", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "361", + "src": { + "column": "42", + "end": "6814", + "id": "362", + "length": "17", + "line": "179", + "parentIndex": "355", + "start": "6798" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "363", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "42", + "end": "6802", + "id": "364", + "length": "5", + "line": "179", + "parentIndex": "361", + "start": "6798" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "26", + "end": "6814", + "id": "356", + "length": "33", + "line": "179", + "parentIndex": "353", + "start": "6782" + } + }, + "returnParameters": { + "id": "365", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "367", + "nodeType": "VARIABLE_DECLARATION", + "scope": "367", + "src": { + "column": "79", + "end": "6846", + "id": "368", + "length": "12", + "line": "179", + "parentIndex": "365", + "start": "6835" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "369", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "79", + "end": "6839", + "id": "370", + "length": "5", + "line": "179", + "parentIndex": "367", + "start": "6835" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "79", + "end": "6846", + "id": "366", + "length": "12", + "line": "179", + "parentIndex": "353", + "start": "6835" + } + }, + "scope": "259", + "src": { + "column": "4", + "end": "6930", + "id": "354", + "length": "171", + "line": "179", + "parentIndex": "259", + "start": "6760" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$", + "typeString": "function(address,bytes)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "408", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "121", + "end": "7345", + "id": "409", + "length": "76", + "line": "189", + "parentIndex": "386", + "start": "7270" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_string", + "typeString": "string" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "416", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "416", + "src": { + "column": "37", + "end": "7314", + "id": "417", + "length": "6", + "line": "190", + "parentIndex": "412", + "start": "7309" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "418", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "418", + "src": { + "column": "45", + "end": "7320", + "id": "419", + "length": "4", + "line": "190", + "parentIndex": "412", + "start": "7317" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "hexValue": "30", + "id": "420", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "51", + "end": "7323", + "id": "421", + "length": "1", + "line": "190", + "parentIndex": "412", + "start": "7323" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": "422", + "name": "errorMessage", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "422", + "src": { + "column": "54", + "end": "7337", + "id": "423", + "length": "12", + "line": "190", + "parentIndex": "412", + "start": "7326" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "414", + "name": "functionCallWithValue", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "7307", + "id": "415", + "length": "21", + "line": "190", + "parentIndex": "412", + "start": "7287" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "412", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "7338", + "id": "413", + "length": "52", + "line": "190", + "parentIndex": "408", + "start": "7287" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_rational_0_by_1$_t_string$", + "typeString": "function(address,bytes,int_const 0,string)" + } + } + }, + "functionReturnParameters": "386", + "id": "410", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "7339", + "id": "411", + "length": "60", + "line": "190", + "parentIndex": "386", + "start": "7280" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_rational_0_by_1$_t_string$", + "typeString": "function(address,bytes,int_const 0,string)" + } + } + } + ] + }, + "id": "386", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "functionCall", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "388", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "390", + "name": "target", + "nodeType": "VARIABLE_DECLARATION", + "scope": "390", + "src": { + "column": "26", + "end": "7188", + "id": "391", + "length": "14", + "line": "189", + "parentIndex": "388", + "start": "7175" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "392", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "26", + "end": "7181", + "id": "393", + "length": "7", + "line": "189", + "parentIndex": "390", + "start": "7175" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "394", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "394", + "src": { + "column": "42", + "end": "7207", + "id": "395", + "length": "17", + "line": "189", + "parentIndex": "388", + "start": "7191" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "396", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "42", + "end": "7195", + "id": "397", + "length": "5", + "line": "189", + "parentIndex": "394", + "start": "7191" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "398", + "name": "errorMessage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "398", + "src": { + "column": "61", + "end": "7235", + "id": "399", + "length": "26", + "line": "189", + "parentIndex": "388", + "start": "7210" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "400", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "61", + "end": "7215", + "id": "401", + "length": "6", + "line": "189", + "parentIndex": "398", + "start": "7210" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "26", + "end": "7235", + "id": "389", + "length": "61", + "line": "189", + "parentIndex": "386", + "start": "7175" + } + }, + "returnParameters": { + "id": "402", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "404", + "nodeType": "VARIABLE_DECLARATION", + "scope": "404", + "src": { + "column": "107", + "end": "7267", + "id": "405", + "length": "12", + "line": "189", + "parentIndex": "402", + "start": "7256" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "406", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "107", + "end": "7260", + "id": "407", + "length": "5", + "line": "189", + "parentIndex": "404", + "start": "7256" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "107", + "end": "7267", + "id": "403", + "length": "12", + "line": "189", + "parentIndex": "386", + "start": "7256" + } + }, + "scope": "259", + "src": { + "column": "4", + "end": "7345", + "id": "387", + "length": "193", + "line": "189", + "parentIndex": "259", + "start": "7153" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string$", + "typeString": "function(address,bytes,string)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "447", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "117", + "end": "7931", + "id": "448", + "length": "111", + "line": "204", + "parentIndex": "425", + "start": "7821" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: low-level call with value failed\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "455", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "455", + "src": { + "column": "37", + "end": "7865", + "id": "456", + "length": "6", + "line": "205", + "parentIndex": "451", + "start": "7860" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "457", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "457", + "src": { + "column": "45", + "end": "7871", + "id": "458", + "length": "4", + "line": "205", + "parentIndex": "451", + "start": "7868" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "id": "459", + "name": "value", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "459", + "src": { + "column": "51", + "end": "7878", + "id": "460", + "length": "5", + "line": "205", + "parentIndex": "451", + "start": "7874" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", + "id": "461", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "58", + "end": "7923", + "id": "462", + "length": "43", + "line": "205", + "parentIndex": "451", + "start": "7881" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: low-level call with value failed\"" + }, + "value": "Address: low-level call with value failed" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "453", + "name": "functionCallWithValue", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "7858", + "id": "454", + "length": "21", + "line": "205", + "parentIndex": "451", + "start": "7838" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "451", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "7924", + "id": "452", + "length": "87", + "line": "205", + "parentIndex": "447", + "start": "7838" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_uint256$_t_string_literal$", + "typeString": "function(address,bytes,uint256,string memory)" + } + } + }, + "functionReturnParameters": "425", + "id": "449", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "7925", + "id": "450", + "length": "95", + "line": "205", + "parentIndex": "425", + "start": "7831" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_uint256$_t_string_literal$", + "typeString": "function(address,bytes,uint256,string memory)" + } + } + } + ] + }, + "id": "425", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "functionCallWithValue", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "427", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "429", + "name": "target", + "nodeType": "VARIABLE_DECLARATION", + "scope": "429", + "src": { + "column": "35", + "end": "7752", + "id": "430", + "length": "14", + "line": "204", + "parentIndex": "427", + "start": "7739" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "431", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "35", + "end": "7745", + "id": "432", + "length": "7", + "line": "204", + "parentIndex": "429", + "start": "7739" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "433", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "433", + "src": { + "column": "51", + "end": "7771", + "id": "434", + "length": "17", + "line": "204", + "parentIndex": "427", + "start": "7755" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "435", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "51", + "end": "7759", + "id": "436", + "length": "5", + "line": "204", + "parentIndex": "433", + "start": "7755" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "437", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "437", + "src": { + "column": "70", + "end": "7786", + "id": "438", + "length": "13", + "line": "204", + "parentIndex": "427", + "start": "7774" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "439", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "70", + "end": "7780", + "id": "440", + "length": "7", + "line": "204", + "parentIndex": "437", + "start": "7774" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "35", + "end": "7786", + "id": "428", + "length": "48", + "line": "204", + "parentIndex": "425", + "start": "7739" + } + }, + "returnParameters": { + "id": "441", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "443", + "nodeType": "VARIABLE_DECLARATION", + "scope": "443", + "src": { + "column": "103", + "end": "7818", + "id": "444", + "length": "12", + "line": "204", + "parentIndex": "441", + "start": "7807" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "445", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "103", + "end": "7811", + "id": "446", + "length": "5", + "line": "204", + "parentIndex": "443", + "start": "7807" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "103", + "end": "7818", + "id": "442", + "length": "12", + "line": "204", + "parentIndex": "425", + "start": "7807" + } + }, + "scope": "259", + "src": { + "column": "4", + "end": "7931", + "id": "426", + "length": "224", + "line": "204", + "parentIndex": "259", + "start": "7708" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_uint256$", + "typeString": "function(address,bytes,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "490", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "145", + "end": "8702", + "id": "491", + "length": "382", + "line": "214", + "parentIndex": "464", + "start": "8321" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: insufficient balance for call\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "496", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "506", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "8350", + "id": "507", + "length": "4", + "line": "215", + "parentIndex": "500", + "start": "8347" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "502", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "8345", + "id": "503", + "length": "7", + "line": "215", + "parentIndex": "500", + "start": "8339" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "504", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "8345", + "id": "505", + "length": "7", + "line": "215", + "parentIndex": "502", + "start": "8339" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "500", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "8351", + "id": "501", + "length": "13", + "line": "215", + "parentIndex": "498", + "start": "8339" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "498", + "memberName": "balance", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "8359", + "id": "499", + "length": "21", + "line": "215", + "parentIndex": "496", + "start": "8339" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "508", + "name": "value", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "508", + "src": { + "column": "41", + "end": "8368", + "id": "509", + "length": "5", + "line": "215", + "parentIndex": "496", + "start": "8364" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "8368", + "id": "497", + "length": "30", + "line": "215", + "parentIndex": "492", + "start": "8339" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", + "id": "510", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "48", + "end": "8410", + "id": "511", + "length": "40", + "line": "215", + "parentIndex": "492", + "start": "8371" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: insufficient balance for call\"" + }, + "value": "Address: insufficient balance for call" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "494", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "8337", + "id": "495", + "length": "7", + "line": "215", + "parentIndex": "492", + "start": "8331" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "492", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "8411", + "id": "493", + "length": "81", + "line": "215", + "parentIndex": "490", + "start": "8331" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: call to non-contract\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "520", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "520", + "src": { + "column": "27", + "end": "8446", + "id": "521", + "length": "6", + "line": "216", + "parentIndex": "516", + "start": "8441" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "518", + "name": "isContract", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "8439", + "id": "519", + "length": "10", + "line": "216", + "parentIndex": "516", + "start": "8430" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "516", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "8447", + "id": "517", + "length": "18", + "line": "216", + "parentIndex": "512", + "start": "8430" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", + "id": "522", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "8480", + "id": "523", + "length": "31", + "line": "216", + "parentIndex": "512", + "start": "8450" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: call to non-contract\"" + }, + "value": "Address: call to non-contract" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "514", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "8428", + "id": "515", + "length": "7", + "line": "216", + "parentIndex": "512", + "start": "8422" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "512", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "8481", + "id": "513", + "length": "60", + "line": "216", + "parentIndex": "490", + "start": "8422" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "typeString": "function(function(address),string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "524", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "534", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "534", + "src": { + "column": "78", + "end": "8625", + "id": "535", + "length": "4", + "line": "219", + "parentIndex": "526", + "start": "8622" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCallOption", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "532", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "532", + "src": { + "column": "50", + "end": "8599", + "id": "533", + "length": "6", + "line": "219", + "parentIndex": "530", + "start": "8594" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "530", + "memberName": "call", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "50", + "end": "8604", + "id": "531", + "length": "11", + "line": "219", + "parentIndex": "528", + "start": "8594" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "528", + "kind": "FUNCTION_CALL_OPTION", + "nodeType": "FUNCTION_CALL_OPTION", + "src": { + "column": "50", + "end": "8620", + "id": "529", + "length": "27", + "line": "219", + "parentIndex": "526", + "start": "8594" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "526", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "50", + "end": "8626", + "id": "527", + "length": "33", + "line": "219", + "parentIndex": "524", + "start": "8594" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "8627", + "id": "525", + "length": "76", + "line": "219", + "parentIndex": "490", + "start": "8552" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + }, + { + "typeIdentifier": "t_string", + "typeString": "string" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "542", + "name": "success", + "nodeType": "IDENTIFIER", + "src": { + "column": "33", + "end": "8668", + "id": "543", + "length": "7", + "line": "220", + "parentIndex": "538", + "start": "8662" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "id": "544", + "name": "returndata", + "nodeType": "IDENTIFIER", + "src": { + "column": "42", + "end": "8680", + "id": "545", + "length": "10", + "line": "220", + "parentIndex": "538", + "start": "8671" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + ], + "id": "546", + "name": "errorMessage", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "546", + "src": { + "column": "54", + "end": "8694", + "id": "547", + "length": "12", + "line": "220", + "parentIndex": "538", + "start": "8683" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "540", + "name": "_verifyCallResult", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "8660", + "id": "541", + "length": "17", + "line": "220", + "parentIndex": "538", + "start": "8644" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "538", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "8695", + "id": "539", + "length": "52", + "line": "220", + "parentIndex": "490", + "start": "8644" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "typeString": "function(function(),function(function()),string)" + } + } + }, + "functionReturnParameters": "464", + "id": "536", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "8696", + "id": "537", + "length": "60", + "line": "220", + "parentIndex": "464", + "start": "8637" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "typeString": "function(function(),function(function()),string)" + } + } + } + ] + }, + "id": "464", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "functionCallWithValue", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "466", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "468", + "name": "target", + "nodeType": "VARIABLE_DECLARATION", + "scope": "468", + "src": { + "column": "35", + "end": "8224", + "id": "469", + "length": "14", + "line": "214", + "parentIndex": "466", + "start": "8211" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "470", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "35", + "end": "8217", + "id": "471", + "length": "7", + "line": "214", + "parentIndex": "468", + "start": "8211" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "472", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "472", + "src": { + "column": "51", + "end": "8243", + "id": "473", + "length": "17", + "line": "214", + "parentIndex": "466", + "start": "8227" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "474", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "51", + "end": "8231", + "id": "475", + "length": "5", + "line": "214", + "parentIndex": "472", + "start": "8227" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "476", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "476", + "src": { + "column": "70", + "end": "8258", + "id": "477", + "length": "13", + "line": "214", + "parentIndex": "466", + "start": "8246" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "478", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "70", + "end": "8252", + "id": "479", + "length": "7", + "line": "214", + "parentIndex": "476", + "start": "8246" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "480", + "name": "errorMessage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "480", + "src": { + "column": "85", + "end": "8286", + "id": "481", + "length": "26", + "line": "214", + "parentIndex": "466", + "start": "8261" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "482", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "85", + "end": "8266", + "id": "483", + "length": "6", + "line": "214", + "parentIndex": "480", + "start": "8261" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "35", + "end": "8286", + "id": "467", + "length": "76", + "line": "214", + "parentIndex": "464", + "start": "8211" + } + }, + "returnParameters": { + "id": "484", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "486", + "nodeType": "VARIABLE_DECLARATION", + "scope": "486", + "src": { + "column": "131", + "end": "8318", + "id": "487", + "length": "12", + "line": "214", + "parentIndex": "484", + "start": "8307" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "488", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "131", + "end": "8311", + "id": "489", + "length": "5", + "line": "214", + "parentIndex": "486", + "start": "8307" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "131", + "end": "8318", + "id": "485", + "length": "12", + "line": "214", + "parentIndex": "464", + "start": "8307" + } + }, + "scope": "259", + "src": { + "column": "4", + "end": "8702", + "id": "465", + "length": "523", + "line": "214", + "parentIndex": "259", + "start": "8180" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_uint256$_t_string$", + "typeString": "function(address,bytes,uint256,string)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "567", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "104", + "end": "9076", + "id": "568", + "length": "97", + "line": "229", + "parentIndex": "549", + "start": "8980" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: low-level static call failed\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "575", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "575", + "src": { + "column": "34", + "end": "9021", + "id": "576", + "length": "6", + "line": "230", + "parentIndex": "571", + "start": "9016" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "577", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "577", + "src": { + "column": "42", + "end": "9027", + "id": "578", + "length": "4", + "line": "230", + "parentIndex": "571", + "start": "9024" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", + "id": "579", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "48", + "end": "9068", + "id": "580", + "length": "39", + "line": "230", + "parentIndex": "571", + "start": "9030" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: low-level static call failed\"" + }, + "value": "Address: low-level static call failed" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "573", + "name": "functionStaticCall", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "9014", + "id": "574", + "length": "18", + "line": "230", + "parentIndex": "571", + "start": "8997" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "571", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "9069", + "id": "572", + "length": "73", + "line": "230", + "parentIndex": "567", + "start": "8997" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "typeString": "function(address,bytes,string memory)" + } + } + }, + "functionReturnParameters": "549", + "id": "569", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "9070", + "id": "570", + "length": "81", + "line": "230", + "parentIndex": "549", + "start": "8990" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "typeString": "function(address,bytes,string memory)" + } + } + } + ] + }, + "id": "549", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "functionStaticCall", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "551", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "553", + "name": "target", + "nodeType": "VARIABLE_DECLARATION", + "scope": "553", + "src": { + "column": "32", + "end": "8921", + "id": "554", + "length": "14", + "line": "229", + "parentIndex": "551", + "start": "8908" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "555", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "32", + "end": "8914", + "id": "556", + "length": "7", + "line": "229", + "parentIndex": "553", + "start": "8908" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "557", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "557", + "src": { + "column": "48", + "end": "8940", + "id": "558", + "length": "17", + "line": "229", + "parentIndex": "551", + "start": "8924" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "559", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "48", + "end": "8928", + "id": "560", + "length": "5", + "line": "229", + "parentIndex": "557", + "start": "8924" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "32", + "end": "8940", + "id": "552", + "length": "33", + "line": "229", + "parentIndex": "549", + "start": "8908" + } + }, + "returnParameters": { + "id": "561", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "563", + "nodeType": "VARIABLE_DECLARATION", + "scope": "563", + "src": { + "column": "90", + "end": "8977", + "id": "564", + "length": "12", + "line": "229", + "parentIndex": "561", + "start": "8966" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "565", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "90", + "end": "8970", + "id": "566", + "length": "5", + "line": "229", + "parentIndex": "563", + "start": "8966" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "90", + "end": "8977", + "id": "562", + "length": "12", + "line": "229", + "parentIndex": "549", + "start": "8966" + } + }, + "scope": "259", + "src": { + "column": "4", + "end": "9076", + "id": "550", + "length": "197", + "line": "229", + "parentIndex": "259", + "start": "8880" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$", + "typeString": "function(address,bytes)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "604", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "132", + "end": "9676", + "id": "605", + "length": "288", + "line": "239", + "parentIndex": "582", + "start": "9389" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: static call to non-contract\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "614", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "614", + "src": { + "column": "27", + "end": "9423", + "id": "615", + "length": "6", + "line": "240", + "parentIndex": "610", + "start": "9418" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "612", + "name": "isContract", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "9416", + "id": "613", + "length": "10", + "line": "240", + "parentIndex": "610", + "start": "9407" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "610", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "9424", + "id": "611", + "length": "18", + "line": "240", + "parentIndex": "606", + "start": "9407" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374", + "id": "616", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "9464", + "id": "617", + "length": "38", + "line": "240", + "parentIndex": "606", + "start": "9427" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: static call to non-contract\"" + }, + "value": "Address: static call to non-contract" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "608", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "9405", + "id": "609", + "length": "7", + "line": "240", + "parentIndex": "606", + "start": "9399" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "606", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "9465", + "id": "607", + "length": "67", + "line": "240", + "parentIndex": "604", + "start": "9399" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "typeString": "function(function(address),string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "618", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "626", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "626", + "src": { + "column": "68", + "end": "9599", + "id": "627", + "length": "4", + "line": "243", + "parentIndex": "620", + "start": "9596" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "624", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "624", + "src": { + "column": "50", + "end": "9583", + "id": "625", + "length": "6", + "line": "243", + "parentIndex": "622", + "start": "9578" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "622", + "memberName": "staticcall", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "50", + "end": "9594", + "id": "623", + "length": "17", + "line": "243", + "parentIndex": "620", + "start": "9578" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "620", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "50", + "end": "9600", + "id": "621", + "length": "23", + "line": "243", + "parentIndex": "618", + "start": "9578" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "9601", + "id": "619", + "length": "66", + "line": "243", + "parentIndex": "604", + "start": "9536" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + }, + { + "typeIdentifier": "t_string", + "typeString": "string" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "634", + "name": "success", + "nodeType": "IDENTIFIER", + "src": { + "column": "33", + "end": "9642", + "id": "635", + "length": "7", + "line": "244", + "parentIndex": "630", + "start": "9636" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "id": "636", + "name": "returndata", + "nodeType": "IDENTIFIER", + "src": { + "column": "42", + "end": "9654", + "id": "637", + "length": "10", + "line": "244", + "parentIndex": "630", + "start": "9645" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + ], + "id": "638", + "name": "errorMessage", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "638", + "src": { + "column": "54", + "end": "9668", + "id": "639", + "length": "12", + "line": "244", + "parentIndex": "630", + "start": "9657" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "632", + "name": "_verifyCallResult", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "9634", + "id": "633", + "length": "17", + "line": "244", + "parentIndex": "630", + "start": "9618" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "630", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "9669", + "id": "631", + "length": "52", + "line": "244", + "parentIndex": "604", + "start": "9618" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "typeString": "function(function(),function(function()),string)" + } + } + }, + "functionReturnParameters": "582", + "id": "628", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "9670", + "id": "629", + "length": "60", + "line": "244", + "parentIndex": "582", + "start": "9611" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "typeString": "function(function(),function(function()),string)" + } + } + } + ] + }, + "id": "582", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "functionStaticCall", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "584", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "586", + "name": "target", + "nodeType": "VARIABLE_DECLARATION", + "scope": "586", + "src": { + "column": "32", + "end": "9302", + "id": "587", + "length": "14", + "line": "239", + "parentIndex": "584", + "start": "9289" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "588", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "32", + "end": "9295", + "id": "589", + "length": "7", + "line": "239", + "parentIndex": "586", + "start": "9289" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "590", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "590", + "src": { + "column": "48", + "end": "9321", + "id": "591", + "length": "17", + "line": "239", + "parentIndex": "584", + "start": "9305" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "592", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "48", + "end": "9309", + "id": "593", + "length": "5", + "line": "239", + "parentIndex": "590", + "start": "9305" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "594", + "name": "errorMessage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "594", + "src": { + "column": "67", + "end": "9349", + "id": "595", + "length": "26", + "line": "239", + "parentIndex": "584", + "start": "9324" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "596", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "67", + "end": "9329", + "id": "597", + "length": "6", + "line": "239", + "parentIndex": "594", + "start": "9324" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "32", + "end": "9349", + "id": "585", + "length": "61", + "line": "239", + "parentIndex": "582", + "start": "9289" + } + }, + "returnParameters": { + "id": "598", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "600", + "nodeType": "VARIABLE_DECLARATION", + "scope": "600", + "src": { + "column": "118", + "end": "9386", + "id": "601", + "length": "12", + "line": "239", + "parentIndex": "598", + "start": "9375" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "602", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "118", + "end": "9379", + "id": "603", + "length": "5", + "line": "239", + "parentIndex": "600", + "start": "9375" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "118", + "end": "9386", + "id": "599", + "length": "12", + "line": "239", + "parentIndex": "582", + "start": "9375" + } + }, + "scope": "259", + "src": { + "column": "4", + "end": "9676", + "id": "583", + "length": "416", + "line": "239", + "parentIndex": "259", + "start": "9261" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string$", + "typeString": "function(address,bytes,string)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "659", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "101", + "end": "10053", + "id": "660", + "length": "101", + "line": "253", + "parentIndex": "641", + "start": "9953" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: low-level delegate call failed\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "667", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "667", + "src": { + "column": "36", + "end": "9996", + "id": "668", + "length": "6", + "line": "254", + "parentIndex": "663", + "start": "9991" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "669", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "669", + "src": { + "column": "44", + "end": "10002", + "id": "670", + "length": "4", + "line": "254", + "parentIndex": "663", + "start": "9999" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", + "id": "671", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "50", + "end": "10045", + "id": "672", + "length": "41", + "line": "254", + "parentIndex": "663", + "start": "10005" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: low-level delegate call failed\"" + }, + "value": "Address: low-level delegate call failed" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "665", + "name": "functionDelegateCall", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "9989", + "id": "666", + "length": "20", + "line": "254", + "parentIndex": "663", + "start": "9970" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "663", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "10046", + "id": "664", + "length": "77", + "line": "254", + "parentIndex": "659", + "start": "9970" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "typeString": "function(address,bytes,string memory)" + } + } + }, + "functionReturnParameters": "641", + "id": "661", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "10047", + "id": "662", + "length": "85", + "line": "254", + "parentIndex": "641", + "start": "9963" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "typeString": "function(address,bytes,string memory)" + } + } + } + ] + }, + "id": "641", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "functionDelegateCall", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "643", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "645", + "name": "target", + "nodeType": "VARIABLE_DECLARATION", + "scope": "645", + "src": { + "column": "34", + "end": "9899", + "id": "646", + "length": "14", + "line": "253", + "parentIndex": "643", + "start": "9886" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "647", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "34", + "end": "9892", + "id": "648", + "length": "7", + "line": "253", + "parentIndex": "645", + "start": "9886" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "649", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "649", + "src": { + "column": "50", + "end": "9918", + "id": "650", + "length": "17", + "line": "253", + "parentIndex": "643", + "start": "9902" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "651", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "9906", + "id": "652", + "length": "5", + "line": "253", + "parentIndex": "649", + "start": "9902" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "34", + "end": "9918", + "id": "644", + "length": "33", + "line": "253", + "parentIndex": "641", + "start": "9886" + } + }, + "returnParameters": { + "id": "653", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "655", + "nodeType": "VARIABLE_DECLARATION", + "scope": "655", + "src": { + "column": "87", + "end": "9950", + "id": "656", + "length": "12", + "line": "253", + "parentIndex": "653", + "start": "9939" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "657", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "87", + "end": "9943", + "id": "658", + "length": "5", + "line": "253", + "parentIndex": "655", + "start": "9939" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "87", + "end": "9950", + "id": "654", + "length": "12", + "line": "253", + "parentIndex": "641", + "start": "9939" + } + }, + "scope": "259", + "src": { + "column": "4", + "end": "10053", + "id": "642", + "length": "198", + "line": "253", + "parentIndex": "259", + "start": "9856" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$", + "typeString": "function(address,bytes)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "696", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "129", + "end": "10656", + "id": "697", + "length": "292", + "line": "263", + "parentIndex": "674", + "start": "10365" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: delegate call to non-contract\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "706", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "706", + "src": { + "column": "27", + "end": "10399", + "id": "707", + "length": "6", + "line": "264", + "parentIndex": "702", + "start": "10394" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "704", + "name": "isContract", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "10392", + "id": "705", + "length": "10", + "line": "264", + "parentIndex": "702", + "start": "10383" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "702", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "10400", + "id": "703", + "length": "18", + "line": "264", + "parentIndex": "698", + "start": "10383" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374", + "id": "708", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "10442", + "id": "709", + "length": "40", + "line": "264", + "parentIndex": "698", + "start": "10403" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: delegate call to non-contract\"" + }, + "value": "Address: delegate call to non-contract" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "700", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "10381", + "id": "701", + "length": "7", + "line": "264", + "parentIndex": "698", + "start": "10375" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "698", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "10443", + "id": "699", + "length": "69", + "line": "264", + "parentIndex": "696", + "start": "10375" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "typeString": "function(function(address),string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "710", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "718", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "718", + "src": { + "column": "70", + "end": "10579", + "id": "719", + "length": "4", + "line": "267", + "parentIndex": "712", + "start": "10576" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "716", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "716", + "src": { + "column": "50", + "end": "10561", + "id": "717", + "length": "6", + "line": "267", + "parentIndex": "714", + "start": "10556" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "714", + "memberName": "delegatecall", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "50", + "end": "10574", + "id": "715", + "length": "19", + "line": "267", + "parentIndex": "712", + "start": "10556" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "712", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "50", + "end": "10580", + "id": "713", + "length": "25", + "line": "267", + "parentIndex": "710", + "start": "10556" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "10581", + "id": "711", + "length": "68", + "line": "267", + "parentIndex": "696", + "start": "10514" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + }, + { + "typeIdentifier": "t_string", + "typeString": "string" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "726", + "name": "success", + "nodeType": "IDENTIFIER", + "src": { + "column": "33", + "end": "10622", + "id": "727", + "length": "7", + "line": "268", + "parentIndex": "722", + "start": "10616" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "id": "728", + "name": "returndata", + "nodeType": "IDENTIFIER", + "src": { + "column": "42", + "end": "10634", + "id": "729", + "length": "10", + "line": "268", + "parentIndex": "722", + "start": "10625" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + ], + "id": "730", + "name": "errorMessage", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "730", + "src": { + "column": "54", + "end": "10648", + "id": "731", + "length": "12", + "line": "268", + "parentIndex": "722", + "start": "10637" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "724", + "name": "_verifyCallResult", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "10614", + "id": "725", + "length": "17", + "line": "268", + "parentIndex": "722", + "start": "10598" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "722", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "10649", + "id": "723", + "length": "52", + "line": "268", + "parentIndex": "696", + "start": "10598" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "typeString": "function(function(),function(function()),string)" + } + } + }, + "functionReturnParameters": "674", + "id": "720", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "10650", + "id": "721", + "length": "60", + "line": "268", + "parentIndex": "674", + "start": "10591" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "typeString": "function(function(),function(function()),string)" + } + } + } + ] + }, + "id": "674", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "functionDelegateCall", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "676", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "678", + "name": "target", + "nodeType": "VARIABLE_DECLARATION", + "scope": "678", + "src": { + "column": "34", + "end": "10283", + "id": "679", + "length": "14", + "line": "263", + "parentIndex": "676", + "start": "10270" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "680", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "34", + "end": "10276", + "id": "681", + "length": "7", + "line": "263", + "parentIndex": "678", + "start": "10270" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "682", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "682", + "src": { + "column": "50", + "end": "10302", + "id": "683", + "length": "17", + "line": "263", + "parentIndex": "676", + "start": "10286" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "684", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "10290", + "id": "685", + "length": "5", + "line": "263", + "parentIndex": "682", + "start": "10286" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "686", + "name": "errorMessage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "686", + "src": { + "column": "69", + "end": "10330", + "id": "687", + "length": "26", + "line": "263", + "parentIndex": "676", + "start": "10305" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "688", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "69", + "end": "10310", + "id": "689", + "length": "6", + "line": "263", + "parentIndex": "686", + "start": "10305" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "34", + "end": "10330", + "id": "677", + "length": "61", + "line": "263", + "parentIndex": "674", + "start": "10270" + } + }, + "returnParameters": { + "id": "690", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "692", + "nodeType": "VARIABLE_DECLARATION", + "scope": "692", + "src": { + "column": "115", + "end": "10362", + "id": "693", + "length": "12", + "line": "263", + "parentIndex": "690", + "start": "10351" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "694", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "115", + "end": "10355", + "id": "695", + "length": "5", + "line": "263", + "parentIndex": "692", + "start": "10351" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "115", + "end": "10362", + "id": "691", + "length": "12", + "line": "263", + "parentIndex": "674", + "start": "10351" + } + }, + "scope": "259", + "src": { + "column": "4", + "end": "10656", + "id": "675", + "length": "417", + "line": "263", + "parentIndex": "259", + "start": "10240" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string$", + "typeString": "function(address,bytes,string)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "755", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "133", + "end": "11387", + "id": "756", + "length": "596", + "line": "271", + "parentIndex": "733", + "start": "10792" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "761", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "21", + "end": "10856", + "id": "762", + "length": "42", + "line": "272", + "parentIndex": "733", + "start": "10815" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "765", + "name": "returndata", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "765", + "src": { + "column": "19", + "end": "10845", + "id": "766", + "length": "10", + "line": "273", + "parentIndex": "761", + "start": "10836" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + "functionReturnParameters": "733", + "id": "763", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "10846", + "id": "764", + "length": "18", + "line": "273", + "parentIndex": "733", + "start": "10829" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "759", + "name": "success", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "759", + "src": { + "column": "12", + "end": "10812", + "id": "760", + "length": "7", + "line": "272", + "parentIndex": "757", + "start": "10806" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "757", + "nodeType": "IF_STATEMENT", + "src": { + "end": "11381", + "id": "758", + "length": "580", + "line": "272", + "parentIndex": "755", + "start": "10802" + } + } + } + ] + }, + "id": "733", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_verifyCallResult", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "735", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "737", + "name": "success", + "nodeType": "VARIABLE_DECLARATION", + "scope": "737", + "src": { + "column": "31", + "end": "10701", + "id": "738", + "length": "12", + "line": "271", + "parentIndex": "735", + "start": "10690" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "739", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "10693", + "id": "740", + "length": "4", + "line": "271", + "parentIndex": "737", + "start": "10690" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "741", + "name": "returndata", + "nodeType": "VARIABLE_DECLARATION", + "scope": "741", + "src": { + "column": "45", + "end": "10726", + "id": "742", + "length": "23", + "line": "271", + "parentIndex": "735", + "start": "10704" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "743", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "45", + "end": "10708", + "id": "744", + "length": "5", + "line": "271", + "parentIndex": "741", + "start": "10704" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "745", + "name": "errorMessage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "745", + "src": { + "column": "70", + "end": "10754", + "id": "746", + "length": "26", + "line": "271", + "parentIndex": "735", + "start": "10729" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "747", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "70", + "end": "10734", + "id": "748", + "length": "6", + "line": "271", + "parentIndex": "745", + "start": "10729" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "31", + "end": "10754", + "id": "736", + "length": "65", + "line": "271", + "parentIndex": "733", + "start": "10690" + } + }, + "returnParameters": { + "id": "749", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "751", + "nodeType": "VARIABLE_DECLARATION", + "scope": "751", + "src": { + "column": "119", + "end": "10789", + "id": "752", + "length": "12", + "line": "271", + "parentIndex": "749", + "start": "10778" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "753", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "119", + "end": "10782", + "id": "754", + "length": "5", + "line": "271", + "parentIndex": "751", + "start": "10778" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "119", + "end": "10789", + "id": "750", + "length": "12", + "line": "271", + "parentIndex": "733", + "start": "10778" + } + }, + "scope": "259", + "src": { + "column": "4", + "end": "11387", + "id": "734", + "length": "725", + "line": "271", + "parentIndex": "259", + "start": "10663" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_bytes$_t_string$", + "typeString": "function(bool,bytes,string)" + }, + "visibility": "PRIVATE" + } + } + ], + "src": { + "end": "11389", + "length": "7684", + "line": "108", + "parentIndex": "251", + "start": "3706" + } + } + } + ] + }, + "src": { + "id": 252, + "line": 108, + "start": 3706, + "end": 11389, + "length": 7684, + "parent_index": 118 + } + }, + { + "id": 767, + "license": "MIT", + "name": "StorageSlot", + "absolute_path": "StorageSlot.sol", + "exported_symbols": [ + { + "id": 767, + "name": "StorageSlot", + "absolute_path": "StorageSlot.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "775", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "11447", + "id": "776", + "length": "23", + "line": "293", + "parentIndex": "767", + "start": "11425" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "777", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "777" + ], + "name": "StorageSlot", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", + "value": { + "canonicalName": "StorageSlot.AddressSlot", + "id": "779", + "members": [ + { + "id": "781", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "781", + "src": { + "column": "8", + "end": "12667", + "id": "782", + "length": "14", + "line": "323", + "parentIndex": "779", + "start": "12654" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "783", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "12660", + "id": "784", + "length": "7", + "line": "323", + "parentIndex": "781", + "start": "12654" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "name": "AddressSlot", + "nodeType": "STRUCT_DEFINITION", + "src": { + "column": "4", + "end": "12673", + "id": "780", + "length": "49", + "line": "322", + "parentIndex": "767", + "start": "12625" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_struct$_StorageSlot_AddressSlot_$779", + "typeString": "struct StorageSlot.AddressSlot" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", + "value": { + "canonicalName": "StorageSlot.BooleanSlot", + "id": "786", + "members": [ + { + "id": "788", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "788", + "src": { + "column": "8", + "end": "12719", + "id": "789", + "length": "11", + "line": "327", + "parentIndex": "786", + "start": "12709" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "790", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "12712", + "id": "791", + "length": "4", + "line": "327", + "parentIndex": "788", + "start": "12709" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "name": "BooleanSlot", + "nodeType": "STRUCT_DEFINITION", + "src": { + "column": "4", + "end": "12725", + "id": "787", + "length": "46", + "line": "326", + "parentIndex": "767", + "start": "12680" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_struct$_StorageSlot_BooleanSlot_$786", + "typeString": "struct StorageSlot.BooleanSlot" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", + "value": { + "canonicalName": "StorageSlot.Bytes32Slot", + "id": "793", + "members": [ + { + "id": "795", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "795", + "src": { + "column": "8", + "end": "12774", + "id": "796", + "length": "14", + "line": "331", + "parentIndex": "793", + "start": "12761" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "797", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "12767", + "id": "798", + "length": "7", + "line": "331", + "parentIndex": "795", + "start": "12761" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "name": "Bytes32Slot", + "nodeType": "STRUCT_DEFINITION", + "src": { + "column": "4", + "end": "12780", + "id": "794", + "length": "49", + "line": "330", + "parentIndex": "767", + "start": "12732" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_struct$_StorageSlot_Bytes32Slot_$793", + "typeString": "struct StorageSlot.Bytes32Slot" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", + "value": { + "canonicalName": "StorageSlot.Uint256Slot", + "id": "800", + "members": [ + { + "id": "802", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "802", + "src": { + "column": "8", + "end": "12829", + "id": "803", + "length": "14", + "line": "335", + "parentIndex": "800", + "start": "12816" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "804", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "12822", + "id": "805", + "length": "7", + "line": "335", + "parentIndex": "802", + "start": "12816" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "name": "Uint256Slot", + "nodeType": "STRUCT_DEFINITION", + "src": { + "column": "4", + "end": "12835", + "id": "801", + "length": "49", + "line": "334", + "parentIndex": "767", + "start": "12787" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_struct$_StorageSlot_Uint256Slot_$800", + "typeString": "struct StorageSlot.Uint256Slot" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "823", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "88", + "end": "13080", + "id": "824", + "length": "63", + "line": "341", + "parentIndex": "807", + "start": "13018" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assembly", + "value": { + "id": "825", + "nodeType": "ASSEMBLY_STATEMENT", + "src": { + "column": "8", + "end": "13074", + "id": "826", + "length": "47", + "line": "342", + "parentIndex": "823", + "start": "13028" + } + } + } + ] + }, + "id": "807", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "getAddressSlot", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "809", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "811", + "name": "slot", + "nodeType": "VARIABLE_DECLARATION", + "scope": "811", + "src": { + "column": "28", + "end": "12969", + "id": "812", + "length": "12", + "line": "341", + "parentIndex": "809", + "start": "12958" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "813", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "12964", + "id": "814", + "length": "7", + "line": "341", + "parentIndex": "811", + "start": "12958" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "28", + "end": "12969", + "id": "810", + "length": "12", + "line": "341", + "parentIndex": "807", + "start": "12958" + } + }, + "returnParameters": { + "id": "815", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "817", + "name": "r", + "nodeType": "VARIABLE_DECLARATION", + "scope": "817", + "src": { + "column": "65", + "end": "13015", + "id": "818", + "length": "21", + "line": "341", + "parentIndex": "815", + "start": "12995" + }, + "stateMutability": "MUTABLE", + "storageLocation": "STORAGE", + "typeDescription": { + "typeIdentifier": "t_struct$_StorageSlot_AddressSlot_$779", + "typeString": "struct StorageSlot.AddressSlot" + }, + "typeName": { + "id": "819", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "821", + "name": "AddressSlot", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "779", + "src": { + "column": "65", + "end": "13005", + "id": "822", + "length": "11", + "line": "341", + "parentIndex": "819", + "start": "12995" + } + }, + "referencedDeclaration": "779", + "src": { + "column": "65", + "end": "13005", + "id": "820", + "length": "11", + "line": "341", + "parentIndex": "817", + "start": "12995" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StorageSlot_AddressSlot_$779", + "typeString": "struct StorageSlot.AddressSlot" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "13015", + "id": "816", + "length": "21", + "line": "341", + "parentIndex": "807", + "start": "12995" + } + }, + "scope": "777", + "src": { + "column": "4", + "end": "13080", + "id": "808", + "length": "147", + "line": "341", + "parentIndex": "777", + "start": "12934" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes32$", + "typeString": "function(bytes32)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "847", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "88", + "end": "13325", + "id": "848", + "length": "63", + "line": "350", + "parentIndex": "831", + "start": "13263" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assembly", + "value": { + "id": "849", + "nodeType": "ASSEMBLY_STATEMENT", + "src": { + "column": "8", + "end": "13319", + "id": "850", + "length": "47", + "line": "351", + "parentIndex": "847", + "start": "13273" + } + } + } + ] + }, + "id": "831", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "getBooleanSlot", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "833", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "835", + "name": "slot", + "nodeType": "VARIABLE_DECLARATION", + "scope": "835", + "src": { + "column": "28", + "end": "13214", + "id": "836", + "length": "12", + "line": "350", + "parentIndex": "833", + "start": "13203" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "837", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "13209", + "id": "838", + "length": "7", + "line": "350", + "parentIndex": "835", + "start": "13203" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "28", + "end": "13214", + "id": "834", + "length": "12", + "line": "350", + "parentIndex": "831", + "start": "13203" + } + }, + "returnParameters": { + "id": "839", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "841", + "name": "r", + "nodeType": "VARIABLE_DECLARATION", + "scope": "841", + "src": { + "column": "65", + "end": "13260", + "id": "842", + "length": "21", + "line": "350", + "parentIndex": "839", + "start": "13240" + }, + "stateMutability": "MUTABLE", + "storageLocation": "STORAGE", + "typeDescription": { + "typeIdentifier": "t_struct$_StorageSlot_BooleanSlot_$786", + "typeString": "struct StorageSlot.BooleanSlot" + }, + "typeName": { + "id": "843", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "845", + "name": "BooleanSlot", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "786", + "src": { + "column": "65", + "end": "13250", + "id": "846", + "length": "11", + "line": "350", + "parentIndex": "843", + "start": "13240" + } + }, + "referencedDeclaration": "786", + "src": { + "column": "65", + "end": "13250", + "id": "844", + "length": "11", + "line": "350", + "parentIndex": "841", + "start": "13240" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StorageSlot_BooleanSlot_$786", + "typeString": "struct StorageSlot.BooleanSlot" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "13260", + "id": "840", + "length": "21", + "line": "350", + "parentIndex": "831", + "start": "13240" + } + }, + "scope": "777", + "src": { + "column": "4", + "end": "13325", + "id": "832", + "length": "147", + "line": "350", + "parentIndex": "777", + "start": "13179" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes32$", + "typeString": "function(bytes32)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "871", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "88", + "end": "13570", + "id": "872", + "length": "63", + "line": "359", + "parentIndex": "855", + "start": "13508" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assembly", + "value": { + "id": "873", + "nodeType": "ASSEMBLY_STATEMENT", + "src": { + "column": "8", + "end": "13564", + "id": "874", + "length": "47", + "line": "360", + "parentIndex": "871", + "start": "13518" + } + } + } + ] + }, + "id": "855", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "getBytes32Slot", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "857", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "859", + "name": "slot", + "nodeType": "VARIABLE_DECLARATION", + "scope": "859", + "src": { + "column": "28", + "end": "13459", + "id": "860", + "length": "12", + "line": "359", + "parentIndex": "857", + "start": "13448" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "861", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "13454", + "id": "862", + "length": "7", + "line": "359", + "parentIndex": "859", + "start": "13448" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "28", + "end": "13459", + "id": "858", + "length": "12", + "line": "359", + "parentIndex": "855", + "start": "13448" + } + }, + "returnParameters": { + "id": "863", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "865", + "name": "r", + "nodeType": "VARIABLE_DECLARATION", + "scope": "865", + "src": { + "column": "65", + "end": "13505", + "id": "866", + "length": "21", + "line": "359", + "parentIndex": "863", + "start": "13485" + }, + "stateMutability": "MUTABLE", + "storageLocation": "STORAGE", + "typeDescription": { + "typeIdentifier": "t_struct$_StorageSlot_Bytes32Slot_$793", + "typeString": "struct StorageSlot.Bytes32Slot" + }, + "typeName": { + "id": "867", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "869", + "name": "Bytes32Slot", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "793", + "src": { + "column": "65", + "end": "13495", + "id": "870", + "length": "11", + "line": "359", + "parentIndex": "867", + "start": "13485" + } + }, + "referencedDeclaration": "793", + "src": { + "column": "65", + "end": "13495", + "id": "868", + "length": "11", + "line": "359", + "parentIndex": "865", + "start": "13485" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StorageSlot_Bytes32Slot_$793", + "typeString": "struct StorageSlot.Bytes32Slot" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "13505", + "id": "864", + "length": "21", + "line": "359", + "parentIndex": "855", + "start": "13485" + } + }, + "scope": "777", + "src": { + "column": "4", + "end": "13570", + "id": "856", + "length": "147", + "line": "359", + "parentIndex": "777", + "start": "13424" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes32$", + "typeString": "function(bytes32)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "895", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "88", + "end": "13815", + "id": "896", + "length": "63", + "line": "368", + "parentIndex": "879", + "start": "13753" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assembly", + "value": { + "id": "897", + "nodeType": "ASSEMBLY_STATEMENT", + "src": { + "column": "8", + "end": "13809", + "id": "898", + "length": "47", + "line": "369", + "parentIndex": "895", + "start": "13763" + } + } + } + ] + }, + "id": "879", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "getUint256Slot", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "881", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "883", + "name": "slot", + "nodeType": "VARIABLE_DECLARATION", + "scope": "883", + "src": { + "column": "28", + "end": "13704", + "id": "884", + "length": "12", + "line": "368", + "parentIndex": "881", + "start": "13693" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "885", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "13699", + "id": "886", + "length": "7", + "line": "368", + "parentIndex": "883", + "start": "13693" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "28", + "end": "13704", + "id": "882", + "length": "12", + "line": "368", + "parentIndex": "879", + "start": "13693" + } + }, + "returnParameters": { + "id": "887", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "889", + "name": "r", + "nodeType": "VARIABLE_DECLARATION", + "scope": "889", + "src": { + "column": "65", + "end": "13750", + "id": "890", + "length": "21", + "line": "368", + "parentIndex": "887", + "start": "13730" + }, + "stateMutability": "MUTABLE", + "storageLocation": "STORAGE", + "typeDescription": { + "typeIdentifier": "t_struct$_StorageSlot_Uint256Slot_$800", + "typeString": "struct StorageSlot.Uint256Slot" + }, + "typeName": { + "id": "891", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "893", + "name": "Uint256Slot", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "800", + "src": { + "column": "65", + "end": "13740", + "id": "894", + "length": "11", + "line": "368", + "parentIndex": "891", + "start": "13730" + } + }, + "referencedDeclaration": "800", + "src": { + "column": "65", + "end": "13740", + "id": "892", + "length": "11", + "line": "368", + "parentIndex": "889", + "start": "13730" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StorageSlot_Uint256Slot_$800", + "typeString": "struct StorageSlot.Uint256Slot" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "65", + "end": "13750", + "id": "888", + "length": "21", + "line": "368", + "parentIndex": "879", + "start": "13730" + } + }, + "scope": "777", + "src": { + "column": "4", + "end": "13815", + "id": "880", + "length": "147", + "line": "368", + "parentIndex": "777", + "start": "13669" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes32$", + "typeString": "function(bytes32)" + }, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "13817", + "length": "1219", + "line": "321", + "parentIndex": "767", + "start": "12599" + } + } + } + ] + }, + "src": { + "id": 768, + "line": 321, + "start": 12599, + "end": 13817, + "length": 1219, + "parent_index": 118 + } + }, + { + "id": 902, + "license": "MIT", + "name": "ERC1967Upgrade", + "absolute_path": "ERC1967Upgrade.sol", + "exported_symbols": [ + { + "id": 902, + "name": "ERC1967Upgrade", + "absolute_path": "ERC1967Upgrade.sol" + }, + { + "id": 767, + "name": "StorageSlot", + "absolute_path": "StorageSlot.sol" + }, + { + "id": 251, + "name": "Address", + "absolute_path": "Address.sol" + }, + { + "id": 119, + "name": "IBeacon", + "absolute_path": "IBeacon.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "912", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "2", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "13876", + "id": "913", + "length": "23", + "line": "378", + "parentIndex": "902", + "start": "13854" + }, + "text": "pragma solidity ^0.8.2;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IBeacon.sol", + "file": "../beacon/IBeacon.sol", + "id": "914", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "902", + "sourceUnit": "767", + "src": { + "end": "13909", + "length": "31", + "line": "380", + "parentIndex": "902", + "start": "13879" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "Address.sol", + "file": "../../utils/Address.sol", + "id": "915", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "902", + "sourceUnit": "767", + "src": { + "end": "13943", + "length": "33", + "line": "381", + "parentIndex": "902", + "start": "13911" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "StorageSlot.sol", + "file": "../../utils/StorageSlot.sol", + "id": "916", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "902", + "sourceUnit": "767", + "src": { + "end": "13981", + "length": "37", + "line": "382", + "parentIndex": "902", + "start": "13945" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "contractDependencies": [ + "914", + "915", + "916" + ], + "fullyImplemented": true, + "id": "917", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "917", + "914", + "915", + "916" + ], + "name": "ERC1967Upgrade", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "919", + "isConstant": true, + "isStateVariable": true, + "name": "_ROLLBACK_SLOT", + "nodeType": "VARIABLE_DECLARATION", + "scope": "917", + "src": { + "column": "4", + "end": "14447", + "id": "920", + "length": "109", + "line": "394", + "parentIndex": "917", + "start": "14339" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "921", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "14345", + "id": "922", + "length": "7", + "line": "394", + "parentIndex": "919", + "start": "14339" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "924", + "isConstant": true, + "isStateVariable": true, + "name": "_IMPLEMENTATION_SLOT", + "nodeType": "VARIABLE_DECLARATION", + "scope": "917", + "src": { + "column": "4", + "end": "14788", + "id": "925", + "length": "116", + "line": "401", + "parentIndex": "917", + "start": "14673" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "926", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "14679", + "id": "927", + "length": "7", + "line": "401", + "parentIndex": "924", + "start": "14673" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "929", + "name": "Upgraded", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "931", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "932", + "indexed": true, + "name": "implementation", + "nodeType": "VARIABLE_DECLARATION", + "scope": "932", + "src": { + "column": "19", + "end": "14912", + "id": "933", + "length": "30", + "line": "406", + "parentIndex": "931", + "start": "14883" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "934", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "19", + "end": "14889", + "id": "935", + "length": "7", + "line": "406", + "parentIndex": "932", + "start": "14883" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "14914", + "id": "930", + "length": "47", + "line": "406", + "parentIndex": "929", + "start": "14868" + } + }, + "src": { + "column": "4", + "end": "14914", + "id": "930", + "length": "47", + "line": "406", + "parentIndex": "917", + "start": "14868" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", + "typeString": "event ERC1967Upgrade.Upgraded" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "951", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "66", + "end": "15132", + "id": "952", + "length": "78", + "line": "411", + "parentIndex": "937", + "start": "15055" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "963", + "name": "_IMPLEMENTATION_SLOT", + "nodeType": "IDENTIFIER", + "src": { + "column": "42", + "end": "15118", + "id": "964", + "length": "20", + "line": "412", + "parentIndex": "957", + "start": "15099" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "961", + "name": "StorageSlot", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "767", + "src": { + "column": "15", + "end": "15082", + "id": "962", + "length": "11", + "line": "412", + "parentIndex": "959", + "start": "15072" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "959", + "memberName": "getAddressSlot", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "15097", + "id": "960", + "length": "26", + "line": "412", + "parentIndex": "957", + "start": "15072" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "957", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "15119", + "id": "958", + "length": "48", + "line": "412", + "parentIndex": "955", + "start": "15072" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "id": "955", + "memberName": "value", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "15125", + "id": "956", + "length": "54", + "line": "412", + "parentIndex": "951", + "start": "15072" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "functionReturnParameters": "937", + "id": "953", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "15126", + "id": "954", + "length": "62", + "line": "412", + "parentIndex": "937", + "start": "15065" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + } + ] + }, + "id": "937", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_getImplementation", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "939", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "941", + "nodeType": "VARIABLE_DECLARATION", + "scope": "941", + "src": { + "column": "57", + "end": "15052", + "id": "942", + "length": "7", + "line": "411", + "parentIndex": "939", + "start": "15046" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "943", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "57", + "end": "15052", + "id": "944", + "length": "7", + "line": "411", + "parentIndex": "941", + "start": "15046" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "57", + "end": "15052", + "id": "940", + "length": "7", + "line": "411", + "parentIndex": "937", + "start": "15046" + } + }, + "returnParameters": { + "id": "945", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "947", + "nodeType": "VARIABLE_DECLARATION", + "scope": "947", + "src": { + "column": "57", + "end": "15052", + "id": "948", + "length": "7", + "line": "411", + "parentIndex": "945", + "start": "15046" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "949", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "57", + "end": "15052", + "id": "950", + "length": "7", + "line": "411", + "parentIndex": "947", + "start": "15046" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "57", + "end": "15052", + "id": "946", + "length": "7", + "line": "411", + "parentIndex": "937", + "start": "15046" + } + }, + "scope": "917", + "src": { + "column": "4", + "end": "15132", + "id": "938", + "length": "140", + "line": "411", + "parentIndex": "917", + "start": "14993" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "975", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "67", + "end": "15482", + "id": "976", + "length": "196", + "line": "418", + "parentIndex": "966", + "start": "15287" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC1967: new implementation is not a contract\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "987", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "987", + "src": { + "column": "35", + "end": "15340", + "id": "988", + "length": "17", + "line": "419", + "parentIndex": "981", + "start": "15324" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "985", + "name": "Address", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "251", + "src": { + "column": "16", + "end": "15311", + "id": "986", + "length": "7", + "line": "419", + "parentIndex": "983", + "start": "15305" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + }, + "id": "983", + "memberName": "isContract", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "15322", + "id": "984", + "length": "18", + "line": "419", + "parentIndex": "981", + "start": "15305" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + }, + "id": "981", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "15341", + "id": "982", + "length": "37", + "line": "419", + "parentIndex": "977", + "start": "15305" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "hexValue": "455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374", + "id": "989", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "55", + "end": "15390", + "id": "990", + "length": "47", + "line": "419", + "parentIndex": "977", + "start": "15344" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC1967: new implementation is not a contract\"" + }, + "value": "ERC1967: new implementation is not a contract" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "979", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "15303", + "id": "980", + "length": "7", + "line": "419", + "parentIndex": "977", + "start": "15297" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "977", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "15391", + "id": "978", + "length": "95", + "line": "419", + "parentIndex": "975", + "start": "15297" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "typeString": "function(function(address),string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "993", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1003", + "name": "_IMPLEMENTATION_SLOT", + "nodeType": "IDENTIFIER", + "src": { + "column": "35", + "end": "15448", + "id": "1004", + "length": "20", + "line": "420", + "parentIndex": "997", + "start": "15429" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1001", + "name": "StorageSlot", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "767", + "src": { + "column": "8", + "end": "15412", + "id": "1002", + "length": "11", + "line": "420", + "parentIndex": "999", + "start": "15402" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "999", + "memberName": "getAddressSlot", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "15427", + "id": "1000", + "length": "26", + "line": "420", + "parentIndex": "997", + "start": "15402" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "997", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "15449", + "id": "998", + "length": "48", + "line": "420", + "parentIndex": "995", + "start": "15402" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "id": "995", + "memberName": "value", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "15455", + "id": "996", + "length": "54", + "line": "420", + "parentIndex": "993", + "start": "15402" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1005", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1005", + "src": { + "column": "65", + "end": "15475", + "id": "1006", + "length": "17", + "line": "420", + "parentIndex": "993", + "start": "15459" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "src": { + "column": "8", + "end": "15475", + "id": "994", + "length": "74", + "line": "420", + "parentIndex": "975", + "start": "15402" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "id": "991", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "15476", + "id": "992", + "length": "75", + "line": "420", + "parentIndex": "975", + "start": "15402" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + } + ] + }, + "id": "966", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_setImplementation", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "968", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "970", + "name": "newImplementation", + "nodeType": "VARIABLE_DECLARATION", + "scope": "970", + "src": { + "column": "32", + "end": "15276", + "id": "971", + "length": "25", + "line": "418", + "parentIndex": "968", + "start": "15252" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "972", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "32", + "end": "15258", + "id": "973", + "length": "7", + "line": "418", + "parentIndex": "970", + "start": "15252" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "32", + "end": "15276", + "id": "969", + "length": "25", + "line": "418", + "parentIndex": "966", + "start": "15252" + } + }, + "returnParameters": { + "id": "974", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "15482", + "id": "967", + "length": "259", + "line": "418", + "parentIndex": "966", + "start": "15224" + } + }, + "scope": "917", + "src": { + "column": "4", + "end": "15482", + "id": "967", + "length": "259", + "line": "418", + "parentIndex": "917", + "start": "15224" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1017", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "60", + "end": "15740", + "id": "1018", + "length": "96", + "line": "428", + "parentIndex": "1008", + "start": "15645" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1023", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1023", + "src": { + "column": "27", + "end": "15690", + "id": "1024", + "length": "17", + "line": "429", + "parentIndex": "1019", + "start": "15674" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1021", + "name": "_setImplementation", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "15672", + "id": "1022", + "length": "18", + "line": "429", + "parentIndex": "1019", + "start": "15655" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1019", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "15691", + "id": "1020", + "length": "37", + "line": "429", + "parentIndex": "1017", + "start": "15655" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1027", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1027", + "src": { + "column": "22", + "end": "15732", + "id": "1028", + "length": "17", + "line": "430", + "parentIndex": "1017", + "start": "15716" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1029", + "name": "Upgraded", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "929", + "src": { + "column": "13", + "end": "15714", + "id": "1030", + "length": "8", + "line": "430", + "parentIndex": "1017", + "start": "15707" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", + "typeString": "event ERC1967Upgrade.Upgraded" + } + } + }, + "id": "1025", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "15734", + "id": "1026", + "length": "33", + "line": "430", + "parentIndex": "1008", + "start": "15702" + } + } + } + ] + }, + "id": "1008", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_upgradeTo", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1010", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1012", + "name": "newImplementation", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1012", + "src": { + "column": "24", + "end": "15633", + "id": "1013", + "length": "25", + "line": "428", + "parentIndex": "1010", + "start": "15609" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1014", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "15615", + "id": "1015", + "length": "7", + "line": "428", + "parentIndex": "1012", + "start": "15609" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "15633", + "id": "1011", + "length": "25", + "line": "428", + "parentIndex": "1008", + "start": "15609" + } + }, + "returnParameters": { + "id": "1016", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "15740", + "id": "1009", + "length": "152", + "line": "428", + "parentIndex": "1008", + "start": "15589" + } + }, + "scope": "917", + "src": { + "column": "4", + "end": "15740", + "id": "1009", + "length": "152", + "line": "428", + "parentIndex": "917", + "start": "15589" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1049", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "102", + "end": "16189", + "id": "1050", + "length": "217", + "line": "438", + "parentIndex": "1032", + "start": "15973" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1055", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1055", + "src": { + "column": "27", + "end": "16018", + "id": "1056", + "length": "17", + "line": "439", + "parentIndex": "1051", + "start": "16002" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1053", + "name": "_setImplementation", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "16000", + "id": "1054", + "length": "18", + "line": "439", + "parentIndex": "1051", + "start": "15983" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1051", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "16019", + "id": "1052", + "length": "37", + "line": "439", + "parentIndex": "1049", + "start": "15983" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1059", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1059", + "src": { + "column": "22", + "end": "16060", + "id": "1060", + "length": "17", + "line": "440", + "parentIndex": "1049", + "start": "16044" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1061", + "name": "Upgraded", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "929", + "src": { + "column": "13", + "end": "16042", + "id": "1062", + "length": "8", + "line": "440", + "parentIndex": "1049", + "start": "16035" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", + "typeString": "event ERC1967Upgrade.Upgraded" + } + } + }, + "id": "1057", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "16062", + "id": "1058", + "length": "33", + "line": "440", + "parentIndex": "1032", + "start": "16030" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "1077", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "42", + "end": "16183", + "id": "1078", + "length": "78", + "line": "441", + "parentIndex": "1032", + "start": "16106" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1085", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1085", + "src": { + "column": "41", + "end": "16165", + "id": "1086", + "length": "17", + "line": "442", + "parentIndex": "1079", + "start": "16149" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1087", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1087", + "src": { + "column": "60", + "end": "16171", + "id": "1088", + "length": "4", + "line": "442", + "parentIndex": "1079", + "start": "16168" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1083", + "name": "Address", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "251", + "src": { + "column": "12", + "end": "16126", + "id": "1084", + "length": "7", + "line": "442", + "parentIndex": "1081", + "start": "16120" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + }, + "id": "1081", + "memberName": "functionDelegateCall", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "16147", + "id": "1082", + "length": "28", + "line": "442", + "parentIndex": "1079", + "start": "16120" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + }, + "id": "1079", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "16172", + "id": "1080", + "length": "53", + "line": "442", + "parentIndex": "1077", + "start": "16120" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$", + "typeString": "function(address,bytes)" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1065", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1067", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1071", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1071", + "src": { + "column": "12", + "end": "16079", + "id": "1072", + "length": "4", + "line": "441", + "parentIndex": "1069", + "start": "16076" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + "id": "1069", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "16086", + "id": "1070", + "length": "11", + "line": "441", + "parentIndex": "1067", + "start": "16076" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1073", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "26", + "end": "16090", + "id": "1074", + "length": "1", + "line": "441", + "parentIndex": "1067", + "start": "16090" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "12", + "end": "16090", + "id": "1068", + "length": "15", + "line": "441", + "parentIndex": "1065", + "start": "16076" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "OR", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1075", + "name": "forceCall", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1075", + "src": { + "column": "31", + "end": "16103", + "id": "1076", + "length": "9", + "line": "441", + "parentIndex": "1065", + "start": "16095" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "src": { + "column": "12", + "end": "16103", + "id": "1066", + "length": "28", + "line": "441", + "parentIndex": "1063", + "start": "16076" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "1063", + "nodeType": "IF_STATEMENT", + "src": { + "end": "16183", + "id": "1064", + "length": "112", + "line": "441", + "parentIndex": "1049", + "start": "16072" + } + } + } + ] + }, + "id": "1032", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_upgradeToAndCall", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1034", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1036", + "name": "newImplementation", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1036", + "src": { + "column": "31", + "end": "15926", + "id": "1037", + "length": "25", + "line": "438", + "parentIndex": "1034", + "start": "15902" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1038", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "15908", + "id": "1039", + "length": "7", + "line": "438", + "parentIndex": "1036", + "start": "15902" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1040", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1040", + "src": { + "column": "58", + "end": "15945", + "id": "1041", + "length": "17", + "line": "438", + "parentIndex": "1034", + "start": "15929" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1042", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "58", + "end": "15933", + "id": "1043", + "length": "5", + "line": "438", + "parentIndex": "1040", + "start": "15929" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1044", + "name": "forceCall", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1044", + "src": { + "column": "77", + "end": "15961", + "id": "1045", + "length": "14", + "line": "438", + "parentIndex": "1034", + "start": "15948" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "1046", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "77", + "end": "15951", + "id": "1047", + "length": "4", + "line": "438", + "parentIndex": "1044", + "start": "15948" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "31", + "end": "15961", + "id": "1035", + "length": "60", + "line": "438", + "parentIndex": "1032", + "start": "15902" + } + }, + "returnParameters": { + "id": "1048", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "16189", + "id": "1033", + "length": "315", + "line": "438", + "parentIndex": "1032", + "start": "15875" + } + }, + "scope": "917", + "src": { + "column": "4", + "end": "16189", + "id": "1033", + "length": "315", + "line": "438", + "parentIndex": "917", + "start": "15875" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_bool$", + "typeString": "function(address,bytes,bool)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1107", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "108", + "end": "17675", + "id": "1108", + "length": "1210", + "line": "451", + "parentIndex": "1090", + "start": "16466" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "1111" + ], + "declarations": [ + { + "id": "1111", + "mutability": "MUTABLE", + "name": "oldImplementation", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1107", + "src": { + "column": "8", + "end": "16500", + "id": "1112", + "length": "25", + "line": "452", + "parentIndex": "1109", + "start": "16476" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1113", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "16482", + "id": "1114", + "length": "7", + "line": "452", + "parentIndex": "1111", + "start": "16476" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "1109", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1117", + "name": "_getImplementation", + "nodeType": "IDENTIFIER", + "src": { + "column": "36", + "end": "16521", + "id": "1118", + "length": "18", + "line": "452", + "parentIndex": "1115", + "start": "16504" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1115", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "36", + "end": "16523", + "id": "1116", + "length": "20", + "line": "452", + "parentIndex": "1109", + "start": "16504" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "16524", + "id": "1110", + "length": "49", + "line": "452", + "parentIndex": "1107", + "start": "16476" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1123", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1123", + "src": { + "column": "27", + "end": "16612", + "id": "1124", + "length": "17", + "line": "455", + "parentIndex": "1119", + "start": "16596" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1121", + "name": "_setImplementation", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "16594", + "id": "1122", + "length": "18", + "line": "455", + "parentIndex": "1119", + "start": "16577" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1119", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "16613", + "id": "1120", + "length": "37", + "line": "455", + "parentIndex": "1107", + "start": "16577" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "1139", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "42", + "end": "16735", + "id": "1140", + "length": "78", + "line": "456", + "parentIndex": "1090", + "start": "16658" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1147", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1147", + "src": { + "column": "41", + "end": "16717", + "id": "1148", + "length": "17", + "line": "457", + "parentIndex": "1141", + "start": "16701" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1149", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1149", + "src": { + "column": "60", + "end": "16723", + "id": "1150", + "length": "4", + "line": "457", + "parentIndex": "1141", + "start": "16720" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1145", + "name": "Address", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "251", + "src": { + "column": "12", + "end": "16678", + "id": "1146", + "length": "7", + "line": "457", + "parentIndex": "1143", + "start": "16672" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + }, + "id": "1143", + "memberName": "functionDelegateCall", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "16699", + "id": "1144", + "length": "28", + "line": "457", + "parentIndex": "1141", + "start": "16672" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + }, + "id": "1141", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "16724", + "id": "1142", + "length": "53", + "line": "457", + "parentIndex": "1139", + "start": "16672" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$", + "typeString": "function(address,bytes)" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1127", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1129", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1133", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1133", + "src": { + "column": "12", + "end": "16631", + "id": "1134", + "length": "4", + "line": "456", + "parentIndex": "1131", + "start": "16628" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + "id": "1131", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "16638", + "id": "1132", + "length": "11", + "line": "456", + "parentIndex": "1129", + "start": "16628" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1135", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "26", + "end": "16642", + "id": "1136", + "length": "1", + "line": "456", + "parentIndex": "1129", + "start": "16642" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "12", + "end": "16642", + "id": "1130", + "length": "15", + "line": "456", + "parentIndex": "1127", + "start": "16628" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "OR", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1137", + "name": "forceCall", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1137", + "src": { + "column": "31", + "end": "16655", + "id": "1138", + "length": "9", + "line": "456", + "parentIndex": "1127", + "start": "16647" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "src": { + "column": "12", + "end": "16655", + "id": "1128", + "length": "28", + "line": "456", + "parentIndex": "1125", + "start": "16628" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "1125", + "nodeType": "IF_STATEMENT", + "src": { + "end": "16735", + "id": "1126", + "length": "112", + "line": "456", + "parentIndex": "1107", + "start": "16624" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "1153" + ], + "declarations": [ + { + "id": "1153", + "mutability": "MUTABLE", + "name": "rollbackTesting", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1107", + "src": { + "column": "8", + "end": "16852", + "id": "1154", + "length": "47", + "line": "461", + "parentIndex": "1151", + "start": "16806" + }, + "storageLocation": "STORAGE", + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + }, + "typeName": { + "id": "1155", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1157", + "name": "StorageSlot", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "767", + "src": { + "column": "8", + "end": "16816", + "id": "1158", + "length": "11", + "line": "461", + "parentIndex": "1155", + "start": "16806" + } + }, + "referencedDeclaration": "767", + "src": { + "column": "8", + "end": "16828", + "id": "1156", + "length": "23", + "line": "461", + "parentIndex": "1153", + "start": "16806" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "1151", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1165", + "name": "_ROLLBACK_SLOT", + "nodeType": "IDENTIFIER", + "src": { + "column": "85", + "end": "16896", + "id": "1166", + "length": "14", + "line": "461", + "parentIndex": "1159", + "start": "16883" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1163", + "name": "StorageSlot", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "767", + "src": { + "column": "58", + "end": "16866", + "id": "1164", + "length": "11", + "line": "461", + "parentIndex": "1161", + "start": "16856" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1161", + "memberName": "getBooleanSlot", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "58", + "end": "16881", + "id": "1162", + "length": "26", + "line": "461", + "parentIndex": "1159", + "start": "16856" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1159", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "58", + "end": "16897", + "id": "1160", + "length": "42", + "line": "461", + "parentIndex": "1151", + "start": "16856" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "16898", + "id": "1152", + "length": "93", + "line": "461", + "parentIndex": "1107", + "start": "16806" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "1175", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "36", + "end": "17669", + "id": "1176", + "length": "734", + "line": "462", + "parentIndex": "1090", + "start": "16936" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1179", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1183", + "name": "rollbackTesting", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1151", + "src": { + "column": "12", + "end": "17040", + "id": "1184", + "length": "15", + "line": "464", + "parentIndex": "1181", + "start": "17026" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1181", + "memberName": "value", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "17046", + "id": "1182", + "length": "21", + "line": "464", + "parentIndex": "1179", + "start": "17026" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "1185", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "17053", + "id": "1186", + "length": "4", + "line": "464", + "parentIndex": "1179", + "start": "17050" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + "src": { + "column": "12", + "end": "17053", + "id": "1180", + "length": "28", + "line": "464", + "parentIndex": "1175", + "start": "17026" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1177", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "17054", + "id": "1178", + "length": "29", + "line": "464", + "parentIndex": "1175", + "start": "17026" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function__t_string_literal$_t_function_$_t_string_literal$", + "typeString": "function(string memory,string memory)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1193", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1193", + "src": { + "column": "16", + "end": "17130", + "id": "1194", + "length": "17", + "line": "466", + "parentIndex": "1187", + "start": "17114" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"upgradeTo(address)\"" + }, + { + "typeIdentifier": "t_function_$_t_string_literal$", + "typeString": "function(literal_string \"upgradeTo(address)\")" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "75706772616465546f286164647265737329", + "id": "1201", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "20", + "end": "17213", + "id": "1202", + "length": "20", + "line": "468", + "parentIndex": "1195", + "start": "17194" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"upgradeTo(address)\"" + }, + "value": "upgradeTo(address)" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"upgradeTo(address)\"" + } + ], + "id": "1203", + "name": "oldImplementation", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "17252", + "id": "1204", + "length": "17", + "line": "469", + "parentIndex": "1195", + "start": "17236" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_string_literal$", + "typeString": "function(literal_string \"upgradeTo(address)\")" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1199", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "17151", + "id": "1200", + "length": "3", + "line": "467", + "parentIndex": "1197", + "start": "17149" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "1197", + "memberName": "encodeWithSignature", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "17171", + "id": "1198", + "length": "23", + "line": "467", + "parentIndex": "1195", + "start": "17149" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "1195", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "17270", + "id": "1196", + "length": "122", + "line": "467", + "parentIndex": "1187", + "start": "17149" + }, + "typeDescription": { + "typeIdentifier": "t_function__t_string_literal$_t_function_$_t_string_literal$", + "typeString": "function(string memory,string memory)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1191", + "name": "Address", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "251", + "src": { + "column": "12", + "end": "17074", + "id": "1192", + "length": "7", + "line": "465", + "parentIndex": "1189", + "start": "17068" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + }, + "id": "1189", + "memberName": "functionDelegateCall", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "17095", + "id": "1190", + "length": "28", + "line": "465", + "parentIndex": "1187", + "start": "17068" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + }, + "id": "1187", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "17284", + "id": "1188", + "length": "217", + "line": "465", + "parentIndex": "1175", + "start": "17068" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_function__t_string_literal$_t_function_$_t_string_literal$", + "typeString": "function(address,function(string memory,string memory))" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1207", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1211", + "name": "rollbackTesting", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1151", + "src": { + "column": "12", + "end": "17313", + "id": "1212", + "length": "15", + "line": "472", + "parentIndex": "1209", + "start": "17299" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1209", + "memberName": "value", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "17319", + "id": "1210", + "length": "21", + "line": "472", + "parentIndex": "1207", + "start": "17299" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "66616c7365", + "id": "1213", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "17327", + "id": "1214", + "length": "5", + "line": "472", + "parentIndex": "1207", + "start": "17323" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + }, + "src": { + "column": "12", + "end": "17327", + "id": "1208", + "length": "29", + "line": "472", + "parentIndex": "1175", + "start": "17299" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1205", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "17328", + "id": "1206", + "length": "30", + "line": "472", + "parentIndex": "1175", + "start": "17299" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1219", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1221", + "name": "oldImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1109", + "src": { + "column": "20", + "end": "17410", + "id": "1222", + "length": "17", + "line": "474", + "parentIndex": "1219", + "start": "17394" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1225", + "name": "_getImplementation", + "nodeType": "IDENTIFIER", + "src": { + "column": "41", + "end": "17432", + "id": "1226", + "length": "18", + "line": "474", + "parentIndex": "1223", + "start": "17415" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1223", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "41", + "end": "17434", + "id": "1224", + "length": "20", + "line": "474", + "parentIndex": "1219", + "start": "17415" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "src": { + "column": "20", + "end": "17434", + "id": "1220", + "length": "41", + "line": "474", + "parentIndex": "1215", + "start": "17394" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "45524331393637557067726164653a207570677261646520627265616b732066757274686572207570677261646573", + "id": "1227", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "63", + "end": "17485", + "id": "1228", + "length": "49", + "line": "474", + "parentIndex": "1215", + "start": "17437" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC1967Upgrade: upgrade breaks further upgrades\"" + }, + "value": "ERC1967Upgrade: upgrade breaks further upgrades" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1217", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "17392", + "id": "1218", + "length": "7", + "line": "474", + "parentIndex": "1215", + "start": "17386" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1215", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "17486", + "id": "1216", + "length": "101", + "line": "474", + "parentIndex": "1175", + "start": "17386" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1233", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1233", + "src": { + "column": "31", + "end": "17611", + "id": "1234", + "length": "17", + "line": "476", + "parentIndex": "1229", + "start": "17595" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1231", + "name": "_setImplementation", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "17593", + "id": "1232", + "length": "18", + "line": "476", + "parentIndex": "1229", + "start": "17576" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1229", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "17612", + "id": "1230", + "length": "37", + "line": "476", + "parentIndex": "1175", + "start": "17576" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1237", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1237", + "src": { + "column": "26", + "end": "17657", + "id": "1238", + "length": "17", + "line": "477", + "parentIndex": "1175", + "start": "17641" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1239", + "name": "Upgraded", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "929", + "src": { + "column": "17", + "end": "17639", + "id": "1240", + "length": "8", + "line": "477", + "parentIndex": "1175", + "start": "17632" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", + "typeString": "event ERC1967Upgrade.Upgraded" + } + } + }, + "id": "1235", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "12", + "end": "17659", + "id": "1236", + "length": "33", + "line": "477", + "parentIndex": "1090", + "start": "17627" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.UnaryPrefix", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1173", + "name": "rollbackTesting", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1151", + "src": { + "column": "13", + "end": "16927", + "id": "1174", + "length": "15", + "line": "462", + "parentIndex": "1171", + "start": "16913" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1171", + "memberName": "value", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "13", + "end": "16933", + "id": "1172", + "length": "21", + "line": "462", + "parentIndex": "1169", + "start": "16913" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1169", + "nodeType": "UNARY_OPERATION", + "operator": "NOT", + "src": { + "column": "12", + "end": "16933", + "id": "1170", + "length": "22", + "line": "462", + "parentIndex": "1090", + "start": "16912" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1167", + "nodeType": "IF_STATEMENT", + "src": { + "end": "17669", + "id": "1168", + "length": "762", + "line": "462", + "parentIndex": "1107", + "start": "16908" + } + } + } + ] + }, + "id": "1090", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_upgradeToAndCallSecure", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1092", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1094", + "name": "newImplementation", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1094", + "src": { + "column": "37", + "end": "16419", + "id": "1095", + "length": "25", + "line": "451", + "parentIndex": "1092", + "start": "16395" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1096", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "37", + "end": "16401", + "id": "1097", + "length": "7", + "line": "451", + "parentIndex": "1094", + "start": "16395" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1098", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1098", + "src": { + "column": "64", + "end": "16438", + "id": "1099", + "length": "17", + "line": "451", + "parentIndex": "1092", + "start": "16422" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1100", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "64", + "end": "16426", + "id": "1101", + "length": "5", + "line": "451", + "parentIndex": "1098", + "start": "16422" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1102", + "name": "forceCall", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1102", + "src": { + "column": "83", + "end": "16454", + "id": "1103", + "length": "14", + "line": "451", + "parentIndex": "1092", + "start": "16441" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "1104", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "83", + "end": "16444", + "id": "1105", + "length": "4", + "line": "451", + "parentIndex": "1102", + "start": "16441" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "37", + "end": "16454", + "id": "1093", + "length": "60", + "line": "451", + "parentIndex": "1090", + "start": "16395" + } + }, + "returnParameters": { + "id": "1106", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "17675", + "id": "1091", + "length": "1314", + "line": "451", + "parentIndex": "1090", + "start": "16362" + } + }, + "scope": "917", + "src": { + "column": "4", + "end": "17675", + "id": "1091", + "length": "1314", + "line": "451", + "parentIndex": "917", + "start": "16362" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_bool$", + "typeString": "function(address,bytes,bool)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1259", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "100", + "end": "18291", + "id": "1260", + "length": "217", + "line": "487", + "parentIndex": "1242", + "start": "18075" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1265", + "name": "newBeacon", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1265", + "src": { + "column": "19", + "end": "18104", + "id": "1266", + "length": "9", + "line": "488", + "parentIndex": "1261", + "start": "18096" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1263", + "name": "_setBeacon", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "18094", + "id": "1264", + "length": "10", + "line": "488", + "parentIndex": "1261", + "start": "18085" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1261", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "18105", + "id": "1262", + "length": "21", + "line": "488", + "parentIndex": "1259", + "start": "18085" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1269", + "name": "newBeacon", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1269", + "src": { + "column": "28", + "end": "18144", + "id": "1270", + "length": "9", + "line": "489", + "parentIndex": "1259", + "start": "18136" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1271", + "name": "BeaconUpgraded", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1433", + "src": { + "column": "13", + "end": "18134", + "id": "1272", + "length": "14", + "line": "489", + "parentIndex": "1259", + "start": "18121" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_ERC1967Upgrade_BeaconUpgraded_\u00261433", + "typeString": "event ERC1967Upgrade.BeaconUpgraded" + } + } + }, + "id": "1267", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "18146", + "id": "1268", + "length": "31", + "line": "489", + "parentIndex": "1242", + "start": "18116" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "1287", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "42", + "end": "18285", + "id": "1288", + "length": "96", + "line": "490", + "parentIndex": "1242", + "start": "18190" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1303", + "name": "newBeacon", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1303", + "src": { + "column": "49", + "end": "18249", + "id": "1304", + "length": "9", + "line": "491", + "parentIndex": "1299", + "start": "18241" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1301", + "name": "IBeacon", + "nodeType": "IDENTIFIER", + "src": { + "column": "41", + "end": "18239", + "id": "1302", + "length": "7", + "line": "491", + "parentIndex": "1299", + "start": "18233" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1299", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "41", + "end": "18250", + "id": "1300", + "length": "18", + "line": "491", + "parentIndex": "1297", + "start": "18233" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "1297", + "memberName": "implementation", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "41", + "end": "18265", + "id": "1298", + "length": "33", + "line": "491", + "parentIndex": "1295", + "start": "18233" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "1295", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "41", + "end": "18267", + "id": "1296", + "length": "35", + "line": "491", + "parentIndex": "1289", + "start": "18233" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "id": "1305", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1305", + "src": { + "column": "78", + "end": "18273", + "id": "1306", + "length": "4", + "line": "491", + "parentIndex": "1289", + "start": "18270" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1293", + "name": "Address", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "251", + "src": { + "column": "12", + "end": "18210", + "id": "1294", + "length": "7", + "line": "491", + "parentIndex": "1291", + "start": "18204" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + }, + "id": "1291", + "memberName": "functionDelegateCall", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "18231", + "id": "1292", + "length": "28", + "line": "491", + "parentIndex": "1289", + "start": "18204" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + }, + "id": "1289", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "18274", + "id": "1290", + "length": "71", + "line": "491", + "parentIndex": "1287", + "start": "18204" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_bytes$", + "typeString": "function(function(),bytes)" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1275", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1277", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1281", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1281", + "src": { + "column": "12", + "end": "18163", + "id": "1282", + "length": "4", + "line": "490", + "parentIndex": "1279", + "start": "18160" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + "id": "1279", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "18170", + "id": "1280", + "length": "11", + "line": "490", + "parentIndex": "1277", + "start": "18160" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1283", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "26", + "end": "18174", + "id": "1284", + "length": "1", + "line": "490", + "parentIndex": "1277", + "start": "18174" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "12", + "end": "18174", + "id": "1278", + "length": "15", + "line": "490", + "parentIndex": "1275", + "start": "18160" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "OR", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1285", + "name": "forceCall", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1285", + "src": { + "column": "31", + "end": "18187", + "id": "1286", + "length": "9", + "line": "490", + "parentIndex": "1275", + "start": "18179" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "src": { + "column": "12", + "end": "18187", + "id": "1276", + "length": "28", + "line": "490", + "parentIndex": "1273", + "start": "18160" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "1273", + "nodeType": "IF_STATEMENT", + "src": { + "end": "18285", + "id": "1274", + "length": "130", + "line": "490", + "parentIndex": "1259", + "start": "18156" + } + } + } + ] + }, + "id": "1242", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_upgradeBeaconToAndCall", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1244", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1246", + "name": "newBeacon", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1246", + "src": { + "column": "37", + "end": "18028", + "id": "1247", + "length": "17", + "line": "487", + "parentIndex": "1244", + "start": "18012" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1248", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "37", + "end": "18018", + "id": "1249", + "length": "7", + "line": "487", + "parentIndex": "1246", + "start": "18012" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1250", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1250", + "src": { + "column": "56", + "end": "18047", + "id": "1251", + "length": "17", + "line": "487", + "parentIndex": "1244", + "start": "18031" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1252", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "56", + "end": "18035", + "id": "1253", + "length": "5", + "line": "487", + "parentIndex": "1250", + "start": "18031" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1254", + "name": "forceCall", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1254", + "src": { + "column": "75", + "end": "18063", + "id": "1255", + "length": "14", + "line": "487", + "parentIndex": "1244", + "start": "18050" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "1256", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "75", + "end": "18053", + "id": "1257", + "length": "4", + "line": "487", + "parentIndex": "1254", + "start": "18050" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "37", + "end": "18063", + "id": "1245", + "length": "52", + "line": "487", + "parentIndex": "1242", + "start": "18012" + } + }, + "returnParameters": { + "id": "1258", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "18291", + "id": "1243", + "length": "313", + "line": "487", + "parentIndex": "1242", + "start": "17979" + } + }, + "scope": "917", + "src": { + "column": "4", + "end": "18291", + "id": "1243", + "length": "313", + "line": "487", + "parentIndex": "917", + "start": "17979" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_bool$", + "typeString": "function(address,bytes,bool)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "1308", + "isConstant": true, + "isStateVariable": true, + "name": "_ADMIN_SLOT", + "nodeType": "VARIABLE_DECLARATION", + "scope": "917", + "src": { + "column": "4", + "end": "18598", + "id": "1309", + "length": "107", + "line": "500", + "parentIndex": "917", + "start": "18492" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "1310", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "18498", + "id": "1311", + "length": "7", + "line": "500", + "parentIndex": "1308", + "start": "18492" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "1313", + "name": "AdminChanged", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "1315", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1316", + "name": "previousAdmin", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1316", + "src": { + "column": "23", + "end": "18716", + "id": "1317", + "length": "21", + "line": "505", + "parentIndex": "1315", + "start": "18696" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1318", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "18702", + "id": "1319", + "length": "7", + "line": "505", + "parentIndex": "1316", + "start": "18696" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1320", + "name": "newAdmin", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1320", + "src": { + "column": "46", + "end": "18734", + "id": "1321", + "length": "16", + "line": "505", + "parentIndex": "1315", + "start": "18719" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1322", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "46", + "end": "18725", + "id": "1323", + "length": "7", + "line": "505", + "parentIndex": "1320", + "start": "18719" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "18736", + "id": "1314", + "length": "60", + "line": "505", + "parentIndex": "1313", + "start": "18677" + } + }, + "src": { + "column": "4", + "end": "18736", + "id": "1314", + "length": "60", + "line": "505", + "parentIndex": "917", + "start": "18677" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_ERC1967Upgrade_AdminChanged_\u00261313", + "typeString": "event ERC1967Upgrade.AdminChanged" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1339", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "57", + "end": "18919", + "id": "1340", + "length": "69", + "line": "510", + "parentIndex": "1325", + "start": "18851" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1351", + "name": "_ADMIN_SLOT", + "nodeType": "IDENTIFIER", + "src": { + "column": "42", + "end": "18905", + "id": "1352", + "length": "11", + "line": "511", + "parentIndex": "1345", + "start": "18895" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1349", + "name": "StorageSlot", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "767", + "src": { + "column": "15", + "end": "18878", + "id": "1350", + "length": "11", + "line": "511", + "parentIndex": "1347", + "start": "18868" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1347", + "memberName": "getAddressSlot", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "18893", + "id": "1348", + "length": "26", + "line": "511", + "parentIndex": "1345", + "start": "18868" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1345", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "18906", + "id": "1346", + "length": "39", + "line": "511", + "parentIndex": "1343", + "start": "18868" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "id": "1343", + "memberName": "value", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "18912", + "id": "1344", + "length": "45", + "line": "511", + "parentIndex": "1339", + "start": "18868" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "functionReturnParameters": "1325", + "id": "1341", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "18913", + "id": "1342", + "length": "53", + "line": "511", + "parentIndex": "1325", + "start": "18861" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + } + ] + }, + "id": "1325", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_getAdmin", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1327", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1329", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1329", + "src": { + "column": "48", + "end": "18848", + "id": "1330", + "length": "7", + "line": "510", + "parentIndex": "1327", + "start": "18842" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1331", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "48", + "end": "18848", + "id": "1332", + "length": "7", + "line": "510", + "parentIndex": "1329", + "start": "18842" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "48", + "end": "18848", + "id": "1328", + "length": "7", + "line": "510", + "parentIndex": "1325", + "start": "18842" + } + }, + "returnParameters": { + "id": "1333", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1335", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1335", + "src": { + "column": "48", + "end": "18848", + "id": "1336", + "length": "7", + "line": "510", + "parentIndex": "1333", + "start": "18842" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1337", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "48", + "end": "18848", + "id": "1338", + "length": "7", + "line": "510", + "parentIndex": "1335", + "start": "18842" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "48", + "end": "18848", + "id": "1334", + "length": "7", + "line": "510", + "parentIndex": "1325", + "start": "18842" + } + }, + "scope": "917", + "src": { + "column": "4", + "end": "18919", + "id": "1326", + "length": "122", + "line": "510", + "parentIndex": "917", + "start": "18798" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1363", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "49", + "end": "19202", + "id": "1364", + "length": "156", + "line": "517", + "parentIndex": "1354", + "start": "19047" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC1967: new admin is the zero address\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1369", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1371", + "name": "newAdmin", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1371", + "src": { + "column": "16", + "end": "19072", + "id": "1372", + "length": "8", + "line": "518", + "parentIndex": "1369", + "start": "19065" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1379", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "19085", + "id": "1380", + "length": "1", + "line": "518", + "parentIndex": "1373", + "start": "19085" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1375", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "28", + "end": "19083", + "id": "1376", + "length": "7", + "line": "518", + "parentIndex": "1373", + "start": "19077" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1377", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "19083", + "id": "1378", + "length": "7", + "line": "518", + "parentIndex": "1375", + "start": "19077" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1373", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "28", + "end": "19086", + "id": "1374", + "length": "10", + "line": "518", + "parentIndex": "1369", + "start": "19077" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "16", + "end": "19086", + "id": "1370", + "length": "22", + "line": "518", + "parentIndex": "1365", + "start": "19065" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373", + "id": "1381", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "40", + "end": "19128", + "id": "1382", + "length": "40", + "line": "518", + "parentIndex": "1365", + "start": "19089" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC1967: new admin is the zero address\"" + }, + "value": "ERC1967: new admin is the zero address" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1367", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "19063", + "id": "1368", + "length": "7", + "line": "518", + "parentIndex": "1365", + "start": "19057" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1365", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "19129", + "id": "1366", + "length": "73", + "line": "518", + "parentIndex": "1363", + "start": "19057" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1385", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1395", + "name": "_ADMIN_SLOT", + "nodeType": "IDENTIFIER", + "src": { + "column": "35", + "end": "19177", + "id": "1396", + "length": "11", + "line": "519", + "parentIndex": "1389", + "start": "19167" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1393", + "name": "StorageSlot", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "767", + "src": { + "column": "8", + "end": "19150", + "id": "1394", + "length": "11", + "line": "519", + "parentIndex": "1391", + "start": "19140" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1391", + "memberName": "getAddressSlot", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "19165", + "id": "1392", + "length": "26", + "line": "519", + "parentIndex": "1389", + "start": "19140" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1389", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "19178", + "id": "1390", + "length": "39", + "line": "519", + "parentIndex": "1387", + "start": "19140" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "id": "1387", + "memberName": "value", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "19184", + "id": "1388", + "length": "45", + "line": "519", + "parentIndex": "1385", + "start": "19140" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1397", + "name": "newAdmin", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1397", + "src": { + "column": "56", + "end": "19195", + "id": "1398", + "length": "8", + "line": "519", + "parentIndex": "1385", + "start": "19188" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "src": { + "column": "8", + "end": "19195", + "id": "1386", + "length": "56", + "line": "519", + "parentIndex": "1363", + "start": "19140" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "id": "1383", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "19196", + "id": "1384", + "length": "57", + "line": "519", + "parentIndex": "1363", + "start": "19140" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + } + ] + }, + "id": "1354", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_setAdmin", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1356", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1358", + "name": "newAdmin", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1358", + "src": { + "column": "23", + "end": "19036", + "id": "1359", + "length": "16", + "line": "517", + "parentIndex": "1356", + "start": "19021" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1360", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "19027", + "id": "1361", + "length": "7", + "line": "517", + "parentIndex": "1358", + "start": "19021" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "19036", + "id": "1357", + "length": "16", + "line": "517", + "parentIndex": "1354", + "start": "19021" + } + }, + "returnParameters": { + "id": "1362", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "19202", + "id": "1355", + "length": "201", + "line": "517", + "parentIndex": "1354", + "start": "19002" + } + }, + "scope": "917", + "src": { + "column": "4", + "end": "19202", + "id": "1355", + "length": "201", + "line": "517", + "parentIndex": "917", + "start": "19002" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1409", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "53", + "end": "19448", + "id": "1410", + "length": "86", + "line": "527", + "parentIndex": "1400", + "start": "19363" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1415", + "name": "_getAdmin", + "nodeType": "IDENTIFIER", + "src": { + "column": "26", + "end": "19399", + "id": "1416", + "length": "9", + "line": "528", + "parentIndex": "1413", + "start": "19391" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1413", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "26", + "end": "19401", + "id": "1414", + "length": "11", + "line": "528", + "parentIndex": "1409", + "start": "19391" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1417", + "name": "newAdmin", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1417", + "src": { + "column": "39", + "end": "19411", + "id": "1418", + "length": "8", + "line": "528", + "parentIndex": "1409", + "start": "19404" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1419", + "name": "AdminChanged", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1313", + "src": { + "column": "13", + "end": "19389", + "id": "1420", + "length": "12", + "line": "528", + "parentIndex": "1409", + "start": "19378" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_ERC1967Upgrade_AdminChanged_\u00261313", + "typeString": "event ERC1967Upgrade.AdminChanged" + } + } + }, + "id": "1411", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "19413", + "id": "1412", + "length": "41", + "line": "528", + "parentIndex": "1400", + "start": "19373" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1425", + "name": "newAdmin", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1425", + "src": { + "column": "18", + "end": "19440", + "id": "1426", + "length": "8", + "line": "529", + "parentIndex": "1421", + "start": "19433" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1423", + "name": "_setAdmin", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "19431", + "id": "1424", + "length": "9", + "line": "529", + "parentIndex": "1421", + "start": "19423" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1421", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "19441", + "id": "1422", + "length": "19", + "line": "529", + "parentIndex": "1409", + "start": "19423" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ] + }, + "id": "1400", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_changeAdmin", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1402", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1404", + "name": "newAdmin", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1404", + "src": { + "column": "26", + "end": "19351", + "id": "1405", + "length": "16", + "line": "527", + "parentIndex": "1402", + "start": "19336" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1406", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "26", + "end": "19342", + "id": "1407", + "length": "7", + "line": "527", + "parentIndex": "1404", + "start": "19336" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "26", + "end": "19351", + "id": "1403", + "length": "16", + "line": "527", + "parentIndex": "1400", + "start": "19336" + } + }, + "returnParameters": { + "id": "1408", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "19448", + "id": "1401", + "length": "135", + "line": "527", + "parentIndex": "1400", + "start": "19314" + } + }, + "scope": "917", + "src": { + "column": "4", + "end": "19448", + "id": "1401", + "length": "135", + "line": "527", + "parentIndex": "917", + "start": "19314" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "1428", + "isConstant": true, + "isStateVariable": true, + "name": "_BEACON_SLOT", + "nodeType": "VARIABLE_DECLARATION", + "scope": "917", + "src": { + "column": "4", + "end": "19799", + "id": "1429", + "length": "108", + "line": "536", + "parentIndex": "917", + "start": "19692" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "1430", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "19698", + "id": "1431", + "length": "7", + "line": "536", + "parentIndex": "1428", + "start": "19692" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "1433", + "name": "BeaconUpgraded", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "1435", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1436", + "indexed": true, + "name": "beacon", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1436", + "src": { + "column": "25", + "end": "19913", + "id": "1437", + "length": "22", + "line": "541", + "parentIndex": "1435", + "start": "19892" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1438", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "25", + "end": "19898", + "id": "1439", + "length": "7", + "line": "541", + "parentIndex": "1436", + "start": "19892" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "19915", + "id": "1434", + "length": "45", + "line": "541", + "parentIndex": "1433", + "start": "19871" + } + }, + "src": { + "column": "4", + "end": "19915", + "id": "1434", + "length": "45", + "line": "541", + "parentIndex": "917", + "start": "19871" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_ERC1967Upgrade_BeaconUpgraded_\u00261433", + "typeString": "event ERC1967Upgrade.BeaconUpgraded" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1455", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "58", + "end": "20101", + "id": "1456", + "length": "70", + "line": "546", + "parentIndex": "1441", + "start": "20032" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1467", + "name": "_BEACON_SLOT", + "nodeType": "IDENTIFIER", + "src": { + "column": "42", + "end": "20087", + "id": "1468", + "length": "12", + "line": "547", + "parentIndex": "1461", + "start": "20076" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1465", + "name": "StorageSlot", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "767", + "src": { + "column": "15", + "end": "20059", + "id": "1466", + "length": "11", + "line": "547", + "parentIndex": "1463", + "start": "20049" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1463", + "memberName": "getAddressSlot", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "20074", + "id": "1464", + "length": "26", + "line": "547", + "parentIndex": "1461", + "start": "20049" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1461", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "20088", + "id": "1462", + "length": "40", + "line": "547", + "parentIndex": "1459", + "start": "20049" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "id": "1459", + "memberName": "value", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "20094", + "id": "1460", + "length": "46", + "line": "547", + "parentIndex": "1455", + "start": "20049" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "functionReturnParameters": "1441", + "id": "1457", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "20095", + "id": "1458", + "length": "54", + "line": "547", + "parentIndex": "1441", + "start": "20042" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + } + ] + }, + "id": "1441", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_getBeacon", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1443", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1445", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1445", + "src": { + "column": "49", + "end": "20029", + "id": "1446", + "length": "7", + "line": "546", + "parentIndex": "1443", + "start": "20023" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1447", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "49", + "end": "20029", + "id": "1448", + "length": "7", + "line": "546", + "parentIndex": "1445", + "start": "20023" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "49", + "end": "20029", + "id": "1444", + "length": "7", + "line": "546", + "parentIndex": "1441", + "start": "20023" + } + }, + "returnParameters": { + "id": "1449", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1451", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1451", + "src": { + "column": "49", + "end": "20029", + "id": "1452", + "length": "7", + "line": "546", + "parentIndex": "1449", + "start": "20023" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1453", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "49", + "end": "20029", + "id": "1454", + "length": "7", + "line": "546", + "parentIndex": "1451", + "start": "20023" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "49", + "end": "20029", + "id": "1450", + "length": "7", + "line": "546", + "parentIndex": "1441", + "start": "20023" + } + }, + "scope": "917", + "src": { + "column": "4", + "end": "20101", + "id": "1442", + "length": "124", + "line": "546", + "parentIndex": "917", + "start": "19978" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1479", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "51", + "end": "20588", + "id": "1480", + "length": "358", + "line": "553", + "parentIndex": "1470", + "start": "20231" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC1967: new beacon is not a contract\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1491", + "name": "newBeacon", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1491", + "src": { + "column": "31", + "end": "20289", + "id": "1492", + "length": "9", + "line": "555", + "parentIndex": "1485", + "start": "20281" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1489", + "name": "Address", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "251", + "src": { + "column": "12", + "end": "20268", + "id": "1490", + "length": "7", + "line": "555", + "parentIndex": "1487", + "start": "20262" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + }, + "id": "1487", + "memberName": "isContract", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "20279", + "id": "1488", + "length": "18", + "line": "555", + "parentIndex": "1485", + "start": "20262" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + }, + "id": "1485", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "20290", + "id": "1486", + "length": "29", + "line": "555", + "parentIndex": "1481", + "start": "20262" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "hexValue": "455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374", + "id": "1493", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "12", + "end": "20343", + "id": "1494", + "length": "39", + "line": "556", + "parentIndex": "1481", + "start": "20305" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC1967: new beacon is not a contract\"" + }, + "value": "ERC1967: new beacon is not a contract" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1483", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "20247", + "id": "1484", + "length": "7", + "line": "554", + "parentIndex": "1481", + "start": "20241" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1481", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "20353", + "id": "1482", + "length": "113", + "line": "554", + "parentIndex": "1479", + "start": "20241" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "typeString": "function(function(address),string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC1967: beacon implementation is not a contract\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1513", + "name": "newBeacon", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1513", + "src": { + "column": "39", + "end": "20420", + "id": "1514", + "length": "9", + "line": "559", + "parentIndex": "1509", + "start": "20412" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1511", + "name": "IBeacon", + "nodeType": "IDENTIFIER", + "src": { + "column": "31", + "end": "20410", + "id": "1512", + "length": "7", + "line": "559", + "parentIndex": "1509", + "start": "20404" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1509", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "31", + "end": "20421", + "id": "1510", + "length": "18", + "line": "559", + "parentIndex": "1507", + "start": "20404" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "1507", + "memberName": "implementation", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "31", + "end": "20436", + "id": "1508", + "length": "33", + "line": "559", + "parentIndex": "1505", + "start": "20404" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "1505", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "31", + "end": "20438", + "id": "1506", + "length": "35", + "line": "559", + "parentIndex": "1499", + "start": "20404" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1503", + "name": "Address", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "251", + "src": { + "column": "12", + "end": "20391", + "id": "1504", + "length": "7", + "line": "559", + "parentIndex": "1501", + "start": "20385" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + }, + "id": "1501", + "memberName": "isContract", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "20402", + "id": "1502", + "length": "18", + "line": "559", + "parentIndex": "1499", + "start": "20385" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + }, + "id": "1499", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "20439", + "id": "1500", + "length": "55", + "line": "559", + "parentIndex": "1495", + "start": "20385" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + ], + "hexValue": "455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374", + "id": "1515", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "12", + "end": "20503", + "id": "1516", + "length": "50", + "line": "560", + "parentIndex": "1495", + "start": "20454" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ERC1967: beacon implementation is not a contract\"" + }, + "value": "ERC1967: beacon implementation is not a contract" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1497", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "20370", + "id": "1498", + "length": "7", + "line": "558", + "parentIndex": "1495", + "start": "20364" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1495", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "20513", + "id": "1496", + "length": "150", + "line": "558", + "parentIndex": "1479", + "start": "20364" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_string_literal$", + "typeString": "function(function(function()),string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1519", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1529", + "name": "_BEACON_SLOT", + "nodeType": "IDENTIFIER", + "src": { + "column": "35", + "end": "20562", + "id": "1530", + "length": "12", + "line": "562", + "parentIndex": "1523", + "start": "20551" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1527", + "name": "StorageSlot", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "767", + "src": { + "column": "8", + "end": "20534", + "id": "1528", + "length": "11", + "line": "562", + "parentIndex": "1525", + "start": "20524" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1525", + "memberName": "getAddressSlot", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "20549", + "id": "1526", + "length": "26", + "line": "562", + "parentIndex": "1523", + "start": "20524" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StorageSlot_$767", + "typeString": "contract StorageSlot" + } + } + }, + "id": "1523", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "20563", + "id": "1524", + "length": "40", + "line": "562", + "parentIndex": "1521", + "start": "20524" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "id": "1521", + "memberName": "value", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "20569", + "id": "1522", + "length": "46", + "line": "562", + "parentIndex": "1519", + "start": "20524" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1531", + "name": "newBeacon", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1531", + "src": { + "column": "57", + "end": "20581", + "id": "1532", + "length": "9", + "line": "562", + "parentIndex": "1519", + "start": "20573" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "src": { + "column": "8", + "end": "20581", + "id": "1520", + "length": "58", + "line": "562", + "parentIndex": "1479", + "start": "20524" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "id": "1517", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "20582", + "id": "1518", + "length": "59", + "line": "562", + "parentIndex": "1479", + "start": "20524" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + } + ] + }, + "id": "1470", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_setBeacon", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1472", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1474", + "name": "newBeacon", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1474", + "src": { + "column": "24", + "end": "20220", + "id": "1475", + "length": "17", + "line": "553", + "parentIndex": "1472", + "start": "20204" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1476", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "20210", + "id": "1477", + "length": "7", + "line": "553", + "parentIndex": "1474", + "start": "20204" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "20220", + "id": "1473", + "length": "17", + "line": "553", + "parentIndex": "1470", + "start": "20204" + } + }, + "returnParameters": { + "id": "1478", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "20588", + "id": "1471", + "length": "405", + "line": "553", + "parentIndex": "1470", + "start": "20184" + } + }, + "scope": "917", + "src": { + "column": "4", + "end": "20588", + "id": "1471", + "length": "405", + "line": "553", + "parentIndex": "917", + "start": "20184" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "PRIVATE" + } + } + ], + "src": { + "end": "20590", + "length": "6370", + "line": "392", + "parentIndex": "902", + "start": "14221" + } + } + } + ] + }, + "src": { + "id": 903, + "line": 392, + "start": 14221, + "end": 20590, + "length": 6370, + "parent_index": 118 + } + }, + { + "id": 1533, + "license": "MIT", + "name": "BeaconProxy", + "absolute_path": "BeaconProxy.sol", + "exported_symbols": [ + { + "id": 1533, + "name": "BeaconProxy", + "absolute_path": "BeaconProxy.sol" + }, + { + "id": 902, + "name": "ERC1967Upgrade", + "absolute_path": "ERC1967Upgrade.sol" + }, + { + "id": 160, + "name": "Proxy", + "absolute_path": "Proxy.sol" + }, + { + "id": 119, + "name": "IBeacon", + "absolute_path": "IBeacon.sol" + }, + { + "id": 119, + "name": "IBeacon", + "absolute_path": "IBeacon.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "1545", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "20648", + "id": "1546", + "length": "23", + "line": "568", + "parentIndex": "1533", + "start": "20626" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IBeacon.sol", + "file": "./IBeacon.sol", + "id": "1550", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1533", + "sourceUnit": "902", + "src": { + "end": "20673", + "length": "23", + "line": "570", + "parentIndex": "1533", + "start": "20651" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "Proxy.sol", + "file": "../Proxy.sol", + "id": "1551", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1533", + "sourceUnit": "902", + "src": { + "end": "20696", + "length": "22", + "line": "571", + "parentIndex": "1533", + "start": "20675" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ERC1967Upgrade.sol", + "file": "../ERC1967/ERC1967Upgrade.sol", + "id": "1552", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1533", + "sourceUnit": "902", + "src": { + "end": "20736", + "length": "39", + "line": "572", + "parentIndex": "1533", + "start": "20698" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "1556", + "name": "Proxy", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "160", + "src": { + "column": "24", + "end": "21121", + "id": "1557", + "length": "5", + "line": "582", + "parentIndex": "1553", + "start": "21117" + } + }, + "id": "1554", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "24", + "end": "21121", + "id": "1555", + "length": "5", + "line": "582", + "parentIndex": "1553", + "start": "21117" + } + }, + { + "baseName": { + "id": "1560", + "name": "ERC1967Upgrade", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "902", + "src": { + "column": "31", + "end": "21137", + "id": "1561", + "length": "14", + "line": "582", + "parentIndex": "1553", + "start": "21124" + } + }, + "id": "1558", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "31", + "end": "21137", + "id": "1559", + "length": "14", + "line": "582", + "parentIndex": "1553", + "start": "21124" + } + } + ], + "contractDependencies": [ + "160", + "902", + "1550", + "1551", + "1552" + ], + "fullyImplemented": true, + "id": "1553", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "160", + "902", + "1553", + "1550", + "1551", + "1552" + ], + "name": "BeaconProxy", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1576", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "59", + "end": "21779", + "id": "1577", + "length": "150", + "line": "594", + "parentIndex": "1563", + "start": "21630" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1582", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1584", + "name": "_BEACON_SLOT", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1428", + "src": { + "column": "15", + "end": "21658", + "id": "1585", + "length": "12", + "line": "595", + "parentIndex": "1582", + "start": "21647" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function__t_string_literal$", + "typeString": "function(function(string memory))" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1592", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function__t_string_literal$", + "typeString": "function(string memory)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"eip1967.proxy.beacon\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "656970313936372e70726f78792e626561636f6e", + "id": "1604", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "57", + "end": "21710", + "id": "1605", + "length": "22", + "line": "595", + "parentIndex": "1600", + "start": "21689" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"eip1967.proxy.beacon\"" + }, + "value": "eip1967.proxy.beacon" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1602", + "name": "keccak256", + "nodeType": "IDENTIFIER", + "src": { + "column": "47", + "end": "21687", + "id": "1603", + "length": "9", + "line": "595", + "parentIndex": "1600", + "start": "21679" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1600", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "47", + "end": "21711", + "id": "1601", + "length": "33", + "line": "595", + "parentIndex": "1594", + "start": "21679" + }, + "typeDescription": { + "typeIdentifier": "t_function__t_string_literal$", + "typeString": "function(string memory)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": "1596", + "name": "uint256", + "nodeType": "IDENTIFIER", + "src": { + "column": "39", + "end": "21677", + "id": "1597", + "length": "7", + "line": "595", + "parentIndex": "1594", + "start": "21671" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "typeName": { + "id": "1598", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "39", + "end": "21677", + "id": "1599", + "length": "7", + "line": "595", + "parentIndex": "1596", + "start": "21671" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "id": "1594", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "39", + "end": "21712", + "id": "1595", + "length": "42", + "line": "595", + "parentIndex": "1592", + "start": "21671" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function__t_string_literal$", + "typeString": "function(function(string memory))" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "1606", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "84", + "end": "21716", + "id": "1607", + "length": "1", + "line": "595", + "parentIndex": "1592", + "start": "21716" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "39", + "end": "21716", + "id": "1593", + "length": "46", + "line": "595", + "parentIndex": "1586", + "start": "21671" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function__t_string_literal$", + "typeString": "function(function(string memory))" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": "1588", + "name": "bytes32", + "nodeType": "IDENTIFIER", + "src": { + "column": "31", + "end": "21669", + "id": "1589", + "length": "7", + "line": "595", + "parentIndex": "1586", + "start": "21663" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes32$", + "typeString": "function(bytes32)" + }, + "typeName": { + "id": "1590", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "21669", + "id": "1591", + "length": "7", + "line": "595", + "parentIndex": "1588", + "start": "21663" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + } + }, + "id": "1586", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "31", + "end": "21717", + "id": "1587", + "length": "55", + "line": "595", + "parentIndex": "1582", + "start": "21663" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function__t_string_literal$", + "typeString": "function(function(function(string memory)))" + } + } + }, + "src": { + "column": "15", + "end": "21717", + "id": "1583", + "length": "71", + "line": "595", + "parentIndex": "1578", + "start": "21647" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1580", + "name": "assert", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "21645", + "id": "1581", + "length": "6", + "line": "595", + "parentIndex": "1578", + "start": "21640" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1578", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "21718", + "id": "1579", + "length": "79", + "line": "595", + "parentIndex": "1576", + "start": "21640" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$", + "typeString": "function(bool)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1612", + "name": "beacon", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1612", + "src": { + "column": "32", + "end": "21758", + "id": "1613", + "length": "6", + "line": "596", + "parentIndex": "1608", + "start": "21753" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1614", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1614", + "src": { + "column": "40", + "end": "21764", + "id": "1615", + "length": "4", + "line": "596", + "parentIndex": "1608", + "start": "21761" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "hexValue": "66616c7365", + "id": "1616", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "46", + "end": "21771", + "id": "1617", + "length": "5", + "line": "596", + "parentIndex": "1608", + "start": "21767" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1610", + "name": "_upgradeBeaconToAndCall", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "21751", + "id": "1611", + "length": "23", + "line": "596", + "parentIndex": "1608", + "start": "21729" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1608", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "21772", + "id": "1609", + "length": "44", + "line": "596", + "parentIndex": "1576", + "start": "21729" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_bool$", + "typeString": "function(address,bytes,bool)" + } + } + } + ] + }, + "id": "1563", + "implemented": true, + "kind": "CONSTRUCTOR", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1565", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1567", + "name": "beacon", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1567", + "src": { + "column": "16", + "end": "21600", + "id": "1568", + "length": "14", + "line": "594", + "parentIndex": "1565", + "start": "21587" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1569", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "21593", + "id": "1570", + "length": "7", + "line": "594", + "parentIndex": "1567", + "start": "21587" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1571", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1571", + "src": { + "column": "32", + "end": "21619", + "id": "1572", + "length": "17", + "line": "594", + "parentIndex": "1565", + "start": "21603" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1573", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "32", + "end": "21607", + "id": "1574", + "length": "5", + "line": "594", + "parentIndex": "1571", + "start": "21603" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "16", + "end": "21619", + "id": "1566", + "length": "33", + "line": "594", + "parentIndex": "1563", + "start": "21587" + } + }, + "returnParameters": { + "id": "1575", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "21779", + "id": "1564", + "length": "205", + "line": "594", + "parentIndex": "1563", + "start": "21575" + } + }, + "scope": "1553", + "src": { + "column": "4", + "end": "21779", + "id": "1564", + "length": "205", + "line": "594", + "parentIndex": "1553", + "start": "21575" + }, + "stateMutability": "PAYABLE", + "typeDescription": { + "typeIdentifier": "$_t_constructor", + "typeString": "constructor" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1633", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "63", + "end": "21944", + "id": "1634", + "length": "36", + "line": "602", + "parentIndex": "1619", + "start": "21909" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1639", + "name": "_getBeacon", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "21935", + "id": "1640", + "length": "10", + "line": "603", + "parentIndex": "1637", + "start": "21926" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1637", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "21937", + "id": "1638", + "length": "12", + "line": "603", + "parentIndex": "1633", + "start": "21926" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "functionReturnParameters": "1619", + "id": "1635", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "21938", + "id": "1636", + "length": "20", + "line": "603", + "parentIndex": "1619", + "start": "21919" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ] + }, + "id": "1619", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_beacon", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1621", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1623", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1623", + "src": { + "column": "54", + "end": "21906", + "id": "1624", + "length": "7", + "line": "602", + "parentIndex": "1621", + "start": "21900" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1625", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "54", + "end": "21906", + "id": "1626", + "length": "7", + "line": "602", + "parentIndex": "1623", + "start": "21900" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "54", + "end": "21906", + "id": "1622", + "length": "7", + "line": "602", + "parentIndex": "1619", + "start": "21900" + } + }, + "returnParameters": { + "id": "1627", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1629", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1629", + "src": { + "column": "54", + "end": "21906", + "id": "1630", + "length": "7", + "line": "602", + "parentIndex": "1627", + "start": "21900" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1631", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "54", + "end": "21906", + "id": "1632", + "length": "7", + "line": "602", + "parentIndex": "1629", + "start": "21900" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "54", + "end": "21906", + "id": "1628", + "length": "7", + "line": "602", + "parentIndex": "1619", + "start": "21900" + } + }, + "scope": "1553", + "src": { + "column": "4", + "end": "21944", + "id": "1620", + "length": "95", + "line": "602", + "parentIndex": "1553", + "start": "21850" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1658", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "80", + "end": "22185", + "id": "1659", + "length": "62", + "line": "609", + "parentIndex": "1642", + "start": "22124" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1672", + "name": "_getBeacon", + "nodeType": "IDENTIFIER", + "src": { + "column": "23", + "end": "22158", + "id": "1673", + "length": "10", + "line": "610", + "parentIndex": "1670", + "start": "22149" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1670", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "23", + "end": "22160", + "id": "1671", + "length": "12", + "line": "610", + "parentIndex": "1666", + "start": "22149" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1668", + "name": "IBeacon", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "22147", + "id": "1669", + "length": "7", + "line": "610", + "parentIndex": "1666", + "start": "22141" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1666", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "22161", + "id": "1667", + "length": "21", + "line": "610", + "parentIndex": "1664", + "start": "22141" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "id": "1664", + "memberName": "implementation", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "22176", + "id": "1665", + "length": "36", + "line": "610", + "parentIndex": "1662", + "start": "22141" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "id": "1662", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "22178", + "id": "1663", + "length": "38", + "line": "610", + "parentIndex": "1658", + "start": "22141" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "functionReturnParameters": "1642", + "id": "1660", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "22179", + "id": "1661", + "length": "46", + "line": "610", + "parentIndex": "1642", + "start": "22134" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ] + }, + "id": "1642", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_implementation", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "1644", + "name": "_implementation", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "188", + "src": { + "column": "53", + "end": "22104", + "id": "1645", + "length": "8", + "line": "609", + "parentIndex": "1642", + "start": "22097" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + ], + "parameters": { + "id": "1646", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1648", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1648", + "src": { + "column": "71", + "end": "22121", + "id": "1649", + "length": "7", + "line": "609", + "parentIndex": "1646", + "start": "22115" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1650", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "71", + "end": "22121", + "id": "1651", + "length": "7", + "line": "609", + "parentIndex": "1648", + "start": "22115" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "71", + "end": "22121", + "id": "1647", + "length": "7", + "line": "609", + "parentIndex": "1642", + "start": "22115" + } + }, + "returnParameters": { + "id": "1652", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1654", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1654", + "src": { + "column": "71", + "end": "22121", + "id": "1655", + "length": "7", + "line": "609", + "parentIndex": "1652", + "start": "22115" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1656", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "71", + "end": "22121", + "id": "1657", + "length": "7", + "line": "609", + "parentIndex": "1654", + "start": "22115" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "71", + "end": "22121", + "id": "1653", + "length": "7", + "line": "609", + "parentIndex": "1642", + "start": "22115" + } + }, + "scope": "1553", + "src": { + "column": "4", + "end": "22185", + "id": "1643", + "length": "138", + "line": "609", + "parentIndex": "1553", + "start": "22048" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1688", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "76", + "end": "22696", + "id": "1689", + "length": "61", + "line": "623", + "parentIndex": "1675", + "start": "22636" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1694", + "name": "beacon", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1694", + "src": { + "column": "32", + "end": "22675", + "id": "1695", + "length": "6", + "line": "624", + "parentIndex": "1690", + "start": "22670" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1696", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1696", + "src": { + "column": "40", + "end": "22681", + "id": "1697", + "length": "4", + "line": "624", + "parentIndex": "1690", + "start": "22678" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "hexValue": "66616c7365", + "id": "1698", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "46", + "end": "22688", + "id": "1699", + "length": "5", + "line": "624", + "parentIndex": "1690", + "start": "22684" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1692", + "name": "_upgradeBeaconToAndCall", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "22668", + "id": "1693", + "length": "23", + "line": "624", + "parentIndex": "1690", + "start": "22646" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1690", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "22689", + "id": "1691", + "length": "44", + "line": "624", + "parentIndex": "1688", + "start": "22646" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_bool$", + "typeString": "function(address,bytes,bool)" + } + } + } + ] + }, + "id": "1675", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_setBeacon", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1677", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1679", + "name": "beacon", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1679", + "src": { + "column": "24", + "end": "22597", + "id": "1680", + "length": "14", + "line": "623", + "parentIndex": "1677", + "start": "22584" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1681", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "22590", + "id": "1682", + "length": "7", + "line": "623", + "parentIndex": "1679", + "start": "22584" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1683", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1683", + "src": { + "column": "40", + "end": "22616", + "id": "1684", + "length": "17", + "line": "623", + "parentIndex": "1677", + "start": "22600" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1685", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "40", + "end": "22604", + "id": "1686", + "length": "5", + "line": "623", + "parentIndex": "1683", + "start": "22600" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "22616", + "id": "1678", + "length": "33", + "line": "623", + "parentIndex": "1675", + "start": "22584" + } + }, + "returnParameters": { + "id": "1687", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "22696", + "id": "1676", + "length": "133", + "line": "623", + "parentIndex": "1675", + "start": "22564" + } + }, + "scope": "1553", + "src": { + "column": "4", + "end": "22696", + "id": "1676", + "length": "133", + "line": "623", + "parentIndex": "1553", + "start": "22564" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$", + "typeString": "function(address,bytes)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "22698", + "length": "1606", + "line": "582", + "parentIndex": "1533", + "start": "21093" + } + } + } + ] + }, + "src": { + "id": 1534, + "line": 582, + "start": 21093, + "end": 22698, + "length": 1606, + "parent_index": 118 + } + }, + { + "id": 1700, + "license": "MIT", + "name": "Context", + "absolute_path": "Context.sol", + "exported_symbols": [ + { + "id": 1700, + "name": "Context", + "absolute_path": "Context.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "1714", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "22756", + "id": "1715", + "length": "23", + "line": "630", + "parentIndex": "1700", + "start": "22734" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "1722", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "1722" + ], + "name": "Context", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1738", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "66", + "end": "23382", + "id": "1739", + "length": "34", + "line": "643", + "parentIndex": "1724", + "start": "23349" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1744", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "23368", + "id": "1745", + "length": "3", + "line": "644", + "parentIndex": "1742", + "start": "23366" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "1742", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "23375", + "id": "1743", + "length": "10", + "line": "644", + "parentIndex": "1738", + "start": "23366" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "functionReturnParameters": "1724", + "id": "1740", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "23376", + "id": "1741", + "length": "18", + "line": "644", + "parentIndex": "1724", + "start": "23359" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ] + }, + "id": "1724", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_msgSender", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1726", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1728", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1728", + "src": { + "column": "57", + "end": "23346", + "id": "1729", + "length": "7", + "line": "643", + "parentIndex": "1726", + "start": "23340" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1730", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "57", + "end": "23346", + "id": "1731", + "length": "7", + "line": "643", + "parentIndex": "1728", + "start": "23340" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "57", + "end": "23346", + "id": "1727", + "length": "7", + "line": "643", + "parentIndex": "1724", + "start": "23340" + } + }, + "returnParameters": { + "id": "1732", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1734", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1734", + "src": { + "column": "57", + "end": "23346", + "id": "1735", + "length": "7", + "line": "643", + "parentIndex": "1732", + "start": "23340" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1736", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "57", + "end": "23346", + "id": "1737", + "length": "7", + "line": "643", + "parentIndex": "1734", + "start": "23340" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "57", + "end": "23346", + "id": "1733", + "length": "7", + "line": "643", + "parentIndex": "1724", + "start": "23340" + } + }, + "scope": "1722", + "src": { + "column": "4", + "end": "23382", + "id": "1725", + "length": "96", + "line": "643", + "parentIndex": "1722", + "start": "23287" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1761", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "71", + "end": "23620", + "id": "1762", + "length": "165", + "line": "647", + "parentIndex": "1747", + "start": "23456" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1763", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "23469", + "id": "1764", + "length": "4", + "line": "648", + "parentIndex": "1761", + "start": "23466" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Context_$1700", + "typeString": "contract Context" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1769", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "23608", + "id": "1770", + "length": "3", + "line": "649", + "parentIndex": "1767", + "start": "23606" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "1767", + "memberName": "data", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "23613", + "id": "1768", + "length": "8", + "line": "649", + "parentIndex": "1761", + "start": "23606" + }, + "typeDescription": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + }, + "functionReturnParameters": "1747", + "id": "1765", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "23614", + "id": "1766", + "length": "16", + "line": "649", + "parentIndex": "1747", + "start": "23599" + }, + "typeDescription": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + } + ] + }, + "id": "1747", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_msgData", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1749", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1751", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1751", + "src": { + "column": "55", + "end": "23453", + "id": "1752", + "length": "14", + "line": "647", + "parentIndex": "1749", + "start": "23440" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1753", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "55", + "end": "23444", + "id": "1754", + "length": "5", + "line": "647", + "parentIndex": "1751", + "start": "23440" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "55", + "end": "23453", + "id": "1750", + "length": "14", + "line": "647", + "parentIndex": "1747", + "start": "23440" + } + }, + "returnParameters": { + "id": "1755", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1757", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1757", + "src": { + "column": "55", + "end": "23453", + "id": "1758", + "length": "14", + "line": "647", + "parentIndex": "1755", + "start": "23440" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1759", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "55", + "end": "23444", + "id": "1760", + "length": "5", + "line": "647", + "parentIndex": "1757", + "start": "23440" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "55", + "end": "23453", + "id": "1756", + "length": "14", + "line": "647", + "parentIndex": "1747", + "start": "23440" + } + }, + "scope": "1722", + "src": { + "column": "4", + "end": "23620", + "id": "1748", + "length": "232", + "line": "647", + "parentIndex": "1722", + "start": "23389" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "23622", + "length": "368", + "line": "642", + "parentIndex": "1700", + "start": "23255" + } + } + } + ] + }, + "src": { + "id": 1701, + "line": 642, + "start": 23255, + "end": 23622, + "length": 368, + "parent_index": 118 + } + }, + { + "id": 1771, + "license": "MIT", + "name": "Ownable", + "absolute_path": "Ownable.sol", + "exported_symbols": [ + { + "id": 1771, + "name": "Ownable", + "absolute_path": "Ownable.sol" + }, + { + "id": 1700, + "name": "Context", + "absolute_path": "Context.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "1787", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "23680", + "id": "1788", + "length": "23", + "line": "655", + "parentIndex": "1771", + "start": "23658" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "Context.sol", + "file": "../utils/Context.sol", + "id": "1795", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1771", + "sourceUnit": "1700", + "src": { + "end": "23712", + "length": "30", + "line": "657", + "parentIndex": "1771", + "start": "23683" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "1799", + "name": "Context", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1700", + "src": { + "column": "29", + "end": "24244", + "id": "1800", + "length": "7", + "line": "670", + "parentIndex": "1796", + "start": "24238" + } + }, + "id": "1797", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "29", + "end": "24244", + "id": "1798", + "length": "7", + "line": "670", + "parentIndex": "1796", + "start": "24238" + } + } + ], + "contractDependencies": [ + "1700", + "1795" + ], + "fullyImplemented": true, + "id": "1796", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "1700", + "1796", + "1795" + ], + "name": "Ownable", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "1802", + "isStateVariable": true, + "name": "_owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1796", + "src": { + "column": "4", + "end": "24274", + "id": "1803", + "length": "23", + "line": "671", + "parentIndex": "1796", + "start": "24252" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1804", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "24258", + "id": "1805", + "length": "7", + "line": "671", + "parentIndex": "1802", + "start": "24252" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "1807", + "name": "OwnershipTransferred", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "1809", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1810", + "indexed": true, + "name": "previousOwner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1810", + "src": { + "column": "31", + "end": "24336", + "id": "1811", + "length": "29", + "line": "673", + "parentIndex": "1809", + "start": "24308" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1812", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "24314", + "id": "1813", + "length": "7", + "line": "673", + "parentIndex": "1810", + "start": "24308" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1814", + "indexed": true, + "name": "newOwner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1814", + "src": { + "column": "62", + "end": "24362", + "id": "1815", + "length": "24", + "line": "673", + "parentIndex": "1809", + "start": "24339" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1816", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "24345", + "id": "1817", + "length": "7", + "line": "673", + "parentIndex": "1814", + "start": "24339" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "24364", + "id": "1808", + "length": "84", + "line": "673", + "parentIndex": "1807", + "start": "24281" + } + }, + "src": { + "column": "4", + "end": "24364", + "id": "1808", + "length": "84", + "line": "673", + "parentIndex": "1796", + "start": "24281" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_Ownable_OwnershipTransferred_\u00261807", + "typeString": "event Ownable.OwnershipTransferred" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1823", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "19", + "end": "24616", + "id": "1824", + "length": "135", + "line": "678", + "parentIndex": "1819", + "start": "24482" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "1827" + ], + "declarations": [ + { + "id": "1827", + "mutability": "MUTABLE", + "name": "msgSender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1823", + "src": { + "column": "8", + "end": "24508", + "id": "1828", + "length": "17", + "line": "679", + "parentIndex": "1825", + "start": "24492" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1829", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "24498", + "id": "1830", + "length": "7", + "line": "679", + "parentIndex": "1827", + "start": "24492" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "1825", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1833", + "name": "_msgSender", + "nodeType": "IDENTIFIER", + "src": { + "column": "28", + "end": "24521", + "id": "1834", + "length": "10", + "line": "679", + "parentIndex": "1831", + "start": "24512" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1831", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "28", + "end": "24523", + "id": "1832", + "length": "12", + "line": "679", + "parentIndex": "1825", + "start": "24512" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "24524", + "id": "1826", + "length": "33", + "line": "679", + "parentIndex": "1823", + "start": "24492" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1837", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1839", + "name": "_owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1802", + "src": { + "column": "8", + "end": "24539", + "id": "1840", + "length": "6", + "line": "680", + "parentIndex": "1837", + "start": "24534" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1841", + "name": "msgSender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1825", + "src": { + "column": "17", + "end": "24551", + "id": "1842", + "length": "9", + "line": "680", + "parentIndex": "1837", + "start": "24543" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "src": { + "column": "8", + "end": "24551", + "id": "1838", + "length": "18", + "line": "680", + "parentIndex": "1823", + "start": "24534" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1835", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "24552", + "id": "1836", + "length": "19", + "line": "680", + "parentIndex": "1823", + "start": "24534" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1851", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "42", + "end": "24596", + "id": "1852", + "length": "1", + "line": "681", + "parentIndex": "1845", + "start": "24596" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1847", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "34", + "end": "24594", + "id": "1848", + "length": "7", + "line": "681", + "parentIndex": "1845", + "start": "24588" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1849", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "34", + "end": "24594", + "id": "1850", + "length": "7", + "line": "681", + "parentIndex": "1847", + "start": "24588" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1845", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "34", + "end": "24597", + "id": "1846", + "length": "10", + "line": "681", + "parentIndex": "1823", + "start": "24588" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1853", + "name": "msgSender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1825", + "src": { + "column": "46", + "end": "24608", + "id": "1854", + "length": "9", + "line": "681", + "parentIndex": "1823", + "start": "24600" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1855", + "name": "OwnershipTransferred", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1807", + "src": { + "column": "13", + "end": "24586", + "id": "1856", + "length": "20", + "line": "681", + "parentIndex": "1823", + "start": "24567" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_Ownable_OwnershipTransferred_\u00261807", + "typeString": "event Ownable.OwnershipTransferred" + } + } + }, + "id": "1843", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "24610", + "id": "1844", + "length": "49", + "line": "681", + "parentIndex": "1819", + "start": "24562" + } + } + } + ] + }, + "id": "1819", + "implemented": true, + "kind": "CONSTRUCTOR", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1821", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "24616", + "id": "1820", + "length": "150", + "line": "678", + "parentIndex": "1819", + "start": "24467" + } + }, + "returnParameters": { + "id": "1822", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "24616", + "id": "1820", + "length": "150", + "line": "678", + "parentIndex": "1819", + "start": "24467" + } + }, + "scope": "1796", + "src": { + "column": "4", + "end": "24616", + "id": "1820", + "length": "150", + "line": "678", + "parentIndex": "1796", + "start": "24467" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "$_t_constructor", + "typeString": "constructor" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1872", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "59", + "end": "24777", + "id": "1873", + "length": "30", + "line": "687", + "parentIndex": "1858", + "start": "24748" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1876", + "name": "_owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1802", + "src": { + "column": "15", + "end": "24770", + "id": "1877", + "length": "6", + "line": "688", + "parentIndex": "1872", + "start": "24765" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "functionReturnParameters": "1858", + "id": "1874", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "24771", + "id": "1875", + "length": "14", + "line": "688", + "parentIndex": "1858", + "start": "24758" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ] + }, + "id": "1858", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "owner", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1860", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1862", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1862", + "src": { + "column": "50", + "end": "24745", + "id": "1863", + "length": "7", + "line": "687", + "parentIndex": "1860", + "start": "24739" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1864", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "24745", + "id": "1865", + "length": "7", + "line": "687", + "parentIndex": "1862", + "start": "24739" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "50", + "end": "24745", + "id": "1861", + "length": "7", + "line": "687", + "parentIndex": "1858", + "start": "24739" + } + }, + "returnParameters": { + "id": "1866", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1868", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1868", + "src": { + "column": "50", + "end": "24745", + "id": "1869", + "length": "7", + "line": "687", + "parentIndex": "1866", + "start": "24739" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1870", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "24745", + "id": "1871", + "length": "7", + "line": "687", + "parentIndex": "1868", + "start": "24739" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "50", + "end": "24745", + "id": "1867", + "length": "7", + "line": "687", + "parentIndex": "1858", + "start": "24739" + } + }, + "scope": "1796", + "src": { + "column": "4", + "end": "24777", + "id": "1859", + "length": "85", + "line": "687", + "parentIndex": "1796", + "start": "24693" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Modifier", + "value": { + "body": { + "id": "1882", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "25", + "end": "24982", + "id": "1883", + "length": "96", + "line": "694", + "parentIndex": "1879", + "start": "24887" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Ownable: caller is not the owner\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1888", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1892", + "name": "owner", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "24909", + "id": "1893", + "length": "5", + "line": "695", + "parentIndex": "1890", + "start": "24905" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1890", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "24911", + "id": "1891", + "length": "7", + "line": "695", + "parentIndex": "1888", + "start": "24905" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1896", + "name": "_msgSender", + "nodeType": "IDENTIFIER", + "src": { + "column": "27", + "end": "24925", + "id": "1897", + "length": "10", + "line": "695", + "parentIndex": "1894", + "start": "24916" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1894", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "27", + "end": "24927", + "id": "1895", + "length": "12", + "line": "695", + "parentIndex": "1888", + "start": "24916" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "src": { + "column": "16", + "end": "24927", + "id": "1889", + "length": "23", + "line": "695", + "parentIndex": "1884", + "start": "24905" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", + "id": "1898", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "41", + "end": "24963", + "id": "1899", + "length": "34", + "line": "695", + "parentIndex": "1884", + "start": "24930" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Ownable: caller is not the owner\"" + }, + "value": "Ownable: caller is not the owner" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1886", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "24903", + "id": "1887", + "length": "7", + "line": "695", + "parentIndex": "1884", + "start": "24897" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1884", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "24964", + "id": "1885", + "length": "68", + "line": "695", + "parentIndex": "1882", + "start": "24897" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1900", + "name": "_", + "nodeType": "PLACEHOLDER_STATEMENT", + "src": { + "column": "8", + "end": "24975", + "id": "1901", + "length": "1", + "line": "696", + "parentIndex": "1882", + "start": "24975" + }, + "typeDescription": { + "typeIdentifier": "t_placeholder_literal", + "typeString": "t_placeholder" + } + } + } + ] + }, + "id": "1879", + "name": "onlyOwner", + "nodeType": "MODIFIER_DEFINITION", + "parameters": { + "id": "1881", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "24982", + "id": "1880", + "length": "117", + "line": "694", + "parentIndex": "1796", + "start": "24866" + } + }, + "src": { + "column": "4", + "end": "24982", + "id": "1880", + "length": "117", + "line": "694", + "parentIndex": "1796", + "start": "24866" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1911", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "58", + "end": "25469", + "id": "1912", + "length": "91", + "line": "706", + "parentIndex": "1903", + "start": "25379" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1915", + "name": "_owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1802", + "src": { + "column": "34", + "end": "25420", + "id": "1916", + "length": "6", + "line": "707", + "parentIndex": "1911", + "start": "25415" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1923", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "50", + "end": "25431", + "id": "1924", + "length": "1", + "line": "707", + "parentIndex": "1917", + "start": "25431" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1919", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "42", + "end": "25429", + "id": "1920", + "length": "7", + "line": "707", + "parentIndex": "1917", + "start": "25423" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1921", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "42", + "end": "25429", + "id": "1922", + "length": "7", + "line": "707", + "parentIndex": "1919", + "start": "25423" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1917", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "42", + "end": "25432", + "id": "1918", + "length": "10", + "line": "707", + "parentIndex": "1911", + "start": "25423" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1925", + "name": "OwnershipTransferred", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1807", + "src": { + "column": "13", + "end": "25413", + "id": "1926", + "length": "20", + "line": "707", + "parentIndex": "1911", + "start": "25394" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_Ownable_OwnershipTransferred_\u00261807", + "typeString": "event Ownable.OwnershipTransferred" + } + } + }, + "id": "1913", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "25434", + "id": "1914", + "length": "46", + "line": "707", + "parentIndex": "1903", + "start": "25389" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1929", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1931", + "name": "_owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1802", + "src": { + "column": "8", + "end": "25449", + "id": "1932", + "length": "6", + "line": "708", + "parentIndex": "1929", + "start": "25444" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1939", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "25", + "end": "25461", + "id": "1940", + "length": "1", + "line": "708", + "parentIndex": "1933", + "start": "25461" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1935", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "17", + "end": "25459", + "id": "1936", + "length": "7", + "line": "708", + "parentIndex": "1933", + "start": "25453" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1937", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "25459", + "id": "1938", + "length": "7", + "line": "708", + "parentIndex": "1935", + "start": "25453" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1933", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "17", + "end": "25462", + "id": "1934", + "length": "10", + "line": "708", + "parentIndex": "1929", + "start": "25453" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "8", + "end": "25462", + "id": "1930", + "length": "19", + "line": "708", + "parentIndex": "1911", + "start": "25444" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1927", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "25463", + "id": "1928", + "length": "20", + "line": "708", + "parentIndex": "1911", + "start": "25444" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ] + }, + "id": "1903", + "implemented": true, + "kind": "KIND_FUNCTION", + "modifiers": [ + { + "id": "1905", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "1907", + "name": "onlyOwner", + "src": { + "column": "48", + "end": "25377", + "id": "1908", + "length": "9", + "line": "706", + "parentIndex": "1905", + "start": "25369" + } + }, + "name": "onlyOwner", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "48", + "end": "25377", + "id": "1906", + "length": "9", + "line": "706", + "parentIndex": "1903", + "start": "25369" + } + } + ], + "name": "renounceOwnership", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1909", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "25469", + "id": "1904", + "length": "145", + "line": "706", + "parentIndex": "1903", + "start": "25325" + } + }, + "returnParameters": { + "id": "1910", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "25469", + "id": "1904", + "length": "145", + "line": "706", + "parentIndex": "1903", + "start": "25325" + } + }, + "scope": "1796", + "src": { + "column": "4", + "end": "25469", + "id": "1904", + "length": "145", + "line": "706", + "parentIndex": "1796", + "start": "25325" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1955", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "74", + "end": "25858", + "id": "1956", + "length": "170", + "line": "715", + "parentIndex": "1942", + "start": "25689" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Ownable: new owner is the zero address\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "1961", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1963", + "name": "newOwner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1963", + "src": { + "column": "16", + "end": "25714", + "id": "1964", + "length": "8", + "line": "716", + "parentIndex": "1961", + "start": "25707" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "1971", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "25727", + "id": "1972", + "length": "1", + "line": "716", + "parentIndex": "1965", + "start": "25727" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1967", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "28", + "end": "25725", + "id": "1968", + "length": "7", + "line": "716", + "parentIndex": "1965", + "start": "25719" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "1969", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "25725", + "id": "1970", + "length": "7", + "line": "716", + "parentIndex": "1967", + "start": "25719" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "1965", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "28", + "end": "25728", + "id": "1966", + "length": "10", + "line": "716", + "parentIndex": "1961", + "start": "25719" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "16", + "end": "25728", + "id": "1962", + "length": "22", + "line": "716", + "parentIndex": "1957", + "start": "25707" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", + "id": "1973", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "40", + "end": "25770", + "id": "1974", + "length": "40", + "line": "716", + "parentIndex": "1957", + "start": "25731" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Ownable: new owner is the zero address\"" + }, + "value": "Ownable: new owner is the zero address" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1959", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "25705", + "id": "1960", + "length": "7", + "line": "716", + "parentIndex": "1957", + "start": "25699" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1957", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "25771", + "id": "1958", + "length": "73", + "line": "716", + "parentIndex": "1955", + "start": "25699" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1977", + "name": "_owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1802", + "src": { + "column": "34", + "end": "25813", + "id": "1978", + "length": "6", + "line": "717", + "parentIndex": "1955", + "start": "25808" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1979", + "name": "newOwner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1979", + "src": { + "column": "42", + "end": "25823", + "id": "1980", + "length": "8", + "line": "717", + "parentIndex": "1955", + "start": "25816" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1981", + "name": "OwnershipTransferred", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1807", + "src": { + "column": "13", + "end": "25806", + "id": "1982", + "length": "20", + "line": "717", + "parentIndex": "1955", + "start": "25787" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_Ownable_OwnershipTransferred_\u00261807", + "typeString": "event Ownable.OwnershipTransferred" + } + } + }, + "id": "1975", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "25825", + "id": "1976", + "length": "44", + "line": "717", + "parentIndex": "1942", + "start": "25782" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1985", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1987", + "name": "_owner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1802", + "src": { + "column": "8", + "end": "25840", + "id": "1988", + "length": "6", + "line": "718", + "parentIndex": "1985", + "start": "25835" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1989", + "name": "newOwner", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1989", + "src": { + "column": "17", + "end": "25851", + "id": "1990", + "length": "8", + "line": "718", + "parentIndex": "1985", + "start": "25844" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "src": { + "column": "8", + "end": "25851", + "id": "1986", + "length": "17", + "line": "718", + "parentIndex": "1955", + "start": "25835" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1983", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "25852", + "id": "1984", + "length": "18", + "line": "718", + "parentIndex": "1955", + "start": "25835" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ] + }, + "id": "1942", + "implemented": true, + "kind": "KIND_FUNCTION", + "modifiers": [ + { + "id": "1944", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "1946", + "name": "onlyOwner", + "src": { + "column": "64", + "end": "25687", + "id": "1947", + "length": "9", + "line": "715", + "parentIndex": "1944", + "start": "25679" + } + }, + "name": "onlyOwner", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "64", + "end": "25687", + "id": "1945", + "length": "9", + "line": "715", + "parentIndex": "1942", + "start": "25679" + } + } + ], + "name": "transferOwnership", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1948", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1950", + "name": "newOwner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1950", + "src": { + "column": "31", + "end": "25661", + "id": "1951", + "length": "16", + "line": "715", + "parentIndex": "1948", + "start": "25646" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1952", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "25652", + "id": "1953", + "length": "7", + "line": "715", + "parentIndex": "1950", + "start": "25646" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "31", + "end": "25661", + "id": "1949", + "length": "16", + "line": "715", + "parentIndex": "1942", + "start": "25646" + } + }, + "returnParameters": { + "id": "1954", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "25858", + "id": "1943", + "length": "240", + "line": "715", + "parentIndex": "1942", + "start": "25619" + } + }, + "scope": "1796", + "src": { + "column": "4", + "end": "25858", + "id": "1943", + "length": "240", + "line": "715", + "parentIndex": "1796", + "start": "25619" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + } + ], + "src": { + "end": "25860", + "length": "1652", + "line": "670", + "parentIndex": "1771", + "start": "24209" + } + } + } + ] + }, + "src": { + "id": 1772, + "line": 670, + "start": 24209, + "end": 25860, + "length": 1652, + "parent_index": 118 + } + }, + { + "id": 1991, + "license": "MIT", + "name": "UpgradeableBeacon", + "absolute_path": "UpgradeableBeacon.sol", + "exported_symbols": [ + { + "id": 1991, + "name": "UpgradeableBeacon", + "absolute_path": "UpgradeableBeacon.sol" + }, + { + "id": 251, + "name": "Address", + "absolute_path": "Address.sol" + }, + { + "id": 251, + "name": "Address", + "absolute_path": "Address.sol" + }, + { + "id": 1771, + "name": "Ownable", + "absolute_path": "Ownable.sol" + }, + { + "id": 119, + "name": "IBeacon", + "absolute_path": "IBeacon.sol" + }, + { + "id": 119, + "name": "IBeacon", + "absolute_path": "IBeacon.sol" + }, + { + "id": 119, + "name": "IBeacon", + "absolute_path": "IBeacon.sol" + }, + { + "id": 119, + "name": "IBeacon", + "absolute_path": "IBeacon.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "2009", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "25918", + "id": "2010", + "length": "23", + "line": "724", + "parentIndex": "1991", + "start": "25896" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IBeacon.sol", + "file": "./IBeacon.sol", + "id": "2018", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1991", + "sourceUnit": "1771", + "src": { + "end": "25943", + "length": "23", + "line": "726", + "parentIndex": "1991", + "start": "25921" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "Ownable.sol", + "file": "../../access/Ownable.sol", + "id": "2019", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1991", + "sourceUnit": "1771", + "src": { + "end": "25978", + "length": "34", + "line": "727", + "parentIndex": "1991", + "start": "25945" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "Address.sol", + "file": "../../utils/Address.sol", + "id": "2020", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1991", + "sourceUnit": "1771", + "src": { + "end": "26012", + "length": "33", + "line": "728", + "parentIndex": "1991", + "start": "25980" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "2024", + "name": "IBeacon", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "119", + "src": { + "column": "30", + "end": "26372", + "id": "2025", + "length": "7", + "line": "736", + "parentIndex": "2021", + "start": "26366" + } + }, + "id": "2022", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "30", + "end": "26372", + "id": "2023", + "length": "7", + "line": "736", + "parentIndex": "2021", + "start": "26366" + } + }, + { + "baseName": { + "id": "2028", + "name": "Ownable", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1771", + "src": { + "column": "39", + "end": "26381", + "id": "2029", + "length": "7", + "line": "736", + "parentIndex": "2021", + "start": "26375" + } + }, + "id": "2026", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "39", + "end": "26381", + "id": "2027", + "length": "7", + "line": "736", + "parentIndex": "2021", + "start": "26375" + } + } + ], + "contractDependencies": [ + "119", + "1771", + "2018", + "2019", + "2020" + ], + "fullyImplemented": true, + "id": "2021", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "119", + "1771", + "2021", + "2018", + "2019", + "2020" + ], + "name": "UpgradeableBeacon", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "2031", + "isStateVariable": true, + "name": "_implementation", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2021", + "src": { + "column": "4", + "end": "26420", + "id": "2032", + "length": "32", + "line": "737", + "parentIndex": "2021", + "start": "26389" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2033", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "26395", + "id": "2034", + "length": "7", + "line": "737", + "parentIndex": "2031", + "start": "26389" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "PRIVATE" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "2036", + "name": "Upgraded", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "2038", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2039", + "indexed": true, + "name": "implementation", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2039", + "src": { + "column": "19", + "end": "26566", + "id": "2040", + "length": "30", + "line": "742", + "parentIndex": "2038", + "start": "26537" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2041", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "19", + "end": "26543", + "id": "2042", + "length": "7", + "line": "742", + "parentIndex": "2039", + "start": "26537" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "26568", + "id": "2037", + "length": "47", + "line": "742", + "parentIndex": "2036", + "start": "26522" + } + }, + "src": { + "column": "4", + "end": "26568", + "id": "2037", + "length": "47", + "line": "742", + "parentIndex": "2021", + "start": "26522" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_UpgradeableBeacon_Upgraded_\u00262036", + "typeString": "event UpgradeableBeacon.Upgraded" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2053", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "41", + "end": "26812", + "id": "2054", + "length": "52", + "line": "748", + "parentIndex": "2044", + "start": "26761" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2059", + "name": "implementation_", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2059", + "src": { + "column": "27", + "end": "26804", + "id": "2060", + "length": "15", + "line": "749", + "parentIndex": "2055", + "start": "26790" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2057", + "name": "_setImplementation", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "26788", + "id": "2058", + "length": "18", + "line": "749", + "parentIndex": "2055", + "start": "26771" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2055", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "26805", + "id": "2056", + "length": "35", + "line": "749", + "parentIndex": "2053", + "start": "26771" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ] + }, + "id": "2044", + "implemented": true, + "kind": "CONSTRUCTOR", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2046", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2048", + "name": "implementation_", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2048", + "src": { + "column": "16", + "end": "26758", + "id": "2049", + "length": "23", + "line": "748", + "parentIndex": "2046", + "start": "26736" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2050", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "26742", + "id": "2051", + "length": "7", + "line": "748", + "parentIndex": "2048", + "start": "26736" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "16", + "end": "26758", + "id": "2047", + "length": "23", + "line": "748", + "parentIndex": "2044", + "start": "26736" + } + }, + "returnParameters": { + "id": "2052", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "26812", + "id": "2045", + "length": "89", + "line": "748", + "parentIndex": "2044", + "start": "26724" + } + }, + "scope": "2021", + "src": { + "column": "4", + "end": "26812", + "id": "2045", + "length": "89", + "line": "748", + "parentIndex": "2021", + "start": "26724" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "$_t_constructor", + "typeString": "constructor" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2078", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "77", + "end": "27002", + "id": "2079", + "length": "39", + "line": "755", + "parentIndex": "2062", + "start": "26964" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2082", + "name": "_implementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2031", + "src": { + "column": "15", + "end": "26995", + "id": "2083", + "length": "15", + "line": "756", + "parentIndex": "2078", + "start": "26981" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "functionReturnParameters": "2062", + "id": "2080", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "26996", + "id": "2081", + "length": "23", + "line": "756", + "parentIndex": "2062", + "start": "26974" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ] + }, + "id": "2062", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "implementation", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "2064", + "name": "implementation", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "172", + "src": { + "column": "50", + "end": "26944", + "id": "2065", + "length": "8", + "line": "755", + "parentIndex": "2062", + "start": "26937" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "parameters": { + "id": "2066", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2068", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2068", + "src": { + "column": "68", + "end": "26961", + "id": "2069", + "length": "7", + "line": "755", + "parentIndex": "2066", + "start": "26955" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2070", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "68", + "end": "26961", + "id": "2071", + "length": "7", + "line": "755", + "parentIndex": "2068", + "start": "26955" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "68", + "end": "26961", + "id": "2067", + "length": "7", + "line": "755", + "parentIndex": "2062", + "start": "26955" + } + }, + "returnParameters": { + "id": "2072", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2074", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2074", + "src": { + "column": "68", + "end": "26961", + "id": "2075", + "length": "7", + "line": "755", + "parentIndex": "2072", + "start": "26955" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2076", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "68", + "end": "26961", + "id": "2077", + "length": "7", + "line": "755", + "parentIndex": "2074", + "start": "26955" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "68", + "end": "26961", + "id": "2073", + "length": "7", + "line": "755", + "parentIndex": "2062", + "start": "26955" + } + }, + "scope": "2021", + "src": { + "column": "4", + "end": "27002", + "id": "2063", + "length": "112", + "line": "755", + "parentIndex": "2021", + "start": "26891" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2098", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "75", + "end": "27428", + "id": "2099", + "length": "96", + "line": "769", + "parentIndex": "2085", + "start": "27333" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2104", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2104", + "src": { + "column": "27", + "end": "27378", + "id": "2105", + "length": "17", + "line": "770", + "parentIndex": "2100", + "start": "27362" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2102", + "name": "_setImplementation", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "27360", + "id": "2103", + "length": "18", + "line": "770", + "parentIndex": "2100", + "start": "27343" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2100", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "27379", + "id": "2101", + "length": "37", + "line": "770", + "parentIndex": "2098", + "start": "27343" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2108", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2108", + "src": { + "column": "22", + "end": "27420", + "id": "2109", + "length": "17", + "line": "771", + "parentIndex": "2098", + "start": "27404" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2110", + "name": "Upgraded", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "929", + "src": { + "column": "13", + "end": "27402", + "id": "2111", + "length": "8", + "line": "771", + "parentIndex": "2098", + "start": "27395" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", + "typeString": "event ERC1967Upgrade.Upgraded" + } + } + }, + "id": "2106", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "27422", + "id": "2107", + "length": "33", + "line": "771", + "parentIndex": "2085", + "start": "27390" + } + } + } + ] + }, + "id": "2085", + "implemented": true, + "kind": "KIND_FUNCTION", + "modifiers": [ + { + "id": "2087", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "2089", + "name": "onlyOwner", + "src": { + "column": "65", + "end": "27331", + "id": "2090", + "length": "9", + "line": "769", + "parentIndex": "2087", + "start": "27323" + } + }, + "name": "onlyOwner", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "65", + "end": "27331", + "id": "2088", + "length": "9", + "line": "769", + "parentIndex": "2085", + "start": "27323" + } + } + ], + "name": "upgradeTo", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2091", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2093", + "name": "newImplementation", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2093", + "src": { + "column": "23", + "end": "27305", + "id": "2094", + "length": "25", + "line": "769", + "parentIndex": "2091", + "start": "27281" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2095", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "27287", + "id": "2096", + "length": "7", + "line": "769", + "parentIndex": "2093", + "start": "27281" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "27305", + "id": "2092", + "length": "25", + "line": "769", + "parentIndex": "2085", + "start": "27281" + } + }, + "returnParameters": { + "id": "2097", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "27428", + "id": "2086", + "length": "167", + "line": "769", + "parentIndex": "2085", + "start": "27262" + } + }, + "scope": "2021", + "src": { + "column": "4", + "end": "27428", + "id": "2086", + "length": "167", + "line": "769", + "parentIndex": "2021", + "start": "27262" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2122", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "67", + "end": "27829", + "id": "2123", + "length": "163", + "line": "781", + "parentIndex": "2113", + "start": "27667" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UpgradeableBeacon: implementation is not a contract\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2134", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2134", + "src": { + "column": "35", + "end": "27720", + "id": "2135", + "length": "17", + "line": "782", + "parentIndex": "2128", + "start": "27704" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2132", + "name": "Address", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "251", + "src": { + "column": "16", + "end": "27691", + "id": "2133", + "length": "7", + "line": "782", + "parentIndex": "2130", + "start": "27685" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + }, + "id": "2130", + "memberName": "isContract", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "27702", + "id": "2131", + "length": "18", + "line": "782", + "parentIndex": "2128", + "start": "27685" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$251", + "typeString": "contract Address" + } + } + }, + "id": "2128", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "27721", + "id": "2129", + "length": "37", + "line": "782", + "parentIndex": "2124", + "start": "27685" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "hexValue": "5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374", + "id": "2136", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "55", + "end": "27776", + "id": "2137", + "length": "53", + "line": "782", + "parentIndex": "2124", + "start": "27724" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UpgradeableBeacon: implementation is not a contract\"" + }, + "value": "UpgradeableBeacon: implementation is not a contract" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2126", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "27683", + "id": "2127", + "length": "7", + "line": "782", + "parentIndex": "2124", + "start": "27677" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2124", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "27777", + "id": "2125", + "length": "101", + "line": "782", + "parentIndex": "2122", + "start": "27677" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "typeString": "function(function(address),string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "2140", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2142", + "name": "_implementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2031", + "src": { + "column": "8", + "end": "27802", + "id": "2143", + "length": "15", + "line": "783", + "parentIndex": "2140", + "start": "27788" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2144", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2144", + "src": { + "column": "26", + "end": "27822", + "id": "2145", + "length": "17", + "line": "783", + "parentIndex": "2140", + "start": "27806" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "src": { + "column": "8", + "end": "27822", + "id": "2141", + "length": "35", + "line": "783", + "parentIndex": "2122", + "start": "27788" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2138", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "27823", + "id": "2139", + "length": "36", + "line": "783", + "parentIndex": "2122", + "start": "27788" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ] + }, + "id": "2113", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_setImplementation", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2115", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2117", + "name": "newImplementation", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2117", + "src": { + "column": "32", + "end": "27656", + "id": "2118", + "length": "25", + "line": "781", + "parentIndex": "2115", + "start": "27632" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2119", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "32", + "end": "27638", + "id": "2120", + "length": "7", + "line": "781", + "parentIndex": "2117", + "start": "27632" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "32", + "end": "27656", + "id": "2116", + "length": "25", + "line": "781", + "parentIndex": "2113", + "start": "27632" + } + }, + "returnParameters": { + "id": "2121", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "27829", + "id": "2114", + "length": "226", + "line": "781", + "parentIndex": "2113", + "start": "27604" + } + }, + "scope": "2021", + "src": { + "column": "4", + "end": "27829", + "id": "2114", + "length": "226", + "line": "781", + "parentIndex": "2021", + "start": "27604" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "PRIVATE" + } + } + ], + "src": { + "end": "27831", + "length": "1496", + "line": "736", + "parentIndex": "1991", + "start": "26336" + } + } + } + ] + }, + "src": { + "id": 1992, + "line": 736, + "start": 26336, + "end": 27831, + "length": 1496, + "parent_index": 118 + } + }, + { + "id": 2146, + "license": "MIT", + "name": "ERC1967Proxy", + "absolute_path": "ERC1967Proxy.sol", + "exported_symbols": [ + { + "id": 2146, + "name": "ERC1967Proxy", + "absolute_path": "ERC1967Proxy.sol" + }, + { + "id": 902, + "name": "ERC1967Upgrade", + "absolute_path": "ERC1967Upgrade.sol" + }, + { + "id": 902, + "name": "ERC1967Upgrade", + "absolute_path": "ERC1967Upgrade.sol" + }, + { + "id": 160, + "name": "Proxy", + "absolute_path": "Proxy.sol" + }, + { + "id": 160, + "name": "Proxy", + "absolute_path": "Proxy.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "2166", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "27889", + "id": "2167", + "length": "23", + "line": "789", + "parentIndex": "2146", + "start": "27867" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "Proxy.sol", + "file": "../Proxy.sol", + "id": "2178", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "2146", + "sourceUnit": "1991", + "src": { + "end": "27913", + "length": "22", + "line": "791", + "parentIndex": "2146", + "start": "27892" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ERC1967Upgrade.sol", + "file": "./ERC1967Upgrade.sol", + "id": "2179", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "2146", + "sourceUnit": "1991", + "src": { + "end": "27944", + "length": "30", + "line": "792", + "parentIndex": "2146", + "start": "27915" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "2183", + "name": "Proxy", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "160", + "src": { + "column": "25", + "end": "28349", + "id": "2184", + "length": "5", + "line": "800", + "parentIndex": "2180", + "start": "28345" + } + }, + "id": "2181", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "25", + "end": "28349", + "id": "2182", + "length": "5", + "line": "800", + "parentIndex": "2180", + "start": "28345" + } + }, + { + "baseName": { + "id": "2187", + "name": "ERC1967Upgrade", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "902", + "src": { + "column": "32", + "end": "28365", + "id": "2188", + "length": "14", + "line": "800", + "parentIndex": "2180", + "start": "28352" + } + }, + "id": "2185", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "32", + "end": "28365", + "id": "2186", + "length": "14", + "line": "800", + "parentIndex": "2180", + "start": "28352" + } + } + ], + "contractDependencies": [ + "160", + "902", + "2178", + "2179" + ], + "fullyImplemented": true, + "id": "2180", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "160", + "902", + "2180", + "2178", + "2179" + ], + "name": "ERC1967Proxy", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2203", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "60", + "end": "28929", + "id": "2204", + "length": "161", + "line": "807", + "parentIndex": "2190", + "start": "28769" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "2209", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2211", + "name": "_IMPLEMENTATION_SLOT", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "924", + "src": { + "column": "15", + "end": "28805", + "id": "2212", + "length": "20", + "line": "808", + "parentIndex": "2209", + "start": "28786" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function__t_string_literal$", + "typeString": "function(function(string memory))" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "2219", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function__t_string_literal$", + "typeString": "function(string memory)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"eip1967.proxy.implementation\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "656970313936372e70726f78792e696d706c656d656e746174696f6e", + "id": "2231", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "65", + "end": "28865", + "id": "2232", + "length": "30", + "line": "808", + "parentIndex": "2227", + "start": "28836" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"eip1967.proxy.implementation\"" + }, + "value": "eip1967.proxy.implementation" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2229", + "name": "keccak256", + "nodeType": "IDENTIFIER", + "src": { + "column": "55", + "end": "28834", + "id": "2230", + "length": "9", + "line": "808", + "parentIndex": "2227", + "start": "28826" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2227", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "55", + "end": "28866", + "id": "2228", + "length": "41", + "line": "808", + "parentIndex": "2221", + "start": "28826" + }, + "typeDescription": { + "typeIdentifier": "t_function__t_string_literal$", + "typeString": "function(string memory)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": "2223", + "name": "uint256", + "nodeType": "IDENTIFIER", + "src": { + "column": "47", + "end": "28824", + "id": "2224", + "length": "7", + "line": "808", + "parentIndex": "2221", + "start": "28818" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "typeName": { + "id": "2225", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "28824", + "id": "2226", + "length": "7", + "line": "808", + "parentIndex": "2223", + "start": "28818" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "id": "2221", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "47", + "end": "28867", + "id": "2222", + "length": "50", + "line": "808", + "parentIndex": "2219", + "start": "28818" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function__t_string_literal$", + "typeString": "function(function(string memory))" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "2233", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "100", + "end": "28871", + "id": "2234", + "length": "1", + "line": "808", + "parentIndex": "2219", + "start": "28871" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "47", + "end": "28871", + "id": "2220", + "length": "54", + "line": "808", + "parentIndex": "2213", + "start": "28818" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function__t_string_literal$", + "typeString": "function(function(string memory))" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": "2215", + "name": "bytes32", + "nodeType": "IDENTIFIER", + "src": { + "column": "39", + "end": "28816", + "id": "2216", + "length": "7", + "line": "808", + "parentIndex": "2213", + "start": "28810" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes32$", + "typeString": "function(bytes32)" + }, + "typeName": { + "id": "2217", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "39", + "end": "28816", + "id": "2218", + "length": "7", + "line": "808", + "parentIndex": "2215", + "start": "28810" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + } + }, + "id": "2213", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "39", + "end": "28872", + "id": "2214", + "length": "63", + "line": "808", + "parentIndex": "2209", + "start": "28810" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function__t_string_literal$", + "typeString": "function(function(function(string memory)))" + } + } + }, + "src": { + "column": "15", + "end": "28872", + "id": "2210", + "length": "87", + "line": "808", + "parentIndex": "2205", + "start": "28786" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2207", + "name": "assert", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "28784", + "id": "2208", + "length": "6", + "line": "808", + "parentIndex": "2205", + "start": "28779" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2205", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "28873", + "id": "2206", + "length": "95", + "line": "808", + "parentIndex": "2203", + "start": "28779" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$", + "typeString": "function(bool)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2239", + "name": "_logic", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2239", + "src": { + "column": "26", + "end": "28907", + "id": "2240", + "length": "6", + "line": "809", + "parentIndex": "2235", + "start": "28902" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2241", + "name": "_data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2241", + "src": { + "column": "34", + "end": "28914", + "id": "2242", + "length": "5", + "line": "809", + "parentIndex": "2235", + "start": "28910" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "hexValue": "66616c7365", + "id": "2243", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "41", + "end": "28921", + "id": "2244", + "length": "5", + "line": "809", + "parentIndex": "2235", + "start": "28917" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2237", + "name": "_upgradeToAndCall", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "28900", + "id": "2238", + "length": "17", + "line": "809", + "parentIndex": "2235", + "start": "28884" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2235", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "28922", + "id": "2236", + "length": "39", + "line": "809", + "parentIndex": "2203", + "start": "28884" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_bool$", + "typeString": "function(address,bytes,bool)" + } + } + } + ] + }, + "id": "2190", + "implemented": true, + "kind": "CONSTRUCTOR", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2192", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2194", + "name": "_logic", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2194", + "src": { + "column": "16", + "end": "28738", + "id": "2195", + "length": "14", + "line": "807", + "parentIndex": "2192", + "start": "28725" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2196", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "28731", + "id": "2197", + "length": "7", + "line": "807", + "parentIndex": "2194", + "start": "28725" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2198", + "name": "_data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2198", + "src": { + "column": "32", + "end": "28758", + "id": "2199", + "length": "18", + "line": "807", + "parentIndex": "2192", + "start": "28741" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "2200", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "32", + "end": "28745", + "id": "2201", + "length": "5", + "line": "807", + "parentIndex": "2198", + "start": "28741" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "16", + "end": "28758", + "id": "2193", + "length": "34", + "line": "807", + "parentIndex": "2190", + "start": "28725" + } + }, + "returnParameters": { + "id": "2202", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "28929", + "id": "2191", + "length": "217", + "line": "807", + "parentIndex": "2190", + "start": "28713" + } + }, + "scope": "2180", + "src": { + "column": "4", + "end": "28929", + "id": "2191", + "length": "217", + "line": "807", + "parentIndex": "2180", + "start": "28713" + }, + "stateMutability": "PAYABLE", + "typeDescription": { + "typeIdentifier": "$_t_constructor", + "typeString": "constructor" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2262", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "85", + "end": "29147", + "id": "2263", + "length": "59", + "line": "815", + "parentIndex": "2246", + "start": "29089" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2270", + "name": "ERC1967Upgrade", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "902", + "src": { + "column": "15", + "end": "29119", + "id": "2271", + "length": "14", + "line": "816", + "parentIndex": "2268", + "start": "29106" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_ERC1967Upgrade_$902", + "typeString": "contract ERC1967Upgrade" + } + } + }, + "id": "2268", + "memberName": "_getImplementation", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "29138", + "id": "2269", + "length": "33", + "line": "816", + "parentIndex": "2266", + "start": "29106" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_ERC1967Upgrade_$902", + "typeString": "contract ERC1967Upgrade" + } + } + }, + "id": "2266", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "29140", + "id": "2267", + "length": "35", + "line": "816", + "parentIndex": "2262", + "start": "29106" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "functionReturnParameters": "2246", + "id": "2264", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "29141", + "id": "2265", + "length": "43", + "line": "816", + "parentIndex": "2246", + "start": "29099" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ] + }, + "id": "2246", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_implementation", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "2248", + "name": "_implementation", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "2031", + "src": { + "column": "53", + "end": "29064", + "id": "2249", + "length": "8", + "line": "815", + "parentIndex": "2246", + "start": "29057" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "parameters": { + "id": "2250", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2252", + "name": "impl", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2252", + "src": { + "column": "71", + "end": "29086", + "id": "2253", + "length": "12", + "line": "815", + "parentIndex": "2250", + "start": "29075" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2254", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "71", + "end": "29081", + "id": "2255", + "length": "7", + "line": "815", + "parentIndex": "2252", + "start": "29075" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "71", + "end": "29086", + "id": "2251", + "length": "12", + "line": "815", + "parentIndex": "2246", + "start": "29075" + } + }, + "returnParameters": { + "id": "2256", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2258", + "name": "impl", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2258", + "src": { + "column": "71", + "end": "29086", + "id": "2259", + "length": "12", + "line": "815", + "parentIndex": "2256", + "start": "29075" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2260", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "71", + "end": "29081", + "id": "2261", + "length": "7", + "line": "815", + "parentIndex": "2258", + "start": "29075" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "71", + "end": "29086", + "id": "2257", + "length": "12", + "line": "815", + "parentIndex": "2246", + "start": "29075" + } + }, + "scope": "2180", + "src": { + "column": "4", + "end": "29147", + "id": "2247", + "length": "140", + "line": "815", + "parentIndex": "2180", + "start": "29008" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "29149", + "length": "830", + "line": "800", + "parentIndex": "2146", + "start": "28320" + } + } + } + ] + }, + "src": { + "id": 2147, + "line": 800, + "start": 28320, + "end": 29149, + "length": 830, + "parent_index": 118 + } + }, + { + "id": 2272, + "license": "MIT", + "name": "TransparentUpgradeableProxy", + "absolute_path": "TransparentUpgradeableProxy.sol", + "exported_symbols": [ + { + "id": 2272, + "name": "TransparentUpgradeableProxy", + "absolute_path": "TransparentUpgradeableProxy.sol" + }, + { + "id": 2310, + "name": "ERC1967Proxy" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "2294", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "29207", + "id": "2295", + "length": "23", + "line": "822", + "parentIndex": "2272", + "start": "29185" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "2312", + "name": "ERC1967Proxy", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "2146", + "src": { + "column": "40", + "end": "30752", + "id": "2313", + "length": "12", + "line": "847", + "parentIndex": "2309", + "start": "30741" + } + }, + "id": "2310", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "40", + "end": "30752", + "id": "2311", + "length": "12", + "line": "847", + "parentIndex": "2309", + "start": "30741" + } + } + ], + "contractDependencies": [ + "2146" + ], + "fullyImplemented": true, + "id": "2309", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "2146", + "2309" + ], + "name": "TransparentUpgradeableProxy", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2340", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "104", + "end": "31198", + "id": "2341", + "length": "124", + "line": "852", + "parentIndex": "2315", + "start": "31075" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "2346", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2348", + "name": "_ADMIN_SLOT", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1308", + "src": { + "column": "15", + "end": "31102", + "id": "2349", + "length": "11", + "line": "853", + "parentIndex": "2346", + "start": "31092" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function__t_string_literal$", + "typeString": "function(function(string memory))" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "2356", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function__t_string_literal$", + "typeString": "function(string memory)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"eip1967.proxy.admin\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "656970313936372e70726f78792e61646d696e", + "id": "2368", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "56", + "end": "31153", + "id": "2369", + "length": "21", + "line": "853", + "parentIndex": "2364", + "start": "31133" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"eip1967.proxy.admin\"" + }, + "value": "eip1967.proxy.admin" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2366", + "name": "keccak256", + "nodeType": "IDENTIFIER", + "src": { + "column": "46", + "end": "31131", + "id": "2367", + "length": "9", + "line": "853", + "parentIndex": "2364", + "start": "31123" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2364", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "46", + "end": "31154", + "id": "2365", + "length": "32", + "line": "853", + "parentIndex": "2358", + "start": "31123" + }, + "typeDescription": { + "typeIdentifier": "t_function__t_string_literal$", + "typeString": "function(string memory)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": "2360", + "name": "uint256", + "nodeType": "IDENTIFIER", + "src": { + "column": "38", + "end": "31121", + "id": "2361", + "length": "7", + "line": "853", + "parentIndex": "2358", + "start": "31115" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "typeName": { + "id": "2362", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "38", + "end": "31121", + "id": "2363", + "length": "7", + "line": "853", + "parentIndex": "2360", + "start": "31115" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "id": "2358", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "38", + "end": "31155", + "id": "2359", + "length": "41", + "line": "853", + "parentIndex": "2356", + "start": "31115" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function__t_string_literal$", + "typeString": "function(function(string memory))" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "2370", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "82", + "end": "31159", + "id": "2371", + "length": "1", + "line": "853", + "parentIndex": "2356", + "start": "31159" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "38", + "end": "31159", + "id": "2357", + "length": "45", + "line": "853", + "parentIndex": "2350", + "start": "31115" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function__t_string_literal$", + "typeString": "function(function(string memory))" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": "2352", + "name": "bytes32", + "nodeType": "IDENTIFIER", + "src": { + "column": "30", + "end": "31113", + "id": "2353", + "length": "7", + "line": "853", + "parentIndex": "2350", + "start": "31107" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes32$", + "typeString": "function(bytes32)" + }, + "typeName": { + "id": "2354", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "30", + "end": "31113", + "id": "2355", + "length": "7", + "line": "853", + "parentIndex": "2352", + "start": "31107" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + } + }, + "id": "2350", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "30", + "end": "31160", + "id": "2351", + "length": "54", + "line": "853", + "parentIndex": "2346", + "start": "31107" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function__t_string_literal$", + "typeString": "function(function(function(string memory)))" + } + } + }, + "src": { + "column": "15", + "end": "31160", + "id": "2347", + "length": "69", + "line": "853", + "parentIndex": "2342", + "start": "31092" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2344", + "name": "assert", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "31090", + "id": "2345", + "length": "6", + "line": "853", + "parentIndex": "2342", + "start": "31085" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2342", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "31161", + "id": "2343", + "length": "77", + "line": "853", + "parentIndex": "2340", + "start": "31085" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$", + "typeString": "function(bool)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2376", + "name": "admin_", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2376", + "src": { + "column": "21", + "end": "31190", + "id": "2377", + "length": "6", + "line": "854", + "parentIndex": "2372", + "start": "31185" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2374", + "name": "_changeAdmin", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "31183", + "id": "2375", + "length": "12", + "line": "854", + "parentIndex": "2372", + "start": "31172" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2372", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "31191", + "id": "2373", + "length": "20", + "line": "854", + "parentIndex": "2340", + "start": "31172" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ] + }, + "id": "2315", + "implemented": true, + "kind": "CONSTRUCTOR", + "modifiers": [ + { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2336", + "name": "_logic", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2336", + "src": { + "column": "89", + "end": "31065", + "id": "2337", + "length": "6", + "line": "852", + "parentIndex": "2332", + "start": "31060" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2338", + "name": "_data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2338", + "src": { + "column": "97", + "end": "31072", + "id": "2339", + "length": "5", + "line": "852", + "parentIndex": "2332", + "start": "31068" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ], + "id": "2332", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "2334", + "name": "ERC1967Proxy", + "src": { + "column": "76", + "end": "31058", + "id": "2335", + "length": "12", + "line": "852", + "parentIndex": "2332", + "start": "31047" + } + }, + "name": "ERC1967Proxy", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "76", + "end": "31073", + "id": "2333", + "length": "27", + "line": "852", + "parentIndex": "2315", + "start": "31047" + } + } + ], + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2317", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2319", + "name": "_logic", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2319", + "src": { + "column": "16", + "end": "31000", + "id": "2320", + "length": "14", + "line": "852", + "parentIndex": "2317", + "start": "30987" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2321", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "30993", + "id": "2322", + "length": "7", + "line": "852", + "parentIndex": "2319", + "start": "30987" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2323", + "name": "admin_", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2323", + "src": { + "column": "32", + "end": "31016", + "id": "2324", + "length": "14", + "line": "852", + "parentIndex": "2317", + "start": "31003" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2325", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "32", + "end": "31009", + "id": "2326", + "length": "7", + "line": "852", + "parentIndex": "2323", + "start": "31003" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2327", + "name": "_data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2327", + "src": { + "column": "48", + "end": "31036", + "id": "2328", + "length": "18", + "line": "852", + "parentIndex": "2317", + "start": "31019" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "2329", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "48", + "end": "31023", + "id": "2330", + "length": "5", + "line": "852", + "parentIndex": "2327", + "start": "31019" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "16", + "end": "31036", + "id": "2318", + "length": "50", + "line": "852", + "parentIndex": "2315", + "start": "30987" + } + }, + "returnParameters": { + "id": "2331", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "31198", + "id": "2316", + "length": "224", + "line": "852", + "parentIndex": "2315", + "start": "30975" + } + }, + "scope": "2309", + "src": { + "column": "4", + "end": "31198", + "id": "2316", + "length": "224", + "line": "852", + "parentIndex": "2309", + "start": "30975" + }, + "stateMutability": "PAYABLE", + "typeDescription": { + "typeIdentifier": "$_t_constructor", + "typeString": "constructor" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Modifier", + "value": { + "body": { + "id": "2382", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "23", + "end": "31473", + "id": "2383", + "length": "115", + "line": "860", + "parentIndex": "2379", + "start": "31359" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "2396", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "39", + "end": "31425", + "id": "2397", + "length": "26", + "line": "861", + "parentIndex": "2379", + "start": "31400" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2398", + "name": "_", + "nodeType": "PLACEHOLDER_STATEMENT", + "src": { + "column": "12", + "end": "31414", + "id": "2399", + "length": "1", + "line": "862", + "parentIndex": "2396", + "start": "31414" + }, + "typeDescription": { + "typeIdentifier": "t_placeholder_literal", + "typeString": "t_placeholder" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "2386", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2390", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "31375", + "id": "2391", + "length": "3", + "line": "861", + "parentIndex": "2388", + "start": "31373" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "2388", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "31382", + "id": "2389", + "length": "10", + "line": "861", + "parentIndex": "2386", + "start": "31373" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2394", + "name": "_getAdmin", + "nodeType": "IDENTIFIER", + "src": { + "column": "26", + "end": "31395", + "id": "2395", + "length": "9", + "line": "861", + "parentIndex": "2392", + "start": "31387" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2392", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "26", + "end": "31397", + "id": "2393", + "length": "11", + "line": "861", + "parentIndex": "2386", + "start": "31387" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "src": { + "column": "12", + "end": "31397", + "id": "2387", + "length": "25", + "line": "861", + "parentIndex": "2384", + "start": "31373" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "2384", + "nodeType": "IF_STATEMENT", + "src": { + "end": "31467", + "id": "2385", + "length": "99", + "line": "861", + "parentIndex": "2382", + "start": "31369" + } + } + } + ] + }, + "id": "2379", + "name": "ifAdmin", + "nodeType": "MODIFIER_DEFINITION", + "parameters": { + "id": "2381", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "31473", + "id": "2380", + "length": "134", + "line": "860", + "parentIndex": "2309", + "start": "31340" + } + }, + "src": { + "column": "4", + "end": "31473", + "id": "2380", + "length": "134", + "line": "860", + "parentIndex": "2309", + "start": "31340" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2419", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "63", + "end": "32011", + "id": "2420", + "length": "37", + "line": "877", + "parentIndex": "2401", + "start": "31975" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "2423", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2425", + "name": "admin_", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2425", + "src": { + "column": "8", + "end": "31990", + "id": "2426", + "length": "6", + "line": "878", + "parentIndex": "2423", + "start": "31985" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2429", + "name": "_getAdmin", + "nodeType": "IDENTIFIER", + "src": { + "column": "17", + "end": "32002", + "id": "2430", + "length": "9", + "line": "878", + "parentIndex": "2427", + "start": "31994" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2427", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "17", + "end": "32004", + "id": "2428", + "length": "11", + "line": "878", + "parentIndex": "2423", + "start": "31994" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "src": { + "column": "8", + "end": "32004", + "id": "2424", + "length": "20", + "line": "878", + "parentIndex": "2419", + "start": "31985" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2421", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "32005", + "id": "2422", + "length": "21", + "line": "878", + "parentIndex": "2419", + "start": "31985" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ] + }, + "id": "2401", + "implemented": true, + "kind": "KIND_FUNCTION", + "modifiers": [ + { + "id": "2403", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "2405", + "name": "ifAdmin", + "src": { + "column": "30", + "end": "31948", + "id": "2406", + "length": "7", + "line": "877", + "parentIndex": "2403", + "start": "31942" + } + }, + "name": "ifAdmin", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "30", + "end": "31948", + "id": "2404", + "length": "7", + "line": "877", + "parentIndex": "2401", + "start": "31942" + } + } + ], + "name": "admin", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2407", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2409", + "name": "admin_", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2409", + "src": { + "column": "47", + "end": "31972", + "id": "2410", + "length": "14", + "line": "877", + "parentIndex": "2407", + "start": "31959" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2411", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "31965", + "id": "2412", + "length": "7", + "line": "877", + "parentIndex": "2409", + "start": "31959" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "47", + "end": "31972", + "id": "2408", + "length": "14", + "line": "877", + "parentIndex": "2401", + "start": "31959" + } + }, + "returnParameters": { + "id": "2413", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2415", + "name": "admin_", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2415", + "src": { + "column": "47", + "end": "31972", + "id": "2416", + "length": "14", + "line": "877", + "parentIndex": "2413", + "start": "31959" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2417", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "31965", + "id": "2418", + "length": "7", + "line": "877", + "parentIndex": "2415", + "start": "31959" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "47", + "end": "31972", + "id": "2414", + "length": "14", + "line": "877", + "parentIndex": "2401", + "start": "31959" + } + }, + "scope": "2309", + "src": { + "column": "4", + "end": "32011", + "id": "2402", + "length": "96", + "line": "877", + "parentIndex": "2309", + "start": "31916" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2450", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "81", + "end": "32600", + "id": "2451", + "length": "52", + "line": "890", + "parentIndex": "2432", + "start": "32549" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "2454", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2456", + "name": "implementation_", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2456", + "src": { + "column": "8", + "end": "32573", + "id": "2457", + "length": "15", + "line": "891", + "parentIndex": "2454", + "start": "32559" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2460", + "name": "_implementation", + "nodeType": "IDENTIFIER", + "src": { + "column": "26", + "end": "32591", + "id": "2461", + "length": "15", + "line": "891", + "parentIndex": "2458", + "start": "32577" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2458", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "26", + "end": "32593", + "id": "2459", + "length": "17", + "line": "891", + "parentIndex": "2454", + "start": "32577" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "src": { + "column": "8", + "end": "32593", + "id": "2455", + "length": "35", + "line": "891", + "parentIndex": "2450", + "start": "32559" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2452", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "32594", + "id": "2453", + "length": "36", + "line": "891", + "parentIndex": "2450", + "start": "32559" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ] + }, + "id": "2432", + "implemented": true, + "kind": "KIND_FUNCTION", + "modifiers": [ + { + "id": "2434", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "2436", + "name": "ifAdmin", + "src": { + "column": "39", + "end": "32513", + "id": "2437", + "length": "7", + "line": "890", + "parentIndex": "2434", + "start": "32507" + } + }, + "name": "ifAdmin", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "39", + "end": "32513", + "id": "2435", + "length": "7", + "line": "890", + "parentIndex": "2432", + "start": "32507" + } + } + ], + "name": "implementation", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2438", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2440", + "name": "implementation_", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2440", + "src": { + "column": "56", + "end": "32546", + "id": "2441", + "length": "23", + "line": "890", + "parentIndex": "2438", + "start": "32524" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2442", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "56", + "end": "32530", + "id": "2443", + "length": "7", + "line": "890", + "parentIndex": "2440", + "start": "32524" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "56", + "end": "32546", + "id": "2439", + "length": "23", + "line": "890", + "parentIndex": "2432", + "start": "32524" + } + }, + "returnParameters": { + "id": "2444", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2446", + "name": "implementation_", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2446", + "src": { + "column": "56", + "end": "32546", + "id": "2447", + "length": "23", + "line": "890", + "parentIndex": "2444", + "start": "32524" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2448", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "56", + "end": "32530", + "id": "2449", + "length": "7", + "line": "890", + "parentIndex": "2446", + "start": "32524" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "56", + "end": "32546", + "id": "2445", + "length": "23", + "line": "890", + "parentIndex": "2432", + "start": "32524" + } + }, + "scope": "2309", + "src": { + "column": "4", + "end": "32600", + "id": "2433", + "length": "129", + "line": "890", + "parentIndex": "2309", + "start": "32472" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2476", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "68", + "end": "32908", + "id": "2477", + "length": "39", + "line": "901", + "parentIndex": "2463", + "start": "32870" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2482", + "name": "newAdmin", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2482", + "src": { + "column": "21", + "end": "32900", + "id": "2483", + "length": "8", + "line": "902", + "parentIndex": "2478", + "start": "32893" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2480", + "name": "_changeAdmin", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "32891", + "id": "2481", + "length": "12", + "line": "902", + "parentIndex": "2478", + "start": "32880" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2478", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "32901", + "id": "2479", + "length": "22", + "line": "902", + "parentIndex": "2476", + "start": "32880" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ] + }, + "id": "2463", + "implemented": true, + "kind": "KIND_FUNCTION", + "modifiers": [ + { + "id": "2465", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "2467", + "name": "ifAdmin", + "src": { + "column": "60", + "end": "32868", + "id": "2468", + "length": "7", + "line": "901", + "parentIndex": "2465", + "start": "32862" + } + }, + "name": "ifAdmin", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "60", + "end": "32868", + "id": "2466", + "length": "7", + "line": "901", + "parentIndex": "2463", + "start": "32862" + } + } + ], + "name": "changeAdmin", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2469", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2471", + "name": "newAdmin", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2471", + "src": { + "column": "25", + "end": "32842", + "id": "2472", + "length": "16", + "line": "901", + "parentIndex": "2469", + "start": "32827" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2473", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "25", + "end": "32833", + "id": "2474", + "length": "7", + "line": "901", + "parentIndex": "2471", + "start": "32827" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "25", + "end": "32842", + "id": "2470", + "length": "16", + "line": "901", + "parentIndex": "2463", + "start": "32827" + } + }, + "returnParameters": { + "id": "2475", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "32908", + "id": "2464", + "length": "103", + "line": "901", + "parentIndex": "2463", + "start": "32806" + } + }, + "scope": "2309", + "src": { + "column": "4", + "end": "32908", + "id": "2464", + "length": "103", + "line": "901", + "parentIndex": "2309", + "start": "32806" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "virtual": true, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2498", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "67", + "end": "33202", + "id": "2499", + "length": "71", + "line": "910", + "parentIndex": "2485", + "start": "33132" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function__t_string_literal$", + "typeString": "function(string memory)" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2504", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2504", + "src": { + "column": "26", + "end": "33176", + "id": "2505", + "length": "17", + "line": "911", + "parentIndex": "2500", + "start": "33160" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2512", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "51", + "end": "33186", + "id": "2513", + "length": "2", + "line": "911", + "parentIndex": "2506", + "start": "33185" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"\"" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "id": "2508", + "name": "bytes", + "nodeType": "IDENTIFIER", + "src": { + "column": "45", + "end": "33183", + "id": "2509", + "length": "5", + "line": "911", + "parentIndex": "2506", + "start": "33179" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + }, + "typeName": { + "id": "2510", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "45", + "end": "33183", + "id": "2511", + "length": "5", + "line": "911", + "parentIndex": "2508", + "start": "33179" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + }, + "id": "2506", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "45", + "end": "33187", + "id": "2507", + "length": "9", + "line": "911", + "parentIndex": "2500", + "start": "33179" + }, + "typeDescription": { + "typeIdentifier": "t_function__t_string_literal$", + "typeString": "function(string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function__t_string_literal$", + "typeString": "function(string memory)" + } + ], + "hexValue": "66616c7365", + "id": "2514", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "56", + "end": "33194", + "id": "2515", + "length": "5", + "line": "911", + "parentIndex": "2500", + "start": "33190" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2502", + "name": "_upgradeToAndCall", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "33158", + "id": "2503", + "length": "17", + "line": "911", + "parentIndex": "2500", + "start": "33142" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2500", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "33195", + "id": "2501", + "length": "54", + "line": "911", + "parentIndex": "2498", + "start": "33142" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_function__t_string_literal$_t_bool$", + "typeString": "function(address,function(string memory),bool)" + } + } + } + ] + }, + "id": "2485", + "implemented": true, + "kind": "KIND_FUNCTION", + "modifiers": [ + { + "id": "2487", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "2489", + "name": "ifAdmin", + "src": { + "column": "59", + "end": "33130", + "id": "2490", + "length": "7", + "line": "910", + "parentIndex": "2487", + "start": "33124" + } + }, + "name": "ifAdmin", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "59", + "end": "33130", + "id": "2488", + "length": "7", + "line": "910", + "parentIndex": "2485", + "start": "33124" + } + } + ], + "name": "upgradeTo", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2491", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2493", + "name": "newImplementation", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2493", + "src": { + "column": "23", + "end": "33112", + "id": "2494", + "length": "25", + "line": "910", + "parentIndex": "2491", + "start": "33088" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2495", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "33094", + "id": "2496", + "length": "7", + "line": "910", + "parentIndex": "2493", + "start": "33088" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "33112", + "id": "2492", + "length": "25", + "line": "910", + "parentIndex": "2485", + "start": "33088" + } + }, + "returnParameters": { + "id": "2497", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "33202", + "id": "2486", + "length": "134", + "line": "910", + "parentIndex": "2485", + "start": "33069" + } + }, + "scope": "2309", + "src": { + "column": "4", + "end": "33202", + "id": "2486", + "length": "134", + "line": "910", + "parentIndex": "2309", + "start": "33069" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2534", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "103", + "end": "33742", + "id": "2535", + "length": "65", + "line": "921", + "parentIndex": "2517", + "start": "33678" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2540", + "name": "newImplementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2540", + "src": { + "column": "26", + "end": "33722", + "id": "2541", + "length": "17", + "line": "922", + "parentIndex": "2536", + "start": "33706" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2542", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2542", + "src": { + "column": "45", + "end": "33728", + "id": "2543", + "length": "4", + "line": "922", + "parentIndex": "2536", + "start": "33725" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "hexValue": "74727565", + "id": "2544", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "51", + "end": "33734", + "id": "2545", + "length": "4", + "line": "922", + "parentIndex": "2536", + "start": "33731" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2538", + "name": "_upgradeToAndCall", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "33704", + "id": "2539", + "length": "17", + "line": "922", + "parentIndex": "2536", + "start": "33688" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2536", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "33735", + "id": "2537", + "length": "48", + "line": "922", + "parentIndex": "2534", + "start": "33688" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_bool$", + "typeString": "function(address,bytes,bool)" + } + } + } + ] + }, + "id": "2517", + "implemented": true, + "kind": "KIND_FUNCTION", + "modifiers": [ + { + "id": "2519", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "2521", + "name": "ifAdmin", + "src": { + "column": "95", + "end": "33676", + "id": "2522", + "length": "7", + "line": "921", + "parentIndex": "2519", + "start": "33670" + } + }, + "name": "ifAdmin", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "95", + "end": "33676", + "id": "2520", + "length": "7", + "line": "921", + "parentIndex": "2517", + "start": "33670" + } + } + ], + "name": "upgradeToAndCall", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2523", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2525", + "name": "newImplementation", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2525", + "src": { + "column": "30", + "end": "33629", + "id": "2526", + "length": "25", + "line": "921", + "parentIndex": "2523", + "start": "33605" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2527", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "30", + "end": "33611", + "id": "2528", + "length": "7", + "line": "921", + "parentIndex": "2525", + "start": "33605" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2529", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2529", + "src": { + "column": "57", + "end": "33650", + "id": "2530", + "length": "19", + "line": "921", + "parentIndex": "2523", + "start": "33632" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "2531", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "57", + "end": "33636", + "id": "2532", + "length": "5", + "line": "921", + "parentIndex": "2529", + "start": "33632" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "30", + "end": "33650", + "id": "2524", + "length": "46", + "line": "921", + "parentIndex": "2517", + "start": "33605" + } + }, + "returnParameters": { + "id": "2533", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "33742", + "id": "2518", + "length": "164", + "line": "921", + "parentIndex": "2517", + "start": "33579" + } + }, + "scope": "2309", + "src": { + "column": "4", + "end": "33742", + "id": "2518", + "length": "164", + "line": "921", + "parentIndex": "2309", + "start": "33579" + }, + "stateMutability": "PAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$", + "typeString": "function(address,bytes)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2561", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "62", + "end": "33896", + "id": "2562", + "length": "35", + "line": "928", + "parentIndex": "2547", + "start": "33862" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2567", + "name": "_getAdmin", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "33887", + "id": "2568", + "length": "9", + "line": "929", + "parentIndex": "2565", + "start": "33879" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2565", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "33889", + "id": "2566", + "length": "11", + "line": "929", + "parentIndex": "2561", + "start": "33879" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "functionReturnParameters": "2547", + "id": "2563", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "33890", + "id": "2564", + "length": "19", + "line": "929", + "parentIndex": "2547", + "start": "33872" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ] + }, + "id": "2547", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_admin", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2549", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2551", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2551", + "src": { + "column": "53", + "end": "33859", + "id": "2552", + "length": "7", + "line": "928", + "parentIndex": "2549", + "start": "33853" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2553", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "53", + "end": "33859", + "id": "2554", + "length": "7", + "line": "928", + "parentIndex": "2551", + "start": "33853" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "53", + "end": "33859", + "id": "2550", + "length": "7", + "line": "928", + "parentIndex": "2547", + "start": "33853" + } + }, + "returnParameters": { + "id": "2555", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2557", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2557", + "src": { + "column": "53", + "end": "33859", + "id": "2558", + "length": "7", + "line": "928", + "parentIndex": "2555", + "start": "33853" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2559", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "53", + "end": "33859", + "id": "2560", + "length": "7", + "line": "928", + "parentIndex": "2557", + "start": "33853" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "53", + "end": "33859", + "id": "2556", + "length": "7", + "line": "928", + "parentIndex": "2547", + "start": "33853" + } + }, + "scope": "2309", + "src": { + "column": "4", + "end": "33896", + "id": "2548", + "length": "93", + "line": "928", + "parentIndex": "2309", + "start": "33804" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2576", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "57", + "end": "34224", + "id": "2577", + "length": "154", + "line": "935", + "parentIndex": "2570", + "start": "34071" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "2582", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2586", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "34091", + "id": "2587", + "length": "3", + "line": "936", + "parentIndex": "2584", + "start": "34089" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "2584", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "34098", + "id": "2585", + "length": "10", + "line": "936", + "parentIndex": "2582", + "start": "34089" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2590", + "name": "_getAdmin", + "nodeType": "IDENTIFIER", + "src": { + "column": "30", + "end": "34111", + "id": "2591", + "length": "9", + "line": "936", + "parentIndex": "2588", + "start": "34103" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2588", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "30", + "end": "34113", + "id": "2589", + "length": "11", + "line": "936", + "parentIndex": "2582", + "start": "34103" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "src": { + "column": "16", + "end": "34113", + "id": "2583", + "length": "25", + "line": "936", + "parentIndex": "2578", + "start": "34089" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "5472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574", + "id": "2592", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "43", + "end": "34183", + "id": "2593", + "length": "68", + "line": "936", + "parentIndex": "2578", + "start": "34116" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\"" + }, + "value": "TransparentUpgradeableProxy: admin cannot fallback to proxy target" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2580", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "34087", + "id": "2581", + "length": "7", + "line": "936", + "parentIndex": "2578", + "start": "34081" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2578", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "34184", + "id": "2579", + "length": "104", + "line": "936", + "parentIndex": "2576", + "start": "34081" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2598", + "name": "super", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "34199", + "id": "2599", + "length": "5", + "line": "937", + "parentIndex": "2596", + "start": "34195" + }, + "typeDescription": { + "typeIdentifier": "t_magic_super", + "typeString": "super" + } + } + }, + "id": "2596", + "memberName": "_beforeFallback", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "34215", + "id": "2597", + "length": "21", + "line": "937", + "parentIndex": "2594", + "start": "34195" + }, + "typeDescription": { + "typeIdentifier": "t_magic_super", + "typeString": "super" + } + } + }, + "id": "2594", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "34217", + "id": "2595", + "length": "23", + "line": "937", + "parentIndex": "2576", + "start": "34195" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ] + }, + "id": "2570", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_beforeFallback", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "2572", + "name": "_beforeFallback", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "212", + "src": { + "column": "48", + "end": "34069", + "id": "2573", + "length": "8", + "line": "935", + "parentIndex": "2570", + "start": "34062" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + ], + "parameters": { + "id": "2574", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "34224", + "id": "2571", + "length": "207", + "line": "935", + "parentIndex": "2570", + "start": "34018" + } + }, + "returnParameters": { + "id": "2575", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "34224", + "id": "2571", + "length": "207", + "line": "935", + "parentIndex": "2570", + "start": "34018" + } + }, + "scope": "2309", + "src": { + "column": "4", + "end": "34224", + "id": "2571", + "length": "207", + "line": "935", + "parentIndex": "2309", + "start": "34018" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "virtual": true, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "34226", + "length": "3526", + "line": "847", + "parentIndex": "2272", + "start": "30701" + } + } + } + ] + }, + "src": { + "id": 2273, + "line": 847, + "start": 30701, + "end": 34226, + "length": 3526, + "parent_index": 118 + } + }, + { + "id": 2600, + "license": "MIT", + "name": "ProxyAdmin", + "absolute_path": "ProxyAdmin.sol", + "exported_symbols": [ + { + "id": 2600, + "name": "ProxyAdmin", + "absolute_path": "ProxyAdmin.sol" + }, + { + "id": 1771, + "name": "Ownable", + "absolute_path": "Ownable.sol" + }, + { + "id": 1771, + "name": "Ownable", + "absolute_path": "Ownable.sol" + }, + { + "id": 2272, + "name": "TransparentUpgradeableProxy", + "absolute_path": "TransparentUpgradeableProxy.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "2624", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "34284", + "id": "2625", + "length": "23", + "line": "943", + "parentIndex": "2600", + "start": "34262" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "TransparentUpgradeableProxy.sol", + "file": "./TransparentUpgradeableProxy.sol", + "id": "2639", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "2600", + "sourceUnit": "2272", + "src": { + "end": "34329", + "length": "43", + "line": "945", + "parentIndex": "2600", + "start": "34287" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "Ownable.sol", + "file": "../../access/Ownable.sol", + "id": "2640", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "2600", + "sourceUnit": "2272", + "src": { + "end": "34364", + "length": "34", + "line": "946", + "parentIndex": "2600", + "start": "34331" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "2644", + "name": "Ownable", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1771", + "src": { + "column": "23", + "end": "34625", + "id": "2645", + "length": "7", + "line": "952", + "parentIndex": "2641", + "start": "34619" + } + }, + "id": "2642", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "23", + "end": "34625", + "id": "2643", + "length": "7", + "line": "952", + "parentIndex": "2641", + "start": "34619" + } + } + ], + "contractDependencies": [ + "1771", + "2639", + "2640" + ], + "fullyImplemented": true, + "id": "2641", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "1771", + "2641", + "2639", + "2640" + ], + "name": "ProxyAdmin", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2663", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "109", + "end": "35233", + "id": "2664", + "length": "332", + "line": "961", + "parentIndex": "2647", + "start": "34902" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "2665", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_hex_literal", + "typeString": "literal_hex_string hex\"5c60da1b\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "6865783563363064613162", + "id": "2679", + "isPure": true, + "kind": "HEX_STRING", + "nodeType": "LITERAL", + "src": { + "column": "76", + "end": "35149", + "id": "2680", + "length": "13", + "line": "964", + "parentIndex": "2667", + "start": "35137" + }, + "typeDescription": { + "typeIdentifier": "t_string_hex_literal", + "typeString": "literal_hex_string hex\"5c60da1b\"" + }, + "value": "hex5c60da1b" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2677", + "name": "proxy", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2677", + "src": { + "column": "58", + "end": "35123", + "id": "2678", + "length": "5", + "line": "964", + "parentIndex": "2671", + "start": "35119" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2673", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "50", + "end": "35117", + "id": "2674", + "length": "7", + "line": "964", + "parentIndex": "2671", + "start": "35111" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "2675", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "35117", + "id": "2676", + "length": "7", + "line": "964", + "parentIndex": "2673", + "start": "35111" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "2671", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "50", + "end": "35124", + "id": "2672", + "length": "14", + "line": "964", + "parentIndex": "2669", + "start": "35111" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "2669", + "memberName": "staticcall", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "50", + "end": "35135", + "id": "2670", + "length": "25", + "line": "964", + "parentIndex": "2667", + "start": "35111" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "2667", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "50", + "end": "35150", + "id": "2668", + "length": "40", + "line": "964", + "parentIndex": "2665", + "start": "35111" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_string_hex_literal$", + "typeString": "function(literal_hex_string hex\"5c60da1b\")" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "35151", + "id": "2666", + "length": "83", + "line": "964", + "parentIndex": "2663", + "start": "35069" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2685", + "name": "success", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "35175", + "id": "2686", + "length": "7", + "line": "965", + "parentIndex": "2681", + "start": "35169" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2683", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "35167", + "id": "2684", + "length": "7", + "line": "965", + "parentIndex": "2681", + "start": "35161" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2681", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "35176", + "id": "2682", + "length": "16", + "line": "965", + "parentIndex": "2663", + "start": "35161" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_tuple_$_t_address$", + "typeString": "tuple(address)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2695", + "name": "returndata", + "nodeType": "IDENTIFIER", + "src": { + "column": "26", + "end": "35214", + "id": "2696", + "length": "10", + "line": "966", + "parentIndex": "2689", + "start": "35205" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2699", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "39", + "end": "35224", + "id": "2700", + "length": "7", + "line": "966", + "parentIndex": "2697", + "start": "35218" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2701", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "39", + "end": "35224", + "id": "2702", + "length": "7", + "line": "966", + "parentIndex": "2699", + "start": "35218" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + } + ], + "id": "2697", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "38", + "end": "35225", + "id": "2698", + "length": "9", + "line": "966", + "parentIndex": "2689", + "start": "35217" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_address$", + "typeString": "tuple(address)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2693", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "35196", + "id": "2694", + "length": "3", + "line": "966", + "parentIndex": "2691", + "start": "35194" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "2691", + "memberName": "decode", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "35203", + "id": "2692", + "length": "10", + "line": "966", + "parentIndex": "2689", + "start": "35194" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "2689", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "35226", + "id": "2690", + "length": "33", + "line": "966", + "parentIndex": "2663", + "start": "35194" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_tuple_$_t_address$", + "typeString": "function(function(),tuple(address))" + } + } + }, + "functionReturnParameters": "2647", + "id": "2687", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "35227", + "id": "2688", + "length": "41", + "line": "966", + "parentIndex": "2647", + "start": "35187" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_tuple_$_t_address$", + "typeString": "function(function(),tuple(address))" + } + } + } + ] + }, + "id": "2647", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "getProxyImplementation", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2649", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2651", + "name": "proxy", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2651", + "src": { + "column": "36", + "end": "34861", + "id": "2652", + "length": "33", + "line": "961", + "parentIndex": "2649", + "start": "34829" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + }, + "typeName": { + "id": "2653", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "2655", + "name": "TransparentUpgradeableProxy", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "2272", + "src": { + "column": "36", + "end": "34855", + "id": "2656", + "length": "27", + "line": "961", + "parentIndex": "2653", + "start": "34829" + } + }, + "referencedDeclaration": "2272", + "src": { + "column": "36", + "end": "34855", + "id": "2654", + "length": "27", + "line": "961", + "parentIndex": "2651", + "start": "34829" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "36", + "end": "34861", + "id": "2650", + "length": "33", + "line": "961", + "parentIndex": "2647", + "start": "34829" + } + }, + "returnParameters": { + "id": "2657", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2659", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2659", + "src": { + "column": "100", + "end": "34899", + "id": "2660", + "length": "7", + "line": "961", + "parentIndex": "2657", + "start": "34893" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2661", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "100", + "end": "34899", + "id": "2662", + "length": "7", + "line": "961", + "parentIndex": "2659", + "start": "34893" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "100", + "end": "34899", + "id": "2658", + "length": "7", + "line": "961", + "parentIndex": "2647", + "start": "34893" + } + }, + "scope": "2641", + "src": { + "column": "4", + "end": "35233", + "id": "2648", + "length": "437", + "line": "961", + "parentIndex": "2641", + "start": "34797" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$", + "typeString": "function(contract TransparentUpgradeableProxy)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2720", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "100", + "end": "35812", + "id": "2721", + "length": "323", + "line": "976", + "parentIndex": "2704", + "start": "35490" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "2722", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_hex_literal", + "typeString": "literal_hex_string hex\"f851a440\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "6865786638353161343430", + "id": "2736", + "isPure": true, + "kind": "HEX_STRING", + "nodeType": "LITERAL", + "src": { + "column": "76", + "end": "35728", + "id": "2737", + "length": "13", + "line": "979", + "parentIndex": "2724", + "start": "35716" + }, + "typeDescription": { + "typeIdentifier": "t_string_hex_literal", + "typeString": "literal_hex_string hex\"f851a440\"" + }, + "value": "hexf851a440" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2734", + "name": "proxy", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2734", + "src": { + "column": "58", + "end": "35702", + "id": "2735", + "length": "5", + "line": "979", + "parentIndex": "2728", + "start": "35698" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2730", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "50", + "end": "35696", + "id": "2731", + "length": "7", + "line": "979", + "parentIndex": "2728", + "start": "35690" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "2732", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "35696", + "id": "2733", + "length": "7", + "line": "979", + "parentIndex": "2730", + "start": "35690" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "2728", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "50", + "end": "35703", + "id": "2729", + "length": "14", + "line": "979", + "parentIndex": "2726", + "start": "35690" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "2726", + "memberName": "staticcall", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "50", + "end": "35714", + "id": "2727", + "length": "25", + "line": "979", + "parentIndex": "2724", + "start": "35690" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "2724", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "50", + "end": "35729", + "id": "2725", + "length": "40", + "line": "979", + "parentIndex": "2722", + "start": "35690" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_string_hex_literal$", + "typeString": "function(literal_hex_string hex\"f851a440\")" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "35730", + "id": "2723", + "length": "83", + "line": "979", + "parentIndex": "2720", + "start": "35648" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2742", + "name": "success", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "35754", + "id": "2743", + "length": "7", + "line": "980", + "parentIndex": "2738", + "start": "35748" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2740", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "35746", + "id": "2741", + "length": "7", + "line": "980", + "parentIndex": "2738", + "start": "35740" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2738", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "35755", + "id": "2739", + "length": "16", + "line": "980", + "parentIndex": "2720", + "start": "35740" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_tuple_$_t_address$", + "typeString": "tuple(address)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2752", + "name": "returndata", + "nodeType": "IDENTIFIER", + "src": { + "column": "26", + "end": "35793", + "id": "2753", + "length": "10", + "line": "981", + "parentIndex": "2746", + "start": "35784" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2756", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "39", + "end": "35803", + "id": "2757", + "length": "7", + "line": "981", + "parentIndex": "2754", + "start": "35797" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2758", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "39", + "end": "35803", + "id": "2759", + "length": "7", + "line": "981", + "parentIndex": "2756", + "start": "35797" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + } + ], + "id": "2754", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "38", + "end": "35804", + "id": "2755", + "length": "9", + "line": "981", + "parentIndex": "2746", + "start": "35796" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_address$", + "typeString": "tuple(address)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2750", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "35775", + "id": "2751", + "length": "3", + "line": "981", + "parentIndex": "2748", + "start": "35773" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "2748", + "memberName": "decode", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "35782", + "id": "2749", + "length": "10", + "line": "981", + "parentIndex": "2746", + "start": "35773" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "2746", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "35805", + "id": "2747", + "length": "33", + "line": "981", + "parentIndex": "2720", + "start": "35773" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_tuple_$_t_address$", + "typeString": "function(function(),tuple(address))" + } + } + }, + "functionReturnParameters": "2704", + "id": "2744", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "35806", + "id": "2745", + "length": "41", + "line": "981", + "parentIndex": "2704", + "start": "35766" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_tuple_$_t_address$", + "typeString": "function(function(),tuple(address))" + } + } + } + ] + }, + "id": "2704", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "getProxyAdmin", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2706", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2708", + "name": "proxy", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2708", + "src": { + "column": "27", + "end": "35449", + "id": "2709", + "length": "33", + "line": "976", + "parentIndex": "2706", + "start": "35417" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + }, + "typeName": { + "id": "2710", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "2712", + "name": "TransparentUpgradeableProxy", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "2272", + "src": { + "column": "27", + "end": "35443", + "id": "2713", + "length": "27", + "line": "976", + "parentIndex": "2710", + "start": "35417" + } + }, + "referencedDeclaration": "2272", + "src": { + "column": "27", + "end": "35443", + "id": "2711", + "length": "27", + "line": "976", + "parentIndex": "2708", + "start": "35417" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "27", + "end": "35449", + "id": "2707", + "length": "33", + "line": "976", + "parentIndex": "2704", + "start": "35417" + } + }, + "returnParameters": { + "id": "2714", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2716", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2716", + "src": { + "column": "91", + "end": "35487", + "id": "2717", + "length": "7", + "line": "976", + "parentIndex": "2714", + "start": "35481" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2718", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "91", + "end": "35487", + "id": "2719", + "length": "7", + "line": "976", + "parentIndex": "2716", + "start": "35481" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "91", + "end": "35487", + "id": "2715", + "length": "7", + "line": "976", + "parentIndex": "2704", + "start": "35481" + } + }, + "scope": "2641", + "src": { + "column": "4", + "end": "35812", + "id": "2705", + "length": "419", + "line": "976", + "parentIndex": "2641", + "start": "35394" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$", + "typeString": "function(contract TransparentUpgradeableProxy)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2780", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "108", + "end": "36134", + "id": "2781", + "length": "44", + "line": "991", + "parentIndex": "2761", + "start": "36091" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2788", + "name": "newAdmin", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2788", + "src": { + "column": "26", + "end": "36126", + "id": "2789", + "length": "8", + "line": "992", + "parentIndex": "2782", + "start": "36119" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2786", + "name": "proxy", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2786", + "src": { + "column": "8", + "end": "36105", + "id": "2787", + "length": "5", + "line": "992", + "parentIndex": "2784", + "start": "36101" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + } + } + }, + "id": "2784", + "memberName": "changeAdmin", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "36117", + "id": "2785", + "length": "17", + "line": "992", + "parentIndex": "2782", + "start": "36101" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + } + } + }, + "id": "2782", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "36127", + "id": "2783", + "length": "27", + "line": "992", + "parentIndex": "2780", + "start": "36101" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ] + }, + "id": "2761", + "implemented": true, + "kind": "KIND_FUNCTION", + "modifiers": [ + { + "id": "2763", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "2765", + "name": "onlyOwner", + "src": { + "column": "98", + "end": "36089", + "id": "2766", + "length": "9", + "line": "991", + "parentIndex": "2763", + "start": "36081" + } + }, + "name": "onlyOwner", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "98", + "end": "36089", + "id": "2764", + "length": "9", + "line": "991", + "parentIndex": "2761", + "start": "36081" + } + } + ], + "name": "changeProxyAdmin", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2767", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2769", + "name": "proxy", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2769", + "src": { + "column": "30", + "end": "36045", + "id": "2770", + "length": "33", + "line": "991", + "parentIndex": "2767", + "start": "36013" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + }, + "typeName": { + "id": "2771", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "2773", + "name": "TransparentUpgradeableProxy", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "2272", + "src": { + "column": "30", + "end": "36039", + "id": "2774", + "length": "27", + "line": "991", + "parentIndex": "2771", + "start": "36013" + } + }, + "referencedDeclaration": "2272", + "src": { + "column": "30", + "end": "36039", + "id": "2772", + "length": "27", + "line": "991", + "parentIndex": "2769", + "start": "36013" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2775", + "name": "newAdmin", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2775", + "src": { + "column": "65", + "end": "36063", + "id": "2776", + "length": "16", + "line": "991", + "parentIndex": "2767", + "start": "36048" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2777", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "65", + "end": "36054", + "id": "2778", + "length": "7", + "line": "991", + "parentIndex": "2775", + "start": "36048" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "30", + "end": "36063", + "id": "2768", + "length": "51", + "line": "991", + "parentIndex": "2761", + "start": "36013" + } + }, + "returnParameters": { + "id": "2779", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "36134", + "id": "2762", + "length": "148", + "line": "991", + "parentIndex": "2761", + "start": "35987" + } + }, + "scope": "2641", + "src": { + "column": "4", + "end": "36134", + "id": "2762", + "length": "148", + "line": "991", + "parentIndex": "2641", + "start": "35987" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$_t_address$", + "typeString": "function(contract TransparentUpgradeableProxy,address)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2810", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "105", + "end": "36488", + "id": "2811", + "length": "48", + "line": "1002", + "parentIndex": "2791", + "start": "36441" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2818", + "name": "implementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2818", + "src": { + "column": "24", + "end": "36480", + "id": "2819", + "length": "14", + "line": "1003", + "parentIndex": "2812", + "start": "36467" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2816", + "name": "proxy", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2816", + "src": { + "column": "8", + "end": "36455", + "id": "2817", + "length": "5", + "line": "1003", + "parentIndex": "2814", + "start": "36451" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + } + } + }, + "id": "2814", + "memberName": "upgradeTo", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "36465", + "id": "2815", + "length": "15", + "line": "1003", + "parentIndex": "2812", + "start": "36451" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + } + } + }, + "id": "2812", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "36481", + "id": "2813", + "length": "31", + "line": "1003", + "parentIndex": "2810", + "start": "36451" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ] + }, + "id": "2791", + "implemented": true, + "kind": "KIND_FUNCTION", + "modifiers": [ + { + "id": "2793", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "2795", + "name": "onlyOwner", + "src": { + "column": "95", + "end": "36439", + "id": "2796", + "length": "9", + "line": "1002", + "parentIndex": "2793", + "start": "36431" + } + }, + "name": "onlyOwner", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "95", + "end": "36439", + "id": "2794", + "length": "9", + "line": "1002", + "parentIndex": "2791", + "start": "36431" + } + } + ], + "name": "upgrade", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2797", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2799", + "name": "proxy", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2799", + "src": { + "column": "21", + "end": "36389", + "id": "2800", + "length": "33", + "line": "1002", + "parentIndex": "2797", + "start": "36357" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + }, + "typeName": { + "id": "2801", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "2803", + "name": "TransparentUpgradeableProxy", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "2272", + "src": { + "column": "21", + "end": "36383", + "id": "2804", + "length": "27", + "line": "1002", + "parentIndex": "2801", + "start": "36357" + } + }, + "referencedDeclaration": "2272", + "src": { + "column": "21", + "end": "36383", + "id": "2802", + "length": "27", + "line": "1002", + "parentIndex": "2799", + "start": "36357" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2805", + "name": "implementation", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2805", + "src": { + "column": "56", + "end": "36413", + "id": "2806", + "length": "22", + "line": "1002", + "parentIndex": "2797", + "start": "36392" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2807", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "56", + "end": "36398", + "id": "2808", + "length": "7", + "line": "1002", + "parentIndex": "2805", + "start": "36392" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "21", + "end": "36413", + "id": "2798", + "length": "57", + "line": "1002", + "parentIndex": "2791", + "start": "36357" + } + }, + "returnParameters": { + "id": "2809", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "36488", + "id": "2792", + "length": "149", + "line": "1002", + "parentIndex": "2791", + "start": "36340" + } + }, + "scope": "2641", + "src": { + "column": "4", + "end": "36488", + "id": "2792", + "length": "149", + "line": "1002", + "parentIndex": "2641", + "start": "36340" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$_t_address$", + "typeString": "function(contract TransparentUpgradeableProxy,address)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2844", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "139", + "end": "36968", + "id": "2845", + "length": "79", + "line": "1014", + "parentIndex": "2821", + "start": "36890" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2854", + "name": "implementation", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2854", + "src": { + "column": "49", + "end": "36954", + "id": "2855", + "length": "14", + "line": "1015", + "parentIndex": "2846", + "start": "36941" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2856", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2856", + "src": { + "column": "65", + "end": "36960", + "id": "2857", + "length": "4", + "line": "1015", + "parentIndex": "2846", + "start": "36957" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCallOption", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2852", + "name": "proxy", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2852", + "src": { + "column": "8", + "end": "36904", + "id": "2853", + "length": "5", + "line": "1015", + "parentIndex": "2850", + "start": "36900" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + } + } + }, + "id": "2850", + "memberName": "upgradeToAndCall", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "36921", + "id": "2851", + "length": "22", + "line": "1015", + "parentIndex": "2848", + "start": "36900" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + } + } + }, + "id": "2848", + "kind": "FUNCTION_CALL_OPTION", + "nodeType": "FUNCTION_CALL_OPTION", + "src": { + "column": "8", + "end": "36939", + "id": "2849", + "length": "40", + "line": "1015", + "parentIndex": "2846", + "start": "36900" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + } + } + }, + "id": "2846", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "36961", + "id": "2847", + "length": "62", + "line": "1015", + "parentIndex": "2844", + "start": "36900" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$", + "typeString": "function(address,bytes)" + } + } + } + ] + }, + "id": "2821", + "implemented": true, + "kind": "KIND_FUNCTION", + "modifiers": [ + { + "id": "2823", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "2825", + "name": "onlyOwner", + "src": { + "column": "129", + "end": "36888", + "id": "2826", + "length": "9", + "line": "1014", + "parentIndex": "2823", + "start": "36880" + } + }, + "name": "onlyOwner", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "129", + "end": "36888", + "id": "2824", + "length": "9", + "line": "1014", + "parentIndex": "2821", + "start": "36880" + } + } + ], + "name": "upgradeAndCall", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2827", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2829", + "name": "proxy", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2829", + "src": { + "column": "28", + "end": "36811", + "id": "2830", + "length": "33", + "line": "1014", + "parentIndex": "2827", + "start": "36779" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + }, + "typeName": { + "id": "2831", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "2833", + "name": "TransparentUpgradeableProxy", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "2272", + "src": { + "column": "28", + "end": "36805", + "id": "2834", + "length": "27", + "line": "1014", + "parentIndex": "2831", + "start": "36779" + } + }, + "referencedDeclaration": "2272", + "src": { + "column": "28", + "end": "36805", + "id": "2832", + "length": "27", + "line": "1014", + "parentIndex": "2829", + "start": "36779" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TransparentUpgradeableProxy_$2272", + "typeString": "contract TransparentUpgradeableProxy" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2835", + "name": "implementation", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2835", + "src": { + "column": "63", + "end": "36835", + "id": "2836", + "length": "22", + "line": "1014", + "parentIndex": "2827", + "start": "36814" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2837", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "63", + "end": "36820", + "id": "2838", + "length": "7", + "line": "1014", + "parentIndex": "2835", + "start": "36814" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2839", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2839", + "src": { + "column": "87", + "end": "36854", + "id": "2840", + "length": "17", + "line": "1014", + "parentIndex": "2827", + "start": "36838" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "2841", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "87", + "end": "36842", + "id": "2842", + "length": "5", + "line": "1014", + "parentIndex": "2839", + "start": "36838" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "28", + "end": "36854", + "id": "2828", + "length": "76", + "line": "1014", + "parentIndex": "2821", + "start": "36779" + } + }, + "returnParameters": { + "id": "2843", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "36968", + "id": "2822", + "length": "214", + "line": "1014", + "parentIndex": "2821", + "start": "36755" + } + }, + "scope": "2641", + "src": { + "column": "4", + "end": "36968", + "id": "2822", + "length": "214", + "line": "1014", + "parentIndex": "2641", + "start": "36755" + }, + "stateMutability": "PAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_contract$_TransparentUpgradeableProxy_$2272$_t_address$_t_bytes$", + "typeString": "function(contract TransparentUpgradeableProxy,address,bytes)" + }, + "virtual": true, + "visibility": "PUBLIC" + } + } + ], + "src": { + "end": "36970", + "length": "2375", + "line": "952", + "parentIndex": "2600", + "start": "34596" + } + } + } + ] + }, + "src": { + "id": 2601, + "line": 952, + "start": 34596, + "end": 36970, + "length": 2375, + "parent_index": 118 + } + }, + { + "id": 2858, + "license": "MIT", + "name": "AdminUpgradeabilityProxy", + "exported_symbols": [ + { + "id": 2858, + "name": "AdminUpgradeabilityProxy" + }, + { + "id": 2600, + "name": "ProxyAdmin", + "absolute_path": "ProxyAdmin.sol" + }, + { + "id": 2272, + "name": "TransparentUpgradeableProxy", + "absolute_path": "TransparentUpgradeableProxy.sol" + }, + { + "id": 2272, + "name": "TransparentUpgradeableProxy", + "absolute_path": "TransparentUpgradeableProxy.sol" + }, + { + "id": 2146, + "name": "ERC1967Proxy", + "absolute_path": "ERC1967Proxy.sol" + }, + { + "id": 1991, + "name": "UpgradeableBeacon", + "absolute_path": "UpgradeableBeacon.sol" + }, + { + "id": 1533, + "name": "BeaconProxy", + "absolute_path": "BeaconProxy.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "2884", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "37027", + "id": "2885", + "length": "23", + "line": "1020", + "parentIndex": "2858", + "start": "37005" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "BeaconProxy.sol", + "file": "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol", + "id": "2901", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "2858", + "sourceUnit": "2600", + "src": { + "end": "37091", + "length": "62", + "line": "1022", + "parentIndex": "2858", + "start": "37030" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "UpgradeableBeacon.sol", + "file": "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol", + "id": "2902", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "2858", + "sourceUnit": "2600", + "src": { + "end": "37160", + "length": "68", + "line": "1023", + "parentIndex": "2858", + "start": "37093" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ERC1967Proxy.sol", + "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "id": "2903", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "2858", + "sourceUnit": "2600", + "src": { + "end": "37225", + "length": "64", + "line": "1024", + "parentIndex": "2858", + "start": "37162" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "TransparentUpgradeableProxy.sol", + "file": "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", + "id": "2904", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "2858", + "sourceUnit": "2600", + "src": { + "end": "37309", + "length": "83", + "line": "1025", + "parentIndex": "2858", + "start": "37227" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ProxyAdmin.sol", + "file": "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol", + "id": "2905", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "2858", + "sourceUnit": "2600", + "src": { + "end": "37376", + "length": "66", + "line": "1026", + "parentIndex": "2858", + "start": "37311" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "2909", + "name": "TransparentUpgradeableProxy", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "2272", + "src": { + "column": "37", + "end": "37530", + "id": "2910", + "length": "27", + "line": "1029", + "parentIndex": "2906", + "start": "37504" + } + }, + "id": "2907", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "37", + "end": "37530", + "id": "2908", + "length": "27", + "line": "1029", + "parentIndex": "2906", + "start": "37504" + } + } + ], + "contractDependencies": [ + "2272", + "2901", + "2902", + "2903", + "2904", + "2905" + ], + "fullyImplemented": true, + "id": "2906", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "2272", + "2906", + "2901", + "2902", + "2903", + "2904", + "2905" + ], + "name": "AdminUpgradeabilityProxy", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2939", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "121", + "end": "37656", + "id": "2940", + "length": "2", + "line": "1030", + "parentIndex": "2912", + "start": "37655" + } + }, + "id": "2912", + "implemented": true, + "kind": "CONSTRUCTOR", + "modifiers": [ + { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2933", + "name": "logic", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2933", + "src": { + "column": "101", + "end": "37639", + "id": "2934", + "length": "5", + "line": "1030", + "parentIndex": "2929", + "start": "37635" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2935", + "name": "admin", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2935", + "src": { + "column": "108", + "end": "37646", + "id": "2936", + "length": "5", + "line": "1030", + "parentIndex": "2929", + "start": "37642" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2937", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2937", + "src": { + "column": "115", + "end": "37652", + "id": "2938", + "length": "4", + "line": "1030", + "parentIndex": "2929", + "start": "37649" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ], + "id": "2929", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "2931", + "name": "TransparentUpgradeableProxy", + "src": { + "column": "73", + "end": "37633", + "id": "2932", + "length": "27", + "line": "1030", + "parentIndex": "2929", + "start": "37607" + } + }, + "name": "TransparentUpgradeableProxy", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "73", + "end": "37653", + "id": "2930", + "length": "47", + "line": "1030", + "parentIndex": "2912", + "start": "37607" + } + } + ], + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2914", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2916", + "name": "logic", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2916", + "src": { + "column": "16", + "end": "37562", + "id": "2917", + "length": "13", + "line": "1030", + "parentIndex": "2914", + "start": "37550" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2918", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "37556", + "id": "2919", + "length": "7", + "line": "1030", + "parentIndex": "2916", + "start": "37550" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2920", + "name": "admin", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2920", + "src": { + "column": "31", + "end": "37577", + "id": "2921", + "length": "13", + "line": "1030", + "parentIndex": "2914", + "start": "37565" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2922", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "37571", + "id": "2923", + "length": "7", + "line": "1030", + "parentIndex": "2920", + "start": "37565" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2924", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2924", + "src": { + "column": "46", + "end": "37596", + "id": "2925", + "length": "17", + "line": "1030", + "parentIndex": "2914", + "start": "37580" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "2926", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "46", + "end": "37584", + "id": "2927", + "length": "5", + "line": "1030", + "parentIndex": "2924", + "start": "37580" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "16", + "end": "37596", + "id": "2915", + "length": "47", + "line": "1030", + "parentIndex": "2912", + "start": "37550" + } + }, + "returnParameters": { + "id": "2928", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "37656", + "id": "2913", + "length": "119", + "line": "1030", + "parentIndex": "2912", + "start": "37538" + } + }, + "scope": "2906", + "src": { + "column": "4", + "end": "37656", + "id": "2913", + "length": "119", + "line": "1030", + "parentIndex": "2906", + "start": "37538" + }, + "stateMutability": "PAYABLE", + "typeDescription": { + "typeIdentifier": "$_t_constructor", + "typeString": "constructor" + }, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "37658", + "length": "192", + "line": "1029", + "parentIndex": "2858", + "start": "37467" + } + } + } + ] + }, + "src": { + "id": 2859, + "line": 1029, + "start": 37467, + "end": 37658, + "length": 192, + "parent_index": 118 + } + } + ], + "comments": [ + { + "id": 1, + "node_type": 33, + "src": { + "line": 1, + "end": 30, + "length": 31, + "parent_index": 2 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 2, + "node_type": 32, + "src": { + "line": 5, + "start": 58, + "end": 136, + "length": 79, + "parent_index": 3 + }, + "text": "/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */" + }, + { + "id": 3, + "node_type": 32, + "src": { + "line": 9, + "column": 4, + "start": 162, + "end": 323, + "length": 162, + "parent_index": 4 + }, + "text": "/**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */" + }, + { + "id": 4, + "node_type": 33, + "src": { + "line": 17, + "start": 391, + "end": 421, + "length": 31, + "parent_index": 5 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 5, + "node_type": 32, + "src": { + "line": 21, + "start": 449, + "end": 1046, + "length": 598, + "parent_index": 6 + }, + "text": "/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */" + }, + { + "id": 6, + "node_type": 32, + "src": { + "line": 32, + "column": 4, + "start": 1078, + "end": 1268, + "length": 191, + "parent_index": 7 + }, + "text": "/**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internall call site, it will return directly to the external caller.\n */" + }, + { + "id": 7, + "node_type": 31, + "src": { + "line": 38, + "column": 8, + "start": 1344, + "end": 1390, + "length": 47, + "parent_index": 8 + }, + "text": "// solhint-disable-next-line no-inline-assembly" + }, + { + "id": 8, + "node_type": 32, + "src": { + "line": 59, + "column": 4, + "start": 2175, + "end": 2346, + "length": 172, + "parent_index": 9 + }, + "text": "/**\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */" + }, + { + "id": 9, + "node_type": 32, + "src": { + "line": 65, + "column": 4, + "start": 2425, + "end": 2642, + "length": 218, + "parent_index": 10 + }, + "text": "/**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internall call site, it will return directly to the external caller.\n */" + }, + { + "id": 10, + "node_type": 32, + "src": { + "line": 75, + "column": 4, + "start": 2764, + "end": 2949, + "length": 186, + "parent_index": 11 + }, + "text": "/**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */" + }, + { + "id": 11, + "node_type": 32, + "src": { + "line": 83, + "column": 4, + "start": 3026, + "end": 3174, + "length": 149, + "parent_index": 12 + }, + "text": "/**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */" + }, + { + "id": 12, + "node_type": 32, + "src": { + "line": 91, + "column": 4, + "start": 3250, + "end": 3519, + "length": 270, + "parent_index": 13 + }, + "text": "/**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overriden should call `super._beforeFallback()`.\n */" + }, + { + "id": 13, + "node_type": 33, + "src": { + "line": 101, + "start": 3580, + "end": 3610, + "length": 31, + "parent_index": 14 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 14, + "node_type": 32, + "src": { + "line": 105, + "start": 3638, + "end": 3704, + "length": 67, + "parent_index": 15 + }, + "text": "/**\n * @dev Collection of functions related to the address type\n */" + }, + { + "id": 15, + "node_type": 32, + "src": { + "line": 109, + "column": 4, + "start": 3728, + "end": 4292, + "length": 565, + "parent_index": 16 + }, + "text": "/**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */" + }, + { + "id": 16, + "node_type": 31, + "src": { + "line": 127, + "column": 8, + "start": 4374, + "end": 4443, + "length": 70, + "parent_index": 17 + }, + "text": "// This method relies on extcodesize, which returns 0 for contracts in" + }, + { + "id": 17, + "node_type": 31, + "src": { + "line": 128, + "column": 8, + "start": 4453, + "end": 4516, + "length": 64, + "parent_index": 18 + }, + "text": "// construction, since the code is only stored at the end of the" + }, + { + "id": 18, + "node_type": 31, + "src": { + "line": 129, + "column": 8, + "start": 4526, + "end": 4550, + "length": 25, + "parent_index": 19 + }, + "text": "// constructor execution." + }, + { + "id": 19, + "node_type": 31, + "src": { + "line": 132, + "column": 8, + "start": 4583, + "end": 4629, + "length": 47, + "parent_index": 20 + }, + "text": "// solhint-disable-next-line no-inline-assembly" + }, + { + "id": 20, + "node_type": 32, + "src": { + "line": 137, + "column": 4, + "start": 4717, + "end": 5622, + "length": 906, + "parent_index": 21 + }, + "text": "/**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */" + }, + { + "id": 21, + "node_type": 31, + "src": { + "line": 156, + "column": 8, + "start": 5793, + "end": 5860, + "length": 68, + "parent_index": 22 + }, + "text": "// solhint-disable-next-line avoid-low-level-calls, avoid-call-value" + }, + { + "id": 22, + "node_type": 32, + "src": { + "line": 161, + "column": 4, + "start": 6025, + "end": 6754, + "length": 730, + "parent_index": 23 + }, + "text": "/**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain`call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */" + }, + { + "id": 23, + "node_type": 32, + "src": { + "line": 183, + "column": 4, + "start": 6937, + "end": 7147, + "length": 211, + "parent_index": 24 + }, + "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */" + }, + { + "id": 24, + "node_type": 32, + "src": { + "line": 193, + "column": 4, + "start": 7352, + "end": 7702, + "length": 351, + "parent_index": 25 + }, + "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */" + }, + { + "id": 25, + "node_type": 32, + "src": { + "line": 208, + "column": 4, + "start": 7938, + "end": 8174, + "length": 237, + "parent_index": 26 + }, + "text": "/**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */" + }, + { + "id": 26, + "node_type": 31, + "src": { + "line": 218, + "column": 8, + "start": 8493, + "end": 8542, + "length": 50, + "parent_index": 27 + }, + "text": "// solhint-disable-next-line avoid-low-level-calls" + }, + { + "id": 27, + "node_type": 32, + "src": { + "line": 223, + "column": 4, + "start": 8709, + "end": 8874, + "length": 166, + "parent_index": 28 + }, + "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */" + }, + { + "id": 28, + "node_type": 32, + "src": { + "line": 233, + "column": 4, + "start": 9083, + "end": 9255, + "length": 173, + "parent_index": 29 + }, + "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */" + }, + { + "id": 29, + "node_type": 31, + "src": { + "line": 242, + "column": 8, + "start": 9477, + "end": 9526, + "length": 50, + "parent_index": 30 + }, + "text": "// solhint-disable-next-line avoid-low-level-calls" + }, + { + "id": 30, + "node_type": 32, + "src": { + "line": 247, + "column": 4, + "start": 9683, + "end": 9850, + "length": 168, + "parent_index": 31 + }, + "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */" + }, + { + "id": 31, + "node_type": 32, + "src": { + "line": 257, + "column": 4, + "start": 10060, + "end": 10234, + "length": 175, + "parent_index": 32 + }, + "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */" + }, + { + "id": 32, + "node_type": 31, + "src": { + "line": 266, + "column": 8, + "start": 10455, + "end": 10504, + "length": 50, + "parent_index": 33 + }, + "text": "// solhint-disable-next-line avoid-low-level-calls" + }, + { + "id": 33, + "node_type": 31, + "src": { + "line": 275, + "column": 12, + "start": 10877, + "end": 10929, + "length": 53, + "parent_index": 34 + }, + "text": "// Look for revert reason and bubble it up if present" + }, + { + "id": 34, + "node_type": 31, + "src": { + "line": 277, + "column": 16, + "start": 10988, + "end": 11062, + "length": 75, + "parent_index": 35 + }, + "text": "// The easiest way to bubble the revert reason is using memory via assembly" + }, + { + "id": 35, + "node_type": 31, + "src": { + "line": 279, + "column": 16, + "start": 11081, + "end": 11127, + "length": 47, + "parent_index": 36 + }, + "text": "// solhint-disable-next-line no-inline-assembly" + }, + { + "id": 36, + "node_type": 33, + "src": { + "line": 291, + "start": 11392, + "end": 11422, + "length": 31, + "parent_index": 37 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 37, + "node_type": 32, + "src": { + "line": 295, + "start": 11450, + "end": 12597, + "length": 1148, + "parent_index": 38 + }, + "text": "/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */" + }, + { + "id": 38, + "node_type": 32, + "src": { + "line": 338, + "column": 4, + "start": 12842, + "end": 12928, + "length": 87, + "parent_index": 39 + }, + "text": "/**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */" + }, + { + "id": 39, + "node_type": 32, + "src": { + "line": 347, + "column": 4, + "start": 13087, + "end": 13173, + "length": 87, + "parent_index": 40 + }, + "text": "/**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */" + }, + { + "id": 40, + "node_type": 32, + "src": { + "line": 356, + "column": 4, + "start": 13332, + "end": 13418, + "length": 87, + "parent_index": 41 + }, + "text": "/**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */" + }, + { + "id": 41, + "node_type": 32, + "src": { + "line": 365, + "column": 4, + "start": 13577, + "end": 13663, + "length": 87, + "parent_index": 42 + }, + "text": "/**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */" + }, + { + "id": 42, + "node_type": 33, + "src": { + "line": 376, + "start": 13821, + "end": 13851, + "length": 31, + "parent_index": 43 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 43, + "node_type": 32, + "src": { + "line": 384, + "start": 13984, + "end": 14219, + "length": 236, + "parent_index": 44 + }, + "text": "/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */" + }, + { + "id": 44, + "node_type": 31, + "src": { + "line": 393, + "column": 4, + "start": 14260, + "end": 14333, + "length": 74, + "parent_index": 45 + }, + "text": "// This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1" + }, + { + "id": 45, + "node_type": 32, + "src": { + "line": 396, + "column": 4, + "start": 14454, + "end": 14667, + "length": 214, + "parent_index": 46 + }, + "text": "/**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */" + }, + { + "id": 46, + "node_type": 32, + "src": { + "line": 403, + "column": 4, + "start": 14795, + "end": 14862, + "length": 68, + "parent_index": 47 + }, + "text": "/**\n * @dev Emitted when the implementation is upgraded.\n */" + }, + { + "id": 47, + "node_type": 32, + "src": { + "line": 408, + "column": 4, + "start": 14921, + "end": 14987, + "length": 67, + "parent_index": 48 + }, + "text": "/**\n * @dev Returns the current implementation address.\n */" + }, + { + "id": 48, + "node_type": 32, + "src": { + "line": 415, + "column": 4, + "start": 15139, + "end": 15218, + "length": 80, + "parent_index": 49 + }, + "text": "/**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */" + }, + { + "id": 49, + "node_type": 32, + "src": { + "line": 423, + "column": 4, + "start": 15489, + "end": 15583, + "length": 95, + "parent_index": 50 + }, + "text": "/**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */" + }, + { + "id": 50, + "node_type": 32, + "src": { + "line": 433, + "column": 4, + "start": 15747, + "end": 15869, + "length": 123, + "parent_index": 51 + }, + "text": "/**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */" + }, + { + "id": 51, + "node_type": 32, + "src": { + "line": 446, + "column": 4, + "start": 16196, + "end": 16356, + "length": 161, + "parent_index": 52 + }, + "text": "/**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */" + }, + { + "id": 52, + "node_type": 31, + "src": { + "line": 454, + "column": 8, + "start": 16535, + "end": 16567, + "length": 33, + "parent_index": 53 + }, + "text": "// Initial upgrade and setup call" + }, + { + "id": 53, + "node_type": 31, + "src": { + "line": 460, + "column": 8, + "start": 16746, + "end": 16796, + "length": 51, + "parent_index": 54 + }, + "text": "// Perform rollback test if not already in progress" + }, + { + "id": 54, + "node_type": 31, + "src": { + "line": 463, + "column": 12, + "start": 16950, + "end": 17012, + "length": 63, + "parent_index": 55 + }, + "text": "// Trigger rollback using upgradeTo from the new implementation" + }, + { + "id": 55, + "node_type": 31, + "src": { + "line": 473, + "column": 12, + "start": 17342, + "end": 17372, + "length": 31, + "parent_index": 56 + }, + "text": "// Check rollback was effective" + }, + { + "id": 56, + "node_type": 31, + "src": { + "line": 475, + "column": 12, + "start": 17501, + "end": 17562, + "length": 62, + "parent_index": 57 + }, + "text": "// Finally reset to the new implementation and log the upgrade" + }, + { + "id": 57, + "node_type": 32, + "src": { + "line": 481, + "column": 4, + "start": 17682, + "end": 17973, + "length": 292, + "parent_index": 58 + }, + "text": "/**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */" + }, + { + "id": 58, + "node_type": 32, + "src": { + "line": 495, + "column": 4, + "start": 18298, + "end": 18486, + "length": 189, + "parent_index": 59 + }, + "text": "/**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */" + }, + { + "id": 59, + "node_type": 32, + "src": { + "line": 502, + "column": 4, + "start": 18605, + "end": 18671, + "length": 67, + "parent_index": 60 + }, + "text": "/**\n * @dev Emitted when the admin account has changed.\n */" + }, + { + "id": 60, + "node_type": 32, + "src": { + "line": 507, + "column": 4, + "start": 18743, + "end": 18792, + "length": 50, + "parent_index": 61 + }, + "text": "/**\n * @dev Returns the current admin.\n */" + }, + { + "id": 61, + "node_type": 32, + "src": { + "line": 514, + "column": 4, + "start": 18926, + "end": 18996, + "length": 71, + "parent_index": 62 + }, + "text": "/**\n * @dev Stores a new address in the EIP1967 admin slot.\n */" + }, + { + "id": 62, + "node_type": 32, + "src": { + "line": 522, + "column": 4, + "start": 19209, + "end": 19308, + "length": 100, + "parent_index": 63 + }, + "text": "/**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */" + }, + { + "id": 63, + "node_type": 32, + "src": { + "line": 532, + "column": 4, + "start": 19455, + "end": 19686, + "length": 232, + "parent_index": 64 + }, + "text": "/**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */" + }, + { + "id": 64, + "node_type": 32, + "src": { + "line": 538, + "column": 4, + "start": 19806, + "end": 19865, + "length": 60, + "parent_index": 65 + }, + "text": "/**\n * @dev Emitted when the beacon is upgraded.\n */" + }, + { + "id": 65, + "node_type": 32, + "src": { + "line": 543, + "column": 4, + "start": 19922, + "end": 19972, + "length": 51, + "parent_index": 66 + }, + "text": "/**\n * @dev Returns the current beacon.\n */" + }, + { + "id": 66, + "node_type": 32, + "src": { + "line": 550, + "column": 4, + "start": 20108, + "end": 20178, + "length": 71, + "parent_index": 67 + }, + "text": "/**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */" + }, + { + "id": 67, + "node_type": 33, + "src": { + "line": 566, + "start": 20593, + "end": 20623, + "length": 31, + "parent_index": 68 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 68, + "node_type": 32, + "src": { + "line": 574, + "start": 20739, + "end": 21091, + "length": 353, + "parent_index": 69 + }, + "text": "/**\n * @dev This contract implements a proxy that gets the implementation address for each call from a {UpgradeableBeacon}.\n *\n * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\n * conflict with the storage layout of the implementation behind the proxy.\n *\n * _Available since v3.4._\n */" + }, + { + "id": 69, + "node_type": 32, + "src": { + "line": 583, + "column": 4, + "start": 21145, + "end": 21569, + "length": 425, + "parent_index": 70 + }, + "text": "/**\n * @dev Initializes the proxy with `beacon`.\n *\n * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\n * will typically be an encoded function call, and allows initializating the storage of the proxy like a Solidity\n * constructor.\n *\n * Requirements:\n *\n * - `beacon` must be a contract with the interface {IBeacon}.\n */" + }, + { + "id": 70, + "node_type": 32, + "src": { + "line": 599, + "column": 4, + "start": 21786, + "end": 21844, + "length": 59, + "parent_index": 71 + }, + "text": "/**\n * @dev Returns the current beacon address.\n */" + }, + { + "id": 71, + "node_type": 32, + "src": { + "line": 606, + "column": 4, + "start": 21951, + "end": 22042, + "length": 92, + "parent_index": 72 + }, + "text": "/**\n * @dev Returns the current implementation address of the associated beacon.\n */" + }, + { + "id": 72, + "node_type": 32, + "src": { + "line": 613, + "column": 4, + "start": 22192, + "end": 22558, + "length": 367, + "parent_index": 73 + }, + "text": "/**\n * @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\n *\n * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\n *\n * Requirements:\n *\n * - `beacon` must be a contract.\n * - The implementation returned by `beacon` must be a contract.\n */" + }, + { + "id": 73, + "node_type": 33, + "src": { + "line": 628, + "start": 22701, + "end": 22731, + "length": 31, + "parent_index": 74 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 74, + "node_type": 32, + "src": { + "line": 632, + "start": 22759, + "end": 23253, + "length": 495, + "parent_index": 75 + }, + "text": "/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */" + }, + { + "id": 75, + "node_type": 31, + "src": { + "line": 648, + "column": 14, + "start": 23472, + "end": 23589, + "length": 118, + "parent_index": 76 + }, + "text": "// silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691" + }, + { + "id": 76, + "node_type": 33, + "src": { + "line": 653, + "start": 23625, + "end": 23655, + "length": 31, + "parent_index": 77 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 77, + "node_type": 32, + "src": { + "line": 658, + "start": 23714, + "end": 24207, + "length": 494, + "parent_index": 78 + }, + "text": "/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */" + }, + { + "id": 78, + "node_type": 32, + "src": { + "line": 675, + "column": 4, + "start": 24371, + "end": 24461, + "length": 91, + "parent_index": 79 + }, + "text": "/**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */" + }, + { + "id": 79, + "node_type": 32, + "src": { + "line": 684, + "column": 4, + "start": 24623, + "end": 24687, + "length": 65, + "parent_index": 80 + }, + "text": "/**\n * @dev Returns the address of the current owner.\n */" + }, + { + "id": 80, + "node_type": 32, + "src": { + "line": 691, + "column": 4, + "start": 24784, + "end": 24860, + "length": 77, + "parent_index": 81 + }, + "text": "/**\n * @dev Throws if called by any account other than the owner.\n */" + }, + { + "id": 81, + "node_type": 32, + "src": { + "line": 699, + "column": 4, + "start": 24989, + "end": 25319, + "length": 331, + "parent_index": 82 + }, + "text": "/**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */" + }, + { + "id": 82, + "node_type": 32, + "src": { + "line": 711, + "column": 4, + "start": 25476, + "end": 25613, + "length": 138, + "parent_index": 83 + }, + "text": "/**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */" + }, + { + "id": 83, + "node_type": 33, + "src": { + "line": 722, + "start": 25863, + "end": 25893, + "length": 31, + "parent_index": 84 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 84, + "node_type": 32, + "src": { + "line": 730, + "start": 26015, + "end": 26334, + "length": 320, + "parent_index": 85 + }, + "text": "/**\n * @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\n * implementation contract, which is where they will delegate all function calls.\n *\n * An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.\n */" + }, + { + "id": 85, + "node_type": 32, + "src": { + "line": 739, + "column": 4, + "start": 26427, + "end": 26516, + "length": 90, + "parent_index": 86 + }, + "text": "/**\n * @dev Emitted when the implementation returned by the beacon is changed.\n */" + }, + { + "id": 86, + "node_type": 32, + "src": { + "line": 744, + "column": 4, + "start": 26575, + "end": 26718, + "length": 144, + "parent_index": 87 + }, + "text": "/**\n * @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the\n * beacon.\n */" + }, + { + "id": 87, + "node_type": 32, + "src": { + "line": 752, + "column": 4, + "start": 26819, + "end": 26885, + "length": 67, + "parent_index": 88 + }, + "text": "/**\n * @dev Returns the current implementation address.\n */" + }, + { + "id": 88, + "node_type": 32, + "src": { + "line": 759, + "column": 4, + "start": 27009, + "end": 27256, + "length": 248, + "parent_index": 89 + }, + "text": "/**\n * @dev Upgrades the beacon to a new implementation.\n *\n * Emits an {Upgraded} event.\n *\n * Requirements:\n *\n * - msg.sender must be the owner of the contract.\n * - `newImplementation` must be a contract.\n */" + }, + { + "id": 89, + "node_type": 32, + "src": { + "line": 774, + "column": 4, + "start": 27435, + "end": 27598, + "length": 164, + "parent_index": 90 + }, + "text": "/**\n * @dev Sets the implementation contract address for this beacon\n *\n * Requirements:\n *\n * - `newImplementation` must be a contract.\n */" + }, + { + "id": 90, + "node_type": 33, + "src": { + "line": 787, + "start": 27834, + "end": 27864, + "length": 31, + "parent_index": 91 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 91, + "node_type": 32, + "src": { + "line": 794, + "start": 27947, + "end": 28318, + "length": 372, + "parent_index": 92 + }, + "text": "/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */" + }, + { + "id": 92, + "node_type": 32, + "src": { + "line": 801, + "column": 4, + "start": 28373, + "end": 28707, + "length": 335, + "parent_index": 93 + }, + "text": "/**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\n */" + }, + { + "id": 93, + "node_type": 32, + "src": { + "line": 812, + "column": 4, + "start": 28936, + "end": 29002, + "length": 67, + "parent_index": 94 + }, + "text": "/**\n * @dev Returns the current implementation address.\n */" + }, + { + "id": 94, + "node_type": 33, + "src": { + "line": 820, + "start": 29152, + "end": 29182, + "length": 31, + "parent_index": 95 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 95, + "node_type": 32, + "src": { + "line": 826, + "start": 29249, + "end": 30699, + "length": 1451, + "parent_index": 96 + }, + "text": "/**\n * @dev This contract implements a proxy that is upgradeable by an admin.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches one of the admin functions exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n * \"admin cannot fallback to proxy target\".\n *\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n * to sudden errors when trying to call a function from the proxy implementation.\n *\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n */" + }, + { + "id": 96, + "node_type": 32, + "src": { + "line": 848, + "column": 4, + "start": 30760, + "end": 30969, + "length": 210, + "parent_index": 97 + }, + "text": "/**\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\n */" + }, + { + "id": 97, + "node_type": 32, + "src": { + "line": 857, + "column": 4, + "start": 31205, + "end": 31334, + "length": 130, + "parent_index": 98 + }, + "text": "/**\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n */" + }, + { + "id": 98, + "node_type": 32, + "src": { + "line": 868, + "column": 4, + "start": 31480, + "end": 31910, + "length": 431, + "parent_index": 99 + }, + "text": "/**\n * @dev Returns the current admin.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */" + }, + { + "id": 99, + "node_type": 32, + "src": { + "line": 881, + "column": 4, + "start": 32018, + "end": 32466, + "length": 449, + "parent_index": 100 + }, + "text": "/**\n * @dev Returns the current implementation.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */" + }, + { + "id": 100, + "node_type": 32, + "src": { + "line": 894, + "column": 4, + "start": 32607, + "end": 32800, + "length": 194, + "parent_index": 101 + }, + "text": "/**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\n */" + }, + { + "id": 101, + "node_type": 32, + "src": { + "line": 905, + "column": 4, + "start": 32915, + "end": 33063, + "length": 149, + "parent_index": 102 + }, + "text": "/**\n * @dev Upgrade the implementation of the proxy.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\n */" + }, + { + "id": 102, + "node_type": 32, + "src": { + "line": 914, + "column": 4, + "start": 33209, + "end": 33573, + "length": 365, + "parent_index": 103 + }, + "text": "/**\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n * proxied contract.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\n */" + }, + { + "id": 103, + "node_type": 32, + "src": { + "line": 925, + "column": 4, + "start": 33749, + "end": 33798, + "length": 50, + "parent_index": 104 + }, + "text": "/**\n * @dev Returns the current admin.\n */" + }, + { + "id": 104, + "node_type": 32, + "src": { + "line": 932, + "column": 4, + "start": 33903, + "end": 34012, + "length": 110, + "parent_index": 105 + }, + "text": "/**\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\n */" + }, + { + "id": 105, + "node_type": 33, + "src": { + "line": 941, + "start": 34229, + "end": 34259, + "length": 31, + "parent_index": 106 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 106, + "node_type": 32, + "src": { + "line": 948, + "start": 34367, + "end": 34594, + "length": 228, + "parent_index": 107 + }, + "text": "/**\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\n */" + }, + { + "id": 107, + "node_type": 32, + "src": { + "line": 954, + "column": 4, + "start": 34634, + "end": 34791, + "length": 158, + "parent_index": 108 + }, + "text": "/**\n * @dev Returns the current implementation of `proxy`.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */" + }, + { + "id": 108, + "node_type": 31, + "src": { + "line": 962, + "column": 8, + "start": 34912, + "end": 34996, + "length": 85, + "parent_index": 109 + }, + "text": "// We need to manually run the static call since the getter cannot be flagged as view" + }, + { + "id": 109, + "node_type": 31, + "src": { + "line": 963, + "column": 8, + "start": 35006, + "end": 35059, + "length": 54, + "parent_index": 110 + }, + "text": "// bytes4(keccak256(\"implementation()\")) == 0x5c60da1b" + }, + { + "id": 110, + "node_type": 32, + "src": { + "line": 969, + "column": 4, + "start": 35240, + "end": 35388, + "length": 149, + "parent_index": 111 + }, + "text": "/**\n * @dev Returns the current admin of `proxy`.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */" + }, + { + "id": 111, + "node_type": 31, + "src": { + "line": 977, + "column": 8, + "start": 35500, + "end": 35584, + "length": 85, + "parent_index": 112 + }, + "text": "// We need to manually run the static call since the getter cannot be flagged as view" + }, + { + "id": 112, + "node_type": 31, + "src": { + "line": 978, + "column": 8, + "start": 35594, + "end": 35638, + "length": 45, + "parent_index": 113 + }, + "text": "// bytes4(keccak256(\"admin()\")) == 0xf851a440" + }, + { + "id": 113, + "node_type": 32, + "src": { + "line": 984, + "column": 4, + "start": 35819, + "end": 35981, + "length": 163, + "parent_index": 114 + }, + "text": "/**\n * @dev Changes the admin of `proxy` to `newAdmin`.\n *\n * Requirements:\n *\n * - This contract must be the current admin of `proxy`.\n */" + }, + { + "id": 114, + "node_type": 32, + "src": { + "line": 995, + "column": 4, + "start": 36141, + "end": 36334, + "length": 194, + "parent_index": 115 + }, + "text": "/**\n * @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */" + }, + { + "id": 115, + "node_type": 32, + "src": { + "line": 1006, + "column": 4, + "start": 36495, + "end": 36749, + "length": 255, + "parent_index": 116 + }, + "text": "/**\n * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See\n * {TransparentUpgradeableProxy-upgradeToAndCall}.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */" + }, + { + "id": 116, + "node_type": 33, + "src": { + "line": 1019, + "start": 36973, + "end": 37003, + "length": 31, + "parent_index": 117 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 117, + "node_type": 31, + "src": { + "line": 1028, + "start": 37379, + "end": 37465, + "length": 87, + "parent_index": 118 + }, + "text": "// Kept for backwards compatibility with older versions of Hardhat and Truffle plugins." + } + ] } \ No newline at end of file diff --git a/data/tests/contracts/cheelee/UpgradeableBeacon.solgo.ast.json b/data/tests/contracts/cheelee/UpgradeableBeacon.solgo.ast.json index 8d18a413..e6963894 100644 --- a/data/tests/contracts/cheelee/UpgradeableBeacon.solgo.ast.json +++ b/data/tests/contracts/cheelee/UpgradeableBeacon.solgo.ast.json @@ -1,1464 +1,1441 @@ { - "id": 1991, - "base_contracts": [ - { - "id": 2022, - "node_type": 62, - "src": { - "id": 2023, - "line": 736, - "column": 30, - "start": 26366, - "end": 26372, - "length": 7, - "parent_index": 2021 - }, - "base_name": { - "id": 2024, - "node_type": 52, - "src": { - "id": 2025, - "line": 736, - "column": 30, - "start": 26366, - "end": 26372, - "length": 7, - "parent_index": 2021 - }, - "name": "IBeacon", - "referenced_declaration": 119 - } - }, - { - "id": 2026, - "node_type": 62, - "src": { - "id": 2027, - "line": 736, - "column": 39, - "start": 26375, - "end": 26381, - "length": 7, - "parent_index": 2021 - }, - "base_name": { - "id": 2028, - "node_type": 52, - "src": { - "id": 2029, - "line": 736, - "column": 39, - "start": 26375, - "end": 26381, - "length": 7, - "parent_index": 2021 - }, - "name": "Ownable", - "referenced_declaration": 1771 - } - } - ], - "license": "MIT", - "exported_symbols": [ - { - "id": 1991, - "name": "UpgradeableBeacon", - "absolute_path": "UpgradeableBeacon.sol" - }, - { - "id": 251, - "name": "Address", - "absolute_path": "Address.sol" - }, - { - "id": 251, - "name": "Address", - "absolute_path": "Address.sol" - }, - { - "id": 1771, - "name": "Ownable", - "absolute_path": "Ownable.sol" - }, - { - "id": 119, - "name": "IBeacon", - "absolute_path": "IBeacon.sol" - }, - { - "id": 119, - "name": "IBeacon", - "absolute_path": "IBeacon.sol" - }, - { - "id": 119, - "name": "IBeacon", - "absolute_path": "IBeacon.sol" - }, - { - "id": 119, - "name": "IBeacon", - "absolute_path": "IBeacon.sol" - } - ], - "absolute_path": "UpgradeableBeacon.sol", - "name": "UpgradeableBeacon", - "node_type": 1, - "nodes": [ - { - "id": 2009, - "node_type": 10, - "src": { - "id": 2010, - "line": 724, - "column": 0, - "start": 25896, - "end": 25918, - "length": 23, - "parent_index": 1991 - }, - "literals": [ - "pragma", - "solidity", - "^", - "0", - ".", - "8", - ".", - "0", - ";" - ], - "text": "pragma solidity ^0.8.0;" - }, - { - "id": 2018, - "node_type": 29, - "src": { - "id": 0, - "line": 726, - "column": 0, - "start": 25921, - "end": 25943, - "length": 23, - "parent_index": 1991 - }, - "absolute_path": "IBeacon.sol", - "file": "./IBeacon.sol", - "scope": 1991, - "unit_alias": "", - "source_unit": 1771 - }, - { - "id": 2019, - "node_type": 29, - "src": { - "id": 0, - "line": 727, - "column": 0, - "start": 25945, - "end": 25978, - "length": 34, - "parent_index": 1991 - }, - "absolute_path": "Ownable.sol", - "file": "../../access/Ownable.sol", - "scope": 1991, - "unit_alias": "", - "source_unit": 1771 - }, - { - "id": 2020, - "node_type": 29, - "src": { - "id": 0, - "line": 728, - "column": 0, - "start": 25980, - "end": 26012, - "length": 33, - "parent_index": 1991 - }, - "absolute_path": "Address.sol", - "file": "../../utils/Address.sol", - "scope": 1991, - "unit_alias": "", - "source_unit": 1771 - }, - { - "id": 2021, - "name": "UpgradeableBeacon", - "node_type": 35, - "src": { - "id": 0, - "line": 736, - "column": 0, - "start": 26336, - "end": 27831, - "length": 1496, - "parent_index": 1991 - }, - "abstract": false, - "kind": 36, - "fully_implemented": true, - "nodes": [ - { - "id": 2031, - "name": "_implementation", - "is_constant": false, - "is_state_variable": true, - "node_type": 44, - "src": { - "id": 2032, - "line": 737, - "column": 4, - "start": 26389, - "end": 26420, - "length": 32, - "parent_index": 2021 - }, - "scope": 2021, - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "visibility": 2, - "storage_location": 1, - "mutability": 1, - "type_name": { - "id": 2033, - "node_type": 30, - "src": { - "id": 2034, - "line": 737, - "column": 4, - "start": 26389, - "end": 26395, - "length": 7, - "parent_index": 2031 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - } - }, - { - "id": 2036, - "node_type": 57, - "src": { - "id": 2037, - "line": 742, - "column": 4, - "start": 26522, - "end": 26568, - "length": 47, - "parent_index": 2021 - }, - "parameters": { - "id": 2038, - "node_type": 43, - "src": { - "id": 2037, - "line": 742, - "column": 4, - "start": 26522, - "end": 26568, - "length": 47, - "parent_index": 2036 - }, - "parameters": [ - { - "id": 2039, - "node_type": 44, - "src": { - "id": 2040, - "line": 742, - "column": 19, - "start": 26537, - "end": 26566, - "length": 30, - "parent_index": 2038 - }, - "scope": 2036, - "name": "implementation", - "type_name": { - "id": 2041, - "node_type": 30, - "src": { - "id": 2042, - "line": 742, - "column": 19, - "start": 26537, - "end": 26543, - "length": 7, - "parent_index": 2039 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4, - "indexed": true - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "name": "Upgraded", - "anonymous": false - }, - { - "id": 2044, - "node_type": 42, - "src": { - "id": 2045, - "line": 748, - "column": 4, - "start": 26724, - "end": 26812, - "length": 89, - "parent_index": 2021 - }, - "kind": 11, - "state_mutability": 4, - "visibility": 1, - "implemented": true, - "modifiers": [], - "parameters": { - "id": 2046, - "node_type": 43, - "src": { - "id": 2047, - "line": 748, - "column": 16, - "start": 26736, - "end": 26758, - "length": 23, - "parent_index": 2044 - }, - "parameters": [ - { - "id": 2048, - "node_type": 44, - "src": { - "id": 2049, - "line": 748, - "column": 16, - "start": 26736, - "end": 26758, - "length": 23, - "parent_index": 2046 - }, - "scope": 2044, - "name": "implementation_", - "type_name": { - "id": 2050, - "node_type": 30, - "src": { - "id": 2051, - "line": 748, - "column": 16, - "start": 26736, - "end": 26742, - "length": 7, - "parent_index": 2048 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 2052, - "node_type": 43, - "src": { - "id": 2045, - "line": 748, - "column": 4, - "start": 26724, - "end": 26812, - "length": 89, - "parent_index": 2044 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 2021, - "body": { - "id": 2053, - "node_type": 46, - "kind": 0, - "src": { - "id": 2054, - "line": 748, - "column": 41, - "start": 26761, - "end": 26812, - "length": 52, - "parent_index": 2044 - }, - "implemented": true, - "statements": [ - { - "id": 2055, - "node_type": 24, - "kind": 24, - "src": { - "id": 2056, - "line": 749, - "column": 8, - "start": 26771, - "end": 26805, - "length": 35, - "parent_index": 2053 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 2057, - "node_type": 16, - "src": { - "id": 2058, - "line": 749, - "column": 27, - "start": 26790, - "end": 26804, - "length": 15, - "parent_index": 2055 - }, - "name": "implementation_", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 2057, - "is_pure": false - } - ], - "expression": { - "id": 2059, - "node_type": 16, - "src": { - "id": 2060, - "line": 749, - "column": 8, - "start": 26771, - "end": 26788, - "length": 18, - "parent_index": 2055 - }, - "name": "_setImplementation", - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - } - ] - } - }, - { - "id": 2062, - "name": "implementation", - "node_type": 42, - "kind": 41, - "src": { - "id": 2063, - "line": 755, - "column": 4, - "start": 26891, - "end": 27002, - "length": 112, - "parent_index": 2021 - }, - "body": { - "id": 2078, - "node_type": 46, - "kind": 0, - "src": { - "id": 2079, - "line": 755, - "column": 77, - "start": 26964, - "end": 27002, - "length": 39, - "parent_index": 2062 - }, - "implemented": true, - "statements": [ - { - "id": 2080, - "node_type": 47, - "src": { - "id": 2081, - "line": 756, - "column": 8, - "start": 26974, - "end": 26996, - "length": 23, - "parent_index": 2062 - }, - "function_return_parameters": 2062, - "expression": { - "id": 2082, - "node_type": 16, - "src": { - "id": 2083, - "line": 756, - "column": 15, - "start": 26981, - "end": 26995, - "length": 15, - "parent_index": 2078 - }, - "name": "_implementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 2031, - "is_pure": false - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 5, - "virtual": true, - "modifiers": [], - "overrides": [ - { - "id": 2064, - "node_type": 63, - "name": "implementation", - "src": { - "id": 2065, - "line": 755, - "column": 50, - "start": 26937, - "end": 26944, - "length": 8, - "parent_index": 2062 - }, - "referenced_declaration": 929, - "type_descriptions": { - "type_identifier": "t_address", - "type_string": "address" - } - } - ], - "parameters": { - "id": 2066, - "node_type": 43, - "src": { - "id": 2067, - "line": 755, - "column": 68, - "start": 26955, - "end": 26961, - "length": 7, - "parent_index": 2062 - }, - "parameters": [ - { - "id": 2068, - "node_type": 44, - "src": { - "id": 2069, - "line": 755, - "column": 68, - "start": 26955, - "end": 26961, - "length": 7, - "parent_index": 2066 - }, - "scope": 2062, - "name": "", - "type_name": { - "id": 2070, - "node_type": 30, - "src": { - "id": 2071, - "line": 755, - "column": 68, - "start": 26955, - "end": 26961, - "length": 7, - "parent_index": 2068 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 2072, - "node_type": 43, - "src": { - "id": 2073, - "line": 755, - "column": 68, - "start": 26955, - "end": 26961, - "length": 7, - "parent_index": 2062 - }, - "parameters": [ - { - "id": 2074, - "node_type": 44, - "src": { - "id": 2075, - "line": 755, - "column": 68, - "start": 26955, - "end": 26961, - "length": 7, - "parent_index": 2072 - }, - "scope": 2062, - "name": "", - "type_name": { - "id": 2076, - "node_type": 30, - "src": { - "id": 2077, - "line": 755, - "column": 68, - "start": 26955, - "end": 26961, - "length": 7, - "parent_index": 2074 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "scope": 2021, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 2085, - "name": "upgradeTo", - "node_type": 42, - "kind": 41, - "src": { - "id": 2086, - "line": 769, - "column": 4, - "start": 27262, - "end": 27428, - "length": 167, - "parent_index": 2021 - }, - "body": { - "id": 2098, - "node_type": 46, - "kind": 0, - "src": { - "id": 2099, - "line": 769, - "column": 75, - "start": 27333, - "end": 27428, - "length": 96, - "parent_index": 2085 - }, - "implemented": true, - "statements": [ - { - "id": 2100, - "node_type": 24, - "kind": 24, - "src": { - "id": 2101, - "line": 770, - "column": 8, - "start": 27343, - "end": 27379, - "length": 37, - "parent_index": 2098 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 2102, - "node_type": 16, - "src": { - "id": 2103, - "line": 770, - "column": 27, - "start": 27362, - "end": 27378, - "length": 17, - "parent_index": 2100 - }, - "name": "newImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 2102, - "is_pure": false - } - ], - "expression": { - "id": 2104, - "node_type": 16, - "src": { - "id": 2105, - "line": 770, - "column": 8, - "start": 27343, - "end": 27360, - "length": 18, - "parent_index": 2100 - }, - "name": "_setImplementation", - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - }, - { - "id": 2106, - "node_type": 64, - "src": { - "id": 2107, - "line": 771, - "column": 8, - "start": 27390, - "end": 27422, - "length": 33, - "parent_index": 2085 - }, - "arguments": [ - { - "id": 2108, - "node_type": 16, - "src": { - "id": 2109, - "line": 771, - "column": 22, - "start": 27404, - "end": 27420, - "length": 17, - "parent_index": 2098 - }, - "name": "newImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 2108, - "is_pure": false - } - ], - "expression": { - "id": 2110, - "node_type": 16, - "src": { - "id": 2111, - "line": 771, - "column": 13, - "start": 27395, - "end": 27402, - "length": 8, - "parent_index": 2098 - }, - "name": "Upgraded", - "type_description": { - "type_identifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", - "type_string": "event ERC1967Upgrade.Upgraded" - }, - "overloaded_declarations": [], - "referenced_declaration": 929, - "is_pure": false - } - } - ] - }, - "implemented": true, - "visibility": 3, - "state_mutability": 4, - "virtual": true, - "modifiers": [ - { - "id": 2087, - "name": "onlyOwner", - "node_type": 72, - "kind": 72, - "src": { - "id": 2088, - "line": 769, - "column": 65, - "start": 27323, - "end": 27331, - "length": 9, - "parent_index": 2085 - }, - "argument_types": [], - "arguments": [], - "modifier_name": { - "id": 2089, - "name": "onlyOwner", - "node_type": 0, - "src": { - "id": 2090, - "line": 769, - "column": 65, - "start": 27323, - "end": 27331, - "length": 9, - "parent_index": 2087 - } - } - } - ], - "overrides": [], - "parameters": { - "id": 2091, - "node_type": 43, - "src": { - "id": 2092, - "line": 769, - "column": 23, - "start": 27281, - "end": 27305, - "length": 25, - "parent_index": 2085 - }, - "parameters": [ - { - "id": 2093, - "node_type": 44, - "src": { - "id": 2094, - "line": 769, - "column": 23, - "start": 27281, - "end": 27305, - "length": 25, - "parent_index": 2091 - }, - "scope": 2085, - "name": "newImplementation", - "type_name": { - "id": 2095, - "node_type": 30, - "src": { - "id": 2096, - "line": 769, - "column": 23, - "start": 27281, - "end": 27287, - "length": 7, - "parent_index": 2093 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 2097, - "node_type": 43, - "src": { - "id": 2086, - "line": 769, - "column": 4, - "start": 27262, - "end": 27428, - "length": 167, - "parent_index": 2085 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 2021, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - }, - { - "id": 2113, - "name": "_setImplementation", - "node_type": 42, - "kind": 41, - "src": { - "id": 2114, - "line": 781, - "column": 4, - "start": 27604, - "end": 27829, - "length": 226, - "parent_index": 2021 - }, - "body": { - "id": 2122, - "node_type": 46, - "kind": 0, - "src": { - "id": 2123, - "line": 781, - "column": 67, - "start": 27667, - "end": 27829, - "length": 163, - "parent_index": 2113 - }, - "implemented": true, - "statements": [ - { - "id": 2124, - "node_type": 24, - "kind": 24, - "src": { - "id": 2125, - "line": 782, - "column": 8, - "start": 27677, - "end": 27777, - "length": 101, - "parent_index": 2122 - }, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"UpgradeableBeacon: implementation is not a contract\"" - } - ], - "arguments": [ - { - "id": 2126, - "node_type": 24, - "kind": 24, - "src": { - "id": 2127, - "line": 782, - "column": 16, - "start": 27685, - "end": 27721, - "length": 37, - "parent_index": 2124 - }, - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "arguments": [ - { - "id": 2128, - "node_type": 16, - "src": { - "id": 2129, - "line": 782, - "column": 35, - "start": 27704, - "end": 27720, - "length": 17, - "parent_index": 2126 - }, - "name": "newImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 2128, - "is_pure": false - } - ], - "expression": { - "id": 2130, - "is_constant": false, - "is_l_value": false, - "is_pure": false, - "l_value_requested": false, - "node_type": 23, - "src": { - "id": 2131, - "line": 782, - "column": 16, - "start": 27685, - "end": 27702, - "length": 18, - "parent_index": 2126 - }, - "expression": { - "id": 2132, - "node_type": 16, - "src": { - "id": 2133, - "line": 782, - "column": 16, - "start": 27685, - "end": 27691, - "length": 7, - "parent_index": 2130 - }, - "name": "Address", - "type_description": { - "type_identifier": "t_contract$_Address_$251", - "type_string": "contract Address" - }, - "overloaded_declarations": [], - "referenced_declaration": 251, - "is_pure": false - }, - "member_name": "isContract", - "argument_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ], - "type_description": { - "type_identifier": "t_contract$_Address_$251", - "type_string": "contract Address" - } - }, - "type_description": { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - }, - { - "id": 2134, - "node_type": 17, - "kind": 50, - "value": "UpgradeableBeacon: implementation is not a contract", - "hex_value": "5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374", - "src": { - "id": 2135, - "line": 782, - "column": 55, - "start": 27724, - "end": 27776, - "length": 53, - "parent_index": 2124 - }, - "type_description": { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"UpgradeableBeacon: implementation is not a contract\"" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": true, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - } - ] - } - ], - "expression": { - "id": 2136, - "node_type": 16, - "src": { - "id": 2137, - "line": 782, - "column": 8, - "start": 27677, - "end": 27683, - "length": 7, - "parent_index": 2124 - }, - "name": "require", - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$$_t_string_literal", - "type_string": "function(function(address),literal_string \"UpgradeableBeacon: implementation is not a contract\")" - }, - "overloaded_declarations": [], - "referenced_declaration": 0, - "is_pure": false, - "argument_types": [ - { - "type_identifier": "t_function_$_t_address$", - "type_string": "function(address)" - }, - { - "type_identifier": "t_string_literal", - "type_string": "literal_string \"UpgradeableBeacon: implementation is not a contract\"" - } - ] - }, - "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", - "type_string": "function(function(address),string memory)" - } - }, - { - "id": 2138, - "node_type": 81, - "src": { - "id": 2139, - "line": 783, - "column": 8, - "start": 27788, - "end": 27823, - "length": 36, - "parent_index": 2122 - }, - "expression": { - "id": 2140, - "node_type": 27, - "src": { - "id": 2141, - "line": 783, - "column": 8, - "start": 27788, - "end": 27822, - "length": 35, - "parent_index": 2122 - }, - "operator": 11, - "left_expression": { - "id": 2142, - "node_type": 16, - "src": { - "id": 2143, - "line": 783, - "column": 8, - "start": 27788, - "end": 27802, - "length": 15, - "parent_index": 2140 - }, - "name": "_implementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 2031, - "is_pure": false - }, - "right_expression": { - "id": 2144, - "node_type": 16, - "src": { - "id": 2145, - "line": 783, - "column": 26, - "start": 27806, - "end": 27822, - "length": 17, - "parent_index": 2140 - }, - "name": "newImplementation", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "overloaded_declarations": [], - "referenced_declaration": 2144, - "is_pure": false - }, - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - } - } - } - ] - }, - "implemented": true, - "visibility": 2, - "state_mutability": 4, - "virtual": false, - "modifiers": [], - "overrides": [], - "parameters": { - "id": 2115, - "node_type": 43, - "src": { - "id": 2116, - "line": 781, - "column": 32, - "start": 27632, - "end": 27656, - "length": 25, - "parent_index": 2113 - }, - "parameters": [ - { - "id": 2117, - "node_type": 44, - "src": { - "id": 2118, - "line": 781, - "column": 32, - "start": 27632, - "end": 27656, - "length": 25, - "parent_index": 2115 - }, - "scope": 2113, - "name": "newImplementation", - "type_name": { - "id": 2119, - "node_type": 30, - "src": { - "id": 2120, - "line": 781, - "column": 32, - "start": 27632, - "end": 27638, - "length": 7, - "parent_index": 2117 - }, - "name": "address", - "type_description": { - "type_identifier": "t_address", - "type_string": "address" - }, - "state_mutability": 4, - "referenced_declaration": 0 - }, - "storage_location": 2, - "visibility": 1, - "state_mutability": 4 - } - ], - "parameter_types": [ - { - "type_identifier": "t_address", - "type_string": "address" - } - ] - }, - "return_parameters": { - "id": 2121, - "node_type": 43, - "src": { - "id": 2114, - "line": 781, - "column": 4, - "start": 27604, - "end": 27829, - "length": 226, - "parent_index": 2113 - }, - "parameters": [], - "parameter_types": [] - }, - "scope": 2021, - "type_description": { - "type_identifier": "t_function_$_t_address", - "type_string": "function(address)" - } - } - ], - "linearized_base_contracts": [ - 119, - 1771, - 2021, - 2018, - 2019, - 2020 - ], - "base_contracts": [ - { - "id": 2022, - "node_type": 62, - "src": { - "id": 2023, - "line": 736, - "column": 30, - "start": 26366, - "end": 26372, - "length": 7, - "parent_index": 2021 - }, - "base_name": { - "id": 2024, - "node_type": 52, - "src": { - "id": 2025, - "line": 736, - "column": 30, - "start": 26366, - "end": 26372, - "length": 7, - "parent_index": 2021 - }, - "name": "IBeacon", - "referenced_declaration": 119 - } - }, - { - "id": 2026, - "node_type": 62, - "src": { - "id": 2027, - "line": 736, - "column": 39, - "start": 26375, - "end": 26381, - "length": 7, - "parent_index": 2021 - }, - "base_name": { - "id": 2028, - "node_type": 52, - "src": { - "id": 2029, - "line": 736, - "column": 39, - "start": 26375, - "end": 26381, - "length": 7, - "parent_index": 2021 - }, - "name": "Ownable", - "referenced_declaration": 1771 - } - } - ], - "contract_dependencies": [ - 119, - 1771, - 2018, - 2019, - 2020 - ] - } - ], - "src": { - "id": 1992, - "line": 736, - "column": 0, - "start": 26336, - "end": 27831, - "length": 1496, - "parent_index": 118 - } + "id": 1991, + "base_contracts": [ + { + "id": 2022, + "node_type": 62, + "src": { + "id": 2023, + "line": 736, + "column": 30, + "start": 26366, + "end": 26372, + "length": 7, + "parent_index": 2021 + }, + "base_name": { + "id": 2024, + "node_type": 52, + "src": { + "id": 2025, + "line": 736, + "column": 30, + "start": 26366, + "end": 26372, + "length": 7, + "parent_index": 2021 + }, + "name": "IBeacon", + "referenced_declaration": 119 + } + }, + { + "id": 2026, + "node_type": 62, + "src": { + "id": 2027, + "line": 736, + "column": 39, + "start": 26375, + "end": 26381, + "length": 7, + "parent_index": 2021 + }, + "base_name": { + "id": 2028, + "node_type": 52, + "src": { + "id": 2029, + "line": 736, + "column": 39, + "start": 26375, + "end": 26381, + "length": 7, + "parent_index": 2021 + }, + "name": "Ownable", + "referenced_declaration": 1771 + } + } + ], + "license": "MIT", + "exported_symbols": [ + { + "id": 1991, + "name": "UpgradeableBeacon", + "absolute_path": "UpgradeableBeacon.sol" + }, + { + "id": 251, + "name": "Address", + "absolute_path": "Address.sol" + }, + { + "id": 251, + "name": "Address", + "absolute_path": "Address.sol" + }, + { + "id": 1771, + "name": "Ownable", + "absolute_path": "Ownable.sol" + }, + { + "id": 119, + "name": "IBeacon", + "absolute_path": "IBeacon.sol" + }, + { + "id": 119, + "name": "IBeacon", + "absolute_path": "IBeacon.sol" + }, + { + "id": 119, + "name": "IBeacon", + "absolute_path": "IBeacon.sol" + }, + { + "id": 119, + "name": "IBeacon", + "absolute_path": "IBeacon.sol" + } + ], + "absolute_path": "UpgradeableBeacon.sol", + "name": "UpgradeableBeacon", + "node_type": 1, + "nodes": [ + { + "id": 2009, + "node_type": 10, + "src": { + "id": 2010, + "line": 724, + "column": 0, + "start": 25896, + "end": 25918, + "length": 23, + "parent_index": 1991 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 2018, + "node_type": 29, + "src": { + "id": 0, + "line": 726, + "column": 0, + "start": 25921, + "end": 25943, + "length": 23, + "parent_index": 1991 + }, + "absolute_path": "IBeacon.sol", + "file": "./IBeacon.sol", + "scope": 1991, + "unit_alias": "", + "source_unit": 1771 + }, + { + "id": 2019, + "node_type": 29, + "src": { + "id": 0, + "line": 727, + "column": 0, + "start": 25945, + "end": 25978, + "length": 34, + "parent_index": 1991 + }, + "absolute_path": "Ownable.sol", + "file": "../../access/Ownable.sol", + "scope": 1991, + "unit_alias": "", + "source_unit": 1771 + }, + { + "id": 2020, + "node_type": 29, + "src": { + "id": 0, + "line": 728, + "column": 0, + "start": 25980, + "end": 26012, + "length": 33, + "parent_index": 1991 + }, + "absolute_path": "Address.sol", + "file": "../../utils/Address.sol", + "scope": 1991, + "unit_alias": "", + "source_unit": 1771 + }, + { + "id": 2021, + "name": "UpgradeableBeacon", + "node_type": 35, + "src": { + "id": 0, + "line": 736, + "column": 0, + "start": 26336, + "end": 27831, + "length": 1496, + "parent_index": 1991 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 2031, + "name": "_implementation", + "is_constant": false, + "is_state_variable": true, + "node_type": 44, + "src": { + "id": 2032, + "line": 737, + "column": 4, + "start": 26389, + "end": 26420, + "length": 32, + "parent_index": 2021 + }, + "scope": 2021, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "visibility": 2, + "storage_location": 1, + "mutability": 1, + "type_name": { + "id": 2033, + "node_type": 30, + "src": { + "id": 2034, + "line": 737, + "column": 4, + "start": 26389, + "end": 26395, + "length": 7, + "parent_index": 2031 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + } + }, + { + "id": 2036, + "node_type": 57, + "src": { + "id": 2037, + "line": 742, + "column": 4, + "start": 26522, + "end": 26568, + "length": 47, + "parent_index": 2021 + }, + "parameters": { + "id": 2038, + "node_type": 43, + "src": { + "id": 2037, + "line": 742, + "column": 4, + "start": 26522, + "end": 26568, + "length": 47, + "parent_index": 2036 + }, + "parameters": [ + { + "id": 2039, + "node_type": 44, + "src": { + "id": 2040, + "line": 742, + "column": 19, + "start": 26537, + "end": 26566, + "length": 30, + "parent_index": 2038 + }, + "scope": 2036, + "name": "implementation", + "type_name": { + "id": 2041, + "node_type": 30, + "src": { + "id": 2042, + "line": 742, + "column": 19, + "start": 26537, + "end": 26543, + "length": 7, + "parent_index": 2039 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "name": "Upgraded", + "anonymous": false + }, + { + "id": 2044, + "node_type": 42, + "src": { + "id": 2045, + "line": 748, + "column": 4, + "start": 26724, + "end": 26812, + "length": 89, + "parent_index": 2021 + }, + "kind": 11, + "state_mutability": 4, + "visibility": 1, + "implemented": true, + "modifiers": [], + "parameters": { + "id": 2046, + "node_type": 43, + "src": { + "id": 2047, + "line": 748, + "column": 16, + "start": 26736, + "end": 26758, + "length": 23, + "parent_index": 2044 + }, + "parameters": [ + { + "id": 2048, + "node_type": 44, + "src": { + "id": 2049, + "line": 748, + "column": 16, + "start": 26736, + "end": 26758, + "length": 23, + "parent_index": 2046 + }, + "scope": 2044, + "name": "implementation_", + "type_name": { + "id": 2050, + "node_type": 30, + "src": { + "id": 2051, + "line": 748, + "column": 16, + "start": 26736, + "end": 26742, + "length": 7, + "parent_index": 2048 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 2052, + "node_type": 43, + "src": { + "id": 2045, + "line": 748, + "column": 4, + "start": 26724, + "end": 26812, + "length": 89, + "parent_index": 2044 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2021, + "body": { + "id": 2053, + "node_type": 46, + "kind": 0, + "src": { + "id": 2054, + "line": 748, + "column": 41, + "start": 26761, + "end": 26812, + "length": 52, + "parent_index": 2044 + }, + "implemented": true, + "statements": [ + { + "id": 2055, + "node_type": 24, + "kind": 24, + "src": { + "id": 2056, + "line": 749, + "column": 8, + "start": 26771, + "end": 26805, + "length": 35, + "parent_index": 2053 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 2059, + "node_type": 16, + "src": { + "id": 2060, + "line": 749, + "column": 27, + "start": 26790, + "end": 26804, + "length": 15, + "parent_index": 2055 + }, + "name": "implementation_", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2059, + "is_pure": false + } + ], + "expression": { + "id": 2057, + "node_type": 16, + "src": { + "id": 2058, + "line": 749, + "column": 8, + "start": 26771, + "end": 26788, + "length": 18, + "parent_index": 2055 + }, + "name": "_setImplementation", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ] + } + }, + { + "id": 2062, + "name": "implementation", + "node_type": 42, + "kind": 41, + "src": { + "id": 2063, + "line": 755, + "column": 4, + "start": 26891, + "end": 27002, + "length": 112, + "parent_index": 2021 + }, + "body": { + "id": 2078, + "node_type": 46, + "kind": 0, + "src": { + "id": 2079, + "line": 755, + "column": 77, + "start": 26964, + "end": 27002, + "length": 39, + "parent_index": 2062 + }, + "implemented": true, + "statements": [ + { + "id": 2080, + "node_type": 47, + "src": { + "id": 2081, + "line": 756, + "column": 8, + "start": 26974, + "end": 26996, + "length": 23, + "parent_index": 2062 + }, + "function_return_parameters": 2062, + "expression": { + "id": 2082, + "node_type": 16, + "src": { + "id": 2083, + "line": 756, + "column": 15, + "start": 26981, + "end": 26995, + "length": 15, + "parent_index": 2078 + }, + "name": "_implementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2031, + "is_pure": false + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 5, + "virtual": true, + "modifiers": [], + "overrides": [ + { + "id": 2064, + "node_type": 63, + "name": "implementation", + "src": { + "id": 2065, + "line": 755, + "column": 50, + "start": 26937, + "end": 26944, + "length": 8, + "parent_index": 2062 + }, + "referenced_declaration": 172, + "type_descriptions": { + "type_identifier": "t_address", + "type_string": "address" + } + } + ], + "parameters": { + "id": 2066, + "node_type": 43, + "src": { + "id": 2067, + "line": 755, + "column": 68, + "start": 26955, + "end": 26961, + "length": 7, + "parent_index": 2062 + }, + "parameters": [ + { + "id": 2068, + "node_type": 44, + "src": { + "id": 2069, + "line": 755, + "column": 68, + "start": 26955, + "end": 26961, + "length": 7, + "parent_index": 2066 + }, + "scope": 2062, + "name": "", + "type_name": { + "id": 2070, + "node_type": 30, + "src": { + "id": 2071, + "line": 755, + "column": 68, + "start": 26955, + "end": 26961, + "length": 7, + "parent_index": 2068 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 2072, + "node_type": 43, + "src": { + "id": 2073, + "line": 755, + "column": 68, + "start": 26955, + "end": 26961, + "length": 7, + "parent_index": 2062 + }, + "parameters": [ + { + "id": 2074, + "node_type": 44, + "src": { + "id": 2075, + "line": 755, + "column": 68, + "start": 26955, + "end": 26961, + "length": 7, + "parent_index": 2072 + }, + "scope": 2062, + "name": "", + "type_name": { + "id": 2076, + "node_type": 30, + "src": { + "id": 2077, + "line": 755, + "column": 68, + "start": 26955, + "end": 26961, + "length": 7, + "parent_index": 2074 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 2021, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 2085, + "name": "upgradeTo", + "node_type": 42, + "kind": 41, + "src": { + "id": 2086, + "line": 769, + "column": 4, + "start": 27262, + "end": 27428, + "length": 167, + "parent_index": 2021 + }, + "body": { + "id": 2098, + "node_type": 46, + "kind": 0, + "src": { + "id": 2099, + "line": 769, + "column": 75, + "start": 27333, + "end": 27428, + "length": 96, + "parent_index": 2085 + }, + "implemented": true, + "statements": [ + { + "id": 2100, + "node_type": 24, + "kind": 24, + "src": { + "id": 2101, + "line": 770, + "column": 8, + "start": 27343, + "end": 27379, + "length": 37, + "parent_index": 2098 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 2104, + "node_type": 16, + "src": { + "id": 2105, + "line": 770, + "column": 27, + "start": 27362, + "end": 27378, + "length": 17, + "parent_index": 2100 + }, + "name": "newImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2104, + "is_pure": false + } + ], + "expression": { + "id": 2102, + "node_type": 16, + "src": { + "id": 2103, + "line": 770, + "column": 8, + "start": 27343, + "end": 27360, + "length": 18, + "parent_index": 2100 + }, + "name": "_setImplementation", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 2106, + "node_type": 64, + "src": { + "id": 2107, + "line": 771, + "column": 8, + "start": 27390, + "end": 27422, + "length": 33, + "parent_index": 2085 + }, + "arguments": [ + { + "id": 2108, + "node_type": 16, + "src": { + "id": 2109, + "line": 771, + "column": 22, + "start": 27404, + "end": 27420, + "length": 17, + "parent_index": 2098 + }, + "name": "newImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2108, + "is_pure": false + } + ], + "expression": { + "id": 2110, + "node_type": 16, + "src": { + "id": 2111, + "line": 771, + "column": 13, + "start": 27395, + "end": 27402, + "length": 8, + "parent_index": 2098 + }, + "name": "Upgraded", + "type_description": { + "type_identifier": "t_event\u0026_ERC1967Upgrade_Upgraded_\u0026929", + "type_string": "event ERC1967Upgrade.Upgraded" + }, + "overloaded_declarations": [], + "referenced_declaration": 929, + "is_pure": false + } + } + ] + }, + "implemented": true, + "visibility": 3, + "state_mutability": 4, + "virtual": true, + "modifiers": [ + { + "id": 2087, + "name": "onlyOwner", + "node_type": 72, + "kind": 72, + "src": { + "id": 2088, + "line": 769, + "column": 65, + "start": 27323, + "end": 27331, + "length": 9, + "parent_index": 2085 + }, + "argument_types": [], + "arguments": [], + "modifier_name": { + "id": 2089, + "name": "onlyOwner", + "node_type": 0, + "src": { + "id": 2090, + "line": 769, + "column": 65, + "start": 27323, + "end": 27331, + "length": 9, + "parent_index": 2087 + } + } + } + ], + "overrides": [], + "parameters": { + "id": 2091, + "node_type": 43, + "src": { + "id": 2092, + "line": 769, + "column": 23, + "start": 27281, + "end": 27305, + "length": 25, + "parent_index": 2085 + }, + "parameters": [ + { + "id": 2093, + "node_type": 44, + "src": { + "id": 2094, + "line": 769, + "column": 23, + "start": 27281, + "end": 27305, + "length": 25, + "parent_index": 2091 + }, + "scope": 2085, + "name": "newImplementation", + "type_name": { + "id": 2095, + "node_type": 30, + "src": { + "id": 2096, + "line": 769, + "column": 23, + "start": 27281, + "end": 27287, + "length": 7, + "parent_index": 2093 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 2097, + "node_type": 43, + "src": { + "id": 2086, + "line": 769, + "column": 4, + "start": 27262, + "end": 27428, + "length": 167, + "parent_index": 2085 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2021, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 2113, + "name": "_setImplementation", + "node_type": 42, + "kind": 41, + "src": { + "id": 2114, + "line": 781, + "column": 4, + "start": 27604, + "end": 27829, + "length": 226, + "parent_index": 2021 + }, + "body": { + "id": 2122, + "node_type": 46, + "kind": 0, + "src": { + "id": 2123, + "line": 781, + "column": 67, + "start": 27667, + "end": 27829, + "length": 163, + "parent_index": 2113 + }, + "implemented": true, + "statements": [ + { + "id": 2124, + "node_type": 24, + "kind": 24, + "src": { + "id": 2125, + "line": 782, + "column": 8, + "start": 27677, + "end": 27777, + "length": 101, + "parent_index": 2122 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UpgradeableBeacon: implementation is not a contract\"" + } + ], + "arguments": [ + { + "id": 2128, + "node_type": 24, + "kind": 24, + "src": { + "id": 2129, + "line": 782, + "column": 16, + "start": 27685, + "end": 27721, + "length": 37, + "parent_index": 2124 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 2134, + "node_type": 16, + "src": { + "id": 2135, + "line": 782, + "column": 35, + "start": 27704, + "end": 27720, + "length": 17, + "parent_index": 2128 + }, + "name": "newImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2134, + "is_pure": false + } + ], + "expression": { + "id": 2130, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2131, + "line": 782, + "column": 16, + "start": 27685, + "end": 27702, + "length": 18, + "parent_index": 2128 + }, + "expression": { + "id": 2132, + "node_type": 16, + "src": { + "id": 2133, + "line": 782, + "column": 16, + "start": 27685, + "end": 27691, + "length": 7, + "parent_index": 2130 + }, + "name": "Address", + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + }, + "overloaded_declarations": [], + "referenced_declaration": 251, + "is_pure": false + }, + "member_name": "isContract", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_Address_$251", + "type_string": "contract Address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 2136, + "node_type": 17, + "kind": 50, + "value": "UpgradeableBeacon: implementation is not a contract", + "hex_value": "5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374", + "src": { + "id": 2137, + "line": 782, + "column": 55, + "start": 27724, + "end": 27776, + "length": 53, + "parent_index": 2124 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UpgradeableBeacon: implementation is not a contract\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ] + } + ], + "expression": { + "id": 2126, + "node_type": 16, + "src": { + "id": 2127, + "line": 782, + "column": 8, + "start": 27677, + "end": 27683, + "length": 7, + "parent_index": 2124 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "type_string": "function(function(address),string memory)" + } + }, + { + "id": 2138, + "node_type": 81, + "src": { + "id": 2139, + "line": 783, + "column": 8, + "start": 27788, + "end": 27823, + "length": 36, + "parent_index": 2122 + }, + "expression": { + "id": 2140, + "node_type": 27, + "src": { + "id": 2141, + "line": 783, + "column": 8, + "start": 27788, + "end": 27822, + "length": 35, + "parent_index": 2122 + }, + "operator": 11, + "left_expression": { + "id": 2142, + "node_type": 16, + "src": { + "id": 2143, + "line": 783, + "column": 8, + "start": 27788, + "end": 27802, + "length": 15, + "parent_index": 2140 + }, + "name": "_implementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2031, + "is_pure": false + }, + "right_expression": { + "id": 2144, + "node_type": 16, + "src": { + "id": 2145, + "line": 783, + "column": 26, + "start": 27806, + "end": 27822, + "length": 17, + "parent_index": 2140 + }, + "name": "newImplementation", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2144, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + } + ] + }, + "implemented": true, + "visibility": 2, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2115, + "node_type": 43, + "src": { + "id": 2116, + "line": 781, + "column": 32, + "start": 27632, + "end": 27656, + "length": 25, + "parent_index": 2113 + }, + "parameters": [ + { + "id": 2117, + "node_type": 44, + "src": { + "id": 2118, + "line": 781, + "column": 32, + "start": 27632, + "end": 27656, + "length": 25, + "parent_index": 2115 + }, + "scope": 2113, + "name": "newImplementation", + "type_name": { + "id": 2119, + "node_type": 30, + "src": { + "id": 2120, + "line": 781, + "column": 32, + "start": 27632, + "end": 27638, + "length": 7, + "parent_index": 2117 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 2121, + "node_type": 43, + "src": { + "id": 2114, + "line": 781, + "column": 4, + "start": 27604, + "end": 27829, + "length": 226, + "parent_index": 2113 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2021, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ], + "linearized_base_contracts": [ + 119, + 1771, + 2021, + 2018, + 2019, + 2020 + ], + "base_contracts": [ + { + "id": 2022, + "node_type": 62, + "src": { + "id": 2023, + "line": 736, + "column": 30, + "start": 26366, + "end": 26372, + "length": 7, + "parent_index": 2021 + }, + "base_name": { + "id": 2024, + "node_type": 52, + "src": { + "id": 2025, + "line": 736, + "column": 30, + "start": 26366, + "end": 26372, + "length": 7, + "parent_index": 2021 + }, + "name": "IBeacon", + "referenced_declaration": 119 + } + }, + { + "id": 2026, + "node_type": 62, + "src": { + "id": 2027, + "line": 736, + "column": 39, + "start": 26375, + "end": 26381, + "length": 7, + "parent_index": 2021 + }, + "base_name": { + "id": 2028, + "node_type": 52, + "src": { + "id": 2029, + "line": 736, + "column": 39, + "start": 26375, + "end": 26381, + "length": 7, + "parent_index": 2021 + }, + "name": "Ownable", + "referenced_declaration": 1771 + } + } + ], + "contract_dependencies": [ + 119, + 1771, + 2018, + 2019, + 2020 + ] + } + ], + "src": { + "id": 1992, + "line": 736, + "column": 0, + "start": 26336, + "end": 27831, + "length": 1496, + "parent_index": 118 + } } \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/Address.sol b/data/tests/contracts/sushixswap/Address.sol new file mode 100644 index 00000000..daea7f31 --- /dev/null +++ b/data/tests/contracts/sushixswap/Address.sol @@ -0,0 +1,222 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) + +pragma solidity ^0.8.1; + +/** + * @dev Collection of functions related to the address type + */ +library Address { + /** + * @dev Returns true if `account` is a contract. + * + * [IMPORTANT] + * ==== + * It is unsafe to assume that an address for which this function returns + * false is an externally-owned account (EOA) and not a contract. + * + * Among others, `isContract` will return false for the following + * types of addresses: + * + * - an externally-owned account + * - a contract in construction + * - an address where a contract will be created + * - an address where a contract lived, but was destroyed + * ==== + * + * [IMPORTANT] + * ==== + * You shouldn't rely on `isContract` to protect against flash loan attacks! + * + * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets + * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract + * constructor. + * ==== + */ + function isContract(address account) internal view returns (bool) { + // This method relies on extcodesize/address.code.length, which returns 0 + // for contracts in construction, since the code is only stored at the end + // of the constructor execution. + + return account.code.length > 0; + } + + /** + * @dev Replacement for Solidity's `transfer`: sends `amount` wei to + * `recipient`, forwarding all available gas and reverting on errors. + * + * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost + * of certain opcodes, possibly making contracts go over the 2300 gas limit + * imposed by `transfer`, making them unable to receive funds via + * `transfer`. {sendValue} removes this limitation. + * + * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. + * + * IMPORTANT: because control is transferred to `recipient`, care must be + * taken to not create reentrancy vulnerabilities. Consider using + * {ReentrancyGuard} or the + * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. + */ + function sendValue(address payable recipient, uint256 amount) internal { + require(address(this).balance >= amount, "Address: insufficient balance"); + + (bool success, ) = recipient.call{value: amount}(""); + require(success, "Address: unable to send value, recipient may have reverted"); + } + + /** + * @dev Performs a Solidity function call using a low level `call`. A + * plain `call` is an unsafe replacement for a function call: use this + * function instead. + * + * If `target` reverts with a revert reason, it is bubbled up by this + * function (like regular Solidity function calls). + * + * Returns the raw returned data. To convert to the expected return value, + * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. + * + * Requirements: + * + * - `target` must be a contract. + * - calling `target` with `data` must not revert. + * + * _Available since v3.1._ + */ + function functionCall(address target, bytes memory data) internal returns (bytes memory) { + return functionCall(target, data, "Address: low-level call failed"); + } + + /** + * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with + * `errorMessage` as a fallback revert reason when `target` reverts. + * + * _Available since v3.1._ + */ + function functionCall( + address target, + bytes memory data, + string memory errorMessage + ) internal returns (bytes memory) { + return functionCallWithValue(target, data, 0, errorMessage); + } + + /** + * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], + * but also transferring `value` wei to `target`. + * + * Requirements: + * + * - the calling contract must have an ETH balance of at least `value`. + * - the called Solidity function must be `payable`. + * + * _Available since v3.1._ + */ + function functionCallWithValue( + address target, + bytes memory data, + uint256 value + ) internal returns (bytes memory) { + return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); + } + + /** + * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but + * with `errorMessage` as a fallback revert reason when `target` reverts. + * + * _Available since v3.1._ + */ + function functionCallWithValue( + address target, + bytes memory data, + uint256 value, + string memory errorMessage + ) internal returns (bytes memory) { + require(address(this).balance >= value, "Address: insufficient balance for call"); + require(isContract(target), "Address: call to non-contract"); + + (bool success, bytes memory returndata) = target.call{value: value}(data); + return verifyCallResult(success, returndata, errorMessage); + } + + /** + * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], + * but performing a static call. + * + * _Available since v3.3._ + */ + function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { + return functionStaticCall(target, data, "Address: low-level static call failed"); + } + + /** + * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], + * but performing a static call. + * + * _Available since v3.3._ + */ + function functionStaticCall( + address target, + bytes memory data, + string memory errorMessage + ) internal view returns (bytes memory) { + require(isContract(target), "Address: static call to non-contract"); + + (bool success, bytes memory returndata) = target.staticcall(data); + return verifyCallResult(success, returndata, errorMessage); + } + + /** + * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], + * but performing a delegate call. + * + * _Available since v3.4._ + */ + function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { + return functionDelegateCall(target, data, "Address: low-level delegate call failed"); + } + + /** + * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], + * but performing a delegate call. + * + * _Available since v3.4._ + */ + function functionDelegateCall( + address target, + bytes memory data, + string memory errorMessage + ) internal returns (bytes memory) { + require(isContract(target), "Address: delegate call to non-contract"); + + (bool success, bytes memory returndata) = target.delegatecall(data); + return verifyCallResult(success, returndata, errorMessage); + } + + /** + * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the + * revert reason using the provided one. + * + * _Available since v4.3._ + */ + function verifyCallResult( + bool success, + bytes memory returndata, + string memory errorMessage + ) internal pure returns (bytes memory) { + if (success) { + return returndata; + } else { + // Look for revert reason and bubble it up if present + if (returndata.length > 0) { + // The easiest way to bubble the revert reason is using memory via assembly + + assembly { + let returndata_size := mload(returndata) + revert(add(32, returndata), returndata_size) + } + } else { + revert(errorMessage); + } + } + } +} diff --git a/data/tests/contracts/sushixswap/Address.solgo.ast.json b/data/tests/contracts/sushixswap/Address.solgo.ast.json new file mode 100644 index 00000000..82ef5a25 --- /dev/null +++ b/data/tests/contracts/sushixswap/Address.solgo.ast.json @@ -0,0 +1,5452 @@ +{ + "id": 264, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 264, + "name": "Address", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/Address.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/Address.sol", + "name": "Address", + "node_type": 1, + "nodes": [ + { + "id": 266, + "node_type": 10, + "src": { + "id": 267, + "line": 4, + "column": 0, + "start": 101, + "end": 123, + "length": 23, + "parent_index": 264 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "1", + ";" + ], + "text": "pragma solidity ^0.8.1;" + }, + { + "id": 268, + "name": "Address", + "node_type": 35, + "src": { + "id": 0, + "line": 9, + "column": 0, + "start": 194, + "end": 8254, + "length": 8061, + "parent_index": 264 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 270, + "name": "isContract", + "node_type": 42, + "kind": 41, + "src": { + "id": 271, + "line": 36, + "column": 4, + "start": 1175, + "end": 1494, + "length": 320, + "parent_index": 268 + }, + "body": { + "id": 284, + "node_type": 46, + "kind": 0, + "src": { + "id": 285, + "line": 36, + "column": 70, + "start": 1241, + "end": 1494, + "length": 254, + "parent_index": 270 + }, + "implemented": true, + "statements": [ + { + "id": 286, + "node_type": 47, + "src": { + "id": 287, + "line": 41, + "column": 8, + "start": 1458, + "end": 1488, + "length": 31, + "parent_index": 270 + }, + "function_return_parameters": 270, + "expression": { + "id": 288, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 289, + "line": 41, + "column": 15, + "start": 1465, + "end": 1487, + "length": 23, + "parent_index": 284 + }, + "operator": 7, + "left_expression": { + "id": 290, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 291, + "line": 41, + "column": 15, + "start": 1465, + "end": 1483, + "length": 19, + "parent_index": 288 + }, + "expression": { + "id": 292, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 293, + "line": 41, + "column": 15, + "start": 1465, + "end": 1476, + "length": 12, + "parent_index": 290 + }, + "expression": { + "id": 294, + "node_type": 16, + "src": { + "id": 295, + "line": 41, + "column": 15, + "start": 1465, + "end": 1471, + "length": 7, + "parent_index": 292 + }, + "name": "account", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 294, + "is_pure": false + }, + "member_name": "code", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "right_expression": { + "id": 296, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 297, + "line": 41, + "column": 37, + "start": 1487, + "end": 1487, + "length": 1, + "parent_index": 288 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 272, + "node_type": 43, + "src": { + "id": 273, + "line": 36, + "column": 24, + "start": 1195, + "end": 1209, + "length": 15, + "parent_index": 270 + }, + "parameters": [ + { + "id": 274, + "node_type": 44, + "src": { + "id": 275, + "line": 36, + "column": 24, + "start": 1195, + "end": 1209, + "length": 15, + "parent_index": 272 + }, + "scope": 270, + "name": "account", + "type_name": { + "id": 276, + "node_type": 30, + "src": { + "id": 277, + "line": 36, + "column": 24, + "start": 1195, + "end": 1201, + "length": 7, + "parent_index": 274 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 278, + "node_type": 43, + "src": { + "id": 279, + "line": 36, + "column": 64, + "start": 1235, + "end": 1238, + "length": 4, + "parent_index": 270 + }, + "parameters": [ + { + "id": 280, + "node_type": 44, + "src": { + "id": 281, + "line": 36, + "column": 64, + "start": 1235, + "end": 1238, + "length": 4, + "parent_index": 278 + }, + "scope": 270, + "name": "", + "type_name": { + "id": 282, + "node_type": 30, + "src": { + "id": 283, + "line": 36, + "column": 64, + "start": 1235, + "end": 1238, + "length": 4, + "parent_index": 280 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "scope": 268, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 299, + "name": "sendValue", + "node_type": 42, + "kind": 41, + "src": { + "id": 300, + "line": 60, + "column": 4, + "start": 2412, + "end": 2723, + "length": 312, + "parent_index": 268 + }, + "body": { + "id": 312, + "node_type": 46, + "kind": 0, + "src": { + "id": 313, + "line": 60, + "column": 75, + "start": 2483, + "end": 2723, + "length": 241, + "parent_index": 299 + }, + "implemented": true, + "statements": [ + { + "id": 314, + "node_type": 24, + "kind": 24, + "src": { + "id": 315, + "line": 61, + "column": 8, + "start": 2493, + "end": 2565, + "length": 73, + "parent_index": 312 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: insufficient balance\"" + } + ], + "arguments": [ + { + "id": 318, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 319, + "line": 61, + "column": 16, + "start": 2501, + "end": 2531, + "length": 31, + "parent_index": 314 + }, + "operator": 8, + "left_expression": { + "id": 320, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 321, + "line": 61, + "column": 16, + "start": 2501, + "end": 2521, + "length": 21, + "parent_index": 318 + }, + "expression": { + "id": 322, + "node_type": 24, + "kind": 24, + "src": { + "id": 323, + "line": 61, + "column": 16, + "start": 2501, + "end": 2513, + "length": 13, + "parent_index": 320 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_Address_$264", + "type_string": "contract Address" + } + ], + "arguments": [ + { + "id": 328, + "node_type": 16, + "src": { + "id": 329, + "line": 61, + "column": 24, + "start": 2509, + "end": 2512, + "length": 4, + "parent_index": 322 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_Address_$264", + "type_string": "contract Address" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 324, + "node_type": 16, + "src": { + "id": 325, + "line": 61, + "column": 16, + "start": 2501, + "end": 2507, + "length": 7, + "parent_index": 322 + }, + "name": "address", + "type_name": { + "id": 326, + "node_type": 30, + "src": { + "id": 327, + "line": 61, + "column": 16, + "start": 2501, + "end": 2507, + "length": 7, + "parent_index": 324 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "member_name": "balance", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "right_expression": { + "id": 330, + "node_type": 16, + "src": { + "id": 331, + "line": 61, + "column": 41, + "start": 2526, + "end": 2531, + "length": 6, + "parent_index": 318 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 330, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 332, + "node_type": 17, + "kind": 50, + "value": "Address: insufficient balance", + "hex_value": "416464726573733a20696e73756666696369656e742062616c616e6365", + "src": { + "id": 333, + "line": 61, + "column": 49, + "start": 2534, + "end": 2564, + "length": 31, + "parent_index": 314 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: insufficient balance\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 316, + "node_type": 16, + "src": { + "id": 317, + "line": 61, + "column": 8, + "start": 2493, + "end": 2499, + "length": 7, + "parent_index": 314 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 334, + "node_type": 44, + "src": { + "id": 335, + "line": 63, + "column": 8, + "start": 2577, + "end": 2629, + "length": 53, + "parent_index": 312 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 336, + "node_type": 24, + "kind": 24, + "src": { + "id": 337, + "line": 63, + "column": 27, + "start": 2596, + "end": 2628, + "length": 33, + "parent_index": 334 + }, + "argument_types": [ + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"\"" + } + ], + "arguments": [ + { + "id": 344, + "node_type": 17, + "kind": 50, + "src": { + "id": 345, + "line": 63, + "column": 57, + "start": 2626, + "end": 2627, + "length": 2, + "parent_index": 336 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 338, + "node_type": 93, + "kind": 93, + "src": { + "id": 339, + "line": 63, + "column": 27, + "start": 2596, + "end": 2624, + "length": 29, + "parent_index": 336 + }, + "expression": { + "id": 340, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 341, + "line": 63, + "column": 27, + "start": 2596, + "end": 2609, + "length": 14, + "parent_index": 338 + }, + "expression": { + "id": 342, + "node_type": 16, + "src": { + "id": 343, + "line": 63, + "column": 27, + "start": 2596, + "end": 2604, + "length": 9, + "parent_index": 340 + }, + "name": "recipient", + "type_description": { + "type_identifier": "t_address_payable", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 342, + "is_pure": false + }, + "member_name": "call", + "argument_types": [], + "type_description": { + "type_identifier": "t_address_payable", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_address_payable", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_function__t_string_literal$", + "type_string": "function(string memory)" + } + } + }, + { + "id": 346, + "node_type": 24, + "kind": 24, + "src": { + "id": 347, + "line": 64, + "column": 8, + "start": 2639, + "end": 2716, + "length": 78, + "parent_index": 312 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: unable to send value, recipient may have reverted\"" + } + ], + "arguments": [ + { + "id": 350, + "node_type": 16, + "src": { + "id": 351, + "line": 64, + "column": 16, + "start": 2647, + "end": 2653, + "length": 7, + "parent_index": 346 + }, + "name": "success", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 352, + "node_type": 17, + "kind": 50, + "value": "Address: unable to send value, recipient may have reverted", + "hex_value": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", + "src": { + "id": 353, + "line": 64, + "column": 25, + "start": 2656, + "end": 2715, + "length": 60, + "parent_index": 346 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: unable to send value, recipient may have reverted\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + } + ], + "expression": { + "id": 348, + "node_type": 16, + "src": { + "id": 349, + "line": 64, + "column": 8, + "start": 2639, + "end": 2645, + "length": 7, + "parent_index": 346 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_string_literal$", + "type_string": "function(function(),string memory)" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 301, + "node_type": 43, + "src": { + "id": 302, + "line": 60, + "column": 23, + "start": 2431, + "end": 2471, + "length": 41, + "parent_index": 299 + }, + "parameters": [ + { + "id": 303, + "node_type": 44, + "src": { + "id": 304, + "line": 60, + "column": 23, + "start": 2431, + "end": 2455, + "length": 25, + "parent_index": 301 + }, + "scope": 299, + "name": "recipient", + "type_name": { + "id": 305, + "node_type": 30, + "src": { + "id": 306, + "line": 60, + "column": 23, + "start": 2431, + "end": 2445, + "length": 15, + "parent_index": 303 + }, + "name": "addresspayable", + "type_description": { + "type_identifier": "t_address_payable", + "type_string": "address" + }, + "state_mutability": 3, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 3 + }, + { + "id": 307, + "node_type": 44, + "src": { + "id": 308, + "line": 60, + "column": 50, + "start": 2458, + "end": 2471, + "length": 14, + "parent_index": 301 + }, + "scope": 299, + "name": "amount", + "type_name": { + "id": 309, + "node_type": 30, + "src": { + "id": 310, + "line": 60, + "column": 50, + "start": 2458, + "end": 2464, + "length": 7, + "parent_index": 307 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address_payable", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 311, + "node_type": 43, + "src": { + "id": 300, + "line": 60, + "column": 4, + "start": 2412, + "end": 2723, + "length": 312, + "parent_index": 299 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 268, + "type_description": { + "type_identifier": "t_function_$_t_address_payable$_t_uint256$", + "type_string": "function(address,uint256)" + } + }, + { + "id": 355, + "name": "functionCall", + "node_type": 42, + "kind": 41, + "src": { + "id": 356, + "line": 85, + "column": 4, + "start": 3466, + "end": 3638, + "length": 173, + "parent_index": 268 + }, + "body": { + "id": 373, + "node_type": 46, + "kind": 0, + "src": { + "id": 374, + "line": 85, + "column": 93, + "start": 3555, + "end": 3638, + "length": 84, + "parent_index": 355 + }, + "implemented": true, + "statements": [ + { + "id": 375, + "node_type": 47, + "src": { + "id": 376, + "line": 86, + "column": 8, + "start": 3565, + "end": 3632, + "length": 68, + "parent_index": 355 + }, + "function_return_parameters": 355, + "expression": { + "id": 377, + "node_type": 24, + "kind": 24, + "src": { + "id": 378, + "line": 86, + "column": 15, + "start": 3572, + "end": 3631, + "length": 60, + "parent_index": 373 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: low-level call failed\"" + } + ], + "arguments": [ + { + "id": 381, + "node_type": 16, + "src": { + "id": 382, + "line": 86, + "column": 28, + "start": 3585, + "end": 3590, + "length": 6, + "parent_index": 377 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 381, + "is_pure": false + }, + { + "id": 383, + "node_type": 16, + "src": { + "id": 384, + "line": 86, + "column": 36, + "start": 3593, + "end": 3596, + "length": 4, + "parent_index": 377 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 383, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 385, + "node_type": 17, + "kind": 50, + "value": "Address: low-level call failed", + "hex_value": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", + "src": { + "id": 386, + "line": 86, + "column": 42, + "start": 3599, + "end": 3630, + "length": 32, + "parent_index": 377 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: low-level call failed\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + } + ], + "expression": { + "id": 379, + "node_type": 16, + "src": { + "id": 380, + "line": 86, + "column": 15, + "start": 3572, + "end": 3583, + "length": 12, + "parent_index": 377 + }, + "name": "functionCall", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "type_string": "function(address,bytes,string memory)" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 357, + "node_type": 43, + "src": { + "id": 358, + "line": 85, + "column": 26, + "start": 3488, + "end": 3520, + "length": 33, + "parent_index": 355 + }, + "parameters": [ + { + "id": 359, + "node_type": 44, + "src": { + "id": 360, + "line": 85, + "column": 26, + "start": 3488, + "end": 3501, + "length": 14, + "parent_index": 357 + }, + "scope": 355, + "name": "target", + "type_name": { + "id": 361, + "node_type": 30, + "src": { + "id": 362, + "line": 85, + "column": 26, + "start": 3488, + "end": 3494, + "length": 7, + "parent_index": 359 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 363, + "node_type": 44, + "src": { + "id": 364, + "line": 85, + "column": 42, + "start": 3504, + "end": 3520, + "length": 17, + "parent_index": 357 + }, + "scope": 355, + "name": "data", + "type_name": { + "id": 365, + "node_type": 30, + "src": { + "id": 366, + "line": 85, + "column": 42, + "start": 3504, + "end": 3508, + "length": 5, + "parent_index": 363 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 367, + "node_type": 43, + "src": { + "id": 368, + "line": 85, + "column": 79, + "start": 3541, + "end": 3552, + "length": 12, + "parent_index": 355 + }, + "parameters": [ + { + "id": 369, + "node_type": 44, + "src": { + "id": 370, + "line": 85, + "column": 79, + "start": 3541, + "end": 3552, + "length": 12, + "parent_index": 367 + }, + "scope": 355, + "name": "", + "type_name": { + "id": 371, + "node_type": 30, + "src": { + "id": 372, + "line": 85, + "column": 79, + "start": 3541, + "end": 3545, + "length": 5, + "parent_index": 369 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 268, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$", + "type_string": "function(address,bytes)" + } + }, + { + "id": 388, + "name": "functionCall", + "node_type": 42, + "kind": 41, + "src": { + "id": 389, + "line": 95, + "column": 4, + "start": 3861, + "end": 4083, + "length": 223, + "parent_index": 268 + }, + "body": { + "id": 410, + "node_type": 46, + "kind": 0, + "src": { + "id": 411, + "line": 99, + "column": 38, + "start": 4008, + "end": 4083, + "length": 76, + "parent_index": 388 + }, + "implemented": true, + "statements": [ + { + "id": 412, + "node_type": 47, + "src": { + "id": 413, + "line": 100, + "column": 8, + "start": 4018, + "end": 4077, + "length": 60, + "parent_index": 388 + }, + "function_return_parameters": 388, + "expression": { + "id": 414, + "node_type": 24, + "kind": 24, + "src": { + "id": 415, + "line": 100, + "column": 15, + "start": 4025, + "end": 4076, + "length": 52, + "parent_index": 410 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ], + "arguments": [ + { + "id": 418, + "node_type": 16, + "src": { + "id": 419, + "line": 100, + "column": 37, + "start": 4047, + "end": 4052, + "length": 6, + "parent_index": 414 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 418, + "is_pure": false + }, + { + "id": 420, + "node_type": 16, + "src": { + "id": 421, + "line": 100, + "column": 45, + "start": 4055, + "end": 4058, + "length": 4, + "parent_index": 414 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 420, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 422, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 423, + "line": 100, + "column": 51, + "start": 4061, + "end": 4061, + "length": 1, + "parent_index": 414 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + { + "id": 424, + "node_type": 16, + "src": { + "id": 425, + "line": 100, + "column": 54, + "start": 4064, + "end": 4075, + "length": 12, + "parent_index": 414 + }, + "name": "errorMessage", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 424, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ] + } + ], + "expression": { + "id": 416, + "node_type": 16, + "src": { + "id": 417, + "line": 100, + "column": 15, + "start": 4025, + "end": 4045, + "length": 21, + "parent_index": 414 + }, + "name": "functionCallWithValue", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_rational_0_by_1$_t_string$", + "type_string": "function(address,bytes,int_const 0,string)" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 390, + "node_type": 43, + "src": { + "id": 391, + "line": 96, + "column": 8, + "start": 3892, + "end": 3968, + "length": 77, + "parent_index": 388 + }, + "parameters": [ + { + "id": 392, + "node_type": 44, + "src": { + "id": 393, + "line": 96, + "column": 8, + "start": 3892, + "end": 3905, + "length": 14, + "parent_index": 390 + }, + "scope": 388, + "name": "target", + "type_name": { + "id": 394, + "node_type": 30, + "src": { + "id": 395, + "line": 96, + "column": 8, + "start": 3892, + "end": 3898, + "length": 7, + "parent_index": 392 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 396, + "node_type": 44, + "src": { + "id": 397, + "line": 97, + "column": 8, + "start": 3916, + "end": 3932, + "length": 17, + "parent_index": 390 + }, + "scope": 388, + "name": "data", + "type_name": { + "id": 398, + "node_type": 30, + "src": { + "id": 399, + "line": 97, + "column": 8, + "start": 3916, + "end": 3920, + "length": 5, + "parent_index": 396 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 400, + "node_type": 44, + "src": { + "id": 401, + "line": 98, + "column": 8, + "start": 3943, + "end": 3968, + "length": 26, + "parent_index": 390 + }, + "scope": 388, + "name": "errorMessage", + "type_name": { + "id": 402, + "node_type": 30, + "src": { + "id": 403, + "line": 98, + "column": 8, + "start": 3943, + "end": 3948, + "length": 6, + "parent_index": 400 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 404, + "node_type": 43, + "src": { + "id": 405, + "line": 99, + "column": 24, + "start": 3994, + "end": 4005, + "length": 12, + "parent_index": 388 + }, + "parameters": [ + { + "id": 406, + "node_type": 44, + "src": { + "id": 407, + "line": 99, + "column": 24, + "start": 3994, + "end": 4005, + "length": 12, + "parent_index": 404 + }, + "scope": 388, + "name": "", + "type_name": { + "id": 408, + "node_type": 30, + "src": { + "id": 409, + "line": 99, + "column": 24, + "start": 3994, + "end": 3998, + "length": 5, + "parent_index": 406 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 268, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_string$", + "type_string": "function(address,bytes,string)" + } + }, + { + "id": 427, + "name": "functionCallWithValue", + "node_type": 42, + "kind": 41, + "src": { + "id": 428, + "line": 114, + "column": 4, + "start": 4446, + "end": 4699, + "length": 254, + "parent_index": 268 + }, + "body": { + "id": 449, + "node_type": 46, + "kind": 0, + "src": { + "id": 450, + "line": 118, + "column": 38, + "start": 4589, + "end": 4699, + "length": 111, + "parent_index": 427 + }, + "implemented": true, + "statements": [ + { + "id": 451, + "node_type": 47, + "src": { + "id": 452, + "line": 119, + "column": 8, + "start": 4599, + "end": 4693, + "length": 95, + "parent_index": 427 + }, + "function_return_parameters": 427, + "expression": { + "id": 453, + "node_type": 24, + "kind": 24, + "src": { + "id": 454, + "line": 119, + "column": 15, + "start": 4606, + "end": 4692, + "length": 87, + "parent_index": 449 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: low-level call with value failed\"" + } + ], + "arguments": [ + { + "id": 457, + "node_type": 16, + "src": { + "id": 458, + "line": 119, + "column": 37, + "start": 4628, + "end": 4633, + "length": 6, + "parent_index": 453 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 457, + "is_pure": false + }, + { + "id": 459, + "node_type": 16, + "src": { + "id": 460, + "line": 119, + "column": 45, + "start": 4636, + "end": 4639, + "length": 4, + "parent_index": 453 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 459, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 461, + "node_type": 16, + "src": { + "id": 462, + "line": 119, + "column": 51, + "start": 4642, + "end": 4646, + "length": 5, + "parent_index": 453 + }, + "name": "value", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 461, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + { + "id": 463, + "node_type": 17, + "kind": 50, + "value": "Address: low-level call with value failed", + "hex_value": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", + "src": { + "id": 464, + "line": 119, + "column": 58, + "start": 4649, + "end": 4691, + "length": 43, + "parent_index": 453 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: low-level call with value failed\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + } + ], + "expression": { + "id": 455, + "node_type": 16, + "src": { + "id": 456, + "line": 119, + "column": 15, + "start": 4606, + "end": 4626, + "length": 21, + "parent_index": 453 + }, + "name": "functionCallWithValue", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_uint256$_t_string_literal$", + "type_string": "function(address,bytes,uint256,string memory)" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 429, + "node_type": 43, + "src": { + "id": 430, + "line": 115, + "column": 8, + "start": 4486, + "end": 4549, + "length": 64, + "parent_index": 427 + }, + "parameters": [ + { + "id": 431, + "node_type": 44, + "src": { + "id": 432, + "line": 115, + "column": 8, + "start": 4486, + "end": 4499, + "length": 14, + "parent_index": 429 + }, + "scope": 427, + "name": "target", + "type_name": { + "id": 433, + "node_type": 30, + "src": { + "id": 434, + "line": 115, + "column": 8, + "start": 4486, + "end": 4492, + "length": 7, + "parent_index": 431 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 435, + "node_type": 44, + "src": { + "id": 436, + "line": 116, + "column": 8, + "start": 4510, + "end": 4526, + "length": 17, + "parent_index": 429 + }, + "scope": 427, + "name": "data", + "type_name": { + "id": 437, + "node_type": 30, + "src": { + "id": 438, + "line": 116, + "column": 8, + "start": 4510, + "end": 4514, + "length": 5, + "parent_index": 435 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 439, + "node_type": 44, + "src": { + "id": 440, + "line": 117, + "column": 8, + "start": 4537, + "end": 4549, + "length": 13, + "parent_index": 429 + }, + "scope": 427, + "name": "value", + "type_name": { + "id": 441, + "node_type": 30, + "src": { + "id": 442, + "line": 117, + "column": 8, + "start": 4537, + "end": 4543, + "length": 7, + "parent_index": 439 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 443, + "node_type": 43, + "src": { + "id": 444, + "line": 118, + "column": 24, + "start": 4575, + "end": 4586, + "length": 12, + "parent_index": 427 + }, + "parameters": [ + { + "id": 445, + "node_type": 44, + "src": { + "id": 446, + "line": 118, + "column": 24, + "start": 4575, + "end": 4586, + "length": 12, + "parent_index": 443 + }, + "scope": 427, + "name": "", + "type_name": { + "id": 447, + "node_type": 30, + "src": { + "id": 448, + "line": 118, + "column": 24, + "start": 4575, + "end": 4579, + "length": 5, + "parent_index": 445 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 268, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_uint256$", + "type_string": "function(address,bytes,uint256)" + } + }, + { + "id": 466, + "name": "functionCallWithValue", + "node_type": 42, + "kind": 41, + "src": { + "id": 467, + "line": 128, + "column": 4, + "start": 4948, + "end": 5446, + "length": 499, + "parent_index": 268 + }, + "body": { + "id": 492, + "node_type": 46, + "kind": 0, + "src": { + "id": 493, + "line": 133, + "column": 38, + "start": 5127, + "end": 5446, + "length": 320, + "parent_index": 466 + }, + "implemented": true, + "statements": [ + { + "id": 494, + "node_type": 24, + "kind": 24, + "src": { + "id": 495, + "line": 134, + "column": 8, + "start": 5137, + "end": 5217, + "length": 81, + "parent_index": 492 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: insufficient balance for call\"" + } + ], + "arguments": [ + { + "id": 498, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 499, + "line": 134, + "column": 16, + "start": 5145, + "end": 5174, + "length": 30, + "parent_index": 494 + }, + "operator": 8, + "left_expression": { + "id": 500, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 501, + "line": 134, + "column": 16, + "start": 5145, + "end": 5165, + "length": 21, + "parent_index": 498 + }, + "expression": { + "id": 502, + "node_type": 24, + "kind": 24, + "src": { + "id": 503, + "line": 134, + "column": 16, + "start": 5145, + "end": 5157, + "length": 13, + "parent_index": 500 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_Address_$264", + "type_string": "contract Address" + } + ], + "arguments": [ + { + "id": 508, + "node_type": 16, + "src": { + "id": 509, + "line": 134, + "column": 24, + "start": 5153, + "end": 5156, + "length": 4, + "parent_index": 502 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_Address_$264", + "type_string": "contract Address" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 504, + "node_type": 16, + "src": { + "id": 505, + "line": 134, + "column": 16, + "start": 5145, + "end": 5151, + "length": 7, + "parent_index": 502 + }, + "name": "address", + "type_name": { + "id": 506, + "node_type": 30, + "src": { + "id": 507, + "line": 134, + "column": 16, + "start": 5145, + "end": 5151, + "length": 7, + "parent_index": 504 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "member_name": "balance", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "right_expression": { + "id": 510, + "node_type": 16, + "src": { + "id": 511, + "line": 134, + "column": 41, + "start": 5170, + "end": 5174, + "length": 5, + "parent_index": 498 + }, + "name": "value", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 510, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 512, + "node_type": 17, + "kind": 50, + "value": "Address: insufficient balance for call", + "hex_value": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", + "src": { + "id": 513, + "line": 134, + "column": 48, + "start": 5177, + "end": 5216, + "length": 40, + "parent_index": 494 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: insufficient balance for call\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 496, + "node_type": 16, + "src": { + "id": 497, + "line": 134, + "column": 8, + "start": 5137, + "end": 5143, + "length": 7, + "parent_index": 494 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 514, + "node_type": 24, + "kind": 24, + "src": { + "id": 515, + "line": 135, + "column": 8, + "start": 5228, + "end": 5287, + "length": 60, + "parent_index": 492 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: call to non-contract\"" + } + ], + "arguments": [ + { + "id": 518, + "node_type": 24, + "kind": 24, + "src": { + "id": 519, + "line": 135, + "column": 16, + "start": 5236, + "end": 5253, + "length": 18, + "parent_index": 514 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 522, + "node_type": 16, + "src": { + "id": 523, + "line": 135, + "column": 27, + "start": 5247, + "end": 5252, + "length": 6, + "parent_index": 518 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 522, + "is_pure": false + } + ], + "expression": { + "id": 520, + "node_type": 16, + "src": { + "id": 521, + "line": 135, + "column": 16, + "start": 5236, + "end": 5245, + "length": 10, + "parent_index": 518 + }, + "name": "isContract", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 524, + "node_type": 17, + "kind": 50, + "value": "Address: call to non-contract", + "hex_value": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", + "src": { + "id": 525, + "line": 135, + "column": 36, + "start": 5256, + "end": 5286, + "length": 31, + "parent_index": 514 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: call to non-contract\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ] + } + ], + "expression": { + "id": 516, + "node_type": 16, + "src": { + "id": 517, + "line": 135, + "column": 8, + "start": 5228, + "end": 5234, + "length": 7, + "parent_index": 514 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "type_string": "function(function(address),string memory)" + } + }, + { + "id": 526, + "node_type": 44, + "src": { + "id": 527, + "line": 137, + "column": 8, + "start": 5299, + "end": 5372, + "length": 74, + "parent_index": 492 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 528, + "node_type": 24, + "kind": 24, + "src": { + "id": 529, + "line": 137, + "column": 50, + "start": 5341, + "end": 5371, + "length": 31, + "parent_index": 526 + }, + "argument_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ], + "arguments": [ + { + "id": 536, + "node_type": 16, + "src": { + "id": 537, + "line": 137, + "column": 76, + "start": 5367, + "end": 5370, + "length": 4, + "parent_index": 528 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 536, + "is_pure": false + } + ], + "expression": { + "id": 530, + "node_type": 93, + "kind": 93, + "src": { + "id": 531, + "line": 137, + "column": 50, + "start": 5341, + "end": 5365, + "length": 25, + "parent_index": 528 + }, + "expression": { + "id": 532, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 533, + "line": 137, + "column": 50, + "start": 5341, + "end": 5351, + "length": 11, + "parent_index": 530 + }, + "expression": { + "id": 534, + "node_type": 16, + "src": { + "id": 535, + "line": 137, + "column": 50, + "start": 5341, + "end": 5346, + "length": 6, + "parent_index": 532 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 534, + "is_pure": false + }, + "member_name": "call", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + } + } + }, + { + "id": 538, + "node_type": 47, + "src": { + "id": 539, + "line": 138, + "column": 8, + "start": 5382, + "end": 5440, + "length": 59, + "parent_index": 466 + }, + "function_return_parameters": 466, + "expression": { + "id": 540, + "node_type": 24, + "kind": 24, + "src": { + "id": 541, + "line": 138, + "column": 15, + "start": 5389, + "end": 5439, + "length": 51, + "parent_index": 492 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ], + "arguments": [ + { + "id": 544, + "node_type": 16, + "src": { + "id": 545, + "line": 138, + "column": 32, + "start": 5406, + "end": 5412, + "length": 7, + "parent_index": 540 + }, + "name": "success", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 546, + "node_type": 16, + "src": { + "id": 547, + "line": 138, + "column": 41, + "start": 5415, + "end": 5424, + "length": 10, + "parent_index": 540 + }, + "name": "returndata", + "type_description": { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + }, + { + "id": 548, + "node_type": 16, + "src": { + "id": 549, + "line": 138, + "column": 53, + "start": 5427, + "end": 5438, + "length": 12, + "parent_index": 540 + }, + "name": "errorMessage", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 548, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + } + ] + } + ], + "expression": { + "id": 542, + "node_type": 16, + "src": { + "id": 543, + "line": 138, + "column": 15, + "start": 5389, + "end": 5404, + "length": 16, + "parent_index": 540 + }, + "name": "verifyCallResult", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "type_string": "function(function(),function(function()),string)" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 468, + "node_type": 43, + "src": { + "id": 469, + "line": 129, + "column": 8, + "start": 4988, + "end": 5087, + "length": 100, + "parent_index": 466 + }, + "parameters": [ + { + "id": 470, + "node_type": 44, + "src": { + "id": 471, + "line": 129, + "column": 8, + "start": 4988, + "end": 5001, + "length": 14, + "parent_index": 468 + }, + "scope": 466, + "name": "target", + "type_name": { + "id": 472, + "node_type": 30, + "src": { + "id": 473, + "line": 129, + "column": 8, + "start": 4988, + "end": 4994, + "length": 7, + "parent_index": 470 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 474, + "node_type": 44, + "src": { + "id": 475, + "line": 130, + "column": 8, + "start": 5012, + "end": 5028, + "length": 17, + "parent_index": 468 + }, + "scope": 466, + "name": "data", + "type_name": { + "id": 476, + "node_type": 30, + "src": { + "id": 477, + "line": 130, + "column": 8, + "start": 5012, + "end": 5016, + "length": 5, + "parent_index": 474 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 478, + "node_type": 44, + "src": { + "id": 479, + "line": 131, + "column": 8, + "start": 5039, + "end": 5051, + "length": 13, + "parent_index": 468 + }, + "scope": 466, + "name": "value", + "type_name": { + "id": 480, + "node_type": 30, + "src": { + "id": 481, + "line": 131, + "column": 8, + "start": 5039, + "end": 5045, + "length": 7, + "parent_index": 478 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 482, + "node_type": 44, + "src": { + "id": 483, + "line": 132, + "column": 8, + "start": 5062, + "end": 5087, + "length": 26, + "parent_index": 468 + }, + "scope": 466, + "name": "errorMessage", + "type_name": { + "id": 484, + "node_type": 30, + "src": { + "id": 485, + "line": 132, + "column": 8, + "start": 5062, + "end": 5067, + "length": 6, + "parent_index": 482 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 486, + "node_type": 43, + "src": { + "id": 487, + "line": 133, + "column": 24, + "start": 5113, + "end": 5124, + "length": 12, + "parent_index": 466 + }, + "parameters": [ + { + "id": 488, + "node_type": 44, + "src": { + "id": 489, + "line": 133, + "column": 24, + "start": 5113, + "end": 5124, + "length": 12, + "parent_index": 486 + }, + "scope": 466, + "name": "", + "type_name": { + "id": 490, + "node_type": 30, + "src": { + "id": 491, + "line": 133, + "column": 24, + "start": 5113, + "end": 5117, + "length": 5, + "parent_index": 488 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 268, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_uint256$_t_string$", + "type_string": "function(address,bytes,uint256,string)" + } + }, + { + "id": 551, + "name": "functionStaticCall", + "node_type": 42, + "kind": 41, + "src": { + "id": 552, + "line": 147, + "column": 4, + "start": 5624, + "end": 5820, + "length": 197, + "parent_index": 268 + }, + "body": { + "id": 569, + "node_type": 46, + "kind": 0, + "src": { + "id": 570, + "line": 147, + "column": 104, + "start": 5724, + "end": 5820, + "length": 97, + "parent_index": 551 + }, + "implemented": true, + "statements": [ + { + "id": 571, + "node_type": 47, + "src": { + "id": 572, + "line": 148, + "column": 8, + "start": 5734, + "end": 5814, + "length": 81, + "parent_index": 551 + }, + "function_return_parameters": 551, + "expression": { + "id": 573, + "node_type": 24, + "kind": 24, + "src": { + "id": 574, + "line": 148, + "column": 15, + "start": 5741, + "end": 5813, + "length": 73, + "parent_index": 569 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: low-level static call failed\"" + } + ], + "arguments": [ + { + "id": 577, + "node_type": 16, + "src": { + "id": 578, + "line": 148, + "column": 34, + "start": 5760, + "end": 5765, + "length": 6, + "parent_index": 573 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 577, + "is_pure": false + }, + { + "id": 579, + "node_type": 16, + "src": { + "id": 580, + "line": 148, + "column": 42, + "start": 5768, + "end": 5771, + "length": 4, + "parent_index": 573 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 579, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 581, + "node_type": 17, + "kind": 50, + "value": "Address: low-level static call failed", + "hex_value": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", + "src": { + "id": 582, + "line": 148, + "column": 48, + "start": 5774, + "end": 5812, + "length": 39, + "parent_index": 573 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: low-level static call failed\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + } + ], + "expression": { + "id": 575, + "node_type": 16, + "src": { + "id": 576, + "line": 148, + "column": 15, + "start": 5741, + "end": 5758, + "length": 18, + "parent_index": 573 + }, + "name": "functionStaticCall", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "type_string": "function(address,bytes,string memory)" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 553, + "node_type": 43, + "src": { + "id": 554, + "line": 147, + "column": 32, + "start": 5652, + "end": 5684, + "length": 33, + "parent_index": 551 + }, + "parameters": [ + { + "id": 555, + "node_type": 44, + "src": { + "id": 556, + "line": 147, + "column": 32, + "start": 5652, + "end": 5665, + "length": 14, + "parent_index": 553 + }, + "scope": 551, + "name": "target", + "type_name": { + "id": 557, + "node_type": 30, + "src": { + "id": 558, + "line": 147, + "column": 32, + "start": 5652, + "end": 5658, + "length": 7, + "parent_index": 555 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 559, + "node_type": 44, + "src": { + "id": 560, + "line": 147, + "column": 48, + "start": 5668, + "end": 5684, + "length": 17, + "parent_index": 553 + }, + "scope": 551, + "name": "data", + "type_name": { + "id": 561, + "node_type": 30, + "src": { + "id": 562, + "line": 147, + "column": 48, + "start": 5668, + "end": 5672, + "length": 5, + "parent_index": 559 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 563, + "node_type": 43, + "src": { + "id": 564, + "line": 147, + "column": 90, + "start": 5710, + "end": 5721, + "length": 12, + "parent_index": 551 + }, + "parameters": [ + { + "id": 565, + "node_type": 44, + "src": { + "id": 566, + "line": 147, + "column": 90, + "start": 5710, + "end": 5721, + "length": 12, + "parent_index": 563 + }, + "scope": 551, + "name": "", + "type_name": { + "id": 567, + "node_type": 30, + "src": { + "id": 568, + "line": 147, + "column": 90, + "start": 5710, + "end": 5714, + "length": 5, + "parent_index": 565 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 268, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$", + "type_string": "function(address,bytes)" + } + }, + { + "id": 584, + "name": "functionStaticCall", + "node_type": 42, + "kind": 41, + "src": { + "id": 585, + "line": 157, + "column": 4, + "start": 6005, + "end": 6390, + "length": 386, + "parent_index": 268 + }, + "body": { + "id": 606, + "node_type": 46, + "kind": 0, + "src": { + "id": 607, + "line": 161, + "column": 43, + "start": 6163, + "end": 6390, + "length": 228, + "parent_index": 584 + }, + "implemented": true, + "statements": [ + { + "id": 608, + "node_type": 24, + "kind": 24, + "src": { + "id": 609, + "line": 162, + "column": 8, + "start": 6173, + "end": 6239, + "length": 67, + "parent_index": 606 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: static call to non-contract\"" + } + ], + "arguments": [ + { + "id": 612, + "node_type": 24, + "kind": 24, + "src": { + "id": 613, + "line": 162, + "column": 16, + "start": 6181, + "end": 6198, + "length": 18, + "parent_index": 608 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 616, + "node_type": 16, + "src": { + "id": 617, + "line": 162, + "column": 27, + "start": 6192, + "end": 6197, + "length": 6, + "parent_index": 612 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 616, + "is_pure": false + } + ], + "expression": { + "id": 614, + "node_type": 16, + "src": { + "id": 615, + "line": 162, + "column": 16, + "start": 6181, + "end": 6190, + "length": 10, + "parent_index": 612 + }, + "name": "isContract", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 618, + "node_type": 17, + "kind": 50, + "value": "Address: static call to non-contract", + "hex_value": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374", + "src": { + "id": 619, + "line": 162, + "column": 36, + "start": 6201, + "end": 6238, + "length": 38, + "parent_index": 608 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: static call to non-contract\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ] + } + ], + "expression": { + "id": 610, + "node_type": 16, + "src": { + "id": 611, + "line": 162, + "column": 8, + "start": 6173, + "end": 6179, + "length": 7, + "parent_index": 608 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "type_string": "function(function(address),string memory)" + } + }, + { + "id": 620, + "node_type": 44, + "src": { + "id": 621, + "line": 164, + "column": 8, + "start": 6251, + "end": 6316, + "length": 66, + "parent_index": 606 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 622, + "node_type": 24, + "kind": 24, + "src": { + "id": 623, + "line": 164, + "column": 50, + "start": 6293, + "end": 6315, + "length": 23, + "parent_index": 620 + }, + "argument_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ], + "arguments": [ + { + "id": 628, + "node_type": 16, + "src": { + "id": 629, + "line": 164, + "column": 68, + "start": 6311, + "end": 6314, + "length": 4, + "parent_index": 622 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 628, + "is_pure": false + } + ], + "expression": { + "id": 624, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 625, + "line": 164, + "column": 50, + "start": 6293, + "end": 6309, + "length": 17, + "parent_index": 622 + }, + "expression": { + "id": 626, + "node_type": 16, + "src": { + "id": 627, + "line": 164, + "column": 50, + "start": 6293, + "end": 6298, + "length": 6, + "parent_index": 624 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 626, + "is_pure": false + }, + "member_name": "staticcall", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + } + } + }, + { + "id": 630, + "node_type": 47, + "src": { + "id": 631, + "line": 165, + "column": 8, + "start": 6326, + "end": 6384, + "length": 59, + "parent_index": 584 + }, + "function_return_parameters": 584, + "expression": { + "id": 632, + "node_type": 24, + "kind": 24, + "src": { + "id": 633, + "line": 165, + "column": 15, + "start": 6333, + "end": 6383, + "length": 51, + "parent_index": 606 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ], + "arguments": [ + { + "id": 636, + "node_type": 16, + "src": { + "id": 637, + "line": 165, + "column": 32, + "start": 6350, + "end": 6356, + "length": 7, + "parent_index": 632 + }, + "name": "success", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 638, + "node_type": 16, + "src": { + "id": 639, + "line": 165, + "column": 41, + "start": 6359, + "end": 6368, + "length": 10, + "parent_index": 632 + }, + "name": "returndata", + "type_description": { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + }, + { + "id": 640, + "node_type": 16, + "src": { + "id": 641, + "line": 165, + "column": 53, + "start": 6371, + "end": 6382, + "length": 12, + "parent_index": 632 + }, + "name": "errorMessage", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 640, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + } + ] + } + ], + "expression": { + "id": 634, + "node_type": 16, + "src": { + "id": 635, + "line": 165, + "column": 15, + "start": 6333, + "end": 6348, + "length": 16, + "parent_index": 632 + }, + "name": "verifyCallResult", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "type_string": "function(function(),function(function()),string)" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 586, + "node_type": 43, + "src": { + "id": 587, + "line": 158, + "column": 8, + "start": 6042, + "end": 6118, + "length": 77, + "parent_index": 584 + }, + "parameters": [ + { + "id": 588, + "node_type": 44, + "src": { + "id": 589, + "line": 158, + "column": 8, + "start": 6042, + "end": 6055, + "length": 14, + "parent_index": 586 + }, + "scope": 584, + "name": "target", + "type_name": { + "id": 590, + "node_type": 30, + "src": { + "id": 591, + "line": 158, + "column": 8, + "start": 6042, + "end": 6048, + "length": 7, + "parent_index": 588 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 592, + "node_type": 44, + "src": { + "id": 593, + "line": 159, + "column": 8, + "start": 6066, + "end": 6082, + "length": 17, + "parent_index": 586 + }, + "scope": 584, + "name": "data", + "type_name": { + "id": 594, + "node_type": 30, + "src": { + "id": 595, + "line": 159, + "column": 8, + "start": 6066, + "end": 6070, + "length": 5, + "parent_index": 592 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 596, + "node_type": 44, + "src": { + "id": 597, + "line": 160, + "column": 8, + "start": 6093, + "end": 6118, + "length": 26, + "parent_index": 586 + }, + "scope": 584, + "name": "errorMessage", + "type_name": { + "id": 598, + "node_type": 30, + "src": { + "id": 599, + "line": 160, + "column": 8, + "start": 6093, + "end": 6098, + "length": 6, + "parent_index": 596 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 600, + "node_type": 43, + "src": { + "id": 601, + "line": 161, + "column": 29, + "start": 6149, + "end": 6160, + "length": 12, + "parent_index": 584 + }, + "parameters": [ + { + "id": 602, + "node_type": 44, + "src": { + "id": 603, + "line": 161, + "column": 29, + "start": 6149, + "end": 6160, + "length": 12, + "parent_index": 600 + }, + "scope": 584, + "name": "", + "type_name": { + "id": 604, + "node_type": 30, + "src": { + "id": 605, + "line": 161, + "column": 29, + "start": 6149, + "end": 6153, + "length": 5, + "parent_index": 602 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 268, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_string$", + "type_string": "function(address,bytes,string)" + } + }, + { + "id": 643, + "name": "functionDelegateCall", + "node_type": 42, + "kind": 41, + "src": { + "id": 644, + "line": 174, + "column": 4, + "start": 6570, + "end": 6767, + "length": 198, + "parent_index": 268 + }, + "body": { + "id": 661, + "node_type": 46, + "kind": 0, + "src": { + "id": 662, + "line": 174, + "column": 101, + "start": 6667, + "end": 6767, + "length": 101, + "parent_index": 643 + }, + "implemented": true, + "statements": [ + { + "id": 663, + "node_type": 47, + "src": { + "id": 664, + "line": 175, + "column": 8, + "start": 6677, + "end": 6761, + "length": 85, + "parent_index": 643 + }, + "function_return_parameters": 643, + "expression": { + "id": 665, + "node_type": 24, + "kind": 24, + "src": { + "id": 666, + "line": 175, + "column": 15, + "start": 6684, + "end": 6760, + "length": 77, + "parent_index": 661 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: low-level delegate call failed\"" + } + ], + "arguments": [ + { + "id": 669, + "node_type": 16, + "src": { + "id": 670, + "line": 175, + "column": 36, + "start": 6705, + "end": 6710, + "length": 6, + "parent_index": 665 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 669, + "is_pure": false + }, + { + "id": 671, + "node_type": 16, + "src": { + "id": 672, + "line": 175, + "column": 44, + "start": 6713, + "end": 6716, + "length": 4, + "parent_index": 665 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 671, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 673, + "node_type": 17, + "kind": 50, + "value": "Address: low-level delegate call failed", + "hex_value": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", + "src": { + "id": 674, + "line": 175, + "column": 50, + "start": 6719, + "end": 6759, + "length": 41, + "parent_index": 665 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: low-level delegate call failed\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + } + ], + "expression": { + "id": 667, + "node_type": 16, + "src": { + "id": 668, + "line": 175, + "column": 15, + "start": 6684, + "end": 6703, + "length": 20, + "parent_index": 665 + }, + "name": "functionDelegateCall", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "type_string": "function(address,bytes,string memory)" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 645, + "node_type": 43, + "src": { + "id": 646, + "line": 174, + "column": 34, + "start": 6600, + "end": 6632, + "length": 33, + "parent_index": 643 + }, + "parameters": [ + { + "id": 647, + "node_type": 44, + "src": { + "id": 648, + "line": 174, + "column": 34, + "start": 6600, + "end": 6613, + "length": 14, + "parent_index": 645 + }, + "scope": 643, + "name": "target", + "type_name": { + "id": 649, + "node_type": 30, + "src": { + "id": 650, + "line": 174, + "column": 34, + "start": 6600, + "end": 6606, + "length": 7, + "parent_index": 647 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 651, + "node_type": 44, + "src": { + "id": 652, + "line": 174, + "column": 50, + "start": 6616, + "end": 6632, + "length": 17, + "parent_index": 645 + }, + "scope": 643, + "name": "data", + "type_name": { + "id": 653, + "node_type": 30, + "src": { + "id": 654, + "line": 174, + "column": 50, + "start": 6616, + "end": 6620, + "length": 5, + "parent_index": 651 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 655, + "node_type": 43, + "src": { + "id": 656, + "line": 174, + "column": 87, + "start": 6653, + "end": 6664, + "length": 12, + "parent_index": 643 + }, + "parameters": [ + { + "id": 657, + "node_type": 44, + "src": { + "id": 658, + "line": 174, + "column": 87, + "start": 6653, + "end": 6664, + "length": 12, + "parent_index": 655 + }, + "scope": 643, + "name": "", + "type_name": { + "id": 659, + "node_type": 30, + "src": { + "id": 660, + "line": 174, + "column": 87, + "start": 6653, + "end": 6657, + "length": 5, + "parent_index": 657 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 268, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$", + "type_string": "function(address,bytes)" + } + }, + { + "id": 676, + "name": "functionDelegateCall", + "node_type": 42, + "kind": 41, + "src": { + "id": 677, + "line": 184, + "column": 4, + "start": 6954, + "end": 7340, + "length": 387, + "parent_index": 268 + }, + "body": { + "id": 698, + "node_type": 46, + "kind": 0, + "src": { + "id": 699, + "line": 188, + "column": 38, + "start": 7109, + "end": 7340, + "length": 232, + "parent_index": 676 + }, + "implemented": true, + "statements": [ + { + "id": 700, + "node_type": 24, + "kind": 24, + "src": { + "id": 701, + "line": 189, + "column": 8, + "start": 7119, + "end": 7187, + "length": 69, + "parent_index": 698 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: delegate call to non-contract\"" + } + ], + "arguments": [ + { + "id": 704, + "node_type": 24, + "kind": 24, + "src": { + "id": 705, + "line": 189, + "column": 16, + "start": 7127, + "end": 7144, + "length": 18, + "parent_index": 700 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 708, + "node_type": 16, + "src": { + "id": 709, + "line": 189, + "column": 27, + "start": 7138, + "end": 7143, + "length": 6, + "parent_index": 704 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 708, + "is_pure": false + } + ], + "expression": { + "id": 706, + "node_type": 16, + "src": { + "id": 707, + "line": 189, + "column": 16, + "start": 7127, + "end": 7136, + "length": 10, + "parent_index": 704 + }, + "name": "isContract", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 710, + "node_type": 17, + "kind": 50, + "value": "Address: delegate call to non-contract", + "hex_value": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374", + "src": { + "id": 711, + "line": 189, + "column": 36, + "start": 7147, + "end": 7186, + "length": 40, + "parent_index": 700 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"Address: delegate call to non-contract\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ] + } + ], + "expression": { + "id": 702, + "node_type": 16, + "src": { + "id": 703, + "line": 189, + "column": 8, + "start": 7119, + "end": 7125, + "length": 7, + "parent_index": 700 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "type_string": "function(function(address),string memory)" + } + }, + { + "id": 712, + "node_type": 44, + "src": { + "id": 713, + "line": 191, + "column": 8, + "start": 7199, + "end": 7266, + "length": 68, + "parent_index": 698 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 714, + "node_type": 24, + "kind": 24, + "src": { + "id": 715, + "line": 191, + "column": 50, + "start": 7241, + "end": 7265, + "length": 25, + "parent_index": 712 + }, + "argument_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ], + "arguments": [ + { + "id": 720, + "node_type": 16, + "src": { + "id": 721, + "line": 191, + "column": 70, + "start": 7261, + "end": 7264, + "length": 4, + "parent_index": 714 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 720, + "is_pure": false + } + ], + "expression": { + "id": 716, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 717, + "line": 191, + "column": 50, + "start": 7241, + "end": 7259, + "length": 19, + "parent_index": 714 + }, + "expression": { + "id": 718, + "node_type": 16, + "src": { + "id": 719, + "line": 191, + "column": 50, + "start": 7241, + "end": 7246, + "length": 6, + "parent_index": 716 + }, + "name": "target", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 718, + "is_pure": false + }, + "member_name": "delegatecall", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + } + } + }, + { + "id": 722, + "node_type": 47, + "src": { + "id": 723, + "line": 192, + "column": 8, + "start": 7276, + "end": 7334, + "length": 59, + "parent_index": 676 + }, + "function_return_parameters": 676, + "expression": { + "id": 724, + "node_type": 24, + "kind": 24, + "src": { + "id": 725, + "line": 192, + "column": 15, + "start": 7283, + "end": 7333, + "length": 51, + "parent_index": 698 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ], + "arguments": [ + { + "id": 728, + "node_type": 16, + "src": { + "id": 729, + "line": 192, + "column": 32, + "start": 7300, + "end": 7306, + "length": 7, + "parent_index": 724 + }, + "name": "success", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 730, + "node_type": 16, + "src": { + "id": 731, + "line": 192, + "column": 41, + "start": 7309, + "end": 7318, + "length": 10, + "parent_index": 724 + }, + "name": "returndata", + "type_description": { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + }, + { + "id": 732, + "node_type": 16, + "src": { + "id": 733, + "line": 192, + "column": 53, + "start": 7321, + "end": 7332, + "length": 12, + "parent_index": 724 + }, + "name": "errorMessage", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "overloaded_declarations": [], + "referenced_declaration": 732, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + } + ] + } + ], + "expression": { + "id": 726, + "node_type": 16, + "src": { + "id": 727, + "line": 192, + "column": 15, + "start": 7283, + "end": 7298, + "length": 16, + "parent_index": 724 + }, + "name": "verifyCallResult", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "type_string": "function(function(),function(function()),string)" + } + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 678, + "node_type": 43, + "src": { + "id": 679, + "line": 185, + "column": 8, + "start": 6993, + "end": 7069, + "length": 77, + "parent_index": 676 + }, + "parameters": [ + { + "id": 680, + "node_type": 44, + "src": { + "id": 681, + "line": 185, + "column": 8, + "start": 6993, + "end": 7006, + "length": 14, + "parent_index": 678 + }, + "scope": 676, + "name": "target", + "type_name": { + "id": 682, + "node_type": 30, + "src": { + "id": 683, + "line": 185, + "column": 8, + "start": 6993, + "end": 6999, + "length": 7, + "parent_index": 680 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 684, + "node_type": 44, + "src": { + "id": 685, + "line": 186, + "column": 8, + "start": 7017, + "end": 7033, + "length": 17, + "parent_index": 678 + }, + "scope": 676, + "name": "data", + "type_name": { + "id": 686, + "node_type": 30, + "src": { + "id": 687, + "line": 186, + "column": 8, + "start": 7017, + "end": 7021, + "length": 5, + "parent_index": 684 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 688, + "node_type": 44, + "src": { + "id": 689, + "line": 187, + "column": 8, + "start": 7044, + "end": 7069, + "length": 26, + "parent_index": 678 + }, + "scope": 676, + "name": "errorMessage", + "type_name": { + "id": 690, + "node_type": 30, + "src": { + "id": 691, + "line": 187, + "column": 8, + "start": 7044, + "end": 7049, + "length": 6, + "parent_index": 688 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 692, + "node_type": 43, + "src": { + "id": 693, + "line": 188, + "column": 24, + "start": 7095, + "end": 7106, + "length": 12, + "parent_index": 676 + }, + "parameters": [ + { + "id": 694, + "node_type": 44, + "src": { + "id": 695, + "line": 188, + "column": 24, + "start": 7095, + "end": 7106, + "length": 12, + "parent_index": 692 + }, + "scope": 676, + "name": "", + "type_name": { + "id": 696, + "node_type": 30, + "src": { + "id": 697, + "line": 188, + "column": 24, + "start": 7095, + "end": 7099, + "length": 5, + "parent_index": 694 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 268, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_bytes$_t_string$", + "type_string": "function(address,bytes,string)" + } + }, + { + "id": 735, + "name": "verifyCallResult", + "node_type": 42, + "kind": 41, + "src": { + "id": 736, + "line": 201, + "column": 4, + "start": 7561, + "end": 8252, + "length": 692, + "parent_index": 268 + }, + "body": { + "id": 757, + "node_type": 46, + "kind": 0, + "src": { + "id": 758, + "line": 205, + "column": 43, + "start": 7721, + "end": 8252, + "length": 532, + "parent_index": 735 + }, + "implemented": true, + "statements": [ + { + "id": 759, + "node_type": 48, + "src": { + "id": 760, + "line": 206, + "column": 0, + "start": 7731, + "end": 8246, + "length": 516, + "parent_index": 757 + }, + "condition": { + "id": 761, + "node_type": 16, + "src": { + "id": 762, + "line": 206, + "column": 12, + "start": 7735, + "end": 7741, + "length": 7, + "parent_index": 759 + }, + "name": "success", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 761, + "is_pure": false + }, + "body": { + "id": 763, + "node_type": 46, + "kind": 0, + "src": { + "id": 764, + "line": 206, + "column": 21, + "start": 7744, + "end": 7785, + "length": 42, + "parent_index": 735 + }, + "implemented": true, + "statements": [ + { + "id": 765, + "node_type": 47, + "src": { + "id": 766, + "line": 207, + "column": 12, + "start": 7758, + "end": 7775, + "length": 18, + "parent_index": 735 + }, + "function_return_parameters": 735, + "expression": { + "id": 767, + "node_type": 16, + "src": { + "id": 768, + "line": 207, + "column": 19, + "start": 7765, + "end": 7774, + "length": 10, + "parent_index": 763 + }, + "name": "returndata", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 767, + "is_pure": false + } + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 737, + "node_type": 43, + "src": { + "id": 738, + "line": 202, + "column": 8, + "start": 7596, + "end": 7676, + "length": 81, + "parent_index": 735 + }, + "parameters": [ + { + "id": 739, + "node_type": 44, + "src": { + "id": 740, + "line": 202, + "column": 8, + "start": 7596, + "end": 7607, + "length": 12, + "parent_index": 737 + }, + "scope": 735, + "name": "success", + "type_name": { + "id": 741, + "node_type": 30, + "src": { + "id": 742, + "line": 202, + "column": 8, + "start": 7596, + "end": 7599, + "length": 4, + "parent_index": 739 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 743, + "node_type": 44, + "src": { + "id": 744, + "line": 203, + "column": 8, + "start": 7618, + "end": 7640, + "length": 23, + "parent_index": 737 + }, + "scope": 735, + "name": "returndata", + "type_name": { + "id": 745, + "node_type": 30, + "src": { + "id": 746, + "line": 203, + "column": 8, + "start": 7618, + "end": 7622, + "length": 5, + "parent_index": 743 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 747, + "node_type": 44, + "src": { + "id": 748, + "line": 204, + "column": 8, + "start": 7651, + "end": 7676, + "length": 26, + "parent_index": 737 + }, + "scope": 735, + "name": "errorMessage", + "type_name": { + "id": 749, + "node_type": 30, + "src": { + "id": 750, + "line": 204, + "column": 8, + "start": 7651, + "end": 7656, + "length": 6, + "parent_index": 747 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 751, + "node_type": 43, + "src": { + "id": 752, + "line": 205, + "column": 29, + "start": 7707, + "end": 7718, + "length": 12, + "parent_index": 735 + }, + "parameters": [ + { + "id": 753, + "node_type": 44, + "src": { + "id": 754, + "line": 205, + "column": 29, + "start": 7707, + "end": 7718, + "length": 12, + "parent_index": 751 + }, + "scope": 735, + "name": "", + "type_name": { + "id": 755, + "node_type": 30, + "src": { + "id": 756, + "line": 205, + "column": 29, + "start": 7707, + "end": 7711, + "length": 5, + "parent_index": 753 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "scope": 268, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_bytes$_t_string$", + "type_string": "function(bool,bytes,string)" + } + } + ], + "linearized_base_contracts": [ + 268 + ], + "base_contracts": [], + "contract_dependencies": [], + "scope": 264 + } + ], + "src": { + "id": 265, + "line": 9, + "column": 0, + "start": 194, + "end": 8254, + "length": 8061, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/BentoAdapter.sol b/data/tests/contracts/sushixswap/BentoAdapter.sol new file mode 100644 index 00000000..0ce9e4ad --- /dev/null +++ b/data/tests/contracts/sushixswap/BentoAdapter.sol @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity 0.8.11; + +import "./IBentoBoxMinimal.sol"; +import "./ImmutableState.sol"; + +/// @title BentoAdapter +/// @notice Adapter which provides all functions of BentoBox require by this contract. +/// @dev These are generic functions, make sure, only msg.sender, address(this) and address(bentoBox) +/// are passed in the from param, or else the attacker can sifu user's funds in bentobox. +abstract contract BentoAdapter is ImmutableState { + /// @notice Deposits the token from users wallet into the BentoBox. + /// @dev Make sure, only msg.sender, address(this) and address(bentoBox) + /// are passed in the from param, or else the attacker can sifu user's funds in bentobox. + /// Pass either amount or share. + /// @param token token to deposit. Use token as address(0) when depositing native token + /// @param from sender + /// @param to receiver + /// @param amount amount to be deposited + /// @param share share to be deposited + /// @param value native token value to be deposited. Only use when token address is address(0) + function _depositToBentoBox( + address token, + address from, + address to, + uint256 amount, + uint256 share, + uint256 value + ) internal { + bentoBox.deposit{value: value}(token, from, to, amount, share); + } + + /// @notice Transfers the token from bentobox user to another or withdraw it to another address. + /// @dev Make sure, only msg.sender, address(this) and address(bentoBox) + /// are passed in the from param, or else the attacker can sifu user's funds in bentobox. + /// Pass either amount or share. + /// @param token token to transfer. For native tokens, use wnative token address + /// @param from sender + /// @param to receiver + /// @param amount amount to transfer + /// @param share share to transfer + /// @param unwrapBento use true for withdraw and false for transfer + function _transferFromBentoBox( + address token, + address from, + address to, + uint256 amount, + uint256 share, + bool unwrapBento + ) internal { + if (unwrapBento) { + bentoBox.withdraw(token, from, to, amount, share); + } else { + if (amount > 0) { + share = bentoBox.toShare(token, amount, false); + } + bentoBox.transfer(token, from, to, share); + } + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/BentoAdapter.solgo.ast.json b/data/tests/contracts/sushixswap/BentoAdapter.solgo.ast.json new file mode 100644 index 00000000..5f80cc2e --- /dev/null +++ b/data/tests/contracts/sushixswap/BentoAdapter.solgo.ast.json @@ -0,0 +1,1380 @@ +{ + "id": 1482, + "base_contracts": [ + { + "id": 1505, + "node_type": 62, + "src": { + "id": 1506, + "line": 424, + "column": 34, + "start": 14591, + "end": 14604, + "length": 14, + "parent_index": 1504 + }, + "base_name": { + "id": 1507, + "node_type": 52, + "src": { + "id": 1508, + "line": 424, + "column": 34, + "start": 14591, + "end": 14604, + "length": 14, + "parent_index": 1504 + }, + "name": "ImmutableState", + "referenced_declaration": 1354 + } + } + ], + "license": "MIT", + "exported_symbols": [ + { + "id": 1482, + "name": "BentoAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/BentoAdapter.sol" + }, + { + "id": 1354, + "name": "IBentoBoxMinimal", + "absolute_path": "IBentoBoxMinimal.sol" + }, + { + "id": 1354, + "name": "ImmutableState", + "absolute_path": "ImmutableState.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/BentoAdapter.sol", + "name": "BentoAdapter", + "node_type": 1, + "nodes": [ + { + "id": 1496, + "node_type": 10, + "src": { + "id": 1497, + "line": 415, + "column": 0, + "start": 14164, + "end": 14186, + "length": 23, + "parent_index": 1482 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 1502, + "node_type": 29, + "src": { + "id": 0, + "line": 417, + "column": 0, + "start": 14189, + "end": 14220, + "length": 32, + "parent_index": 1482 + }, + "absolute_path": "IBentoBoxMinimal.sol", + "file": "./IBentoBoxMinimal.sol", + "scope": 1482, + "unit_alias": "", + "source_unit": 1354 + }, + { + "id": 1503, + "node_type": 29, + "src": { + "id": 0, + "line": 418, + "column": 0, + "start": 14222, + "end": 14251, + "length": 30, + "parent_index": 1482 + }, + "absolute_path": "ImmutableState.sol", + "file": "./ImmutableState.sol", + "scope": 1482, + "unit_alias": "", + "source_unit": 1354 + }, + { + "id": 1504, + "name": "BentoAdapter", + "node_type": 35, + "src": { + "id": 0, + "line": 424, + "column": 0, + "start": 14557, + "end": 16560, + "length": 2004, + "parent_index": 1482 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 1510, + "name": "_depositToBentoBox", + "node_type": 42, + "kind": 41, + "src": { + "id": 1511, + "line": 435, + "column": 4, + "start": 15225, + "end": 15481, + "length": 257, + "parent_index": 1504 + }, + "body": { + "id": 1539, + "node_type": 46, + "kind": 0, + "src": { + "id": 1540, + "line": 442, + "column": 15, + "start": 15403, + "end": 15481, + "length": 79, + "parent_index": 1510 + }, + "implemented": true, + "statements": [ + { + "id": 1541, + "node_type": 24, + "kind": 24, + "src": { + "id": 1542, + "line": 443, + "column": 8, + "start": 15413, + "end": 15474, + "length": 62, + "parent_index": 1539 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 1549, + "node_type": 16, + "src": { + "id": 1550, + "line": 443, + "column": 39, + "start": 15444, + "end": 15448, + "length": 5, + "parent_index": 1541 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1549, + "is_pure": false + }, + { + "id": 1551, + "node_type": 16, + "src": { + "id": 1552, + "line": 443, + "column": 46, + "start": 15451, + "end": 15454, + "length": 4, + "parent_index": 1541 + }, + "name": "from", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1551, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 1553, + "node_type": 16, + "src": { + "id": 1554, + "line": 443, + "column": 52, + "start": 15457, + "end": 15458, + "length": 2, + "parent_index": 1541 + }, + "name": "to", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1553, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 1555, + "node_type": 16, + "src": { + "id": 1556, + "line": 443, + "column": 56, + "start": 15461, + "end": 15466, + "length": 6, + "parent_index": 1541 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1555, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 1557, + "node_type": 16, + "src": { + "id": 1558, + "line": 443, + "column": 64, + "start": 15469, + "end": 15473, + "length": 5, + "parent_index": 1541 + }, + "name": "share", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1557, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + } + ], + "expression": { + "id": 1543, + "node_type": 93, + "kind": 93, + "src": { + "id": 1544, + "line": 443, + "column": 8, + "start": 15413, + "end": 15442, + "length": 30, + "parent_index": 1541 + }, + "expression": { + "id": 1545, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1546, + "line": 443, + "column": 8, + "start": 15413, + "end": 15428, + "length": 16, + "parent_index": 1543 + }, + "expression": { + "id": 1547, + "node_type": 16, + "src": { + "id": 1548, + "line": 443, + "column": 8, + "start": 15413, + "end": 15420, + "length": 8, + "parent_index": 1545 + }, + "name": "bentoBox", + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + }, + "overloaded_declarations": [], + "referenced_declaration": 1378, + "is_pure": false + }, + "member_name": "deposit", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + } + }, + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$", + "type_string": "function(address,address,address,uint256,uint256)" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1512, + "node_type": 43, + "src": { + "id": 1513, + "line": 436, + "column": 8, + "start": 15262, + "end": 15386, + "length": 125, + "parent_index": 1510 + }, + "parameters": [ + { + "id": 1514, + "node_type": 44, + "src": { + "id": 1515, + "line": 436, + "column": 8, + "start": 15262, + "end": 15274, + "length": 13, + "parent_index": 1512 + }, + "scope": 1510, + "name": "token", + "type_name": { + "id": 1516, + "node_type": 30, + "src": { + "id": 1517, + "line": 436, + "column": 8, + "start": 15262, + "end": 15268, + "length": 7, + "parent_index": 1514 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1518, + "node_type": 44, + "src": { + "id": 1519, + "line": 437, + "column": 8, + "start": 15285, + "end": 15296, + "length": 12, + "parent_index": 1512 + }, + "scope": 1510, + "name": "from", + "type_name": { + "id": 1520, + "node_type": 30, + "src": { + "id": 1521, + "line": 437, + "column": 8, + "start": 15285, + "end": 15291, + "length": 7, + "parent_index": 1518 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1522, + "node_type": 44, + "src": { + "id": 1523, + "line": 438, + "column": 8, + "start": 15307, + "end": 15316, + "length": 10, + "parent_index": 1512 + }, + "scope": 1510, + "name": "to", + "type_name": { + "id": 1524, + "node_type": 30, + "src": { + "id": 1525, + "line": 438, + "column": 8, + "start": 15307, + "end": 15313, + "length": 7, + "parent_index": 1522 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1526, + "node_type": 44, + "src": { + "id": 1527, + "line": 439, + "column": 8, + "start": 15327, + "end": 15340, + "length": 14, + "parent_index": 1512 + }, + "scope": 1510, + "name": "amount", + "type_name": { + "id": 1528, + "node_type": 30, + "src": { + "id": 1529, + "line": 439, + "column": 8, + "start": 15327, + "end": 15333, + "length": 7, + "parent_index": 1526 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1530, + "node_type": 44, + "src": { + "id": 1531, + "line": 440, + "column": 8, + "start": 15351, + "end": 15363, + "length": 13, + "parent_index": 1512 + }, + "scope": 1510, + "name": "share", + "type_name": { + "id": 1532, + "node_type": 30, + "src": { + "id": 1533, + "line": 440, + "column": 8, + "start": 15351, + "end": 15357, + "length": 7, + "parent_index": 1530 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1534, + "node_type": 44, + "src": { + "id": 1535, + "line": 441, + "column": 8, + "start": 15374, + "end": 15386, + "length": 13, + "parent_index": 1512 + }, + "scope": 1510, + "name": "value", + "type_name": { + "id": 1536, + "node_type": 30, + "src": { + "id": 1537, + "line": 441, + "column": 8, + "start": 15374, + "end": 15380, + "length": 7, + "parent_index": 1534 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 1538, + "node_type": 43, + "src": { + "id": 1511, + "line": 435, + "column": 4, + "start": 15225, + "end": 15481, + "length": 257, + "parent_index": 1510 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 1504, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$_t_uint256$", + "type_string": "function(address,address,address,uint256,uint256,uint256)" + } + }, + { + "id": 1560, + "name": "_transferFromBentoBox", + "node_type": 42, + "kind": 41, + "src": { + "id": 1561, + "line": 456, + "column": 4, + "start": 16088, + "end": 16558, + "length": 471, + "parent_index": 1504 + }, + "body": { + "id": 1589, + "node_type": 46, + "kind": 0, + "src": { + "id": 1590, + "line": 463, + "column": 15, + "start": 16272, + "end": 16558, + "length": 287, + "parent_index": 1560 + }, + "implemented": true, + "statements": [ + { + "id": 1591, + "node_type": 48, + "src": { + "id": 1592, + "line": 464, + "column": 0, + "start": 16282, + "end": 16552, + "length": 271, + "parent_index": 1589 + }, + "condition": { + "id": 1593, + "node_type": 16, + "src": { + "id": 1594, + "line": 464, + "column": 12, + "start": 16286, + "end": 16296, + "length": 11, + "parent_index": 1591 + }, + "name": "unwrapBento", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 1593, + "is_pure": false + }, + "body": { + "id": 1595, + "node_type": 46, + "kind": 0, + "src": { + "id": 1596, + "line": 464, + "column": 25, + "start": 16299, + "end": 16372, + "length": 74, + "parent_index": 1560 + }, + "implemented": true, + "statements": [ + { + "id": 1597, + "node_type": 24, + "kind": 24, + "src": { + "id": 1598, + "line": 465, + "column": 12, + "start": 16313, + "end": 16361, + "length": 49, + "parent_index": 1595 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 1603, + "node_type": 16, + "src": { + "id": 1604, + "line": 465, + "column": 30, + "start": 16331, + "end": 16335, + "length": 5, + "parent_index": 1597 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1603, + "is_pure": false + }, + { + "id": 1605, + "node_type": 16, + "src": { + "id": 1606, + "line": 465, + "column": 37, + "start": 16338, + "end": 16341, + "length": 4, + "parent_index": 1597 + }, + "name": "from", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1605, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 1607, + "node_type": 16, + "src": { + "id": 1608, + "line": 465, + "column": 43, + "start": 16344, + "end": 16345, + "length": 2, + "parent_index": 1597 + }, + "name": "to", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1607, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 1609, + "node_type": 16, + "src": { + "id": 1610, + "line": 465, + "column": 47, + "start": 16348, + "end": 16353, + "length": 6, + "parent_index": 1597 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1609, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 1611, + "node_type": 16, + "src": { + "id": 1612, + "line": 465, + "column": 55, + "start": 16356, + "end": 16360, + "length": 5, + "parent_index": 1597 + }, + "name": "share", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1611, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + } + ], + "expression": { + "id": 1599, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1600, + "line": 465, + "column": 12, + "start": 16313, + "end": 16329, + "length": 17, + "parent_index": 1597 + }, + "expression": { + "id": 1601, + "node_type": 16, + "src": { + "id": 1602, + "line": 465, + "column": 12, + "start": 16313, + "end": 16320, + "length": 8, + "parent_index": 1599 + }, + "name": "bentoBox", + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + }, + "overloaded_declarations": [], + "referenced_declaration": 1378, + "is_pure": false + }, + "member_name": "withdraw", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$", + "type_string": "function(address,address,address,uint256,uint256)" + } + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1562, + "node_type": 43, + "src": { + "id": 1563, + "line": 457, + "column": 8, + "start": 16128, + "end": 16255, + "length": 128, + "parent_index": 1560 + }, + "parameters": [ + { + "id": 1564, + "node_type": 44, + "src": { + "id": 1565, + "line": 457, + "column": 8, + "start": 16128, + "end": 16140, + "length": 13, + "parent_index": 1562 + }, + "scope": 1560, + "name": "token", + "type_name": { + "id": 1566, + "node_type": 30, + "src": { + "id": 1567, + "line": 457, + "column": 8, + "start": 16128, + "end": 16134, + "length": 7, + "parent_index": 1564 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1568, + "node_type": 44, + "src": { + "id": 1569, + "line": 458, + "column": 8, + "start": 16151, + "end": 16162, + "length": 12, + "parent_index": 1562 + }, + "scope": 1560, + "name": "from", + "type_name": { + "id": 1570, + "node_type": 30, + "src": { + "id": 1571, + "line": 458, + "column": 8, + "start": 16151, + "end": 16157, + "length": 7, + "parent_index": 1568 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1572, + "node_type": 44, + "src": { + "id": 1573, + "line": 459, + "column": 8, + "start": 16173, + "end": 16182, + "length": 10, + "parent_index": 1562 + }, + "scope": 1560, + "name": "to", + "type_name": { + "id": 1574, + "node_type": 30, + "src": { + "id": 1575, + "line": 459, + "column": 8, + "start": 16173, + "end": 16179, + "length": 7, + "parent_index": 1572 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1576, + "node_type": 44, + "src": { + "id": 1577, + "line": 460, + "column": 8, + "start": 16193, + "end": 16206, + "length": 14, + "parent_index": 1562 + }, + "scope": 1560, + "name": "amount", + "type_name": { + "id": 1578, + "node_type": 30, + "src": { + "id": 1579, + "line": 460, + "column": 8, + "start": 16193, + "end": 16199, + "length": 7, + "parent_index": 1576 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1580, + "node_type": 44, + "src": { + "id": 1581, + "line": 461, + "column": 8, + "start": 16217, + "end": 16229, + "length": 13, + "parent_index": 1562 + }, + "scope": 1560, + "name": "share", + "type_name": { + "id": 1582, + "node_type": 30, + "src": { + "id": 1583, + "line": 461, + "column": 8, + "start": 16217, + "end": 16223, + "length": 7, + "parent_index": 1580 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1584, + "node_type": 44, + "src": { + "id": 1585, + "line": 462, + "column": 8, + "start": 16240, + "end": 16255, + "length": 16, + "parent_index": 1562 + }, + "scope": 1560, + "name": "unwrapBento", + "type_name": { + "id": 1586, + "node_type": 30, + "src": { + "id": 1587, + "line": 462, + "column": 8, + "start": 16240, + "end": 16243, + "length": 4, + "parent_index": 1584 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "return_parameters": { + "id": 1588, + "node_type": 43, + "src": { + "id": 1561, + "line": 456, + "column": 4, + "start": 16088, + "end": 16558, + "length": 471, + "parent_index": 1560 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 1504, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$_t_bool$", + "type_string": "function(address,address,address,uint256,uint256,bool)" + } + } + ], + "linearized_base_contracts": [ + 1354, + 1504, + 1502, + 1503 + ], + "base_contracts": [ + { + "id": 1505, + "node_type": 62, + "src": { + "id": 1506, + "line": 424, + "column": 34, + "start": 14591, + "end": 14604, + "length": 14, + "parent_index": 1504 + }, + "base_name": { + "id": 1507, + "node_type": 52, + "src": { + "id": 1508, + "line": 424, + "column": 34, + "start": 14591, + "end": 14604, + "length": 14, + "parent_index": 1504 + }, + "name": "ImmutableState", + "referenced_declaration": 1354 + } + } + ], + "contract_dependencies": [ + 1354, + 1502, + 1503 + ] + } + ], + "src": { + "id": 1483, + "line": 424, + "column": 0, + "start": 14557, + "end": 16560, + "length": 2004, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IBentoBoxMinimal.sol b/data/tests/contracts/sushixswap/IBentoBoxMinimal.sol new file mode 100644 index 00000000..19e3808f --- /dev/null +++ b/data/tests/contracts/sushixswap/IBentoBoxMinimal.sol @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity 0.8.11; + +/// @notice Minimal BentoBox vault interface. +/// @dev `token` is aliased as `address` from `IERC20` for simplicity. +interface IBentoBoxMinimal { + /// @notice Balance per ERC-20 token per account in shares. + function balanceOf(address, address) external view returns (uint256); + + /// @dev Helper function to represent an `amount` of `token` in shares. + /// @param token The ERC-20 token. + /// @param amount The `token` amount. + /// @param roundUp If the result `share` should be rounded up. + /// @return share The token amount represented in shares. + function toShare( + address token, + uint256 amount, + bool roundUp + ) external view returns (uint256 share); + + /// @dev Helper function to represent shares back into the `token` amount. + /// @param token The ERC-20 token. + /// @param share The amount of shares. + /// @param roundUp If the result should be rounded up. + /// @return amount The share amount back into native representation. + function toAmount( + address token, + uint256 share, + bool roundUp + ) external view returns (uint256 amount); + + /// @notice Registers this contract so that users can approve it for BentoBox. + function registerProtocol() external; + + /// @notice Deposit an amount of `token` represented in either `amount` or `share`. + /// @param token_ The ERC-20 token to deposit. + /// @param from which account to pull the tokens. + /// @param to which account to push the tokens. + /// @param amount Token amount in native representation to deposit. + /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`. + /// @return amountOut The amount deposited. + /// @return shareOut The deposited amount represented in shares. + function deposit( + address token_, + address from, + address to, + uint256 amount, + uint256 share + ) external payable returns (uint256 amountOut, uint256 shareOut); + + /// @notice Withdraws an amount of `token` from a user account. + /// @param token_ The ERC-20 token to withdraw. + /// @param from which user to pull the tokens. + /// @param to which user to push the tokens. + /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied. + /// @param share Like above, but `share` takes precedence over `amount`. + function withdraw( + address token_, + address from, + address to, + uint256 amount, + uint256 share + ) external returns (uint256 amountOut, uint256 shareOut); + + /// @notice Transfer shares from a user account to another one. + /// @param token The ERC-20 token to transfer. + /// @param from which user to pull the tokens. + /// @param to which user to push the tokens. + /// @param share The amount of `token` in shares. + function transfer( + address token, + address from, + address to, + uint256 share + ) external; + + function setMasterContractApproval( + address user, + address masterContract, + bool approved, + uint8 v, + bytes32 r, + bytes32 s + ) external; +} diff --git a/data/tests/contracts/sushixswap/IBentoBoxMinimal.solgo.ast.json b/data/tests/contracts/sushixswap/IBentoBoxMinimal.solgo.ast.json new file mode 100644 index 00000000..1f18f6f3 --- /dev/null +++ b/data/tests/contracts/sushixswap/IBentoBoxMinimal.solgo.ast.json @@ -0,0 +1,2124 @@ +{ + "id": 769, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 769, + "name": "IBentoBoxMinimal", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IBentoBoxMinimal.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IBentoBoxMinimal.sol", + "name": "IBentoBoxMinimal", + "node_type": 1, + "nodes": [ + { + "id": 773, + "node_type": 10, + "src": { + "id": 774, + "line": 227, + "column": 0, + "start": 8304, + "end": 8326, + "length": 23, + "parent_index": 769 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 811, + "name": "IBentoBoxMinimal", + "node_type": 35, + "src": { + "id": 0, + "line": 231, + "column": 0, + "start": 8446, + "end": 11502, + "length": 3057, + "parent_index": 769 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 813, + "name": "balanceOf", + "node_type": 42, + "kind": 41, + "src": { + "id": 814, + "line": 233, + "column": 4, + "start": 8543, + "end": 8611, + "length": 69, + "parent_index": 811 + }, + "body": { + "id": 831, + "node_type": 46, + "kind": 0, + "src": { + "id": 814, + "line": 233, + "column": 4, + "start": 8543, + "end": 8611, + "length": 69, + "parent_index": 813 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 815, + "node_type": 43, + "src": { + "id": 816, + "line": 233, + "column": 23, + "start": 8562, + "end": 8577, + "length": 16, + "parent_index": 813 + }, + "parameters": [ + { + "id": 817, + "node_type": 44, + "src": { + "id": 818, + "line": 233, + "column": 23, + "start": 8562, + "end": 8568, + "length": 7, + "parent_index": 815 + }, + "scope": 813, + "name": "", + "type_name": { + "id": 819, + "node_type": 30, + "src": { + "id": 820, + "line": 233, + "column": 23, + "start": 8562, + "end": 8568, + "length": 7, + "parent_index": 817 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 821, + "node_type": 44, + "src": { + "id": 822, + "line": 233, + "column": 32, + "start": 8571, + "end": 8577, + "length": 7, + "parent_index": 815 + }, + "scope": 813, + "name": "", + "type_name": { + "id": 823, + "node_type": 30, + "src": { + "id": 824, + "line": 233, + "column": 32, + "start": 8571, + "end": 8577, + "length": 7, + "parent_index": 821 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 825, + "node_type": 43, + "src": { + "id": 826, + "line": 233, + "column": 64, + "start": 8603, + "end": 8609, + "length": 7, + "parent_index": 813 + }, + "parameters": [ + { + "id": 827, + "node_type": 44, + "src": { + "id": 828, + "line": 233, + "column": 64, + "start": 8603, + "end": 8609, + "length": 7, + "parent_index": 825 + }, + "scope": 813, + "name": "", + "type_name": { + "id": 829, + "node_type": 30, + "src": { + "id": 830, + "line": 233, + "column": 64, + "start": 8603, + "end": 8609, + "length": 7, + "parent_index": 827 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 811, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$", + "type_string": "function(address,address)" + } + }, + { + "id": 833, + "name": "toShare", + "node_type": 42, + "kind": 41, + "src": { + "id": 834, + "line": 240, + "column": 4, + "start": 8904, + "end": 9033, + "length": 130, + "parent_index": 811 + }, + "body": { + "id": 855, + "node_type": 46, + "kind": 0, + "src": { + "id": 834, + "line": 240, + "column": 4, + "start": 8904, + "end": 9033, + "length": 130, + "parent_index": 833 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 835, + "node_type": 43, + "src": { + "id": 836, + "line": 241, + "column": 8, + "start": 8930, + "end": 8988, + "length": 59, + "parent_index": 833 + }, + "parameters": [ + { + "id": 837, + "node_type": 44, + "src": { + "id": 838, + "line": 241, + "column": 8, + "start": 8930, + "end": 8942, + "length": 13, + "parent_index": 835 + }, + "scope": 833, + "name": "token", + "type_name": { + "id": 839, + "node_type": 30, + "src": { + "id": 840, + "line": 241, + "column": 8, + "start": 8930, + "end": 8936, + "length": 7, + "parent_index": 837 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 841, + "node_type": 44, + "src": { + "id": 842, + "line": 242, + "column": 8, + "start": 8953, + "end": 8966, + "length": 14, + "parent_index": 835 + }, + "scope": 833, + "name": "amount", + "type_name": { + "id": 843, + "node_type": 30, + "src": { + "id": 844, + "line": 242, + "column": 8, + "start": 8953, + "end": 8959, + "length": 7, + "parent_index": 841 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 845, + "node_type": 44, + "src": { + "id": 846, + "line": 243, + "column": 8, + "start": 8977, + "end": 8988, + "length": 12, + "parent_index": 835 + }, + "scope": 833, + "name": "roundUp", + "type_name": { + "id": 847, + "node_type": 30, + "src": { + "id": 848, + "line": 243, + "column": 8, + "start": 8977, + "end": 8980, + "length": 4, + "parent_index": 845 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "return_parameters": { + "id": 849, + "node_type": 43, + "src": { + "id": 850, + "line": 244, + "column": 29, + "start": 9019, + "end": 9031, + "length": 13, + "parent_index": 833 + }, + "parameters": [ + { + "id": 851, + "node_type": 44, + "src": { + "id": 852, + "line": 244, + "column": 29, + "start": 9019, + "end": 9031, + "length": 13, + "parent_index": 849 + }, + "scope": 833, + "name": "share", + "type_name": { + "id": 853, + "node_type": 30, + "src": { + "id": 854, + "line": 244, + "column": 29, + "start": 9019, + "end": 9025, + "length": 7, + "parent_index": 851 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 811, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_uint256$_t_bool$", + "type_string": "function(address,uint256,bool)" + } + }, + { + "id": 857, + "name": "toAmount", + "node_type": 42, + "kind": 41, + "src": { + "id": 858, + "line": 251, + "column": 4, + "start": 9333, + "end": 9463, + "length": 131, + "parent_index": 811 + }, + "body": { + "id": 879, + "node_type": 46, + "kind": 0, + "src": { + "id": 858, + "line": 251, + "column": 4, + "start": 9333, + "end": 9463, + "length": 131, + "parent_index": 857 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 859, + "node_type": 43, + "src": { + "id": 860, + "line": 252, + "column": 8, + "start": 9360, + "end": 9417, + "length": 58, + "parent_index": 857 + }, + "parameters": [ + { + "id": 861, + "node_type": 44, + "src": { + "id": 862, + "line": 252, + "column": 8, + "start": 9360, + "end": 9372, + "length": 13, + "parent_index": 859 + }, + "scope": 857, + "name": "token", + "type_name": { + "id": 863, + "node_type": 30, + "src": { + "id": 864, + "line": 252, + "column": 8, + "start": 9360, + "end": 9366, + "length": 7, + "parent_index": 861 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 865, + "node_type": 44, + "src": { + "id": 866, + "line": 253, + "column": 8, + "start": 9383, + "end": 9395, + "length": 13, + "parent_index": 859 + }, + "scope": 857, + "name": "share", + "type_name": { + "id": 867, + "node_type": 30, + "src": { + "id": 868, + "line": 253, + "column": 8, + "start": 9383, + "end": 9389, + "length": 7, + "parent_index": 865 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 869, + "node_type": 44, + "src": { + "id": 870, + "line": 254, + "column": 8, + "start": 9406, + "end": 9417, + "length": 12, + "parent_index": 859 + }, + "scope": 857, + "name": "roundUp", + "type_name": { + "id": 871, + "node_type": 30, + "src": { + "id": 872, + "line": 254, + "column": 8, + "start": 9406, + "end": 9409, + "length": 4, + "parent_index": 869 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "return_parameters": { + "id": 873, + "node_type": 43, + "src": { + "id": 874, + "line": 255, + "column": 29, + "start": 9448, + "end": 9461, + "length": 14, + "parent_index": 857 + }, + "parameters": [ + { + "id": 875, + "node_type": 44, + "src": { + "id": 876, + "line": 255, + "column": 29, + "start": 9448, + "end": 9461, + "length": 14, + "parent_index": 873 + }, + "scope": 857, + "name": "amount", + "type_name": { + "id": 877, + "node_type": 30, + "src": { + "id": 878, + "line": 255, + "column": 29, + "start": 9448, + "end": 9454, + "length": 7, + "parent_index": 875 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 811, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_uint256$_t_bool$", + "type_string": "function(address,uint256,bool)" + } + }, + { + "id": 881, + "name": "registerProtocol", + "node_type": 42, + "kind": 41, + "src": { + "id": 882, + "line": 258, + "column": 4, + "start": 9553, + "end": 9589, + "length": 37, + "parent_index": 811 + }, + "body": { + "id": 885, + "node_type": 46, + "kind": 0, + "src": { + "id": 882, + "line": 258, + "column": 4, + "start": 9553, + "end": 9589, + "length": 37, + "parent_index": 881 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 883, + "node_type": 43, + "src": { + "id": 882, + "line": 258, + "column": 4, + "start": 9553, + "end": 9589, + "length": 37, + "parent_index": 881 + }, + "parameters": [], + "parameter_types": [] + }, + "return_parameters": { + "id": 884, + "node_type": 43, + "src": { + "id": 882, + "line": 258, + "column": 4, + "start": 9553, + "end": 9589, + "length": 37, + "parent_index": 881 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 811, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + }, + { + "id": 887, + "name": "deposit", + "node_type": 42, + "kind": 41, + "src": { + "id": 888, + "line": 268, + "column": 4, + "start": 10130, + "end": 10328, + "length": 199, + "parent_index": 811 + }, + "body": { + "id": 921, + "node_type": 46, + "kind": 0, + "src": { + "id": 888, + "line": 268, + "column": 4, + "start": 10130, + "end": 10328, + "length": 199, + "parent_index": 887 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 3, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 889, + "node_type": 43, + "src": { + "id": 890, + "line": 269, + "column": 8, + "start": 10156, + "end": 10258, + "length": 103, + "parent_index": 887 + }, + "parameters": [ + { + "id": 891, + "node_type": 44, + "src": { + "id": 892, + "line": 269, + "column": 8, + "start": 10156, + "end": 10169, + "length": 14, + "parent_index": 889 + }, + "scope": 887, + "name": "token_", + "type_name": { + "id": 893, + "node_type": 30, + "src": { + "id": 894, + "line": 269, + "column": 8, + "start": 10156, + "end": 10162, + "length": 7, + "parent_index": 891 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 895, + "node_type": 44, + "src": { + "id": 896, + "line": 270, + "column": 8, + "start": 10180, + "end": 10191, + "length": 12, + "parent_index": 889 + }, + "scope": 887, + "name": "from", + "type_name": { + "id": 897, + "node_type": 30, + "src": { + "id": 898, + "line": 270, + "column": 8, + "start": 10180, + "end": 10186, + "length": 7, + "parent_index": 895 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 899, + "node_type": 44, + "src": { + "id": 900, + "line": 271, + "column": 8, + "start": 10202, + "end": 10211, + "length": 10, + "parent_index": 889 + }, + "scope": 887, + "name": "to", + "type_name": { + "id": 901, + "node_type": 30, + "src": { + "id": 902, + "line": 271, + "column": 8, + "start": 10202, + "end": 10208, + "length": 7, + "parent_index": 899 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 903, + "node_type": 44, + "src": { + "id": 904, + "line": 272, + "column": 8, + "start": 10222, + "end": 10235, + "length": 14, + "parent_index": 889 + }, + "scope": 887, + "name": "amount", + "type_name": { + "id": 905, + "node_type": 30, + "src": { + "id": 906, + "line": 272, + "column": 8, + "start": 10222, + "end": 10228, + "length": 7, + "parent_index": 903 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 907, + "node_type": 44, + "src": { + "id": 908, + "line": 273, + "column": 8, + "start": 10246, + "end": 10258, + "length": 13, + "parent_index": 889 + }, + "scope": 887, + "name": "share", + "type_name": { + "id": 909, + "node_type": 30, + "src": { + "id": 910, + "line": 273, + "column": 8, + "start": 10246, + "end": 10252, + "length": 7, + "parent_index": 907 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 911, + "node_type": 43, + "src": { + "id": 912, + "line": 274, + "column": 32, + "start": 10292, + "end": 10326, + "length": 35, + "parent_index": 887 + }, + "parameters": [ + { + "id": 913, + "node_type": 44, + "src": { + "id": 914, + "line": 274, + "column": 32, + "start": 10292, + "end": 10308, + "length": 17, + "parent_index": 911 + }, + "scope": 887, + "name": "amountOut", + "type_name": { + "id": 915, + "node_type": 30, + "src": { + "id": 916, + "line": 274, + "column": 32, + "start": 10292, + "end": 10298, + "length": 7, + "parent_index": 913 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 917, + "node_type": 44, + "src": { + "id": 918, + "line": 274, + "column": 51, + "start": 10311, + "end": 10326, + "length": 16, + "parent_index": 911 + }, + "scope": 887, + "name": "shareOut", + "type_name": { + "id": 919, + "node_type": 30, + "src": { + "id": 920, + "line": 274, + "column": 51, + "start": 10311, + "end": 10317, + "length": 7, + "parent_index": 917 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 811, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$", + "type_string": "function(address,address,address,uint256,uint256)" + } + }, + { + "id": 923, + "name": "withdraw", + "node_type": 42, + "kind": 41, + "src": { + "id": 924, + "line": 282, + "column": 4, + "start": 10721, + "end": 10912, + "length": 192, + "parent_index": 811 + }, + "body": { + "id": 957, + "node_type": 46, + "kind": 0, + "src": { + "id": 924, + "line": 282, + "column": 4, + "start": 10721, + "end": 10912, + "length": 192, + "parent_index": 923 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 925, + "node_type": 43, + "src": { + "id": 926, + "line": 283, + "column": 8, + "start": 10748, + "end": 10850, + "length": 103, + "parent_index": 923 + }, + "parameters": [ + { + "id": 927, + "node_type": 44, + "src": { + "id": 928, + "line": 283, + "column": 8, + "start": 10748, + "end": 10761, + "length": 14, + "parent_index": 925 + }, + "scope": 923, + "name": "token_", + "type_name": { + "id": 929, + "node_type": 30, + "src": { + "id": 930, + "line": 283, + "column": 8, + "start": 10748, + "end": 10754, + "length": 7, + "parent_index": 927 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 931, + "node_type": 44, + "src": { + "id": 932, + "line": 284, + "column": 8, + "start": 10772, + "end": 10783, + "length": 12, + "parent_index": 925 + }, + "scope": 923, + "name": "from", + "type_name": { + "id": 933, + "node_type": 30, + "src": { + "id": 934, + "line": 284, + "column": 8, + "start": 10772, + "end": 10778, + "length": 7, + "parent_index": 931 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 935, + "node_type": 44, + "src": { + "id": 936, + "line": 285, + "column": 8, + "start": 10794, + "end": 10803, + "length": 10, + "parent_index": 925 + }, + "scope": 923, + "name": "to", + "type_name": { + "id": 937, + "node_type": 30, + "src": { + "id": 938, + "line": 285, + "column": 8, + "start": 10794, + "end": 10800, + "length": 7, + "parent_index": 935 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 939, + "node_type": 44, + "src": { + "id": 940, + "line": 286, + "column": 8, + "start": 10814, + "end": 10827, + "length": 14, + "parent_index": 925 + }, + "scope": 923, + "name": "amount", + "type_name": { + "id": 941, + "node_type": 30, + "src": { + "id": 942, + "line": 286, + "column": 8, + "start": 10814, + "end": 10820, + "length": 7, + "parent_index": 939 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 943, + "node_type": 44, + "src": { + "id": 944, + "line": 287, + "column": 8, + "start": 10838, + "end": 10850, + "length": 13, + "parent_index": 925 + }, + "scope": 923, + "name": "share", + "type_name": { + "id": 945, + "node_type": 30, + "src": { + "id": 946, + "line": 287, + "column": 8, + "start": 10838, + "end": 10844, + "length": 7, + "parent_index": 943 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 947, + "node_type": 43, + "src": { + "id": 948, + "line": 288, + "column": 24, + "start": 10876, + "end": 10910, + "length": 35, + "parent_index": 923 + }, + "parameters": [ + { + "id": 949, + "node_type": 44, + "src": { + "id": 950, + "line": 288, + "column": 24, + "start": 10876, + "end": 10892, + "length": 17, + "parent_index": 947 + }, + "scope": 923, + "name": "amountOut", + "type_name": { + "id": 951, + "node_type": 30, + "src": { + "id": 952, + "line": 288, + "column": 24, + "start": 10876, + "end": 10882, + "length": 7, + "parent_index": 949 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 953, + "node_type": 44, + "src": { + "id": 954, + "line": 288, + "column": 43, + "start": 10895, + "end": 10910, + "length": 16, + "parent_index": 947 + }, + "scope": 923, + "name": "shareOut", + "type_name": { + "id": 955, + "node_type": 30, + "src": { + "id": 956, + "line": 288, + "column": 43, + "start": 10895, + "end": 10901, + "length": 7, + "parent_index": 953 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 811, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$", + "type_string": "function(address,address,address,uint256,uint256)" + } + }, + { + "id": 959, + "name": "transfer", + "node_type": 42, + "kind": 41, + "src": { + "id": 960, + "line": 295, + "column": 4, + "start": 11192, + "end": 11312, + "length": 121, + "parent_index": 811 + }, + "body": { + "id": 980, + "node_type": 46, + "kind": 0, + "src": { + "id": 960, + "line": 295, + "column": 4, + "start": 11192, + "end": 11312, + "length": 121, + "parent_index": 959 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 961, + "node_type": 43, + "src": { + "id": 962, + "line": 296, + "column": 8, + "start": 11219, + "end": 11296, + "length": 78, + "parent_index": 959 + }, + "parameters": [ + { + "id": 963, + "node_type": 44, + "src": { + "id": 964, + "line": 296, + "column": 8, + "start": 11219, + "end": 11231, + "length": 13, + "parent_index": 961 + }, + "scope": 959, + "name": "token", + "type_name": { + "id": 965, + "node_type": 30, + "src": { + "id": 966, + "line": 296, + "column": 8, + "start": 11219, + "end": 11225, + "length": 7, + "parent_index": 963 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 967, + "node_type": 44, + "src": { + "id": 968, + "line": 297, + "column": 8, + "start": 11242, + "end": 11253, + "length": 12, + "parent_index": 961 + }, + "scope": 959, + "name": "from", + "type_name": { + "id": 969, + "node_type": 30, + "src": { + "id": 970, + "line": 297, + "column": 8, + "start": 11242, + "end": 11248, + "length": 7, + "parent_index": 967 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 971, + "node_type": 44, + "src": { + "id": 972, + "line": 298, + "column": 8, + "start": 11264, + "end": 11273, + "length": 10, + "parent_index": 961 + }, + "scope": 959, + "name": "to", + "type_name": { + "id": 973, + "node_type": 30, + "src": { + "id": 974, + "line": 298, + "column": 8, + "start": 11264, + "end": 11270, + "length": 7, + "parent_index": 971 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 975, + "node_type": 44, + "src": { + "id": 976, + "line": 299, + "column": 8, + "start": 11284, + "end": 11296, + "length": 13, + "parent_index": 961 + }, + "scope": 959, + "name": "share", + "type_name": { + "id": 977, + "node_type": 30, + "src": { + "id": 978, + "line": 299, + "column": 8, + "start": 11284, + "end": 11290, + "length": 7, + "parent_index": 975 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 979, + "node_type": 43, + "src": { + "id": 960, + "line": 295, + "column": 4, + "start": 11192, + "end": 11312, + "length": 121, + "parent_index": 959 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 811, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,address,uint256)" + } + }, + { + "id": 982, + "name": "setMasterContractApproval", + "node_type": 42, + "kind": 41, + "src": { + "id": 983, + "line": 302, + "column": 4, + "start": 11319, + "end": 11500, + "length": 182, + "parent_index": 811 + }, + "body": { + "id": 1011, + "node_type": 46, + "kind": 0, + "src": { + "id": 983, + "line": 302, + "column": 4, + "start": 11319, + "end": 11500, + "length": 182, + "parent_index": 982 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 984, + "node_type": 43, + "src": { + "id": 985, + "line": 303, + "column": 8, + "start": 11363, + "end": 11484, + "length": 122, + "parent_index": 982 + }, + "parameters": [ + { + "id": 986, + "node_type": 44, + "src": { + "id": 987, + "line": 303, + "column": 8, + "start": 11363, + "end": 11374, + "length": 12, + "parent_index": 984 + }, + "scope": 982, + "name": "user", + "type_name": { + "id": 988, + "node_type": 30, + "src": { + "id": 989, + "line": 303, + "column": 8, + "start": 11363, + "end": 11369, + "length": 7, + "parent_index": 986 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 990, + "node_type": 44, + "src": { + "id": 991, + "line": 304, + "column": 8, + "start": 11385, + "end": 11406, + "length": 22, + "parent_index": 984 + }, + "scope": 982, + "name": "masterContract", + "type_name": { + "id": 992, + "node_type": 30, + "src": { + "id": 993, + "line": 304, + "column": 8, + "start": 11385, + "end": 11391, + "length": 7, + "parent_index": 990 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 994, + "node_type": 44, + "src": { + "id": 995, + "line": 305, + "column": 8, + "start": 11417, + "end": 11429, + "length": 13, + "parent_index": 984 + }, + "scope": 982, + "name": "approved", + "type_name": { + "id": 996, + "node_type": 30, + "src": { + "id": 997, + "line": 305, + "column": 8, + "start": 11417, + "end": 11420, + "length": 4, + "parent_index": 994 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 998, + "node_type": 44, + "src": { + "id": 999, + "line": 306, + "column": 8, + "start": 11440, + "end": 11446, + "length": 7, + "parent_index": 984 + }, + "scope": 982, + "name": "v", + "type_name": { + "id": 1000, + "node_type": 30, + "src": { + "id": 1001, + "line": 306, + "column": 8, + "start": 11440, + "end": 11444, + "length": 5, + "parent_index": 998 + }, + "name": "uint8", + "type_description": { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1002, + "node_type": 44, + "src": { + "id": 1003, + "line": 307, + "column": 8, + "start": 11457, + "end": 11465, + "length": 9, + "parent_index": 984 + }, + "scope": 982, + "name": "r", + "type_name": { + "id": 1004, + "node_type": 30, + "src": { + "id": 1005, + "line": 307, + "column": 8, + "start": 11457, + "end": 11463, + "length": 7, + "parent_index": 1002 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1006, + "node_type": 44, + "src": { + "id": 1007, + "line": 308, + "column": 8, + "start": 11476, + "end": 11484, + "length": 9, + "parent_index": 984 + }, + "scope": 982, + "name": "s", + "type_name": { + "id": 1008, + "node_type": 30, + "src": { + "id": 1009, + "line": 308, + "column": 8, + "start": 11476, + "end": 11482, + "length": 7, + "parent_index": 1006 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "return_parameters": { + "id": 1010, + "node_type": 43, + "src": { + "id": 983, + "line": 302, + "column": 4, + "start": 11319, + "end": 11500, + "length": 182, + "parent_index": 982 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 811, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_bool$_t_uint8$_t_bytes32$_t_bytes32$", + "type_string": "function(address,address,bool,uint8,bytes32,bytes32)" + } + } + ], + "linearized_base_contracts": [ + 811 + ], + "base_contracts": [], + "contract_dependencies": [] + } + ], + "src": { + "id": 770, + "line": 231, + "column": 0, + "start": 8446, + "end": 11502, + "length": 3057, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IERC20.sol b/data/tests/contracts/sushixswap/IERC20.sol new file mode 100644 index 00000000..c7a56aa3 --- /dev/null +++ b/data/tests/contracts/sushixswap/IERC20.sol @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts v4.4.1 (interfaces/IERC20.sol) + +pragma solidity ^0.8.0; + +import "./IERC20.sol"; diff --git a/data/tests/contracts/sushixswap/IImmutableState.sol b/data/tests/contracts/sushixswap/IImmutableState.sol new file mode 100644 index 00000000..45def1c1 --- /dev/null +++ b/data/tests/contracts/sushixswap/IImmutableState.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity 0.8.11; + +import "./IBentoBoxMinimal.sol"; +import "./IStargateRouter.sol"; +import "./IStargateWidget.sol"; + +interface IImmutableState { + function bentoBox() external view returns (IBentoBoxMinimal); + + function stargateRouter() external view returns (IStargateRouter); + + function stargateWidget() external view returns (IStargateWidget); + + function factory() external view returns (address); + + function pairCodeHash() external view returns (bytes32); +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IImmutableState.solgo.ast.json b/data/tests/contracts/sushixswap/IImmutableState.solgo.ast.json new file mode 100644 index 00000000..0d116210 --- /dev/null +++ b/data/tests/contracts/sushixswap/IImmutableState.solgo.ast.json @@ -0,0 +1,1026 @@ +{ + "id": 1213, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 1213, + "name": "IImmutableState", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IImmutableState.sol" + }, + { + "id": 1155, + "name": "IBentoBoxMinimal", + "absolute_path": "IBentoBoxMinimal.sol" + }, + { + "id": 1155, + "name": "IStargateRouter", + "absolute_path": "IStargateRouter.sol" + }, + { + "id": 1155, + "name": "IStargateWidget", + "absolute_path": "IStargateWidget.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IImmutableState.sol", + "name": "IImmutableState", + "node_type": 1, + "nodes": [ + { + "id": 1223, + "node_type": 10, + "src": { + "id": 1224, + "line": 356, + "column": 0, + "start": 12490, + "end": 12512, + "length": 23, + "parent_index": 1213 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 1225, + "node_type": 29, + "src": { + "id": 0, + "line": 358, + "column": 0, + "start": 12515, + "end": 12546, + "length": 32, + "parent_index": 1213 + }, + "absolute_path": "IBentoBoxMinimal.sol", + "file": "./IBentoBoxMinimal.sol", + "scope": 1213, + "unit_alias": "", + "source_unit": 1155 + }, + { + "id": 1226, + "node_type": 29, + "src": { + "id": 0, + "line": 359, + "column": 0, + "start": 12548, + "end": 12578, + "length": 31, + "parent_index": 1213 + }, + "absolute_path": "IStargateRouter.sol", + "file": "./IStargateRouter.sol", + "scope": 1213, + "unit_alias": "", + "source_unit": 1155 + }, + { + "id": 1227, + "node_type": 29, + "src": { + "id": 0, + "line": 360, + "column": 0, + "start": 12580, + "end": 12610, + "length": 31, + "parent_index": 1213 + }, + "absolute_path": "IStargateWidget.sol", + "file": "./IStargateWidget.sol", + "scope": 1213, + "unit_alias": "", + "source_unit": 1155 + }, + { + "id": 1261, + "name": "IImmutableState", + "node_type": 35, + "src": { + "id": 0, + "line": 362, + "column": 0, + "start": 12613, + "end": 12970, + "length": 358, + "parent_index": 1213 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 1263, + "name": "bentoBox", + "node_type": 42, + "kind": 41, + "src": { + "id": 1264, + "line": 363, + "column": 4, + "start": 12645, + "end": 12705, + "length": 61, + "parent_index": 1261 + }, + "body": { + "id": 1281, + "node_type": 46, + "kind": 0, + "src": { + "id": 1264, + "line": 363, + "column": 4, + "start": 12645, + "end": 12705, + "length": 61, + "parent_index": 1263 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1265, + "node_type": 43, + "src": { + "id": 1266, + "line": 363, + "column": 47, + "start": 12688, + "end": 12703, + "length": 16, + "parent_index": 1263 + }, + "parameters": [ + { + "id": 1267, + "node_type": 44, + "src": { + "id": 1268, + "line": 363, + "column": 47, + "start": 12688, + "end": 12703, + "length": 16, + "parent_index": 1265 + }, + "scope": 1263, + "name": "", + "type_name": { + "id": 1269, + "node_type": 69, + "src": { + "id": 1270, + "line": 363, + "column": 47, + "start": 12688, + "end": 12703, + "length": 16, + "parent_index": 1267 + }, + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + }, + "path_node": { + "id": 1271, + "name": "IBentoBoxMinimal", + "node_type": 52, + "referenced_declaration": 769, + "src": { + "id": 1272, + "line": 363, + "column": 47, + "start": 12688, + "end": 12703, + "length": 16, + "parent_index": 1269 + } + }, + "referenced_declaration": 769 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + } + ] + }, + "return_parameters": { + "id": 1273, + "node_type": 43, + "src": { + "id": 1274, + "line": 363, + "column": 47, + "start": 12688, + "end": 12703, + "length": 16, + "parent_index": 1263 + }, + "parameters": [ + { + "id": 1275, + "node_type": 44, + "src": { + "id": 1276, + "line": 363, + "column": 47, + "start": 12688, + "end": 12703, + "length": 16, + "parent_index": 1273 + }, + "scope": 1263, + "name": "", + "type_name": { + "id": 1277, + "node_type": 69, + "src": { + "id": 1278, + "line": 363, + "column": 47, + "start": 12688, + "end": 12703, + "length": 16, + "parent_index": 1275 + }, + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + }, + "path_node": { + "id": 1279, + "name": "IBentoBoxMinimal", + "node_type": 52, + "referenced_declaration": 769, + "src": { + "id": 1280, + "line": 363, + "column": 47, + "start": 12688, + "end": 12703, + "length": 16, + "parent_index": 1277 + } + }, + "referenced_declaration": 769 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + } + ] + }, + "scope": 1261, + "type_description": { + "type_identifier": "t_function_$_t_contract$_IBentoBoxMinimal_$769$", + "type_string": "function(contract IBentoBoxMinimal)" + } + }, + { + "id": 1283, + "name": "stargateRouter", + "node_type": 42, + "kind": 41, + "src": { + "id": 1284, + "line": 365, + "column": 4, + "start": 12712, + "end": 12777, + "length": 66, + "parent_index": 1261 + }, + "body": { + "id": 1301, + "node_type": 46, + "kind": 0, + "src": { + "id": 1284, + "line": 365, + "column": 4, + "start": 12712, + "end": 12777, + "length": 66, + "parent_index": 1283 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1285, + "node_type": 43, + "src": { + "id": 1286, + "line": 365, + "column": 53, + "start": 12761, + "end": 12775, + "length": 15, + "parent_index": 1283 + }, + "parameters": [ + { + "id": 1287, + "node_type": 44, + "src": { + "id": 1288, + "line": 365, + "column": 53, + "start": 12761, + "end": 12775, + "length": 15, + "parent_index": 1285 + }, + "scope": 1283, + "name": "", + "type_name": { + "id": 1289, + "node_type": 69, + "src": { + "id": 1290, + "line": 365, + "column": 53, + "start": 12761, + "end": 12775, + "length": 15, + "parent_index": 1287 + }, + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + }, + "path_node": { + "id": 1291, + "name": "IStargateRouter", + "node_type": 52, + "referenced_declaration": 1012, + "src": { + "id": 1292, + "line": 365, + "column": 53, + "start": 12761, + "end": 12775, + "length": 15, + "parent_index": 1289 + } + }, + "referenced_declaration": 1012 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + } + ] + }, + "return_parameters": { + "id": 1293, + "node_type": 43, + "src": { + "id": 1294, + "line": 365, + "column": 53, + "start": 12761, + "end": 12775, + "length": 15, + "parent_index": 1283 + }, + "parameters": [ + { + "id": 1295, + "node_type": 44, + "src": { + "id": 1296, + "line": 365, + "column": 53, + "start": 12761, + "end": 12775, + "length": 15, + "parent_index": 1293 + }, + "scope": 1283, + "name": "", + "type_name": { + "id": 1297, + "node_type": 69, + "src": { + "id": 1298, + "line": 365, + "column": 53, + "start": 12761, + "end": 12775, + "length": 15, + "parent_index": 1295 + }, + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + }, + "path_node": { + "id": 1299, + "name": "IStargateRouter", + "node_type": 52, + "referenced_declaration": 1012, + "src": { + "id": 1300, + "line": 365, + "column": 53, + "start": 12761, + "end": 12775, + "length": 15, + "parent_index": 1297 + } + }, + "referenced_declaration": 1012 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + } + ] + }, + "scope": 1261, + "type_description": { + "type_identifier": "t_function_$_t_contract$_IStargateRouter_$1012$", + "type_string": "function(contract IStargateRouter)" + } + }, + { + "id": 1303, + "name": "stargateWidget", + "node_type": 42, + "kind": 41, + "src": { + "id": 1304, + "line": 367, + "column": 4, + "start": 12784, + "end": 12849, + "length": 66, + "parent_index": 1261 + }, + "body": { + "id": 1321, + "node_type": 46, + "kind": 0, + "src": { + "id": 1304, + "line": 367, + "column": 4, + "start": 12784, + "end": 12849, + "length": 66, + "parent_index": 1303 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1305, + "node_type": 43, + "src": { + "id": 1306, + "line": 367, + "column": 53, + "start": 12833, + "end": 12847, + "length": 15, + "parent_index": 1303 + }, + "parameters": [ + { + "id": 1307, + "node_type": 44, + "src": { + "id": 1308, + "line": 367, + "column": 53, + "start": 12833, + "end": 12847, + "length": 15, + "parent_index": 1305 + }, + "scope": 1303, + "name": "", + "type_name": { + "id": 1309, + "node_type": 69, + "src": { + "id": 1310, + "line": 367, + "column": 53, + "start": 12833, + "end": 12847, + "length": 15, + "parent_index": 1307 + }, + "type_description": { + "type_identifier": "t_contract$_IStargateWidget_$1155", + "type_string": "contract IStargateWidget" + }, + "path_node": { + "id": 1311, + "name": "IStargateWidget", + "node_type": 52, + "referenced_declaration": 1155, + "src": { + "id": 1312, + "line": 367, + "column": 53, + "start": 12833, + "end": 12847, + "length": 15, + "parent_index": 1309 + } + }, + "referenced_declaration": 1155 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_contract$_IStargateWidget_$1155", + "type_string": "contract IStargateWidget" + } + ] + }, + "return_parameters": { + "id": 1313, + "node_type": 43, + "src": { + "id": 1314, + "line": 367, + "column": 53, + "start": 12833, + "end": 12847, + "length": 15, + "parent_index": 1303 + }, + "parameters": [ + { + "id": 1315, + "node_type": 44, + "src": { + "id": 1316, + "line": 367, + "column": 53, + "start": 12833, + "end": 12847, + "length": 15, + "parent_index": 1313 + }, + "scope": 1303, + "name": "", + "type_name": { + "id": 1317, + "node_type": 69, + "src": { + "id": 1318, + "line": 367, + "column": 53, + "start": 12833, + "end": 12847, + "length": 15, + "parent_index": 1315 + }, + "type_description": { + "type_identifier": "t_contract$_IStargateWidget_$1155", + "type_string": "contract IStargateWidget" + }, + "path_node": { + "id": 1319, + "name": "IStargateWidget", + "node_type": 52, + "referenced_declaration": 1155, + "src": { + "id": 1320, + "line": 367, + "column": 53, + "start": 12833, + "end": 12847, + "length": 15, + "parent_index": 1317 + } + }, + "referenced_declaration": 1155 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_contract$_IStargateWidget_$1155", + "type_string": "contract IStargateWidget" + } + ] + }, + "scope": 1261, + "type_description": { + "type_identifier": "t_function_$_t_contract$_IStargateWidget_$1155$", + "type_string": "function(contract IStargateWidget)" + } + }, + { + "id": 1323, + "name": "factory", + "node_type": 42, + "kind": 41, + "src": { + "id": 1324, + "line": 369, + "column": 4, + "start": 12856, + "end": 12906, + "length": 51, + "parent_index": 1261 + }, + "body": { + "id": 1337, + "node_type": 46, + "kind": 0, + "src": { + "id": 1324, + "line": 369, + "column": 4, + "start": 12856, + "end": 12906, + "length": 51, + "parent_index": 1323 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1325, + "node_type": 43, + "src": { + "id": 1326, + "line": 369, + "column": 46, + "start": 12898, + "end": 12904, + "length": 7, + "parent_index": 1323 + }, + "parameters": [ + { + "id": 1327, + "node_type": 44, + "src": { + "id": 1328, + "line": 369, + "column": 46, + "start": 12898, + "end": 12904, + "length": 7, + "parent_index": 1325 + }, + "scope": 1323, + "name": "", + "type_name": { + "id": 1329, + "node_type": 30, + "src": { + "id": 1330, + "line": 369, + "column": 46, + "start": 12898, + "end": 12904, + "length": 7, + "parent_index": 1327 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 1331, + "node_type": 43, + "src": { + "id": 1332, + "line": 369, + "column": 46, + "start": 12898, + "end": 12904, + "length": 7, + "parent_index": 1323 + }, + "parameters": [ + { + "id": 1333, + "node_type": 44, + "src": { + "id": 1334, + "line": 369, + "column": 46, + "start": 12898, + "end": 12904, + "length": 7, + "parent_index": 1331 + }, + "scope": 1323, + "name": "", + "type_name": { + "id": 1335, + "node_type": 30, + "src": { + "id": 1336, + "line": 369, + "column": 46, + "start": 12898, + "end": 12904, + "length": 7, + "parent_index": 1333 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 1261, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1339, + "name": "pairCodeHash", + "node_type": 42, + "kind": 41, + "src": { + "id": 1340, + "line": 371, + "column": 4, + "start": 12913, + "end": 12968, + "length": 56, + "parent_index": 1261 + }, + "body": { + "id": 1353, + "node_type": 46, + "kind": 0, + "src": { + "id": 1340, + "line": 371, + "column": 4, + "start": 12913, + "end": 12968, + "length": 56, + "parent_index": 1339 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1341, + "node_type": 43, + "src": { + "id": 1342, + "line": 371, + "column": 51, + "start": 12960, + "end": 12966, + "length": 7, + "parent_index": 1339 + }, + "parameters": [ + { + "id": 1343, + "node_type": 44, + "src": { + "id": 1344, + "line": 371, + "column": 51, + "start": 12960, + "end": 12966, + "length": 7, + "parent_index": 1341 + }, + "scope": 1339, + "name": "", + "type_name": { + "id": 1345, + "node_type": 30, + "src": { + "id": 1346, + "line": 371, + "column": 51, + "start": 12960, + "end": 12966, + "length": 7, + "parent_index": 1343 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "return_parameters": { + "id": 1347, + "node_type": 43, + "src": { + "id": 1348, + "line": 371, + "column": 51, + "start": 12960, + "end": 12966, + "length": 7, + "parent_index": 1339 + }, + "parameters": [ + { + "id": 1349, + "node_type": 44, + "src": { + "id": 1350, + "line": 371, + "column": 51, + "start": 12960, + "end": 12966, + "length": 7, + "parent_index": 1347 + }, + "scope": 1339, + "name": "", + "type_name": { + "id": 1351, + "node_type": 30, + "src": { + "id": 1352, + "line": 371, + "column": 51, + "start": 12960, + "end": 12966, + "length": 7, + "parent_index": 1349 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "scope": 1261, + "type_description": { + "type_identifier": "t_function_$_t_bytes32$", + "type_string": "function(bytes32)" + } + } + ], + "linearized_base_contracts": [ + 1261, + 1225, + 1226, + 1227 + ], + "base_contracts": [], + "contract_dependencies": [ + 1225, + 1226, + 1227 + ] + } + ], + "src": { + "id": 1214, + "line": 362, + "column": 0, + "start": 12613, + "end": 12970, + "length": 358, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IPool.sol b/data/tests/contracts/sushixswap/IPool.sol new file mode 100644 index 00000000..6b738eb8 --- /dev/null +++ b/data/tests/contracts/sushixswap/IPool.sol @@ -0,0 +1,82 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity 0.8.11; + +/// @notice Trident pool interface. +interface IPool { + /// @notice Executes a swap from one token to another. + /// @dev The input tokens must've already been sent to the pool. + /// @param data ABI-encoded params that the pool requires. + /// @return finalAmountOut The amount of output tokens that were sent to the user. + function swap(bytes calldata data) + external + returns (uint256 finalAmountOut); + + /// @notice Executes a swap from one token to another with a callback. + /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback. + /// @param data ABI-encoded params that the pool requires. + /// @return finalAmountOut The amount of output tokens that were sent to the user. + function flashSwap(bytes calldata data) + external + returns (uint256 finalAmountOut); + + /// @notice Mints liquidity tokens. + /// @param data ABI-encoded params that the pool requires. + /// @return liquidity The amount of liquidity tokens that were minted for the user. + function mint(bytes calldata data) external returns (uint256 liquidity); + + /// @notice Burns liquidity tokens. + /// @dev The input LP tokens must've already been sent to the pool. + /// @param data ABI-encoded params that the pool requires. + /// @return withdrawnAmounts The amount of various output tokens that were sent to the user. + function burn(bytes calldata data) + external + returns (TokenAmount[] memory withdrawnAmounts); + + /// @notice Burns liquidity tokens for a single output token. + /// @dev The input LP tokens must've already been sent to the pool. + /// @param data ABI-encoded params that the pool requires. + /// @return amountOut The amount of output tokens that were sent to the user. + function burnSingle(bytes calldata data) + external + returns (uint256 amountOut); + + /// @return A unique identifier for the pool type. + function poolIdentifier() external pure returns (bytes32); + + /// @return An array of tokens supported by the pool. + function getAssets() external view returns (address[] memory); + + /// @notice Simulates a trade and returns the expected output. + /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library. + /// @param data ABI-encoded params that the pool requires. + /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed. + function getAmountOut(bytes calldata data) + external + view + returns (uint256 finalAmountOut); + + /// @notice Simulates a trade and returns the expected output. + /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library. + /// @param data ABI-encoded params that the pool requires. + /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed. + function getAmountIn(bytes calldata data) + external + view + returns (uint256 finalAmountIn); + + /// @dev This event must be emitted on all swaps. + event Swap( + address indexed recipient, + address indexed tokenIn, + address indexed tokenOut, + uint256 amountIn, + uint256 amountOut + ); + + /// @dev This struct frames output tokens for burns. + struct TokenAmount { + address token; + uint256 amount; + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IPool.solgo.ast.json b/data/tests/contracts/sushixswap/IPool.solgo.ast.json new file mode 100644 index 00000000..c829dd75 --- /dev/null +++ b/data/tests/contracts/sushixswap/IPool.solgo.ast.json @@ -0,0 +1,1873 @@ +{ + "id": 1613, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 1613, + "name": "IPool", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IPool.sol" + }, + { + "id": 1482, + "name": "IERC20", + "absolute_path": "IERC20.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IPool.sol", + "name": "IPool", + "node_type": 1, + "nodes": [ + { + "id": 1631, + "node_type": 10, + "src": { + "id": 1632, + "line": 485, + "column": 0, + "start": 16749, + "end": 16771, + "length": 23, + "parent_index": 1613 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 1639, + "node_type": 29, + "src": { + "id": 0, + "line": 480, + "column": 0, + "start": 16678, + "end": 16699, + "length": 22, + "parent_index": 1613 + }, + "absolute_path": "IERC20.sol", + "file": "./IERC20.sol", + "scope": 1613, + "unit_alias": "", + "source_unit": 1482 + }, + { + "id": 1669, + "name": "IPool", + "node_type": 35, + "src": { + "id": 0, + "line": 488, + "column": 0, + "start": 16810, + "end": 20236, + "length": 3427, + "parent_index": 1613 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 1671, + "name": "swap", + "node_type": 42, + "kind": 41, + "src": { + "id": 1672, + "line": 493, + "column": 4, + "start": 17110, + "end": 17202, + "length": 93, + "parent_index": 1669 + }, + "body": { + "id": 1685, + "node_type": 46, + "kind": 0, + "src": { + "id": 1672, + "line": 493, + "column": 4, + "start": 17110, + "end": 17202, + "length": 93, + "parent_index": 1671 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1673, + "node_type": 43, + "src": { + "id": 1674, + "line": 493, + "column": 18, + "start": 17124, + "end": 17142, + "length": 19, + "parent_index": 1671 + }, + "parameters": [ + { + "id": 1675, + "node_type": 44, + "src": { + "id": 1676, + "line": 493, + "column": 18, + "start": 17124, + "end": 17142, + "length": 19, + "parent_index": 1673 + }, + "scope": 1671, + "name": "data", + "type_name": { + "id": 1677, + "node_type": 30, + "src": { + "id": 1678, + "line": 493, + "column": 18, + "start": 17124, + "end": 17128, + "length": 5, + "parent_index": 1675 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 4, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 1679, + "node_type": 43, + "src": { + "id": 1680, + "line": 495, + "column": 17, + "start": 17179, + "end": 17200, + "length": 22, + "parent_index": 1671 + }, + "parameters": [ + { + "id": 1681, + "node_type": 44, + "src": { + "id": 1682, + "line": 495, + "column": 17, + "start": 17179, + "end": 17200, + "length": 22, + "parent_index": 1679 + }, + "scope": 1671, + "name": "finalAmountOut", + "type_name": { + "id": 1683, + "node_type": 30, + "src": { + "id": 1684, + "line": 495, + "column": 17, + "start": 17179, + "end": 17185, + "length": 7, + "parent_index": 1681 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 1669, + "type_description": { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + } + }, + { + "id": 1687, + "name": "flashSwap", + "node_type": 42, + "kind": 41, + "src": { + "id": 1688, + "line": 501, + "column": 4, + "start": 17542, + "end": 17639, + "length": 98, + "parent_index": 1669 + }, + "body": { + "id": 1701, + "node_type": 46, + "kind": 0, + "src": { + "id": 1688, + "line": 501, + "column": 4, + "start": 17542, + "end": 17639, + "length": 98, + "parent_index": 1687 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1689, + "node_type": 43, + "src": { + "id": 1690, + "line": 501, + "column": 23, + "start": 17561, + "end": 17579, + "length": 19, + "parent_index": 1687 + }, + "parameters": [ + { + "id": 1691, + "node_type": 44, + "src": { + "id": 1692, + "line": 501, + "column": 23, + "start": 17561, + "end": 17579, + "length": 19, + "parent_index": 1689 + }, + "scope": 1687, + "name": "data", + "type_name": { + "id": 1693, + "node_type": 30, + "src": { + "id": 1694, + "line": 501, + "column": 23, + "start": 17561, + "end": 17565, + "length": 5, + "parent_index": 1691 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 4, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 1695, + "node_type": 43, + "src": { + "id": 1696, + "line": 503, + "column": 17, + "start": 17616, + "end": 17637, + "length": 22, + "parent_index": 1687 + }, + "parameters": [ + { + "id": 1697, + "node_type": 44, + "src": { + "id": 1698, + "line": 503, + "column": 17, + "start": 17616, + "end": 17637, + "length": 22, + "parent_index": 1695 + }, + "scope": 1687, + "name": "finalAmountOut", + "type_name": { + "id": 1699, + "node_type": 30, + "src": { + "id": 1700, + "line": 503, + "column": 17, + "start": 17616, + "end": 17622, + "length": 7, + "parent_index": 1697 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 1669, + "type_description": { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + } + }, + { + "id": 1703, + "name": "mint", + "node_type": 42, + "kind": 41, + "src": { + "id": 1704, + "line": 508, + "column": 4, + "start": 17837, + "end": 17908, + "length": 72, + "parent_index": 1669 + }, + "body": { + "id": 1717, + "node_type": 46, + "kind": 0, + "src": { + "id": 1704, + "line": 508, + "column": 4, + "start": 17837, + "end": 17908, + "length": 72, + "parent_index": 1703 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1705, + "node_type": 43, + "src": { + "id": 1706, + "line": 508, + "column": 18, + "start": 17851, + "end": 17869, + "length": 19, + "parent_index": 1703 + }, + "parameters": [ + { + "id": 1707, + "node_type": 44, + "src": { + "id": 1708, + "line": 508, + "column": 18, + "start": 17851, + "end": 17869, + "length": 19, + "parent_index": 1705 + }, + "scope": 1703, + "name": "data", + "type_name": { + "id": 1709, + "node_type": 30, + "src": { + "id": 1710, + "line": 508, + "column": 18, + "start": 17851, + "end": 17855, + "length": 5, + "parent_index": 1707 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 4, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 1711, + "node_type": 43, + "src": { + "id": 1712, + "line": 508, + "column": 57, + "start": 17890, + "end": 17906, + "length": 17, + "parent_index": 1703 + }, + "parameters": [ + { + "id": 1713, + "node_type": 44, + "src": { + "id": 1714, + "line": 508, + "column": 57, + "start": 17890, + "end": 17906, + "length": 17, + "parent_index": 1711 + }, + "scope": 1703, + "name": "liquidity", + "type_name": { + "id": 1715, + "node_type": 30, + "src": { + "id": 1716, + "line": 508, + "column": 57, + "start": 17890, + "end": 17896, + "length": 7, + "parent_index": 1713 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 1669, + "type_description": { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + } + }, + { + "id": 1719, + "name": "burn", + "node_type": 42, + "kind": 41, + "src": { + "id": 1720, + "line": 514, + "column": 4, + "start": 18187, + "end": 18294, + "length": 108, + "parent_index": 1669 + }, + "body": { + "id": 1736, + "node_type": 46, + "kind": 0, + "src": { + "id": 1720, + "line": 514, + "column": 4, + "start": 18187, + "end": 18294, + "length": 108, + "parent_index": 1719 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1721, + "node_type": 43, + "src": { + "id": 1722, + "line": 514, + "column": 18, + "start": 18201, + "end": 18219, + "length": 19, + "parent_index": 1719 + }, + "parameters": [ + { + "id": 1723, + "node_type": 44, + "src": { + "id": 1724, + "line": 514, + "column": 18, + "start": 18201, + "end": 18219, + "length": 19, + "parent_index": 1721 + }, + "scope": 1719, + "name": "data", + "type_name": { + "id": 1725, + "node_type": 30, + "src": { + "id": 1726, + "line": 514, + "column": 18, + "start": 18201, + "end": 18205, + "length": 5, + "parent_index": 1723 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 4, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 1727, + "node_type": 43, + "src": { + "id": 1728, + "line": 516, + "column": 17, + "start": 18256, + "end": 18292, + "length": 37, + "parent_index": 1719 + }, + "parameters": [ + { + "id": 1729, + "node_type": 44, + "src": { + "id": 1730, + "line": 516, + "column": 17, + "start": 18256, + "end": 18292, + "length": 37, + "parent_index": 1727 + }, + "scope": 1719, + "name": "withdrawnAmounts", + "type_name": { + "id": 1731, + "node_type": 69, + "src": { + "id": 1733, + "line": 516, + "column": 17, + "start": 18256, + "end": 18266, + "length": 11, + "parent_index": 1729 + }, + "name": "TokenAmount", + "type_description": { + "type_identifier": "t_struct$_IPool_TokenAmount_$1844", + "type_string": "struct IPool.TokenAmount" + }, + "path_node": { + "id": 1734, + "name": "TokenAmount", + "node_type": 52, + "referenced_declaration": 0, + "src": { + "id": 1735, + "line": 516, + "column": 17, + "start": 18256, + "end": 18266, + "length": 11, + "parent_index": 1731 + } + }, + "referenced_declaration": 1844 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + null + ] + }, + "scope": 1669, + "type_description": { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + } + }, + { + "id": 1738, + "name": "burnSingle", + "node_type": 42, + "kind": 41, + "src": { + "id": 1739, + "line": 522, + "column": 4, + "start": 18584, + "end": 18677, + "length": 94, + "parent_index": 1669 + }, + "body": { + "id": 1752, + "node_type": 46, + "kind": 0, + "src": { + "id": 1739, + "line": 522, + "column": 4, + "start": 18584, + "end": 18677, + "length": 94, + "parent_index": 1738 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1740, + "node_type": 43, + "src": { + "id": 1741, + "line": 522, + "column": 24, + "start": 18604, + "end": 18622, + "length": 19, + "parent_index": 1738 + }, + "parameters": [ + { + "id": 1742, + "node_type": 44, + "src": { + "id": 1743, + "line": 522, + "column": 24, + "start": 18604, + "end": 18622, + "length": 19, + "parent_index": 1740 + }, + "scope": 1738, + "name": "data", + "type_name": { + "id": 1744, + "node_type": 30, + "src": { + "id": 1745, + "line": 522, + "column": 24, + "start": 18604, + "end": 18608, + "length": 5, + "parent_index": 1742 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 4, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 1746, + "node_type": 43, + "src": { + "id": 1747, + "line": 524, + "column": 17, + "start": 18659, + "end": 18675, + "length": 17, + "parent_index": 1738 + }, + "parameters": [ + { + "id": 1748, + "node_type": 44, + "src": { + "id": 1749, + "line": 524, + "column": 17, + "start": 18659, + "end": 18675, + "length": 17, + "parent_index": 1746 + }, + "scope": 1738, + "name": "amountOut", + "type_name": { + "id": 1750, + "node_type": 30, + "src": { + "id": 1751, + "line": 524, + "column": 17, + "start": 18659, + "end": 18665, + "length": 7, + "parent_index": 1748 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 1669, + "type_description": { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + } + }, + { + "id": 1754, + "name": "poolIdentifier", + "node_type": 42, + "kind": 41, + "src": { + "id": 1755, + "line": 527, + "column": 4, + "start": 18739, + "end": 18796, + "length": 58, + "parent_index": 1669 + }, + "body": { + "id": 1768, + "node_type": 46, + "kind": 0, + "src": { + "id": 1755, + "line": 527, + "column": 4, + "start": 18739, + "end": 18796, + "length": 58, + "parent_index": 1754 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1756, + "node_type": 43, + "src": { + "id": 1757, + "line": 527, + "column": 53, + "start": 18788, + "end": 18794, + "length": 7, + "parent_index": 1754 + }, + "parameters": [ + { + "id": 1758, + "node_type": 44, + "src": { + "id": 1759, + "line": 527, + "column": 53, + "start": 18788, + "end": 18794, + "length": 7, + "parent_index": 1756 + }, + "scope": 1754, + "name": "", + "type_name": { + "id": 1760, + "node_type": 30, + "src": { + "id": 1761, + "line": 527, + "column": 53, + "start": 18788, + "end": 18794, + "length": 7, + "parent_index": 1758 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "return_parameters": { + "id": 1762, + "node_type": 43, + "src": { + "id": 1763, + "line": 527, + "column": 53, + "start": 18788, + "end": 18794, + "length": 7, + "parent_index": 1754 + }, + "parameters": [ + { + "id": 1764, + "node_type": 44, + "src": { + "id": 1765, + "line": 527, + "column": 53, + "start": 18788, + "end": 18794, + "length": 7, + "parent_index": 1762 + }, + "scope": 1754, + "name": "", + "type_name": { + "id": 1766, + "node_type": 30, + "src": { + "id": 1767, + "line": 527, + "column": 53, + "start": 18788, + "end": 18794, + "length": 7, + "parent_index": 1764 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "scope": 1669, + "type_description": { + "type_identifier": "t_function_$_t_bytes32$", + "type_string": "function(bytes32)" + } + }, + { + "id": 1770, + "name": "getAssets", + "node_type": 42, + "kind": 41, + "src": { + "id": 1771, + "line": 530, + "column": 4, + "start": 18861, + "end": 18922, + "length": 62, + "parent_index": 1669 + }, + "body": { + "id": 1786, + "node_type": 46, + "kind": 0, + "src": { + "id": 1771, + "line": 530, + "column": 4, + "start": 18861, + "end": 18922, + "length": 62, + "parent_index": 1770 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1772, + "node_type": 43, + "src": { + "id": 1773, + "line": 530, + "column": 48, + "start": 18905, + "end": 18920, + "length": 16, + "parent_index": 1770 + }, + "parameters": [ + { + "id": 1774, + "node_type": 44, + "src": { + "id": 1775, + "line": 530, + "column": 48, + "start": 18905, + "end": 18920, + "length": 16, + "parent_index": 1772 + }, + "scope": 1770, + "name": "", + "type_name": { + "id": 1776, + "node_type": 16, + "src": { + "id": 1778, + "line": 530, + "column": 48, + "start": 18905, + "end": 18911, + "length": 7, + "parent_index": 1774 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 1779, + "node_type": 43, + "src": { + "id": 1780, + "line": 530, + "column": 48, + "start": 18905, + "end": 18920, + "length": 16, + "parent_index": 1770 + }, + "parameters": [ + { + "id": 1781, + "node_type": 44, + "src": { + "id": 1782, + "line": 530, + "column": 48, + "start": 18905, + "end": 18920, + "length": 16, + "parent_index": 1779 + }, + "scope": 1770, + "name": "", + "type_name": { + "id": 1783, + "node_type": 16, + "src": { + "id": 1785, + "line": 530, + "column": 48, + "start": 18905, + "end": 18911, + "length": 7, + "parent_index": 1781 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 1669, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 1788, + "name": "getAmountOut", + "node_type": 42, + "kind": 41, + "src": { + "id": 1789, + "line": 536, + "column": 4, + "start": 19282, + "end": 19395, + "length": 114, + "parent_index": 1669 + }, + "body": { + "id": 1802, + "node_type": 46, + "kind": 0, + "src": { + "id": 1789, + "line": 536, + "column": 4, + "start": 19282, + "end": 19395, + "length": 114, + "parent_index": 1788 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1790, + "node_type": 43, + "src": { + "id": 1791, + "line": 536, + "column": 26, + "start": 19304, + "end": 19322, + "length": 19, + "parent_index": 1788 + }, + "parameters": [ + { + "id": 1792, + "node_type": 44, + "src": { + "id": 1793, + "line": 536, + "column": 26, + "start": 19304, + "end": 19322, + "length": 19, + "parent_index": 1790 + }, + "scope": 1788, + "name": "data", + "type_name": { + "id": 1794, + "node_type": 30, + "src": { + "id": 1795, + "line": 536, + "column": 26, + "start": 19304, + "end": 19308, + "length": 5, + "parent_index": 1792 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 4, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 1796, + "node_type": 43, + "src": { + "id": 1797, + "line": 539, + "column": 17, + "start": 19372, + "end": 19393, + "length": 22, + "parent_index": 1788 + }, + "parameters": [ + { + "id": 1798, + "node_type": 44, + "src": { + "id": 1799, + "line": 539, + "column": 17, + "start": 19372, + "end": 19393, + "length": 22, + "parent_index": 1796 + }, + "scope": 1788, + "name": "finalAmountOut", + "type_name": { + "id": 1800, + "node_type": 30, + "src": { + "id": 1801, + "line": 539, + "column": 17, + "start": 19372, + "end": 19378, + "length": 7, + "parent_index": 1798 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 1669, + "type_description": { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + } + }, + { + "id": 1804, + "name": "getAmountIn", + "node_type": 42, + "kind": 41, + "src": { + "id": 1805, + "line": 545, + "column": 4, + "start": 19755, + "end": 19866, + "length": 112, + "parent_index": 1669 + }, + "body": { + "id": 1818, + "node_type": 46, + "kind": 0, + "src": { + "id": 1805, + "line": 545, + "column": 4, + "start": 19755, + "end": 19866, + "length": 112, + "parent_index": 1804 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1806, + "node_type": 43, + "src": { + "id": 1807, + "line": 545, + "column": 25, + "start": 19776, + "end": 19794, + "length": 19, + "parent_index": 1804 + }, + "parameters": [ + { + "id": 1808, + "node_type": 44, + "src": { + "id": 1809, + "line": 545, + "column": 25, + "start": 19776, + "end": 19794, + "length": 19, + "parent_index": 1806 + }, + "scope": 1804, + "name": "data", + "type_name": { + "id": 1810, + "node_type": 30, + "src": { + "id": 1811, + "line": 545, + "column": 25, + "start": 19776, + "end": 19780, + "length": 5, + "parent_index": 1808 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 4, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 1812, + "node_type": 43, + "src": { + "id": 1813, + "line": 548, + "column": 17, + "start": 19844, + "end": 19864, + "length": 21, + "parent_index": 1804 + }, + "parameters": [ + { + "id": 1814, + "node_type": 44, + "src": { + "id": 1815, + "line": 548, + "column": 17, + "start": 19844, + "end": 19864, + "length": 21, + "parent_index": 1812 + }, + "scope": 1804, + "name": "finalAmountIn", + "type_name": { + "id": 1816, + "node_type": 30, + "src": { + "id": 1817, + "line": 548, + "column": 17, + "start": 19844, + "end": 19850, + "length": 7, + "parent_index": 1814 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 1669, + "type_description": { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + } + }, + { + "id": 1820, + "node_type": 57, + "src": { + "id": 1821, + "line": 551, + "column": 4, + "start": 19927, + "end": 20098, + "length": 172, + "parent_index": 1669 + }, + "parameters": { + "id": 1822, + "node_type": 43, + "src": { + "id": 1821, + "line": 551, + "column": 4, + "start": 19927, + "end": 20098, + "length": 172, + "parent_index": 1820 + }, + "parameters": [ + { + "id": 1823, + "node_type": 44, + "src": { + "id": 1824, + "line": 552, + "column": 8, + "start": 19947, + "end": 19971, + "length": 25, + "parent_index": 1822 + }, + "scope": 1820, + "name": "recipient", + "type_name": { + "id": 1825, + "node_type": 30, + "src": { + "id": 1826, + "line": 552, + "column": 8, + "start": 19947, + "end": 19953, + "length": 7, + "parent_index": 1823 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + }, + { + "id": 1827, + "node_type": 44, + "src": { + "id": 1828, + "line": 553, + "column": 8, + "start": 19982, + "end": 20004, + "length": 23, + "parent_index": 1822 + }, + "scope": 1820, + "name": "tokenIn", + "type_name": { + "id": 1829, + "node_type": 30, + "src": { + "id": 1830, + "line": 553, + "column": 8, + "start": 19982, + "end": 19988, + "length": 7, + "parent_index": 1827 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + }, + { + "id": 1831, + "node_type": 44, + "src": { + "id": 1832, + "line": 554, + "column": 8, + "start": 20015, + "end": 20038, + "length": 24, + "parent_index": 1822 + }, + "scope": 1820, + "name": "tokenOut", + "type_name": { + "id": 1833, + "node_type": 30, + "src": { + "id": 1834, + "line": 554, + "column": 8, + "start": 20015, + "end": 20021, + "length": 7, + "parent_index": 1831 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + }, + { + "id": 1835, + "node_type": 44, + "src": { + "id": 1836, + "line": 555, + "column": 8, + "start": 20049, + "end": 20064, + "length": 16, + "parent_index": 1822 + }, + "scope": 1820, + "name": "amountIn", + "type_name": { + "id": 1837, + "node_type": 30, + "src": { + "id": 1838, + "line": 555, + "column": 8, + "start": 20049, + "end": 20055, + "length": 7, + "parent_index": 1835 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1839, + "node_type": 44, + "src": { + "id": 1840, + "line": 556, + "column": 8, + "start": 20075, + "end": 20091, + "length": 17, + "parent_index": 1822 + }, + "scope": 1820, + "name": "amountOut", + "type_name": { + "id": 1841, + "node_type": 30, + "src": { + "id": 1842, + "line": 556, + "column": 8, + "start": 20075, + "end": 20081, + "length": 7, + "parent_index": 1839 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "name": "Swap", + "anonymous": false + }, + { + "id": 1844, + "node_type": 67, + "src": { + "id": 1845, + "line": 560, + "column": 4, + "start": 20162, + "end": 20234, + "length": 73, + "parent_index": 1613 + }, + "name": "TokenAmount", + "canonical_name": "IPool.TokenAmount", + "type_description": { + "type_identifier": "t_struct$_IPool_TokenAmount_$1844", + "type_string": "struct IPool.TokenAmount" + }, + "members": [ + { + "id": 1846, + "node_type": 44, + "src": { + "id": 1847, + "line": 561, + "column": 8, + "start": 20191, + "end": 20204, + "length": 14, + "parent_index": 1844 + }, + "scope": 1669, + "name": "token", + "type_name": { + "id": 1848, + "node_type": 30, + "src": { + "id": 1849, + "line": 561, + "column": 8, + "start": 20191, + "end": 20197, + "length": 7, + "parent_index": 1846 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1850, + "node_type": 44, + "src": { + "id": 1851, + "line": 562, + "column": 8, + "start": 20214, + "end": 20228, + "length": 15, + "parent_index": 1844 + }, + "scope": 1669, + "name": "amount", + "type_name": { + "id": 1852, + "node_type": 30, + "src": { + "id": 1853, + "line": 562, + "column": 8, + "start": 20214, + "end": 20220, + "length": 7, + "parent_index": 1850 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + } + ], + "visibility": 3, + "storage_location": 1 + } + ], + "linearized_base_contracts": [ + 1669, + 1639 + ], + "base_contracts": [], + "contract_dependencies": [ + 1639 + ] + } + ], + "src": { + "id": 1614, + "line": 488, + "column": 0, + "start": 16810, + "end": 20236, + "length": 3427, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IStargateAdapter.sol b/data/tests/contracts/sushixswap/IStargateAdapter.sol new file mode 100644 index 00000000..18535fc9 --- /dev/null +++ b/data/tests/contracts/sushixswap/IStargateAdapter.sol @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: GPL-3.0 + +pragma solidity 0.8.11; + +import "./SafeERC20.sol"; +import "./ImmutableState.sol"; +import "./ISushiXSwap.sol"; +import "./IStargateReceiver.sol"; +import "./IStargateWidget.sol"; + +interface IStargateAdapter {} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IStargateAdapter.solgo.ast.json b/data/tests/contracts/sushixswap/IStargateAdapter.solgo.ast.json new file mode 100644 index 00000000..d51b14aa --- /dev/null +++ b/data/tests/contracts/sushixswap/IStargateAdapter.solgo.ast.json @@ -0,0 +1,199 @@ +{ + "id": 6764, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 6764, + "name": "IStargateAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateAdapter.sol" + }, + { + "id": 6650, + "name": "SafeERC20", + "absolute_path": "SafeERC20.sol" + }, + { + "id": 6650, + "name": "ImmutableState", + "absolute_path": "ImmutableState.sol" + }, + { + "id": 6650, + "name": "ISushiXSwap", + "absolute_path": "ISushiXSwap.sol" + }, + { + "id": 6650, + "name": "IStargateReceiver", + "absolute_path": "IStargateReceiver.sol" + }, + { + "id": 6650, + "name": "IStargateWidget", + "absolute_path": "IStargateWidget.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateAdapter.sol", + "name": "IStargateAdapter", + "node_type": 1, + "nodes": [ + { + "id": 6810, + "node_type": 10, + "src": { + "id": 6811, + "line": 1423, + "column": 0, + "start": 49766, + "end": 49788, + "length": 23, + "parent_index": 6764 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 6842, + "node_type": 29, + "src": { + "id": 0, + "line": 1425, + "column": 0, + "start": 49791, + "end": 49815, + "length": 25, + "parent_index": 6764 + }, + "absolute_path": "SafeERC20.sol", + "file": "./SafeERC20.sol", + "scope": 6764, + "unit_alias": "", + "source_unit": 6650 + }, + { + "id": 6843, + "node_type": 29, + "src": { + "id": 0, + "line": 1426, + "column": 0, + "start": 49817, + "end": 49846, + "length": 30, + "parent_index": 6764 + }, + "absolute_path": "ImmutableState.sol", + "file": "./ImmutableState.sol", + "scope": 6764, + "unit_alias": "", + "source_unit": 6650 + }, + { + "id": 6844, + "node_type": 29, + "src": { + "id": 0, + "line": 1427, + "column": 0, + "start": 49848, + "end": 49874, + "length": 27, + "parent_index": 6764 + }, + "absolute_path": "ISushiXSwap.sol", + "file": "./ISushiXSwap.sol", + "scope": 6764, + "unit_alias": "", + "source_unit": 6650 + }, + { + "id": 6845, + "node_type": 29, + "src": { + "id": 0, + "line": 1428, + "column": 0, + "start": 49876, + "end": 49908, + "length": 33, + "parent_index": 6764 + }, + "absolute_path": "IStargateReceiver.sol", + "file": "./IStargateReceiver.sol", + "scope": 6764, + "unit_alias": "", + "source_unit": 6650 + }, + { + "id": 6846, + "node_type": 29, + "src": { + "id": 0, + "line": 1429, + "column": 0, + "start": 49910, + "end": 49940, + "length": 31, + "parent_index": 6764 + }, + "absolute_path": "IStargateWidget.sol", + "file": "./IStargateWidget.sol", + "scope": 6764, + "unit_alias": "", + "source_unit": 6650 + }, + { + "id": 6848, + "name": "IStargateAdapter", + "node_type": 35, + "src": { + "id": 0, + "line": 1431, + "column": 0, + "start": 49943, + "end": 49971, + "length": 29, + "parent_index": 6764 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [], + "linearized_base_contracts": [ + 6848, + 6842, + 6843, + 6844, + 6845, + 6846 + ], + "base_contracts": [], + "contract_dependencies": [ + 6842, + 6843, + 6844, + 6845, + 6846 + ] + } + ], + "src": { + "id": 6765, + "line": 1431, + "column": 0, + "start": 49943, + "end": 49971, + "length": 29, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IStargateReceiver.sol b/data/tests/contracts/sushixswap/IStargateReceiver.sol new file mode 100644 index 00000000..13d80051 --- /dev/null +++ b/data/tests/contracts/sushixswap/IStargateReceiver.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: GPL-3.0 + +pragma solidity 0.8.11; + +interface IStargateReceiver { + function sgReceive( + uint16 _chainId, + bytes memory _srcAddress, + uint256 _nonce, + address _token, + uint256 amountLD, + bytes memory payload + ) external; +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IStargateReceiver.solgo.ast.json b/data/tests/contracts/sushixswap/IStargateReceiver.solgo.ast.json new file mode 100644 index 00000000..06ff9b21 --- /dev/null +++ b/data/tests/contracts/sushixswap/IStargateReceiver.solgo.ast.json @@ -0,0 +1,521 @@ +{ + "id": 6650, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 6650, + "name": "IStargateReceiver", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateReceiver.sol" + }, + { + "id": 6547, + "name": "BentoAdapter", + "absolute_path": "BentoAdapter.sol" + }, + { + "id": 6547, + "name": "TokenAdapter", + "absolute_path": "TokenAdapter.sol" + }, + { + "id": 6547, + "name": "SushiLegacyAdapter", + "absolute_path": "SushiLegacyAdapter.sol" + }, + { + "id": 6547, + "name": "TridentSwapAdapter", + "absolute_path": "TridentSwapAdapter.sol" + }, + { + "id": 6547, + "name": "StargateAdapter", + "absolute_path": "StargateAdapter.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateReceiver.sol", + "name": "IStargateReceiver", + "node_type": 1, + "nodes": [ + { + "id": 6694, + "node_type": 10, + "src": { + "id": 6695, + "line": 1408, + "column": 0, + "start": 49469, + "end": 49491, + "length": 23, + "parent_index": 6650 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 6721, + "node_type": 29, + "src": { + "id": 0, + "line": 1392, + "column": 0, + "start": 49107, + "end": 49134, + "length": 28, + "parent_index": 6650 + }, + "absolute_path": "BentoAdapter.sol", + "file": "./BentoAdapter.sol", + "scope": 6650, + "unit_alias": "", + "source_unit": 6547 + }, + { + "id": 6722, + "node_type": 29, + "src": { + "id": 0, + "line": 1393, + "column": 0, + "start": 49136, + "end": 49163, + "length": 28, + "parent_index": 6650 + }, + "absolute_path": "TokenAdapter.sol", + "file": "./TokenAdapter.sol", + "scope": 6650, + "unit_alias": "", + "source_unit": 6547 + }, + { + "id": 6723, + "node_type": 29, + "src": { + "id": 0, + "line": 1394, + "column": 0, + "start": 49165, + "end": 49198, + "length": 34, + "parent_index": 6650 + }, + "absolute_path": "SushiLegacyAdapter.sol", + "file": "./SushiLegacyAdapter.sol", + "scope": 6650, + "unit_alias": "", + "source_unit": 6547 + }, + { + "id": 6724, + "node_type": 29, + "src": { + "id": 0, + "line": 1395, + "column": 0, + "start": 49200, + "end": 49233, + "length": 34, + "parent_index": 6650 + }, + "absolute_path": "TridentSwapAdapter.sol", + "file": "./TridentSwapAdapter.sol", + "scope": 6650, + "unit_alias": "", + "source_unit": 6547 + }, + { + "id": 6725, + "node_type": 29, + "src": { + "id": 0, + "line": 1396, + "column": 0, + "start": 49235, + "end": 49265, + "length": 31, + "parent_index": 6650 + }, + "absolute_path": "StargateAdapter.sol", + "file": "./StargateAdapter.sol", + "scope": 6650, + "unit_alias": "", + "source_unit": 6547 + }, + { + "id": 6732, + "name": "IStargateReceiver", + "node_type": 35, + "src": { + "id": 0, + "line": 1410, + "column": 0, + "start": 49494, + "end": 49726, + "length": 233, + "parent_index": 6650 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 6734, + "name": "sgReceive", + "node_type": 42, + "kind": 41, + "src": { + "id": 6735, + "line": 1411, + "column": 4, + "start": 49528, + "end": 49724, + "length": 197, + "parent_index": 6732 + }, + "body": { + "id": 6763, + "node_type": 46, + "kind": 0, + "src": { + "id": 6735, + "line": 1411, + "column": 4, + "start": 49528, + "end": 49724, + "length": 197, + "parent_index": 6734 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 6736, + "node_type": 43, + "src": { + "id": 6737, + "line": 1412, + "column": 8, + "start": 49556, + "end": 49708, + "length": 153, + "parent_index": 6734 + }, + "parameters": [ + { + "id": 6738, + "node_type": 44, + "src": { + "id": 6739, + "line": 1412, + "column": 8, + "start": 49556, + "end": 49570, + "length": 15, + "parent_index": 6736 + }, + "scope": 6734, + "name": "_chainId", + "type_name": { + "id": 6740, + "node_type": 30, + "src": { + "id": 6741, + "line": 1412, + "column": 8, + "start": 49556, + "end": 49561, + "length": 6, + "parent_index": 6738 + }, + "name": "uint16", + "type_description": { + "type_identifier": "t_uint16", + "type_string": "uint16" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6742, + "node_type": 44, + "src": { + "id": 6743, + "line": 1413, + "column": 8, + "start": 49581, + "end": 49604, + "length": 24, + "parent_index": 6736 + }, + "scope": 6734, + "name": "_srcAddress", + "type_name": { + "id": 6744, + "node_type": 30, + "src": { + "id": 6745, + "line": 1413, + "column": 8, + "start": 49581, + "end": 49585, + "length": 5, + "parent_index": 6742 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6746, + "node_type": 44, + "src": { + "id": 6747, + "line": 1414, + "column": 8, + "start": 49615, + "end": 49628, + "length": 14, + "parent_index": 6736 + }, + "scope": 6734, + "name": "_nonce", + "type_name": { + "id": 6748, + "node_type": 30, + "src": { + "id": 6749, + "line": 1414, + "column": 8, + "start": 49615, + "end": 49621, + "length": 7, + "parent_index": 6746 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6750, + "node_type": 44, + "src": { + "id": 6751, + "line": 1415, + "column": 8, + "start": 49639, + "end": 49652, + "length": 14, + "parent_index": 6736 + }, + "scope": 6734, + "name": "_token", + "type_name": { + "id": 6752, + "node_type": 30, + "src": { + "id": 6753, + "line": 1415, + "column": 8, + "start": 49639, + "end": 49645, + "length": 7, + "parent_index": 6750 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 6754, + "node_type": 44, + "src": { + "id": 6755, + "line": 1416, + "column": 8, + "start": 49663, + "end": 49678, + "length": 16, + "parent_index": 6736 + }, + "scope": 6734, + "name": "amountLD", + "type_name": { + "id": 6756, + "node_type": 30, + "src": { + "id": 6757, + "line": 1416, + "column": 8, + "start": 49663, + "end": 49669, + "length": 7, + "parent_index": 6754 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6758, + "node_type": 44, + "src": { + "id": 6759, + "line": 1417, + "column": 8, + "start": 49689, + "end": 49708, + "length": 20, + "parent_index": 6736 + }, + "scope": 6734, + "name": "payload", + "type_name": { + "id": 6760, + "node_type": 30, + "src": { + "id": 6761, + "line": 1417, + "column": 8, + "start": 49689, + "end": 49693, + "length": 5, + "parent_index": 6758 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint16", + "type_string": "uint16" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 6762, + "node_type": 43, + "src": { + "id": 6735, + "line": 1411, + "column": 4, + "start": 49528, + "end": 49724, + "length": 197, + "parent_index": 6734 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 6732, + "type_description": { + "type_identifier": "t_function_$_t_uint16$_t_bytes$_t_uint256$_t_address$_t_uint256$_t_bytes$", + "type_string": "function(uint16,bytes,uint256,address,uint256,bytes)" + } + } + ], + "linearized_base_contracts": [ + 6732, + 6721, + 6722, + 6723, + 6724, + 6725 + ], + "base_contracts": [], + "contract_dependencies": [ + 6721, + 6722, + 6723, + 6724, + 6725 + ] + } + ], + "src": { + "id": 6651, + "line": 1410, + "column": 0, + "start": 49494, + "end": 49726, + "length": 233, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IStargateRouter.sol b/data/tests/contracts/sushixswap/IStargateRouter.sol new file mode 100644 index 00000000..02a0e928 --- /dev/null +++ b/data/tests/contracts/sushixswap/IStargateRouter.sol @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: GPL-3.0 + +pragma solidity 0.8.11; + +interface IStargateRouter { + + struct lzTxObj { + uint256 dstGasForCall; + uint256 dstNativeAmount; + bytes dstNativeAddr; + } + + function swap( + uint16 _dstChainId, + uint256 _srcPoolId, + uint256 _dstPoolId, + address payable _refundAddress, + uint256 _amountLD, + uint256 _minAmountLD, + lzTxObj memory _lzTxParams, + bytes calldata _to, + bytes calldata _payload + ) external payable; + + function quoteLayerZeroFee( + uint16 _dstChainId, + uint8 _functionType, + bytes calldata _toAddress, + bytes calldata _transferAndCallPayload, + lzTxObj memory _lzTxParams + ) external view returns (uint256, uint256); +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IStargateRouter.solgo.ast.json b/data/tests/contracts/sushixswap/IStargateRouter.solgo.ast.json new file mode 100644 index 00000000..2c2fbd2c --- /dev/null +++ b/data/tests/contracts/sushixswap/IStargateRouter.solgo.ast.json @@ -0,0 +1,1040 @@ +{ + "id": 1012, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 1012, + "name": "IStargateRouter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateRouter.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateRouter.sol", + "name": "IStargateRouter", + "node_type": 1, + "nodes": [ + { + "id": 1018, + "node_type": 10, + "src": { + "id": 1019, + "line": 315, + "column": 0, + "start": 11543, + "end": 11565, + "length": 23, + "parent_index": 1012 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 1056, + "name": "IStargateRouter", + "node_type": 35, + "src": { + "id": 0, + "line": 317, + "column": 0, + "start": 11568, + "end": 12294, + "length": 727, + "parent_index": 1012 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 1058, + "node_type": 67, + "src": { + "id": 1059, + "line": 319, + "column": 4, + "start": 11601, + "end": 11715, + "length": 115, + "parent_index": 1012 + }, + "name": "lzTxObj", + "canonical_name": "IStargateRouter.lzTxObj", + "type_description": { + "type_identifier": "t_struct$_IStargateRouter_lzTxObj_$1058", + "type_string": "struct IStargateRouter.lzTxObj" + }, + "members": [ + { + "id": 1060, + "node_type": 44, + "src": { + "id": 1061, + "line": 320, + "column": 8, + "start": 11626, + "end": 11647, + "length": 22, + "parent_index": 1058 + }, + "scope": 1056, + "name": "dstGasForCall", + "type_name": { + "id": 1062, + "node_type": 30, + "src": { + "id": 1063, + "line": 320, + "column": 8, + "start": 11626, + "end": 11632, + "length": 7, + "parent_index": 1060 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1064, + "node_type": 44, + "src": { + "id": 1065, + "line": 321, + "column": 8, + "start": 11657, + "end": 11680, + "length": 24, + "parent_index": 1058 + }, + "scope": 1056, + "name": "dstNativeAmount", + "type_name": { + "id": 1066, + "node_type": 30, + "src": { + "id": 1067, + "line": 321, + "column": 8, + "start": 11657, + "end": 11663, + "length": 7, + "parent_index": 1064 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1068, + "node_type": 44, + "src": { + "id": 1069, + "line": 322, + "column": 8, + "start": 11690, + "end": 11709, + "length": 20, + "parent_index": 1058 + }, + "scope": 1056, + "name": "dstNativeAddr", + "type_name": { + "id": 1070, + "node_type": 30, + "src": { + "id": 1071, + "line": 322, + "column": 8, + "start": 11690, + "end": 11694, + "length": 5, + "parent_index": 1068 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + } + ], + "visibility": 3, + "storage_location": 1 + }, + { + "id": 1073, + "name": "swap", + "node_type": 42, + "kind": 41, + "src": { + "id": 1074, + "line": 325, + "column": 4, + "start": 11722, + "end": 12036, + "length": 315, + "parent_index": 1056 + }, + "body": { + "id": 1116, + "node_type": 46, + "kind": 0, + "src": { + "id": 1074, + "line": 325, + "column": 4, + "start": 11722, + "end": 12036, + "length": 315, + "parent_index": 1073 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 3, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1075, + "node_type": 43, + "src": { + "id": 1076, + "line": 326, + "column": 8, + "start": 11745, + "end": 12012, + "length": 268, + "parent_index": 1073 + }, + "parameters": [ + { + "id": 1077, + "node_type": 44, + "src": { + "id": 1078, + "line": 326, + "column": 8, + "start": 11745, + "end": 11762, + "length": 18, + "parent_index": 1075 + }, + "scope": 1073, + "name": "_dstChainId", + "type_name": { + "id": 1079, + "node_type": 30, + "src": { + "id": 1080, + "line": 326, + "column": 8, + "start": 11745, + "end": 11750, + "length": 6, + "parent_index": 1077 + }, + "name": "uint16", + "type_description": { + "type_identifier": "t_uint16", + "type_string": "uint16" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1081, + "node_type": 44, + "src": { + "id": 1082, + "line": 327, + "column": 8, + "start": 11773, + "end": 11790, + "length": 18, + "parent_index": 1075 + }, + "scope": 1073, + "name": "_srcPoolId", + "type_name": { + "id": 1083, + "node_type": 30, + "src": { + "id": 1084, + "line": 327, + "column": 8, + "start": 11773, + "end": 11779, + "length": 7, + "parent_index": 1081 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1085, + "node_type": 44, + "src": { + "id": 1086, + "line": 328, + "column": 8, + "start": 11801, + "end": 11818, + "length": 18, + "parent_index": 1075 + }, + "scope": 1073, + "name": "_dstPoolId", + "type_name": { + "id": 1087, + "node_type": 30, + "src": { + "id": 1088, + "line": 328, + "column": 8, + "start": 11801, + "end": 11807, + "length": 7, + "parent_index": 1085 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1089, + "node_type": 44, + "src": { + "id": 1090, + "line": 329, + "column": 8, + "start": 11829, + "end": 11858, + "length": 30, + "parent_index": 1075 + }, + "scope": 1073, + "name": "_refundAddress", + "type_name": { + "id": 1091, + "node_type": 30, + "src": { + "id": 1092, + "line": 329, + "column": 8, + "start": 11829, + "end": 11843, + "length": 15, + "parent_index": 1089 + }, + "name": "addresspayable", + "type_description": { + "type_identifier": "t_address_payable", + "type_string": "address" + }, + "state_mutability": 3, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 3 + }, + { + "id": 1093, + "node_type": 44, + "src": { + "id": 1094, + "line": 330, + "column": 8, + "start": 11869, + "end": 11885, + "length": 17, + "parent_index": 1075 + }, + "scope": 1073, + "name": "_amountLD", + "type_name": { + "id": 1095, + "node_type": 30, + "src": { + "id": 1096, + "line": 330, + "column": 8, + "start": 11869, + "end": 11875, + "length": 7, + "parent_index": 1093 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1097, + "node_type": 44, + "src": { + "id": 1098, + "line": 331, + "column": 8, + "start": 11896, + "end": 11915, + "length": 20, + "parent_index": 1075 + }, + "scope": 1073, + "name": "_minAmountLD", + "type_name": { + "id": 1099, + "node_type": 30, + "src": { + "id": 1100, + "line": 331, + "column": 8, + "start": 11896, + "end": 11902, + "length": 7, + "parent_index": 1097 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1101, + "node_type": 44, + "src": { + "id": 1102, + "line": 332, + "column": 8, + "start": 11926, + "end": 11951, + "length": 26, + "parent_index": 1075 + }, + "scope": 1073, + "name": "_lzTxParams", + "type_name": { + "id": 1103, + "node_type": 69, + "src": { + "id": 1104, + "line": 332, + "column": 8, + "start": 11926, + "end": 11932, + "length": 7, + "parent_index": 1101 + }, + "type_description": { + "type_identifier": "t_struct$_IStargateRouter_lzTxObj_$1058", + "type_string": "struct IStargateRouter.lzTxObj" + }, + "path_node": { + "id": 1105, + "name": "lzTxObj", + "node_type": 52, + "referenced_declaration": 1058, + "src": { + "id": 1106, + "line": 332, + "column": 8, + "start": 11926, + "end": 11932, + "length": 7, + "parent_index": 1103 + } + }, + "referenced_declaration": 1058 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1107, + "node_type": 44, + "src": { + "id": 1108, + "line": 333, + "column": 8, + "start": 11962, + "end": 11979, + "length": 18, + "parent_index": 1075 + }, + "scope": 1073, + "name": "_to", + "type_name": { + "id": 1109, + "node_type": 30, + "src": { + "id": 1110, + "line": 333, + "column": 8, + "start": 11962, + "end": 11966, + "length": 5, + "parent_index": 1107 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 4, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1111, + "node_type": 44, + "src": { + "id": 1112, + "line": 334, + "column": 8, + "start": 11990, + "end": 12012, + "length": 23, + "parent_index": 1075 + }, + "scope": 1073, + "name": "_payload", + "type_name": { + "id": 1113, + "node_type": 30, + "src": { + "id": 1114, + "line": 334, + "column": 8, + "start": 11990, + "end": 11994, + "length": 5, + "parent_index": 1111 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 4, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint16", + "type_string": "uint16" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_address_payable", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_struct$_IStargateRouter_lzTxObj_$1058", + "type_string": "struct IStargateRouter.lzTxObj" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 1115, + "node_type": 43, + "src": { + "id": 1074, + "line": 325, + "column": 4, + "start": 11722, + "end": 12036, + "length": 315, + "parent_index": 1073 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 1056, + "type_description": { + "type_identifier": "t_function_$_t_uint16$_t_uint256$_t_uint256$_t_address_payable$_t_uint256$_t_uint256$_t_struct$_IStargateRouter_lzTxObj_$1058$_t_bytes$_t_bytes$", + "type_string": "function(uint16,uint256,uint256,address,uint256,uint256,struct IStargateRouter.lzTxObj,bytes,bytes)" + } + }, + { + "id": 1118, + "name": "quoteLayerZeroFee", + "node_type": 42, + "kind": 41, + "src": { + "id": 1119, + "line": 337, + "column": 4, + "start": 12043, + "end": 12292, + "length": 250, + "parent_index": 1056 + }, + "body": { + "id": 1154, + "node_type": 46, + "kind": 0, + "src": { + "id": 1119, + "line": 337, + "column": 4, + "start": 12043, + "end": 12292, + "length": 250, + "parent_index": 1118 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1120, + "node_type": 43, + "src": { + "id": 1121, + "line": 338, + "column": 8, + "start": 12079, + "end": 12244, + "length": 166, + "parent_index": 1118 + }, + "parameters": [ + { + "id": 1122, + "node_type": 44, + "src": { + "id": 1123, + "line": 338, + "column": 8, + "start": 12079, + "end": 12096, + "length": 18, + "parent_index": 1120 + }, + "scope": 1118, + "name": "_dstChainId", + "type_name": { + "id": 1124, + "node_type": 30, + "src": { + "id": 1125, + "line": 338, + "column": 8, + "start": 12079, + "end": 12084, + "length": 6, + "parent_index": 1122 + }, + "name": "uint16", + "type_description": { + "type_identifier": "t_uint16", + "type_string": "uint16" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1126, + "node_type": 44, + "src": { + "id": 1127, + "line": 339, + "column": 8, + "start": 12107, + "end": 12125, + "length": 19, + "parent_index": 1120 + }, + "scope": 1118, + "name": "_functionType", + "type_name": { + "id": 1128, + "node_type": 30, + "src": { + "id": 1129, + "line": 339, + "column": 8, + "start": 12107, + "end": 12111, + "length": 5, + "parent_index": 1126 + }, + "name": "uint8", + "type_description": { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1130, + "node_type": 44, + "src": { + "id": 1131, + "line": 340, + "column": 8, + "start": 12136, + "end": 12160, + "length": 25, + "parent_index": 1120 + }, + "scope": 1118, + "name": "_toAddress", + "type_name": { + "id": 1132, + "node_type": 30, + "src": { + "id": 1133, + "line": 340, + "column": 8, + "start": 12136, + "end": 12140, + "length": 5, + "parent_index": 1130 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 4, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1134, + "node_type": 44, + "src": { + "id": 1135, + "line": 341, + "column": 8, + "start": 12171, + "end": 12208, + "length": 38, + "parent_index": 1120 + }, + "scope": 1118, + "name": "_transferAndCallPayload", + "type_name": { + "id": 1136, + "node_type": 30, + "src": { + "id": 1137, + "line": 341, + "column": 8, + "start": 12171, + "end": 12175, + "length": 5, + "parent_index": 1134 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 4, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1138, + "node_type": 44, + "src": { + "id": 1139, + "line": 342, + "column": 8, + "start": 12219, + "end": 12244, + "length": 26, + "parent_index": 1120 + }, + "scope": 1118, + "name": "_lzTxParams", + "type_name": { + "id": 1140, + "node_type": 69, + "src": { + "id": 1141, + "line": 342, + "column": 8, + "start": 12219, + "end": 12225, + "length": 7, + "parent_index": 1138 + }, + "type_description": { + "type_identifier": "t_struct$_IStargateRouter_lzTxObj_$1058", + "type_string": "struct IStargateRouter.lzTxObj" + }, + "path_node": { + "id": 1142, + "name": "lzTxObj", + "node_type": 52, + "referenced_declaration": 1058, + "src": { + "id": 1143, + "line": 342, + "column": 8, + "start": 12219, + "end": 12225, + "length": 7, + "parent_index": 1140 + } + }, + "referenced_declaration": 1058 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint16", + "type_string": "uint16" + }, + { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_struct$_IStargateRouter_lzTxObj_$1058", + "type_string": "struct IStargateRouter.lzTxObj" + } + ] + }, + "return_parameters": { + "id": 1144, + "node_type": 43, + "src": { + "id": 1145, + "line": 343, + "column": 29, + "start": 12275, + "end": 12290, + "length": 16, + "parent_index": 1118 + }, + "parameters": [ + { + "id": 1146, + "node_type": 44, + "src": { + "id": 1147, + "line": 343, + "column": 29, + "start": 12275, + "end": 12281, + "length": 7, + "parent_index": 1144 + }, + "scope": 1118, + "name": "", + "type_name": { + "id": 1148, + "node_type": 30, + "src": { + "id": 1149, + "line": 343, + "column": 29, + "start": 12275, + "end": 12281, + "length": 7, + "parent_index": 1146 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1150, + "node_type": 44, + "src": { + "id": 1151, + "line": 343, + "column": 38, + "start": 12284, + "end": 12290, + "length": 7, + "parent_index": 1144 + }, + "scope": 1118, + "name": "", + "type_name": { + "id": 1152, + "node_type": 30, + "src": { + "id": 1153, + "line": 343, + "column": 38, + "start": 12284, + "end": 12290, + "length": 7, + "parent_index": 1150 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 1056, + "type_description": { + "type_identifier": "t_function_$_t_uint16$_t_uint8$_t_bytes$_t_bytes$_t_struct$_IStargateRouter_lzTxObj_$1058$", + "type_string": "function(uint16,uint8,bytes,bytes,struct IStargateRouter.lzTxObj)" + } + } + ], + "linearized_base_contracts": [ + 1056 + ], + "base_contracts": [], + "contract_dependencies": [] + } + ], + "src": { + "id": 1013, + "line": 317, + "column": 0, + "start": 11568, + "end": 12294, + "length": 727, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IStargateWidget.sol b/data/tests/contracts/sushixswap/IStargateWidget.sol new file mode 100644 index 00000000..03d6c4e7 --- /dev/null +++ b/data/tests/contracts/sushixswap/IStargateWidget.sol @@ -0,0 +1,7 @@ +// SPDX-License-Identifier: GPL-3.0 + +pragma solidity 0.8.11; + +interface IStargateWidget { + function partnerSwap(bytes2 _partnerId) external; +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IStargateWidget.solgo.ast.json b/data/tests/contracts/sushixswap/IStargateWidget.solgo.ast.json new file mode 100644 index 00000000..c8b07416 --- /dev/null +++ b/data/tests/contracts/sushixswap/IStargateWidget.solgo.ast.json @@ -0,0 +1,189 @@ +{ + "id": 1155, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 1155, + "name": "IStargateWidget", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateWidget.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateWidget.sol", + "name": "IStargateWidget", + "node_type": 1, + "nodes": [ + { + "id": 1163, + "node_type": 10, + "src": { + "id": 1164, + "line": 348, + "column": 0, + "start": 12334, + "end": 12356, + "length": 23, + "parent_index": 1155 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 1201, + "name": "IStargateWidget", + "node_type": 35, + "src": { + "id": 0, + "line": 350, + "column": 0, + "start": 12359, + "end": 12441, + "length": 83, + "parent_index": 1155 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 1203, + "name": "partnerSwap", + "node_type": 42, + "kind": 41, + "src": { + "id": 1204, + "line": 351, + "column": 4, + "start": 12391, + "end": 12439, + "length": 49, + "parent_index": 1201 + }, + "body": { + "id": 1212, + "node_type": 46, + "kind": 0, + "src": { + "id": 1204, + "line": 351, + "column": 4, + "start": 12391, + "end": 12439, + "length": 49, + "parent_index": 1203 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1205, + "node_type": 43, + "src": { + "id": 1206, + "line": 351, + "column": 25, + "start": 12412, + "end": 12428, + "length": 17, + "parent_index": 1203 + }, + "parameters": [ + { + "id": 1207, + "node_type": 44, + "src": { + "id": 1208, + "line": 351, + "column": 25, + "start": 12412, + "end": 12428, + "length": 17, + "parent_index": 1205 + }, + "scope": 1203, + "name": "_partnerId", + "type_name": { + "id": 1209, + "node_type": 30, + "src": { + "id": 1210, + "line": 351, + "column": 25, + "start": 12412, + "end": 12417, + "length": 6, + "parent_index": 1207 + }, + "name": "bytes2", + "type_description": { + "type_identifier": "t_bytes2", + "type_string": "bytes2" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes2", + "type_string": "bytes2" + } + ] + }, + "return_parameters": { + "id": 1211, + "node_type": 43, + "src": { + "id": 1204, + "line": 351, + "column": 4, + "start": 12391, + "end": 12439, + "length": 49, + "parent_index": 1203 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 1201, + "type_description": { + "type_identifier": "t_function_$_t_bytes2$", + "type_string": "function(bytes2)" + } + } + ], + "linearized_base_contracts": [ + 1201 + ], + "base_contracts": [], + "contract_dependencies": [] + } + ], + "src": { + "id": 1156, + "line": 350, + "column": 0, + "start": 12359, + "end": 12441, + "length": 83, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/ISushiXSwap.sol b/data/tests/contracts/sushixswap/ISushiXSwap.sol new file mode 100644 index 00000000..61d7f5fa --- /dev/null +++ b/data/tests/contracts/sushixswap/ISushiXSwap.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity 0.8.11; + +import "./BentoAdapter.sol"; +import "./TokenAdapter.sol"; +import "./SushiLegacyAdapter.sol"; +import "./TridentSwapAdapter.sol"; +import "./StargateAdapter.sol"; + +interface ISushiXSwap { + function cook( + uint8[] memory actions, + uint256[] memory values, + bytes[] memory datas + ) external payable; +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/ISushiXSwap.solgo.ast.json b/data/tests/contracts/sushixswap/ISushiXSwap.solgo.ast.json new file mode 100644 index 00000000..decd3a8a --- /dev/null +++ b/data/tests/contracts/sushixswap/ISushiXSwap.solgo.ast.json @@ -0,0 +1,397 @@ +{ + "id": 6547, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 6547, + "name": "ISushiXSwap", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ISushiXSwap.sol" + }, + { + "id": 5897, + "name": "BentoAdapter", + "absolute_path": "BentoAdapter.sol" + }, + { + "id": 5897, + "name": "TokenAdapter", + "absolute_path": "TokenAdapter.sol" + }, + { + "id": 5897, + "name": "SushiLegacyAdapter", + "absolute_path": "SushiLegacyAdapter.sol" + }, + { + "id": 5897, + "name": "TridentSwapAdapter", + "absolute_path": "TridentSwapAdapter.sol" + }, + { + "id": 5897, + "name": "StargateAdapter", + "absolute_path": "StargateAdapter.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ISushiXSwap.sol", + "name": "ISushiXSwap", + "node_type": 1, + "nodes": [ + { + "id": 6589, + "node_type": 10, + "src": { + "id": 6590, + "line": 1390, + "column": 0, + "start": 49082, + "end": 49104, + "length": 23, + "parent_index": 6547 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 6616, + "node_type": 29, + "src": { + "id": 0, + "line": 1392, + "column": 0, + "start": 49107, + "end": 49134, + "length": 28, + "parent_index": 6547 + }, + "absolute_path": "BentoAdapter.sol", + "file": "./BentoAdapter.sol", + "scope": 6547, + "unit_alias": "", + "source_unit": 5897 + }, + { + "id": 6617, + "node_type": 29, + "src": { + "id": 0, + "line": 1393, + "column": 0, + "start": 49136, + "end": 49163, + "length": 28, + "parent_index": 6547 + }, + "absolute_path": "TokenAdapter.sol", + "file": "./TokenAdapter.sol", + "scope": 6547, + "unit_alias": "", + "source_unit": 5897 + }, + { + "id": 6618, + "node_type": 29, + "src": { + "id": 0, + "line": 1394, + "column": 0, + "start": 49165, + "end": 49198, + "length": 34, + "parent_index": 6547 + }, + "absolute_path": "SushiLegacyAdapter.sol", + "file": "./SushiLegacyAdapter.sol", + "scope": 6547, + "unit_alias": "", + "source_unit": 5897 + }, + { + "id": 6619, + "node_type": 29, + "src": { + "id": 0, + "line": 1395, + "column": 0, + "start": 49200, + "end": 49233, + "length": 34, + "parent_index": 6547 + }, + "absolute_path": "TridentSwapAdapter.sol", + "file": "./TridentSwapAdapter.sol", + "scope": 6547, + "unit_alias": "", + "source_unit": 5897 + }, + { + "id": 6620, + "node_type": 29, + "src": { + "id": 0, + "line": 1396, + "column": 0, + "start": 49235, + "end": 49265, + "length": 31, + "parent_index": 6547 + }, + "absolute_path": "StargateAdapter.sol", + "file": "./StargateAdapter.sol", + "scope": 6547, + "unit_alias": "", + "source_unit": 5897 + }, + { + "id": 6627, + "name": "ISushiXSwap", + "node_type": 35, + "src": { + "id": 0, + "line": 1398, + "column": 0, + "start": 49268, + "end": 49429, + "length": 162, + "parent_index": 6547 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 6629, + "name": "cook", + "node_type": 42, + "kind": 41, + "src": { + "id": 6630, + "line": 1399, + "column": 4, + "start": 49296, + "end": 49427, + "length": 132, + "parent_index": 6627 + }, + "body": { + "id": 6649, + "node_type": 46, + "kind": 0, + "src": { + "id": 6630, + "line": 1399, + "column": 4, + "start": 49296, + "end": 49427, + "length": 132, + "parent_index": 6629 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 3, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 6631, + "node_type": 43, + "src": { + "id": 6632, + "line": 1400, + "column": 8, + "start": 49319, + "end": 49403, + "length": 85, + "parent_index": 6629 + }, + "parameters": [ + { + "id": 6633, + "node_type": 44, + "src": { + "id": 6634, + "line": 1400, + "column": 8, + "start": 49319, + "end": 49340, + "length": 22, + "parent_index": 6631 + }, + "scope": 6629, + "name": "actions", + "type_name": { + "id": 6635, + "node_type": 16, + "src": { + "id": 6637, + "line": 1400, + "column": 8, + "start": 49319, + "end": 49323, + "length": 5, + "parent_index": 6633 + }, + "name": "uint8", + "type_description": { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6638, + "node_type": 44, + "src": { + "id": 6639, + "line": 1401, + "column": 8, + "start": 49351, + "end": 49373, + "length": 23, + "parent_index": 6631 + }, + "scope": 6629, + "name": "values", + "type_name": { + "id": 6640, + "node_type": 16, + "src": { + "id": 6642, + "line": 1401, + "column": 8, + "start": 49351, + "end": 49357, + "length": 7, + "parent_index": 6638 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6643, + "node_type": 44, + "src": { + "id": 6644, + "line": 1402, + "column": 8, + "start": 49384, + "end": 49403, + "length": 20, + "parent_index": 6631 + }, + "scope": 6629, + "name": "datas", + "type_name": { + "id": 6645, + "node_type": 16, + "src": { + "id": 6647, + "line": 1402, + "column": 8, + "start": 49384, + "end": 49388, + "length": 5, + "parent_index": 6643 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 6648, + "node_type": 43, + "src": { + "id": 6630, + "line": 1399, + "column": 4, + "start": 49296, + "end": 49427, + "length": 132, + "parent_index": 6629 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 6627, + "type_description": { + "type_identifier": "t_function_$_t_uint8$_t_uint256$_t_bytes$", + "type_string": "function(uint8,uint256,bytes)" + } + } + ], + "linearized_base_contracts": [ + 6627, + 6616, + 6617, + 6618, + 6619, + 6620 + ], + "base_contracts": [], + "contract_dependencies": [ + 6616, + 6617, + 6618, + 6619, + 6620 + ] + } + ], + "src": { + "id": 6548, + "line": 1398, + "column": 0, + "start": 49268, + "end": 49429, + "length": 162, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/ITridentRouter.sol b/data/tests/contracts/sushixswap/ITridentRouter.sol new file mode 100644 index 00000000..e71bd5fe --- /dev/null +++ b/data/tests/contracts/sushixswap/ITridentRouter.sol @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity 0.8.11; + +import "./IPool.sol"; +import "./IBentoBoxMinimal.sol"; +import "./IERC20.sol"; + +/// @notice Trident pool router interface. +interface ITridentRouter { + struct Path { + address pool; + bytes data; + } + + struct ExactInputSingleParams { + uint256 amountIn; + uint256 amountOutMinimum; + address pool; + address tokenIn; + bytes data; + } + + struct ExactInputParams { + address tokenIn; + uint256 amountIn; + uint256 amountOutMinimum; + Path[] path; + } + + struct TokenInput { + address token; + bool native; + uint256 amount; + } + + struct InitialPath { + address tokenIn; + address pool; + bool native; + uint256 amount; + bytes data; + } + + struct PercentagePath { + address tokenIn; + address pool; + uint64 balancePercentage; // Multiplied by 10^6. 100% = 100_000_000 + bytes data; + } + + struct Output { + address token; + address to; + bool unwrapBento; + uint256 minAmount; + } + + struct ComplexPathParams { + InitialPath[] initialPath; + PercentagePath[] percentagePath; + Output[] output; + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/ITridentRouter.solgo.ast.json b/data/tests/contracts/sushixswap/ITridentRouter.solgo.ast.json new file mode 100644 index 00000000..3d3459c5 --- /dev/null +++ b/data/tests/contracts/sushixswap/ITridentRouter.solgo.ast.json @@ -0,0 +1,1485 @@ +{ + "id": 4839, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 4839, + "name": "ITridentRouter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ITridentRouter.sol" + }, + { + "id": 4404, + "name": "IPool", + "absolute_path": "IPool.sol" + }, + { + "id": 4404, + "name": "IBentoBoxMinimal", + "absolute_path": "IBentoBoxMinimal.sol" + }, + { + "id": 4404, + "name": "IERC20", + "absolute_path": "IERC20.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ITridentRouter.sol", + "name": "ITridentRouter", + "node_type": 1, + "nodes": [ + { + "id": 4873, + "node_type": 10, + "src": { + "id": 4874, + "line": 1032, + "column": 0, + "start": 36774, + "end": 36796, + "length": 23, + "parent_index": 4839 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 4891, + "node_type": 29, + "src": { + "id": 0, + "line": 1034, + "column": 0, + "start": 36799, + "end": 36819, + "length": 21, + "parent_index": 4839 + }, + "absolute_path": "IPool.sol", + "file": "./IPool.sol", + "scope": 4839, + "unit_alias": "", + "source_unit": 4404 + }, + { + "id": 4892, + "node_type": 29, + "src": { + "id": 0, + "line": 1035, + "column": 0, + "start": 36821, + "end": 36852, + "length": 32, + "parent_index": 4839 + }, + "absolute_path": "IBentoBoxMinimal.sol", + "file": "./IBentoBoxMinimal.sol", + "scope": 4839, + "unit_alias": "", + "source_unit": 4404 + }, + { + "id": 4893, + "node_type": 29, + "src": { + "id": 0, + "line": 1036, + "column": 0, + "start": 36854, + "end": 36875, + "length": 22, + "parent_index": 4839 + }, + "absolute_path": "IERC20.sol", + "file": "./IERC20.sol", + "scope": 4839, + "unit_alias": "", + "source_unit": 4404 + }, + { + "id": 4911, + "name": "ITridentRouter", + "node_type": 35, + "src": { + "id": 0, + "line": 1039, + "column": 0, + "start": 36921, + "end": 38010, + "length": 1090, + "parent_index": 4839 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 4913, + "node_type": 67, + "src": { + "id": 4914, + "line": 1040, + "column": 4, + "start": 36952, + "end": 37012, + "length": 61, + "parent_index": 4839 + }, + "name": "Path", + "canonical_name": "ITridentRouter.Path", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_Path_$4913", + "type_string": "struct ITridentRouter.Path" + }, + "members": [ + { + "id": 4915, + "node_type": 44, + "src": { + "id": 4916, + "line": 1041, + "column": 8, + "start": 36974, + "end": 36986, + "length": 13, + "parent_index": 4913 + }, + "scope": 4911, + "name": "pool", + "type_name": { + "id": 4917, + "node_type": 30, + "src": { + "id": 4918, + "line": 1041, + "column": 8, + "start": 36974, + "end": 36980, + "length": 7, + "parent_index": 4915 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 4919, + "node_type": 44, + "src": { + "id": 4920, + "line": 1042, + "column": 8, + "start": 36996, + "end": 37006, + "length": 11, + "parent_index": 4913 + }, + "scope": 4911, + "name": "data", + "type_name": { + "id": 4921, + "node_type": 30, + "src": { + "id": 4922, + "line": 1042, + "column": 8, + "start": 36996, + "end": 37000, + "length": 5, + "parent_index": 4919 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + } + ], + "visibility": 3, + "storage_location": 1 + }, + { + "id": 4924, + "node_type": 67, + "src": { + "id": 4925, + "line": 1045, + "column": 4, + "start": 37019, + "end": 37182, + "length": 164, + "parent_index": 4839 + }, + "name": "ExactInputSingleParams", + "canonical_name": "ITridentRouter.ExactInputSingleParams", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputSingleParams_$4924", + "type_string": "struct ITridentRouter.ExactInputSingleParams" + }, + "members": [ + { + "id": 4926, + "node_type": 44, + "src": { + "id": 4927, + "line": 1046, + "column": 8, + "start": 37059, + "end": 37075, + "length": 17, + "parent_index": 4924 + }, + "scope": 4911, + "name": "amountIn", + "type_name": { + "id": 4928, + "node_type": 30, + "src": { + "id": 4929, + "line": 1046, + "column": 8, + "start": 37059, + "end": 37065, + "length": 7, + "parent_index": 4926 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 4930, + "node_type": 44, + "src": { + "id": 4931, + "line": 1047, + "column": 8, + "start": 37085, + "end": 37109, + "length": 25, + "parent_index": 4924 + }, + "scope": 4911, + "name": "amountOutMinimum", + "type_name": { + "id": 4932, + "node_type": 30, + "src": { + "id": 4933, + "line": 1047, + "column": 8, + "start": 37085, + "end": 37091, + "length": 7, + "parent_index": 4930 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 4934, + "node_type": 44, + "src": { + "id": 4935, + "line": 1048, + "column": 8, + "start": 37119, + "end": 37131, + "length": 13, + "parent_index": 4924 + }, + "scope": 4911, + "name": "pool", + "type_name": { + "id": 4936, + "node_type": 30, + "src": { + "id": 4937, + "line": 1048, + "column": 8, + "start": 37119, + "end": 37125, + "length": 7, + "parent_index": 4934 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 4938, + "node_type": 44, + "src": { + "id": 4939, + "line": 1049, + "column": 8, + "start": 37141, + "end": 37156, + "length": 16, + "parent_index": 4924 + }, + "scope": 4911, + "name": "tokenIn", + "type_name": { + "id": 4940, + "node_type": 30, + "src": { + "id": 4941, + "line": 1049, + "column": 8, + "start": 37141, + "end": 37147, + "length": 7, + "parent_index": 4938 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 4942, + "node_type": 44, + "src": { + "id": 4943, + "line": 1050, + "column": 8, + "start": 37166, + "end": 37176, + "length": 11, + "parent_index": 4924 + }, + "scope": 4911, + "name": "data", + "type_name": { + "id": 4944, + "node_type": 30, + "src": { + "id": 4945, + "line": 1050, + "column": 8, + "start": 37166, + "end": 37170, + "length": 5, + "parent_index": 4942 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + } + ], + "visibility": 3, + "storage_location": 1 + }, + { + "id": 4947, + "node_type": 67, + "src": { + "id": 4948, + "line": 1053, + "column": 4, + "start": 37189, + "end": 37325, + "length": 137, + "parent_index": 4839 + }, + "name": "ExactInputParams", + "canonical_name": "ITridentRouter.ExactInputParams", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "members": [ + { + "id": 4949, + "node_type": 44, + "src": { + "id": 4950, + "line": 1054, + "column": 8, + "start": 37223, + "end": 37238, + "length": 16, + "parent_index": 4947 + }, + "scope": 4911, + "name": "tokenIn", + "type_name": { + "id": 4951, + "node_type": 30, + "src": { + "id": 4952, + "line": 1054, + "column": 8, + "start": 37223, + "end": 37229, + "length": 7, + "parent_index": 4949 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 4953, + "node_type": 44, + "src": { + "id": 4954, + "line": 1055, + "column": 8, + "start": 37248, + "end": 37264, + "length": 17, + "parent_index": 4947 + }, + "scope": 4911, + "name": "amountIn", + "type_name": { + "id": 4955, + "node_type": 30, + "src": { + "id": 4956, + "line": 1055, + "column": 8, + "start": 37248, + "end": 37254, + "length": 7, + "parent_index": 4953 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 4957, + "node_type": 44, + "src": { + "id": 4958, + "line": 1056, + "column": 8, + "start": 37274, + "end": 37298, + "length": 25, + "parent_index": 4947 + }, + "scope": 4911, + "name": "amountOutMinimum", + "type_name": { + "id": 4959, + "node_type": 30, + "src": { + "id": 4960, + "line": 1056, + "column": 8, + "start": 37274, + "end": 37280, + "length": 7, + "parent_index": 4957 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 4961, + "node_type": 44, + "src": { + "id": 4962, + "line": 1057, + "column": 8, + "start": 37308, + "end": 37319, + "length": 12, + "parent_index": 4947 + }, + "scope": 4911, + "name": "path", + "type_name": { + "id": 4963, + "node_type": 69, + "src": { + "id": 4965, + "line": 1057, + "column": 8, + "start": 37308, + "end": 37311, + "length": 4, + "parent_index": 4961 + }, + "name": "Path", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_Path_$4913", + "type_string": "struct ITridentRouter.Path" + }, + "path_node": { + "id": 4966, + "name": "Path", + "node_type": 52, + "referenced_declaration": 4913, + "src": { + "id": 4967, + "line": 1057, + "column": 8, + "start": 37308, + "end": 37311, + "length": 4, + "parent_index": 4963 + } + }, + "referenced_declaration": 4913 + }, + "visibility": 1, + "state_mutability": 1 + } + ], + "visibility": 3, + "storage_location": 1 + }, + { + "id": 4969, + "node_type": 67, + "src": { + "id": 4970, + "line": 1060, + "column": 4, + "start": 37332, + "end": 37424, + "length": 93, + "parent_index": 4839 + }, + "name": "TokenInput", + "canonical_name": "ITridentRouter.TokenInput", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_TokenInput_$4969", + "type_string": "struct ITridentRouter.TokenInput" + }, + "members": [ + { + "id": 4971, + "node_type": 44, + "src": { + "id": 4972, + "line": 1061, + "column": 8, + "start": 37360, + "end": 37373, + "length": 14, + "parent_index": 4969 + }, + "scope": 4911, + "name": "token", + "type_name": { + "id": 4973, + "node_type": 30, + "src": { + "id": 4974, + "line": 1061, + "column": 8, + "start": 37360, + "end": 37366, + "length": 7, + "parent_index": 4971 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 4975, + "node_type": 44, + "src": { + "id": 4976, + "line": 1062, + "column": 8, + "start": 37383, + "end": 37394, + "length": 12, + "parent_index": 4969 + }, + "scope": 4911, + "name": "native", + "type_name": { + "id": 4977, + "node_type": 30, + "src": { + "id": 4978, + "line": 1062, + "column": 8, + "start": 37383, + "end": 37386, + "length": 4, + "parent_index": 4975 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 4979, + "node_type": 44, + "src": { + "id": 4980, + "line": 1063, + "column": 8, + "start": 37404, + "end": 37418, + "length": 15, + "parent_index": 4969 + }, + "scope": 4911, + "name": "amount", + "type_name": { + "id": 4981, + "node_type": 30, + "src": { + "id": 4982, + "line": 1063, + "column": 8, + "start": 37404, + "end": 37410, + "length": 7, + "parent_index": 4979 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + } + ], + "visibility": 3, + "storage_location": 1 + }, + { + "id": 4984, + "node_type": 67, + "src": { + "id": 4985, + "line": 1066, + "column": 4, + "start": 37431, + "end": 37568, + "length": 138, + "parent_index": 4839 + }, + "name": "InitialPath", + "canonical_name": "ITridentRouter.InitialPath", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_InitialPath_$4984", + "type_string": "struct ITridentRouter.InitialPath" + }, + "members": [ + { + "id": 4986, + "node_type": 44, + "src": { + "id": 4987, + "line": 1067, + "column": 8, + "start": 37460, + "end": 37475, + "length": 16, + "parent_index": 4984 + }, + "scope": 4911, + "name": "tokenIn", + "type_name": { + "id": 4988, + "node_type": 30, + "src": { + "id": 4989, + "line": 1067, + "column": 8, + "start": 37460, + "end": 37466, + "length": 7, + "parent_index": 4986 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 4990, + "node_type": 44, + "src": { + "id": 4991, + "line": 1068, + "column": 8, + "start": 37485, + "end": 37497, + "length": 13, + "parent_index": 4984 + }, + "scope": 4911, + "name": "pool", + "type_name": { + "id": 4992, + "node_type": 30, + "src": { + "id": 4993, + "line": 1068, + "column": 8, + "start": 37485, + "end": 37491, + "length": 7, + "parent_index": 4990 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 4994, + "node_type": 44, + "src": { + "id": 4995, + "line": 1069, + "column": 8, + "start": 37507, + "end": 37518, + "length": 12, + "parent_index": 4984 + }, + "scope": 4911, + "name": "native", + "type_name": { + "id": 4996, + "node_type": 30, + "src": { + "id": 4997, + "line": 1069, + "column": 8, + "start": 37507, + "end": 37510, + "length": 4, + "parent_index": 4994 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 4998, + "node_type": 44, + "src": { + "id": 4999, + "line": 1070, + "column": 8, + "start": 37528, + "end": 37542, + "length": 15, + "parent_index": 4984 + }, + "scope": 4911, + "name": "amount", + "type_name": { + "id": 5000, + "node_type": 30, + "src": { + "id": 5001, + "line": 1070, + "column": 8, + "start": 37528, + "end": 37534, + "length": 7, + "parent_index": 4998 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 5002, + "node_type": 44, + "src": { + "id": 5003, + "line": 1071, + "column": 8, + "start": 37552, + "end": 37562, + "length": 11, + "parent_index": 4984 + }, + "scope": 4911, + "name": "data", + "type_name": { + "id": 5004, + "node_type": 30, + "src": { + "id": 5005, + "line": 1071, + "column": 8, + "start": 37552, + "end": 37556, + "length": 5, + "parent_index": 5002 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + } + ], + "visibility": 3, + "storage_location": 1 + }, + { + "id": 5007, + "node_type": 67, + "src": { + "id": 5008, + "line": 1074, + "column": 4, + "start": 37575, + "end": 37746, + "length": 172, + "parent_index": 4839 + }, + "name": "PercentagePath", + "canonical_name": "ITridentRouter.PercentagePath", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_PercentagePath_$5007", + "type_string": "struct ITridentRouter.PercentagePath" + }, + "members": [ + { + "id": 5009, + "node_type": 44, + "src": { + "id": 5010, + "line": 1075, + "column": 8, + "start": 37607, + "end": 37622, + "length": 16, + "parent_index": 5007 + }, + "scope": 4911, + "name": "tokenIn", + "type_name": { + "id": 5011, + "node_type": 30, + "src": { + "id": 5012, + "line": 1075, + "column": 8, + "start": 37607, + "end": 37613, + "length": 7, + "parent_index": 5009 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 5013, + "node_type": 44, + "src": { + "id": 5014, + "line": 1076, + "column": 8, + "start": 37632, + "end": 37644, + "length": 13, + "parent_index": 5007 + }, + "scope": 4911, + "name": "pool", + "type_name": { + "id": 5015, + "node_type": 30, + "src": { + "id": 5016, + "line": 1076, + "column": 8, + "start": 37632, + "end": 37638, + "length": 7, + "parent_index": 5013 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 5017, + "node_type": 44, + "src": { + "id": 5018, + "line": 1077, + "column": 8, + "start": 37654, + "end": 37678, + "length": 25, + "parent_index": 5007 + }, + "scope": 4911, + "name": "balancePercentage", + "type_name": { + "id": 5019, + "node_type": 30, + "src": { + "id": 5020, + "line": 1077, + "column": 8, + "start": 37654, + "end": 37659, + "length": 6, + "parent_index": 5017 + }, + "name": "uint64", + "type_description": { + "type_identifier": "t_uint64", + "type_string": "uint64" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 5021, + "node_type": 44, + "src": { + "id": 5022, + "line": 1078, + "column": 8, + "start": 37730, + "end": 37740, + "length": 11, + "parent_index": 5007 + }, + "scope": 4911, + "name": "data", + "type_name": { + "id": 5023, + "node_type": 30, + "src": { + "id": 5024, + "line": 1078, + "column": 8, + "start": 37730, + "end": 37734, + "length": 5, + "parent_index": 5021 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + } + ], + "visibility": 3, + "storage_location": 1 + }, + { + "id": 5026, + "node_type": 67, + "src": { + "id": 5027, + "line": 1081, + "column": 4, + "start": 37753, + "end": 37869, + "length": 117, + "parent_index": 4839 + }, + "name": "Output", + "canonical_name": "ITridentRouter.Output", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_Output_$5026", + "type_string": "struct ITridentRouter.Output" + }, + "members": [ + { + "id": 5028, + "node_type": 44, + "src": { + "id": 5029, + "line": 1082, + "column": 8, + "start": 37777, + "end": 37790, + "length": 14, + "parent_index": 5026 + }, + "scope": 4911, + "name": "token", + "type_name": { + "id": 5030, + "node_type": 30, + "src": { + "id": 5031, + "line": 1082, + "column": 8, + "start": 37777, + "end": 37783, + "length": 7, + "parent_index": 5028 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 5032, + "node_type": 44, + "src": { + "id": 5033, + "line": 1083, + "column": 8, + "start": 37800, + "end": 37810, + "length": 11, + "parent_index": 5026 + }, + "scope": 4911, + "name": "to", + "type_name": { + "id": 5034, + "node_type": 30, + "src": { + "id": 5035, + "line": 1083, + "column": 8, + "start": 37800, + "end": 37806, + "length": 7, + "parent_index": 5032 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 5036, + "node_type": 44, + "src": { + "id": 5037, + "line": 1084, + "column": 8, + "start": 37820, + "end": 37836, + "length": 17, + "parent_index": 5026 + }, + "scope": 4911, + "name": "unwrapBento", + "type_name": { + "id": 5038, + "node_type": 30, + "src": { + "id": 5039, + "line": 1084, + "column": 8, + "start": 37820, + "end": 37823, + "length": 4, + "parent_index": 5036 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 5040, + "node_type": 44, + "src": { + "id": 5041, + "line": 1085, + "column": 8, + "start": 37846, + "end": 37863, + "length": 18, + "parent_index": 5026 + }, + "scope": 4911, + "name": "minAmount", + "type_name": { + "id": 5042, + "node_type": 30, + "src": { + "id": 5043, + "line": 1085, + "column": 8, + "start": 37846, + "end": 37852, + "length": 7, + "parent_index": 5040 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + } + ], + "visibility": 3, + "storage_location": 1 + }, + { + "id": 5045, + "node_type": 67, + "src": { + "id": 5046, + "line": 1088, + "column": 4, + "start": 37876, + "end": 38008, + "length": 133, + "parent_index": 4839 + }, + "name": "ComplexPathParams", + "canonical_name": "ITridentRouter.ComplexPathParams", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "type_string": "struct ITridentRouter.ComplexPathParams" + }, + "members": [ + { + "id": 5047, + "node_type": 44, + "src": { + "id": 5048, + "line": 1089, + "column": 8, + "start": 37911, + "end": 37936, + "length": 26, + "parent_index": 5045 + }, + "scope": 4911, + "name": "initialPath", + "type_name": { + "id": 5049, + "node_type": 69, + "src": { + "id": 5051, + "line": 1089, + "column": 8, + "start": 37911, + "end": 37921, + "length": 11, + "parent_index": 5047 + }, + "name": "InitialPath", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_InitialPath_$4984", + "type_string": "struct ITridentRouter.InitialPath" + }, + "path_node": { + "id": 5052, + "name": "InitialPath", + "node_type": 52, + "referenced_declaration": 4984, + "src": { + "id": 5053, + "line": 1089, + "column": 8, + "start": 37911, + "end": 37921, + "length": 11, + "parent_index": 5049 + } + }, + "referenced_declaration": 4984 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 5054, + "node_type": 44, + "src": { + "id": 5055, + "line": 1090, + "column": 8, + "start": 37946, + "end": 37977, + "length": 32, + "parent_index": 5045 + }, + "scope": 4911, + "name": "percentagePath", + "type_name": { + "id": 5056, + "node_type": 69, + "src": { + "id": 5058, + "line": 1090, + "column": 8, + "start": 37946, + "end": 37959, + "length": 14, + "parent_index": 5054 + }, + "name": "PercentagePath", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_PercentagePath_$5007", + "type_string": "struct ITridentRouter.PercentagePath" + }, + "path_node": { + "id": 5059, + "name": "PercentagePath", + "node_type": 52, + "referenced_declaration": 5007, + "src": { + "id": 5060, + "line": 1090, + "column": 8, + "start": 37946, + "end": 37959, + "length": 14, + "parent_index": 5056 + } + }, + "referenced_declaration": 5007 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 5061, + "node_type": 44, + "src": { + "id": 5062, + "line": 1091, + "column": 8, + "start": 37987, + "end": 38002, + "length": 16, + "parent_index": 5045 + }, + "scope": 4911, + "name": "output", + "type_name": { + "id": 5063, + "node_type": 69, + "src": { + "id": 5065, + "line": 1091, + "column": 8, + "start": 37987, + "end": 37992, + "length": 6, + "parent_index": 5061 + }, + "name": "Output", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_Output_$5026", + "type_string": "struct ITridentRouter.Output" + }, + "path_node": { + "id": 5066, + "name": "Output", + "node_type": 52, + "referenced_declaration": 5026, + "src": { + "id": 5067, + "line": 1091, + "column": 8, + "start": 37987, + "end": 37992, + "length": 6, + "parent_index": 5063 + } + }, + "referenced_declaration": 5026 + }, + "visibility": 1, + "state_mutability": 1 + } + ], + "visibility": 3, + "storage_location": 1 + } + ], + "linearized_base_contracts": [ + 4911, + 4891, + 4892, + 4893 + ], + "base_contracts": [], + "contract_dependencies": [ + 4891, + 4892, + 4893 + ] + } + ], + "src": { + "id": 4840, + "line": 1039, + "column": 0, + "start": 36921, + "end": 38010, + "length": 1090, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/ITridentSwapAdapter.sol b/data/tests/contracts/sushixswap/ITridentSwapAdapter.sol new file mode 100644 index 00000000..aa5b34d5 --- /dev/null +++ b/data/tests/contracts/sushixswap/ITridentSwapAdapter.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity 0.8.11; + +import "./ITridentRouter.sol"; +import "./BentoAdapter.sol"; +import "./TokenAdapter.sol"; +import "./ImmutableState.sol"; + +interface ITridentSwapAdapter {} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/ITridentSwapAdapter.solgo.ast.json b/data/tests/contracts/sushixswap/ITridentSwapAdapter.solgo.ast.json new file mode 100644 index 00000000..6011c81d --- /dev/null +++ b/data/tests/contracts/sushixswap/ITridentSwapAdapter.solgo.ast.json @@ -0,0 +1,174 @@ +{ + "id": 5068, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 5068, + "name": "ITridentSwapAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ITridentSwapAdapter.sol" + }, + { + "id": 4839, + "name": "ITridentRouter", + "absolute_path": "ITridentRouter.sol" + }, + { + "id": 4839, + "name": "BentoAdapter", + "absolute_path": "BentoAdapter.sol" + }, + { + "id": 4839, + "name": "TokenAdapter", + "absolute_path": "TokenAdapter.sol" + }, + { + "id": 4839, + "name": "ImmutableState", + "absolute_path": "ImmutableState.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ITridentSwapAdapter.sol", + "name": "ITridentSwapAdapter", + "node_type": 1, + "nodes": [ + { + "id": 5104, + "node_type": 10, + "src": { + "id": 5105, + "line": 1097, + "column": 0, + "start": 38059, + "end": 38081, + "length": 23, + "parent_index": 5068 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 5125, + "node_type": 29, + "src": { + "id": 0, + "line": 1099, + "column": 0, + "start": 38084, + "end": 38113, + "length": 30, + "parent_index": 5068 + }, + "absolute_path": "ITridentRouter.sol", + "file": "./ITridentRouter.sol", + "scope": 5068, + "unit_alias": "", + "source_unit": 4839 + }, + { + "id": 5126, + "node_type": 29, + "src": { + "id": 0, + "line": 1100, + "column": 0, + "start": 38115, + "end": 38142, + "length": 28, + "parent_index": 5068 + }, + "absolute_path": "BentoAdapter.sol", + "file": "./BentoAdapter.sol", + "scope": 5068, + "unit_alias": "", + "source_unit": 4839 + }, + { + "id": 5127, + "node_type": 29, + "src": { + "id": 0, + "line": 1101, + "column": 0, + "start": 38144, + "end": 38171, + "length": 28, + "parent_index": 5068 + }, + "absolute_path": "TokenAdapter.sol", + "file": "./TokenAdapter.sol", + "scope": 5068, + "unit_alias": "", + "source_unit": 4839 + }, + { + "id": 5128, + "node_type": 29, + "src": { + "id": 0, + "line": 1102, + "column": 0, + "start": 38173, + "end": 38202, + "length": 30, + "parent_index": 5068 + }, + "absolute_path": "ImmutableState.sol", + "file": "./ImmutableState.sol", + "scope": 5068, + "unit_alias": "", + "source_unit": 4839 + }, + { + "id": 5142, + "name": "ITridentSwapAdapter", + "node_type": 35, + "src": { + "id": 0, + "line": 1104, + "column": 0, + "start": 38205, + "end": 38236, + "length": 32, + "parent_index": 5068 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [], + "linearized_base_contracts": [ + 5142, + 5125, + 5126, + 5127, + 5128 + ], + "base_contracts": [], + "contract_dependencies": [ + 5125, + 5126, + 5127, + 5128 + ] + } + ], + "src": { + "id": 5069, + "line": 1104, + "column": 0, + "start": 38205, + "end": 38236, + "length": 32, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IUniswapV2Pair.sol b/data/tests/contracts/sushixswap/IUniswapV2Pair.sol new file mode 100644 index 00000000..9c69f709 --- /dev/null +++ b/data/tests/contracts/sushixswap/IUniswapV2Pair.sol @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: GPL-3.0 + +pragma solidity >=0.5.0; + +interface IUniswapV2Pair { + event Approval(address indexed owner, address indexed spender, uint value); + event Transfer(address indexed from, address indexed to, uint value); + + function name() external pure returns (string memory); + function symbol() external pure returns (string memory); + function decimals() external pure returns (uint8); + function totalSupply() external view returns (uint); + function balanceOf(address owner) external view returns (uint); + function allowance(address owner, address spender) external view returns (uint); + + function approve(address spender, uint value) external returns (bool); + function transfer(address to, uint value) external returns (bool); + function transferFrom(address from, address to, uint value) external returns (bool); + + function DOMAIN_SEPARATOR() external view returns (bytes32); + function PERMIT_TYPEHASH() external pure returns (bytes32); + function nonces(address owner) external view returns (uint); + + function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; + + event Mint(address indexed sender, uint amount0, uint amount1); + event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); + event Swap( + address indexed sender, + uint amount0In, + uint amount1In, + uint amount0Out, + uint amount1Out, + address indexed to + ); + event Sync(uint112 reserve0, uint112 reserve1); + + function MINIMUM_LIQUIDITY() external pure returns (uint); + function factory() external view returns (address); + function token0() external view returns (address); + function token1() external view returns (address); + function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); + function price0CumulativeLast() external view returns (uint); + function price1CumulativeLast() external view returns (uint); + function kLast() external view returns (uint); + + function mint(address to) external returns (uint liquidity); + function burn(address to) external returns (uint amount0, uint amount1); + function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; + function skim(address to) external; + function sync() external; + + function initialize(address, address) external; +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IUniswapV2Pair.solgo.ast.json b/data/tests/contracts/sushixswap/IUniswapV2Pair.solgo.ast.json new file mode 100644 index 00000000..f8c852db --- /dev/null +++ b/data/tests/contracts/sushixswap/IUniswapV2Pair.solgo.ast.json @@ -0,0 +1,5996 @@ +{ + "id": 2610, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 2610, + "name": "IUniswapV2Pair", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IUniswapV2Pair.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IUniswapV2Pair.sol", + "name": "IUniswapV2Pair", + "node_type": 1, + "nodes": [ + { + "id": 2636, + "node_type": 10, + "src": { + "id": 2637, + "line": 730, + "column": 0, + "start": 25858, + "end": 25881, + "length": 24, + "parent_index": 2610 + }, + "literals": [ + "pragma", + "solidity", + "\u003e=", + "0", + ".", + "5", + ".", + "0", + ";" + ], + "text": "pragma solidity \u003e=0.5.0;" + }, + { + "id": 2674, + "name": "IUniswapV2Pair", + "node_type": 35, + "src": { + "id": 0, + "line": 732, + "column": 0, + "start": 25884, + "end": 28280, + "length": 2397, + "parent_index": 2610 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 2676, + "node_type": 57, + "src": { + "id": 2677, + "line": 733, + "column": 4, + "start": 25915, + "end": 25989, + "length": 75, + "parent_index": 2674 + }, + "parameters": { + "id": 2678, + "node_type": 43, + "src": { + "id": 2677, + "line": 733, + "column": 4, + "start": 25915, + "end": 25989, + "length": 75, + "parent_index": 2676 + }, + "parameters": [ + { + "id": 2679, + "node_type": 44, + "src": { + "id": 2680, + "line": 733, + "column": 19, + "start": 25930, + "end": 25950, + "length": 21, + "parent_index": 2678 + }, + "scope": 2676, + "name": "owner", + "type_name": { + "id": 2681, + "node_type": 30, + "src": { + "id": 2682, + "line": 733, + "column": 19, + "start": 25930, + "end": 25936, + "length": 7, + "parent_index": 2679 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + }, + { + "id": 2683, + "node_type": 44, + "src": { + "id": 2684, + "line": 733, + "column": 42, + "start": 25953, + "end": 25975, + "length": 23, + "parent_index": 2678 + }, + "scope": 2676, + "name": "spender", + "type_name": { + "id": 2685, + "node_type": 30, + "src": { + "id": 2686, + "line": 733, + "column": 42, + "start": 25953, + "end": 25959, + "length": 7, + "parent_index": 2683 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + }, + { + "id": 2687, + "node_type": 44, + "src": { + "id": 2688, + "line": 733, + "column": 67, + "start": 25978, + "end": 25987, + "length": 10, + "parent_index": 2678 + }, + "scope": 2676, + "name": "value", + "type_name": { + "id": 2689, + "node_type": 30, + "src": { + "id": 2690, + "line": 733, + "column": 67, + "start": 25978, + "end": 25981, + "length": 4, + "parent_index": 2687 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "name": "Approval", + "anonymous": false + }, + { + "id": 2692, + "node_type": 57, + "src": { + "id": 2693, + "line": 734, + "column": 4, + "start": 25995, + "end": 26063, + "length": 69, + "parent_index": 2674 + }, + "parameters": { + "id": 2694, + "node_type": 43, + "src": { + "id": 2693, + "line": 734, + "column": 4, + "start": 25995, + "end": 26063, + "length": 69, + "parent_index": 2692 + }, + "parameters": [ + { + "id": 2695, + "node_type": 44, + "src": { + "id": 2696, + "line": 734, + "column": 19, + "start": 26010, + "end": 26029, + "length": 20, + "parent_index": 2694 + }, + "scope": 2692, + "name": "from", + "type_name": { + "id": 2697, + "node_type": 30, + "src": { + "id": 2698, + "line": 734, + "column": 19, + "start": 26010, + "end": 26016, + "length": 7, + "parent_index": 2695 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + }, + { + "id": 2699, + "node_type": 44, + "src": { + "id": 2700, + "line": 734, + "column": 41, + "start": 26032, + "end": 26049, + "length": 18, + "parent_index": 2694 + }, + "scope": 2692, + "name": "to", + "type_name": { + "id": 2701, + "node_type": 30, + "src": { + "id": 2702, + "line": 734, + "column": 41, + "start": 26032, + "end": 26038, + "length": 7, + "parent_index": 2699 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + }, + { + "id": 2703, + "node_type": 44, + "src": { + "id": 2704, + "line": 734, + "column": 61, + "start": 26052, + "end": 26061, + "length": 10, + "parent_index": 2694 + }, + "scope": 2692, + "name": "value", + "type_name": { + "id": 2705, + "node_type": 30, + "src": { + "id": 2706, + "line": 734, + "column": 61, + "start": 26052, + "end": 26055, + "length": 4, + "parent_index": 2703 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "name": "Transfer", + "anonymous": false + }, + { + "id": 2708, + "name": "name", + "node_type": 42, + "kind": 41, + "src": { + "id": 2709, + "line": 736, + "column": 4, + "start": 26070, + "end": 26123, + "length": 54, + "parent_index": 2674 + }, + "body": { + "id": 2722, + "node_type": 46, + "kind": 0, + "src": { + "id": 2709, + "line": 736, + "column": 4, + "start": 26070, + "end": 26123, + "length": 54, + "parent_index": 2708 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2710, + "node_type": 43, + "src": { + "id": 2711, + "line": 736, + "column": 43, + "start": 26109, + "end": 26121, + "length": 13, + "parent_index": 2708 + }, + "parameters": [ + { + "id": 2712, + "node_type": 44, + "src": { + "id": 2713, + "line": 736, + "column": 43, + "start": 26109, + "end": 26121, + "length": 13, + "parent_index": 2710 + }, + "scope": 2708, + "name": "", + "type_name": { + "id": 2714, + "node_type": 30, + "src": { + "id": 2715, + "line": 736, + "column": 43, + "start": 26109, + "end": 26114, + "length": 6, + "parent_index": 2712 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 2716, + "node_type": 43, + "src": { + "id": 2717, + "line": 736, + "column": 43, + "start": 26109, + "end": 26121, + "length": 13, + "parent_index": 2708 + }, + "parameters": [ + { + "id": 2718, + "node_type": 44, + "src": { + "id": 2719, + "line": 736, + "column": 43, + "start": 26109, + "end": 26121, + "length": 13, + "parent_index": 2716 + }, + "scope": 2708, + "name": "", + "type_name": { + "id": 2720, + "node_type": 30, + "src": { + "id": 2721, + "line": 736, + "column": 43, + "start": 26109, + "end": 26114, + "length": 6, + "parent_index": 2718 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_string$", + "type_string": "function(string)" + } + }, + { + "id": 2724, + "name": "symbol", + "node_type": 42, + "kind": 41, + "src": { + "id": 2725, + "line": 737, + "column": 4, + "start": 26129, + "end": 26184, + "length": 56, + "parent_index": 2674 + }, + "body": { + "id": 2738, + "node_type": 46, + "kind": 0, + "src": { + "id": 2725, + "line": 737, + "column": 4, + "start": 26129, + "end": 26184, + "length": 56, + "parent_index": 2724 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2726, + "node_type": 43, + "src": { + "id": 2727, + "line": 737, + "column": 45, + "start": 26170, + "end": 26182, + "length": 13, + "parent_index": 2724 + }, + "parameters": [ + { + "id": 2728, + "node_type": 44, + "src": { + "id": 2729, + "line": 737, + "column": 45, + "start": 26170, + "end": 26182, + "length": 13, + "parent_index": 2726 + }, + "scope": 2724, + "name": "", + "type_name": { + "id": 2730, + "node_type": 30, + "src": { + "id": 2731, + "line": 737, + "column": 45, + "start": 26170, + "end": 26175, + "length": 6, + "parent_index": 2728 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "return_parameters": { + "id": 2732, + "node_type": 43, + "src": { + "id": 2733, + "line": 737, + "column": 45, + "start": 26170, + "end": 26182, + "length": 13, + "parent_index": 2724 + }, + "parameters": [ + { + "id": 2734, + "node_type": 44, + "src": { + "id": 2735, + "line": 737, + "column": 45, + "start": 26170, + "end": 26182, + "length": 13, + "parent_index": 2732 + }, + "scope": 2724, + "name": "", + "type_name": { + "id": 2736, + "node_type": 30, + "src": { + "id": 2737, + "line": 737, + "column": 45, + "start": 26170, + "end": 26175, + "length": 6, + "parent_index": 2734 + }, + "name": "string", + "type_description": { + "type_identifier": "t_string", + "type_string": "string" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_string", + "type_string": "string" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_string$", + "type_string": "function(string)" + } + }, + { + "id": 2740, + "name": "decimals", + "node_type": 42, + "kind": 41, + "src": { + "id": 2741, + "line": 738, + "column": 4, + "start": 26190, + "end": 26239, + "length": 50, + "parent_index": 2674 + }, + "body": { + "id": 2754, + "node_type": 46, + "kind": 0, + "src": { + "id": 2741, + "line": 738, + "column": 4, + "start": 26190, + "end": 26239, + "length": 50, + "parent_index": 2740 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2742, + "node_type": 43, + "src": { + "id": 2743, + "line": 738, + "column": 47, + "start": 26233, + "end": 26237, + "length": 5, + "parent_index": 2740 + }, + "parameters": [ + { + "id": 2744, + "node_type": 44, + "src": { + "id": 2745, + "line": 738, + "column": 47, + "start": 26233, + "end": 26237, + "length": 5, + "parent_index": 2742 + }, + "scope": 2740, + "name": "", + "type_name": { + "id": 2746, + "node_type": 30, + "src": { + "id": 2747, + "line": 738, + "column": 47, + "start": 26233, + "end": 26237, + "length": 5, + "parent_index": 2744 + }, + "name": "uint8", + "type_description": { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint8", + "type_string": "uint8" + } + ] + }, + "return_parameters": { + "id": 2748, + "node_type": 43, + "src": { + "id": 2749, + "line": 738, + "column": 47, + "start": 26233, + "end": 26237, + "length": 5, + "parent_index": 2740 + }, + "parameters": [ + { + "id": 2750, + "node_type": 44, + "src": { + "id": 2751, + "line": 738, + "column": 47, + "start": 26233, + "end": 26237, + "length": 5, + "parent_index": 2748 + }, + "scope": 2740, + "name": "", + "type_name": { + "id": 2752, + "node_type": 30, + "src": { + "id": 2753, + "line": 738, + "column": 47, + "start": 26233, + "end": 26237, + "length": 5, + "parent_index": 2750 + }, + "name": "uint8", + "type_description": { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint8", + "type_string": "uint8" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_uint8$", + "type_string": "function(uint8)" + } + }, + { + "id": 2756, + "name": "totalSupply", + "node_type": 42, + "kind": 41, + "src": { + "id": 2757, + "line": 739, + "column": 4, + "start": 26245, + "end": 26296, + "length": 52, + "parent_index": 2674 + }, + "body": { + "id": 2770, + "node_type": 46, + "kind": 0, + "src": { + "id": 2757, + "line": 739, + "column": 4, + "start": 26245, + "end": 26296, + "length": 52, + "parent_index": 2756 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2758, + "node_type": 43, + "src": { + "id": 2759, + "line": 739, + "column": 50, + "start": 26291, + "end": 26294, + "length": 4, + "parent_index": 2756 + }, + "parameters": [ + { + "id": 2760, + "node_type": 44, + "src": { + "id": 2761, + "line": 739, + "column": 50, + "start": 26291, + "end": 26294, + "length": 4, + "parent_index": 2758 + }, + "scope": 2756, + "name": "", + "type_name": { + "id": 2762, + "node_type": 30, + "src": { + "id": 2763, + "line": 739, + "column": 50, + "start": 26291, + "end": 26294, + "length": 4, + "parent_index": 2760 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 2764, + "node_type": 43, + "src": { + "id": 2765, + "line": 739, + "column": 50, + "start": 26291, + "end": 26294, + "length": 4, + "parent_index": 2756 + }, + "parameters": [ + { + "id": 2766, + "node_type": 44, + "src": { + "id": 2767, + "line": 739, + "column": 50, + "start": 26291, + "end": 26294, + "length": 4, + "parent_index": 2764 + }, + "scope": 2756, + "name": "", + "type_name": { + "id": 2768, + "node_type": 30, + "src": { + "id": 2769, + "line": 739, + "column": 50, + "start": 26291, + "end": 26294, + "length": 4, + "parent_index": 2766 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + }, + { + "id": 2772, + "name": "balanceOf", + "node_type": 42, + "kind": 41, + "src": { + "id": 2773, + "line": 740, + "column": 4, + "start": 26302, + "end": 26364, + "length": 63, + "parent_index": 2674 + }, + "body": { + "id": 2786, + "node_type": 46, + "kind": 0, + "src": { + "id": 2773, + "line": 740, + "column": 4, + "start": 26302, + "end": 26364, + "length": 63, + "parent_index": 2772 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2774, + "node_type": 43, + "src": { + "id": 2775, + "line": 740, + "column": 23, + "start": 26321, + "end": 26333, + "length": 13, + "parent_index": 2772 + }, + "parameters": [ + { + "id": 2776, + "node_type": 44, + "src": { + "id": 2777, + "line": 740, + "column": 23, + "start": 26321, + "end": 26333, + "length": 13, + "parent_index": 2774 + }, + "scope": 2772, + "name": "owner", + "type_name": { + "id": 2778, + "node_type": 30, + "src": { + "id": 2779, + "line": 740, + "column": 23, + "start": 26321, + "end": 26327, + "length": 7, + "parent_index": 2776 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 2780, + "node_type": 43, + "src": { + "id": 2781, + "line": 740, + "column": 61, + "start": 26359, + "end": 26362, + "length": 4, + "parent_index": 2772 + }, + "parameters": [ + { + "id": 2782, + "node_type": 44, + "src": { + "id": 2783, + "line": 740, + "column": 61, + "start": 26359, + "end": 26362, + "length": 4, + "parent_index": 2780 + }, + "scope": 2772, + "name": "", + "type_name": { + "id": 2784, + "node_type": 30, + "src": { + "id": 2785, + "line": 740, + "column": 61, + "start": 26359, + "end": 26362, + "length": 4, + "parent_index": 2782 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 2788, + "name": "allowance", + "node_type": 42, + "kind": 41, + "src": { + "id": 2789, + "line": 741, + "column": 4, + "start": 26370, + "end": 26449, + "length": 80, + "parent_index": 2674 + }, + "body": { + "id": 2806, + "node_type": 46, + "kind": 0, + "src": { + "id": 2789, + "line": 741, + "column": 4, + "start": 26370, + "end": 26449, + "length": 80, + "parent_index": 2788 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2790, + "node_type": 43, + "src": { + "id": 2791, + "line": 741, + "column": 23, + "start": 26389, + "end": 26418, + "length": 30, + "parent_index": 2788 + }, + "parameters": [ + { + "id": 2792, + "node_type": 44, + "src": { + "id": 2793, + "line": 741, + "column": 23, + "start": 26389, + "end": 26401, + "length": 13, + "parent_index": 2790 + }, + "scope": 2788, + "name": "owner", + "type_name": { + "id": 2794, + "node_type": 30, + "src": { + "id": 2795, + "line": 741, + "column": 23, + "start": 26389, + "end": 26395, + "length": 7, + "parent_index": 2792 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2796, + "node_type": 44, + "src": { + "id": 2797, + "line": 741, + "column": 38, + "start": 26404, + "end": 26418, + "length": 15, + "parent_index": 2790 + }, + "scope": 2788, + "name": "spender", + "type_name": { + "id": 2798, + "node_type": 30, + "src": { + "id": 2799, + "line": 741, + "column": 38, + "start": 26404, + "end": 26410, + "length": 7, + "parent_index": 2796 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 2800, + "node_type": 43, + "src": { + "id": 2801, + "line": 741, + "column": 78, + "start": 26444, + "end": 26447, + "length": 4, + "parent_index": 2788 + }, + "parameters": [ + { + "id": 2802, + "node_type": 44, + "src": { + "id": 2803, + "line": 741, + "column": 78, + "start": 26444, + "end": 26447, + "length": 4, + "parent_index": 2800 + }, + "scope": 2788, + "name": "", + "type_name": { + "id": 2804, + "node_type": 30, + "src": { + "id": 2805, + "line": 741, + "column": 78, + "start": 26444, + "end": 26447, + "length": 4, + "parent_index": 2802 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$", + "type_string": "function(address,address)" + } + }, + { + "id": 2808, + "name": "approve", + "node_type": 42, + "kind": 41, + "src": { + "id": 2809, + "line": 743, + "column": 4, + "start": 26456, + "end": 26525, + "length": 70, + "parent_index": 2674 + }, + "body": { + "id": 2826, + "node_type": 46, + "kind": 0, + "src": { + "id": 2809, + "line": 743, + "column": 4, + "start": 26456, + "end": 26525, + "length": 70, + "parent_index": 2808 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2810, + "node_type": 43, + "src": { + "id": 2811, + "line": 743, + "column": 21, + "start": 26473, + "end": 26499, + "length": 27, + "parent_index": 2808 + }, + "parameters": [ + { + "id": 2812, + "node_type": 44, + "src": { + "id": 2813, + "line": 743, + "column": 21, + "start": 26473, + "end": 26487, + "length": 15, + "parent_index": 2810 + }, + "scope": 2808, + "name": "spender", + "type_name": { + "id": 2814, + "node_type": 30, + "src": { + "id": 2815, + "line": 743, + "column": 21, + "start": 26473, + "end": 26479, + "length": 7, + "parent_index": 2812 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2816, + "node_type": 44, + "src": { + "id": 2817, + "line": 743, + "column": 38, + "start": 26490, + "end": 26499, + "length": 10, + "parent_index": 2810 + }, + "scope": 2808, + "name": "value", + "type_name": { + "id": 2818, + "node_type": 30, + "src": { + "id": 2819, + "line": 743, + "column": 38, + "start": 26490, + "end": 26493, + "length": 4, + "parent_index": 2816 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 2820, + "node_type": 43, + "src": { + "id": 2821, + "line": 743, + "column": 68, + "start": 26520, + "end": 26523, + "length": 4, + "parent_index": 2808 + }, + "parameters": [ + { + "id": 2822, + "node_type": 44, + "src": { + "id": 2823, + "line": 743, + "column": 68, + "start": 26520, + "end": 26523, + "length": 4, + "parent_index": 2820 + }, + "scope": 2808, + "name": "", + "type_name": { + "id": 2824, + "node_type": 30, + "src": { + "id": 2825, + "line": 743, + "column": 68, + "start": 26520, + "end": 26523, + "length": 4, + "parent_index": 2822 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_uint256$", + "type_string": "function(address,uint256)" + } + }, + { + "id": 2828, + "name": "transfer", + "node_type": 42, + "kind": 41, + "src": { + "id": 2829, + "line": 744, + "column": 4, + "start": 26531, + "end": 26596, + "length": 66, + "parent_index": 2674 + }, + "body": { + "id": 2846, + "node_type": 46, + "kind": 0, + "src": { + "id": 2829, + "line": 744, + "column": 4, + "start": 26531, + "end": 26596, + "length": 66, + "parent_index": 2828 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2830, + "node_type": 43, + "src": { + "id": 2831, + "line": 744, + "column": 22, + "start": 26549, + "end": 26570, + "length": 22, + "parent_index": 2828 + }, + "parameters": [ + { + "id": 2832, + "node_type": 44, + "src": { + "id": 2833, + "line": 744, + "column": 22, + "start": 26549, + "end": 26558, + "length": 10, + "parent_index": 2830 + }, + "scope": 2828, + "name": "to", + "type_name": { + "id": 2834, + "node_type": 30, + "src": { + "id": 2835, + "line": 744, + "column": 22, + "start": 26549, + "end": 26555, + "length": 7, + "parent_index": 2832 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2836, + "node_type": 44, + "src": { + "id": 2837, + "line": 744, + "column": 34, + "start": 26561, + "end": 26570, + "length": 10, + "parent_index": 2830 + }, + "scope": 2828, + "name": "value", + "type_name": { + "id": 2838, + "node_type": 30, + "src": { + "id": 2839, + "line": 744, + "column": 34, + "start": 26561, + "end": 26564, + "length": 4, + "parent_index": 2836 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 2840, + "node_type": 43, + "src": { + "id": 2841, + "line": 744, + "column": 64, + "start": 26591, + "end": 26594, + "length": 4, + "parent_index": 2828 + }, + "parameters": [ + { + "id": 2842, + "node_type": 44, + "src": { + "id": 2843, + "line": 744, + "column": 64, + "start": 26591, + "end": 26594, + "length": 4, + "parent_index": 2840 + }, + "scope": 2828, + "name": "", + "type_name": { + "id": 2844, + "node_type": 30, + "src": { + "id": 2845, + "line": 744, + "column": 64, + "start": 26591, + "end": 26594, + "length": 4, + "parent_index": 2842 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_uint256$", + "type_string": "function(address,uint256)" + } + }, + { + "id": 2848, + "name": "transferFrom", + "node_type": 42, + "kind": 41, + "src": { + "id": 2849, + "line": 745, + "column": 4, + "start": 26602, + "end": 26685, + "length": 84, + "parent_index": 2674 + }, + "body": { + "id": 2870, + "node_type": 46, + "kind": 0, + "src": { + "id": 2849, + "line": 745, + "column": 4, + "start": 26602, + "end": 26685, + "length": 84, + "parent_index": 2848 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2850, + "node_type": 43, + "src": { + "id": 2851, + "line": 745, + "column": 26, + "start": 26624, + "end": 26659, + "length": 36, + "parent_index": 2848 + }, + "parameters": [ + { + "id": 2852, + "node_type": 44, + "src": { + "id": 2853, + "line": 745, + "column": 26, + "start": 26624, + "end": 26635, + "length": 12, + "parent_index": 2850 + }, + "scope": 2848, + "name": "from", + "type_name": { + "id": 2854, + "node_type": 30, + "src": { + "id": 2855, + "line": 745, + "column": 26, + "start": 26624, + "end": 26630, + "length": 7, + "parent_index": 2852 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2856, + "node_type": 44, + "src": { + "id": 2857, + "line": 745, + "column": 40, + "start": 26638, + "end": 26647, + "length": 10, + "parent_index": 2850 + }, + "scope": 2848, + "name": "to", + "type_name": { + "id": 2858, + "node_type": 30, + "src": { + "id": 2859, + "line": 745, + "column": 40, + "start": 26638, + "end": 26644, + "length": 7, + "parent_index": 2856 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2860, + "node_type": 44, + "src": { + "id": 2861, + "line": 745, + "column": 52, + "start": 26650, + "end": 26659, + "length": 10, + "parent_index": 2850 + }, + "scope": 2848, + "name": "value", + "type_name": { + "id": 2862, + "node_type": 30, + "src": { + "id": 2863, + "line": 745, + "column": 52, + "start": 26650, + "end": 26653, + "length": 4, + "parent_index": 2860 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 2864, + "node_type": 43, + "src": { + "id": 2865, + "line": 745, + "column": 82, + "start": 26680, + "end": 26683, + "length": 4, + "parent_index": 2848 + }, + "parameters": [ + { + "id": 2866, + "node_type": 44, + "src": { + "id": 2867, + "line": 745, + "column": 82, + "start": 26680, + "end": 26683, + "length": 4, + "parent_index": 2864 + }, + "scope": 2848, + "name": "", + "type_name": { + "id": 2868, + "node_type": 30, + "src": { + "id": 2869, + "line": 745, + "column": 82, + "start": 26680, + "end": 26683, + "length": 4, + "parent_index": 2866 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + }, + { + "id": 2872, + "name": "DOMAIN_SEPARATOR", + "node_type": 42, + "kind": 41, + "src": { + "id": 2873, + "line": 747, + "column": 4, + "start": 26692, + "end": 26751, + "length": 60, + "parent_index": 2674 + }, + "body": { + "id": 2886, + "node_type": 46, + "kind": 0, + "src": { + "id": 2873, + "line": 747, + "column": 4, + "start": 26692, + "end": 26751, + "length": 60, + "parent_index": 2872 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2874, + "node_type": 43, + "src": { + "id": 2875, + "line": 747, + "column": 55, + "start": 26743, + "end": 26749, + "length": 7, + "parent_index": 2872 + }, + "parameters": [ + { + "id": 2876, + "node_type": 44, + "src": { + "id": 2877, + "line": 747, + "column": 55, + "start": 26743, + "end": 26749, + "length": 7, + "parent_index": 2874 + }, + "scope": 2872, + "name": "", + "type_name": { + "id": 2878, + "node_type": 30, + "src": { + "id": 2879, + "line": 747, + "column": 55, + "start": 26743, + "end": 26749, + "length": 7, + "parent_index": 2876 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "return_parameters": { + "id": 2880, + "node_type": 43, + "src": { + "id": 2881, + "line": 747, + "column": 55, + "start": 26743, + "end": 26749, + "length": 7, + "parent_index": 2872 + }, + "parameters": [ + { + "id": 2882, + "node_type": 44, + "src": { + "id": 2883, + "line": 747, + "column": 55, + "start": 26743, + "end": 26749, + "length": 7, + "parent_index": 2880 + }, + "scope": 2872, + "name": "", + "type_name": { + "id": 2884, + "node_type": 30, + "src": { + "id": 2885, + "line": 747, + "column": 55, + "start": 26743, + "end": 26749, + "length": 7, + "parent_index": 2882 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_bytes32$", + "type_string": "function(bytes32)" + } + }, + { + "id": 2888, + "name": "PERMIT_TYPEHASH", + "node_type": 42, + "kind": 41, + "src": { + "id": 2889, + "line": 748, + "column": 4, + "start": 26757, + "end": 26815, + "length": 59, + "parent_index": 2674 + }, + "body": { + "id": 2902, + "node_type": 46, + "kind": 0, + "src": { + "id": 2889, + "line": 748, + "column": 4, + "start": 26757, + "end": 26815, + "length": 59, + "parent_index": 2888 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2890, + "node_type": 43, + "src": { + "id": 2891, + "line": 748, + "column": 54, + "start": 26807, + "end": 26813, + "length": 7, + "parent_index": 2888 + }, + "parameters": [ + { + "id": 2892, + "node_type": 44, + "src": { + "id": 2893, + "line": 748, + "column": 54, + "start": 26807, + "end": 26813, + "length": 7, + "parent_index": 2890 + }, + "scope": 2888, + "name": "", + "type_name": { + "id": 2894, + "node_type": 30, + "src": { + "id": 2895, + "line": 748, + "column": 54, + "start": 26807, + "end": 26813, + "length": 7, + "parent_index": 2892 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "return_parameters": { + "id": 2896, + "node_type": 43, + "src": { + "id": 2897, + "line": 748, + "column": 54, + "start": 26807, + "end": 26813, + "length": 7, + "parent_index": 2888 + }, + "parameters": [ + { + "id": 2898, + "node_type": 44, + "src": { + "id": 2899, + "line": 748, + "column": 54, + "start": 26807, + "end": 26813, + "length": 7, + "parent_index": 2896 + }, + "scope": 2888, + "name": "", + "type_name": { + "id": 2900, + "node_type": 30, + "src": { + "id": 2901, + "line": 748, + "column": 54, + "start": 26807, + "end": 26813, + "length": 7, + "parent_index": 2898 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_bytes32$", + "type_string": "function(bytes32)" + } + }, + { + "id": 2904, + "name": "nonces", + "node_type": 42, + "kind": 41, + "src": { + "id": 2905, + "line": 749, + "column": 4, + "start": 26821, + "end": 26880, + "length": 60, + "parent_index": 2674 + }, + "body": { + "id": 2918, + "node_type": 46, + "kind": 0, + "src": { + "id": 2905, + "line": 749, + "column": 4, + "start": 26821, + "end": 26880, + "length": 60, + "parent_index": 2904 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2906, + "node_type": 43, + "src": { + "id": 2907, + "line": 749, + "column": 20, + "start": 26837, + "end": 26849, + "length": 13, + "parent_index": 2904 + }, + "parameters": [ + { + "id": 2908, + "node_type": 44, + "src": { + "id": 2909, + "line": 749, + "column": 20, + "start": 26837, + "end": 26849, + "length": 13, + "parent_index": 2906 + }, + "scope": 2904, + "name": "owner", + "type_name": { + "id": 2910, + "node_type": 30, + "src": { + "id": 2911, + "line": 749, + "column": 20, + "start": 26837, + "end": 26843, + "length": 7, + "parent_index": 2908 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 2912, + "node_type": 43, + "src": { + "id": 2913, + "line": 749, + "column": 58, + "start": 26875, + "end": 26878, + "length": 4, + "parent_index": 2904 + }, + "parameters": [ + { + "id": 2914, + "node_type": 44, + "src": { + "id": 2915, + "line": 749, + "column": 58, + "start": 26875, + "end": 26878, + "length": 4, + "parent_index": 2912 + }, + "scope": 2904, + "name": "", + "type_name": { + "id": 2916, + "node_type": 30, + "src": { + "id": 2917, + "line": 749, + "column": 58, + "start": 26875, + "end": 26878, + "length": 4, + "parent_index": 2914 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 2920, + "name": "permit", + "node_type": 42, + "kind": 41, + "src": { + "id": 2921, + "line": 751, + "column": 4, + "start": 26887, + "end": 27001, + "length": 115, + "parent_index": 2674 + }, + "body": { + "id": 2953, + "node_type": 46, + "kind": 0, + "src": { + "id": 2921, + "line": 751, + "column": 4, + "start": 26887, + "end": 27001, + "length": 115, + "parent_index": 2920 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2922, + "node_type": 43, + "src": { + "id": 2923, + "line": 751, + "column": 20, + "start": 26903, + "end": 26990, + "length": 88, + "parent_index": 2920 + }, + "parameters": [ + { + "id": 2924, + "node_type": 44, + "src": { + "id": 2925, + "line": 751, + "column": 20, + "start": 26903, + "end": 26915, + "length": 13, + "parent_index": 2922 + }, + "scope": 2920, + "name": "owner", + "type_name": { + "id": 2926, + "node_type": 30, + "src": { + "id": 2927, + "line": 751, + "column": 20, + "start": 26903, + "end": 26909, + "length": 7, + "parent_index": 2924 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2928, + "node_type": 44, + "src": { + "id": 2929, + "line": 751, + "column": 35, + "start": 26918, + "end": 26932, + "length": 15, + "parent_index": 2922 + }, + "scope": 2920, + "name": "spender", + "type_name": { + "id": 2930, + "node_type": 30, + "src": { + "id": 2931, + "line": 751, + "column": 35, + "start": 26918, + "end": 26924, + "length": 7, + "parent_index": 2928 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2932, + "node_type": 44, + "src": { + "id": 2933, + "line": 751, + "column": 52, + "start": 26935, + "end": 26944, + "length": 10, + "parent_index": 2922 + }, + "scope": 2920, + "name": "value", + "type_name": { + "id": 2934, + "node_type": 30, + "src": { + "id": 2935, + "line": 751, + "column": 52, + "start": 26935, + "end": 26938, + "length": 4, + "parent_index": 2932 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 2936, + "node_type": 44, + "src": { + "id": 2937, + "line": 751, + "column": 64, + "start": 26947, + "end": 26959, + "length": 13, + "parent_index": 2922 + }, + "scope": 2920, + "name": "deadline", + "type_name": { + "id": 2938, + "node_type": 30, + "src": { + "id": 2939, + "line": 751, + "column": 64, + "start": 26947, + "end": 26950, + "length": 4, + "parent_index": 2936 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 2940, + "node_type": 44, + "src": { + "id": 2941, + "line": 751, + "column": 79, + "start": 26962, + "end": 26968, + "length": 7, + "parent_index": 2922 + }, + "scope": 2920, + "name": "v", + "type_name": { + "id": 2942, + "node_type": 30, + "src": { + "id": 2943, + "line": 751, + "column": 79, + "start": 26962, + "end": 26966, + "length": 5, + "parent_index": 2940 + }, + "name": "uint8", + "type_description": { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 2944, + "node_type": 44, + "src": { + "id": 2945, + "line": 751, + "column": 88, + "start": 26971, + "end": 26979, + "length": 9, + "parent_index": 2922 + }, + "scope": 2920, + "name": "r", + "type_name": { + "id": 2946, + "node_type": 30, + "src": { + "id": 2947, + "line": 751, + "column": 88, + "start": 26971, + "end": 26977, + "length": 7, + "parent_index": 2944 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 2948, + "node_type": 44, + "src": { + "id": 2949, + "line": 751, + "column": 99, + "start": 26982, + "end": 26990, + "length": 9, + "parent_index": 2922 + }, + "scope": 2920, + "name": "s", + "type_name": { + "id": 2950, + "node_type": 30, + "src": { + "id": 2951, + "line": 751, + "column": 99, + "start": 26982, + "end": 26988, + "length": 7, + "parent_index": 2948 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "return_parameters": { + "id": 2952, + "node_type": 43, + "src": { + "id": 2921, + "line": 751, + "column": 4, + "start": 26887, + "end": 27001, + "length": 115, + "parent_index": 2920 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$_t_uint256$_t_uint8$_t_bytes32$_t_bytes32$", + "type_string": "function(address,address,uint256,uint256,uint8,bytes32,bytes32)" + } + }, + { + "id": 2955, + "node_type": 57, + "src": { + "id": 2956, + "line": 753, + "column": 4, + "start": 27008, + "end": 27070, + "length": 63, + "parent_index": 2674 + }, + "parameters": { + "id": 2957, + "node_type": 43, + "src": { + "id": 2956, + "line": 753, + "column": 4, + "start": 27008, + "end": 27070, + "length": 63, + "parent_index": 2955 + }, + "parameters": [ + { + "id": 2958, + "node_type": 44, + "src": { + "id": 2959, + "line": 753, + "column": 15, + "start": 27019, + "end": 27040, + "length": 22, + "parent_index": 2957 + }, + "scope": 2955, + "name": "sender", + "type_name": { + "id": 2960, + "node_type": 30, + "src": { + "id": 2961, + "line": 753, + "column": 15, + "start": 27019, + "end": 27025, + "length": 7, + "parent_index": 2958 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + }, + { + "id": 2962, + "node_type": 44, + "src": { + "id": 2963, + "line": 753, + "column": 39, + "start": 27043, + "end": 27054, + "length": 12, + "parent_index": 2957 + }, + "scope": 2955, + "name": "amount0", + "type_name": { + "id": 2964, + "node_type": 30, + "src": { + "id": 2965, + "line": 753, + "column": 39, + "start": 27043, + "end": 27046, + "length": 4, + "parent_index": 2962 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 2966, + "node_type": 44, + "src": { + "id": 2967, + "line": 753, + "column": 53, + "start": 27057, + "end": 27068, + "length": 12, + "parent_index": 2957 + }, + "scope": 2955, + "name": "amount1", + "type_name": { + "id": 2968, + "node_type": 30, + "src": { + "id": 2969, + "line": 753, + "column": 53, + "start": 27057, + "end": 27060, + "length": 4, + "parent_index": 2966 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "name": "Mint", + "anonymous": false + }, + { + "id": 2971, + "node_type": 57, + "src": { + "id": 2972, + "line": 754, + "column": 4, + "start": 27076, + "end": 27158, + "length": 83, + "parent_index": 2674 + }, + "parameters": { + "id": 2973, + "node_type": 43, + "src": { + "id": 2972, + "line": 754, + "column": 4, + "start": 27076, + "end": 27158, + "length": 83, + "parent_index": 2971 + }, + "parameters": [ + { + "id": 2974, + "node_type": 44, + "src": { + "id": 2975, + "line": 754, + "column": 15, + "start": 27087, + "end": 27108, + "length": 22, + "parent_index": 2973 + }, + "scope": 2971, + "name": "sender", + "type_name": { + "id": 2976, + "node_type": 30, + "src": { + "id": 2977, + "line": 754, + "column": 15, + "start": 27087, + "end": 27093, + "length": 7, + "parent_index": 2974 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + }, + { + "id": 2978, + "node_type": 44, + "src": { + "id": 2979, + "line": 754, + "column": 39, + "start": 27111, + "end": 27122, + "length": 12, + "parent_index": 2973 + }, + "scope": 2971, + "name": "amount0", + "type_name": { + "id": 2980, + "node_type": 30, + "src": { + "id": 2981, + "line": 754, + "column": 39, + "start": 27111, + "end": 27114, + "length": 4, + "parent_index": 2978 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 2982, + "node_type": 44, + "src": { + "id": 2983, + "line": 754, + "column": 53, + "start": 27125, + "end": 27136, + "length": 12, + "parent_index": 2973 + }, + "scope": 2971, + "name": "amount1", + "type_name": { + "id": 2984, + "node_type": 30, + "src": { + "id": 2985, + "line": 754, + "column": 53, + "start": 27125, + "end": 27128, + "length": 4, + "parent_index": 2982 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 2986, + "node_type": 44, + "src": { + "id": 2987, + "line": 754, + "column": 67, + "start": 27139, + "end": 27156, + "length": 18, + "parent_index": 2973 + }, + "scope": 2971, + "name": "to", + "type_name": { + "id": 2988, + "node_type": 30, + "src": { + "id": 2989, + "line": 754, + "column": 67, + "start": 27139, + "end": 27145, + "length": 7, + "parent_index": 2986 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "name": "Burn", + "anonymous": false + }, + { + "id": 2991, + "node_type": 57, + "src": { + "id": 2992, + "line": 755, + "column": 4, + "start": 27164, + "end": 27338, + "length": 175, + "parent_index": 2674 + }, + "parameters": { + "id": 2993, + "node_type": 43, + "src": { + "id": 2992, + "line": 755, + "column": 4, + "start": 27164, + "end": 27338, + "length": 175, + "parent_index": 2991 + }, + "parameters": [ + { + "id": 2994, + "node_type": 44, + "src": { + "id": 2995, + "line": 756, + "column": 8, + "start": 27184, + "end": 27205, + "length": 22, + "parent_index": 2993 + }, + "scope": 2991, + "name": "sender", + "type_name": { + "id": 2996, + "node_type": 30, + "src": { + "id": 2997, + "line": 756, + "column": 8, + "start": 27184, + "end": 27190, + "length": 7, + "parent_index": 2994 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + }, + { + "id": 2998, + "node_type": 44, + "src": { + "id": 2999, + "line": 757, + "column": 8, + "start": 27216, + "end": 27229, + "length": 14, + "parent_index": 2993 + }, + "scope": 2991, + "name": "amount0In", + "type_name": { + "id": 3000, + "node_type": 30, + "src": { + "id": 3001, + "line": 757, + "column": 8, + "start": 27216, + "end": 27219, + "length": 4, + "parent_index": 2998 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3002, + "node_type": 44, + "src": { + "id": 3003, + "line": 758, + "column": 8, + "start": 27240, + "end": 27253, + "length": 14, + "parent_index": 2993 + }, + "scope": 2991, + "name": "amount1In", + "type_name": { + "id": 3004, + "node_type": 30, + "src": { + "id": 3005, + "line": 758, + "column": 8, + "start": 27240, + "end": 27243, + "length": 4, + "parent_index": 3002 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3006, + "node_type": 44, + "src": { + "id": 3007, + "line": 759, + "column": 8, + "start": 27264, + "end": 27278, + "length": 15, + "parent_index": 2993 + }, + "scope": 2991, + "name": "amount0Out", + "type_name": { + "id": 3008, + "node_type": 30, + "src": { + "id": 3009, + "line": 759, + "column": 8, + "start": 27264, + "end": 27267, + "length": 4, + "parent_index": 3006 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3010, + "node_type": 44, + "src": { + "id": 3011, + "line": 760, + "column": 8, + "start": 27289, + "end": 27303, + "length": 15, + "parent_index": 2993 + }, + "scope": 2991, + "name": "amount1Out", + "type_name": { + "id": 3012, + "node_type": 30, + "src": { + "id": 3013, + "line": 760, + "column": 8, + "start": 27289, + "end": 27292, + "length": 4, + "parent_index": 3010 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3014, + "node_type": 44, + "src": { + "id": 3015, + "line": 761, + "column": 8, + "start": 27314, + "end": 27331, + "length": 18, + "parent_index": 2993 + }, + "scope": 2991, + "name": "to", + "type_name": { + "id": 3016, + "node_type": 30, + "src": { + "id": 3017, + "line": 761, + "column": 8, + "start": 27314, + "end": 27320, + "length": 7, + "parent_index": 3014 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4, + "indexed": true + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "name": "Swap", + "anonymous": false + }, + { + "id": 3019, + "node_type": 57, + "src": { + "id": 3020, + "line": 763, + "column": 4, + "start": 27344, + "end": 27390, + "length": 47, + "parent_index": 2674 + }, + "parameters": { + "id": 3021, + "node_type": 43, + "src": { + "id": 3020, + "line": 763, + "column": 4, + "start": 27344, + "end": 27390, + "length": 47, + "parent_index": 3019 + }, + "parameters": [ + { + "id": 3022, + "node_type": 44, + "src": { + "id": 3023, + "line": 763, + "column": 15, + "start": 27355, + "end": 27370, + "length": 16, + "parent_index": 3021 + }, + "scope": 3019, + "name": "reserve0", + "type_name": { + "id": 3024, + "node_type": 30, + "src": { + "id": 3025, + "line": 763, + "column": 15, + "start": 27355, + "end": 27361, + "length": 7, + "parent_index": 3022 + }, + "name": "uint112", + "type_description": { + "type_identifier": "t_uint112", + "type_string": "uint112" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3026, + "node_type": 44, + "src": { + "id": 3027, + "line": 763, + "column": 33, + "start": 27373, + "end": 27388, + "length": 16, + "parent_index": 3021 + }, + "scope": 3019, + "name": "reserve1", + "type_name": { + "id": 3028, + "node_type": 30, + "src": { + "id": 3029, + "line": 763, + "column": 33, + "start": 27373, + "end": 27379, + "length": 7, + "parent_index": 3026 + }, + "name": "uint112", + "type_description": { + "type_identifier": "t_uint112", + "type_string": "uint112" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint112", + "type_string": "uint112" + }, + { + "type_identifier": "t_uint112", + "type_string": "uint112" + } + ] + }, + "name": "Sync", + "anonymous": false + }, + { + "id": 3031, + "name": "MINIMUM_LIQUIDITY", + "node_type": 42, + "kind": 41, + "src": { + "id": 3032, + "line": 765, + "column": 4, + "start": 27397, + "end": 27454, + "length": 58, + "parent_index": 2674 + }, + "body": { + "id": 3045, + "node_type": 46, + "kind": 0, + "src": { + "id": 3032, + "line": 765, + "column": 4, + "start": 27397, + "end": 27454, + "length": 58, + "parent_index": 3031 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3033, + "node_type": 43, + "src": { + "id": 3034, + "line": 765, + "column": 56, + "start": 27449, + "end": 27452, + "length": 4, + "parent_index": 3031 + }, + "parameters": [ + { + "id": 3035, + "node_type": 44, + "src": { + "id": 3036, + "line": 765, + "column": 56, + "start": 27449, + "end": 27452, + "length": 4, + "parent_index": 3033 + }, + "scope": 3031, + "name": "", + "type_name": { + "id": 3037, + "node_type": 30, + "src": { + "id": 3038, + "line": 765, + "column": 56, + "start": 27449, + "end": 27452, + "length": 4, + "parent_index": 3035 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 3039, + "node_type": 43, + "src": { + "id": 3040, + "line": 765, + "column": 56, + "start": 27449, + "end": 27452, + "length": 4, + "parent_index": 3031 + }, + "parameters": [ + { + "id": 3041, + "node_type": 44, + "src": { + "id": 3042, + "line": 765, + "column": 56, + "start": 27449, + "end": 27452, + "length": 4, + "parent_index": 3039 + }, + "scope": 3031, + "name": "", + "type_name": { + "id": 3043, + "node_type": 30, + "src": { + "id": 3044, + "line": 765, + "column": 56, + "start": 27449, + "end": 27452, + "length": 4, + "parent_index": 3041 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + }, + { + "id": 3047, + "name": "factory", + "node_type": 42, + "kind": 41, + "src": { + "id": 3048, + "line": 766, + "column": 4, + "start": 27460, + "end": 27510, + "length": 51, + "parent_index": 2674 + }, + "body": { + "id": 3061, + "node_type": 46, + "kind": 0, + "src": { + "id": 3048, + "line": 766, + "column": 4, + "start": 27460, + "end": 27510, + "length": 51, + "parent_index": 3047 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3049, + "node_type": 43, + "src": { + "id": 3050, + "line": 766, + "column": 46, + "start": 27502, + "end": 27508, + "length": 7, + "parent_index": 3047 + }, + "parameters": [ + { + "id": 3051, + "node_type": 44, + "src": { + "id": 3052, + "line": 766, + "column": 46, + "start": 27502, + "end": 27508, + "length": 7, + "parent_index": 3049 + }, + "scope": 3047, + "name": "", + "type_name": { + "id": 3053, + "node_type": 30, + "src": { + "id": 3054, + "line": 766, + "column": 46, + "start": 27502, + "end": 27508, + "length": 7, + "parent_index": 3051 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 3055, + "node_type": 43, + "src": { + "id": 3056, + "line": 766, + "column": 46, + "start": 27502, + "end": 27508, + "length": 7, + "parent_index": 3047 + }, + "parameters": [ + { + "id": 3057, + "node_type": 44, + "src": { + "id": 3058, + "line": 766, + "column": 46, + "start": 27502, + "end": 27508, + "length": 7, + "parent_index": 3055 + }, + "scope": 3047, + "name": "", + "type_name": { + "id": 3059, + "node_type": 30, + "src": { + "id": 3060, + "line": 766, + "column": 46, + "start": 27502, + "end": 27508, + "length": 7, + "parent_index": 3057 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 3063, + "name": "token0", + "node_type": 42, + "kind": 41, + "src": { + "id": 3064, + "line": 767, + "column": 4, + "start": 27516, + "end": 27565, + "length": 50, + "parent_index": 2674 + }, + "body": { + "id": 3077, + "node_type": 46, + "kind": 0, + "src": { + "id": 3064, + "line": 767, + "column": 4, + "start": 27516, + "end": 27565, + "length": 50, + "parent_index": 3063 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3065, + "node_type": 43, + "src": { + "id": 3066, + "line": 767, + "column": 45, + "start": 27557, + "end": 27563, + "length": 7, + "parent_index": 3063 + }, + "parameters": [ + { + "id": 3067, + "node_type": 44, + "src": { + "id": 3068, + "line": 767, + "column": 45, + "start": 27557, + "end": 27563, + "length": 7, + "parent_index": 3065 + }, + "scope": 3063, + "name": "", + "type_name": { + "id": 3069, + "node_type": 30, + "src": { + "id": 3070, + "line": 767, + "column": 45, + "start": 27557, + "end": 27563, + "length": 7, + "parent_index": 3067 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 3071, + "node_type": 43, + "src": { + "id": 3072, + "line": 767, + "column": 45, + "start": 27557, + "end": 27563, + "length": 7, + "parent_index": 3063 + }, + "parameters": [ + { + "id": 3073, + "node_type": 44, + "src": { + "id": 3074, + "line": 767, + "column": 45, + "start": 27557, + "end": 27563, + "length": 7, + "parent_index": 3071 + }, + "scope": 3063, + "name": "", + "type_name": { + "id": 3075, + "node_type": 30, + "src": { + "id": 3076, + "line": 767, + "column": 45, + "start": 27557, + "end": 27563, + "length": 7, + "parent_index": 3073 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 3079, + "name": "token1", + "node_type": 42, + "kind": 41, + "src": { + "id": 3080, + "line": 768, + "column": 4, + "start": 27571, + "end": 27620, + "length": 50, + "parent_index": 2674 + }, + "body": { + "id": 3093, + "node_type": 46, + "kind": 0, + "src": { + "id": 3080, + "line": 768, + "column": 4, + "start": 27571, + "end": 27620, + "length": 50, + "parent_index": 3079 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3081, + "node_type": 43, + "src": { + "id": 3082, + "line": 768, + "column": 45, + "start": 27612, + "end": 27618, + "length": 7, + "parent_index": 3079 + }, + "parameters": [ + { + "id": 3083, + "node_type": 44, + "src": { + "id": 3084, + "line": 768, + "column": 45, + "start": 27612, + "end": 27618, + "length": 7, + "parent_index": 3081 + }, + "scope": 3079, + "name": "", + "type_name": { + "id": 3085, + "node_type": 30, + "src": { + "id": 3086, + "line": 768, + "column": 45, + "start": 27612, + "end": 27618, + "length": 7, + "parent_index": 3083 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 3087, + "node_type": 43, + "src": { + "id": 3088, + "line": 768, + "column": 45, + "start": 27612, + "end": 27618, + "length": 7, + "parent_index": 3079 + }, + "parameters": [ + { + "id": 3089, + "node_type": 44, + "src": { + "id": 3090, + "line": 768, + "column": 45, + "start": 27612, + "end": 27618, + "length": 7, + "parent_index": 3087 + }, + "scope": 3079, + "name": "", + "type_name": { + "id": 3091, + "node_type": 30, + "src": { + "id": 3092, + "line": 768, + "column": 45, + "start": 27612, + "end": 27618, + "length": 7, + "parent_index": 3089 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 3095, + "name": "getReserves", + "node_type": 42, + "kind": 41, + "src": { + "id": 3096, + "line": 769, + "column": 4, + "start": 27626, + "end": 27734, + "length": 109, + "parent_index": 2674 + }, + "body": { + "id": 3125, + "node_type": 46, + "kind": 0, + "src": { + "id": 3096, + "line": 769, + "column": 4, + "start": 27626, + "end": 27734, + "length": 109, + "parent_index": 3095 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3097, + "node_type": 43, + "src": { + "id": 3098, + "line": 769, + "column": 50, + "start": 27672, + "end": 27732, + "length": 61, + "parent_index": 3095 + }, + "parameters": [ + { + "id": 3099, + "node_type": 44, + "src": { + "id": 3100, + "line": 769, + "column": 50, + "start": 27672, + "end": 27687, + "length": 16, + "parent_index": 3097 + }, + "scope": 3095, + "name": "reserve0", + "type_name": { + "id": 3101, + "node_type": 30, + "src": { + "id": 3102, + "line": 769, + "column": 50, + "start": 27672, + "end": 27678, + "length": 7, + "parent_index": 3099 + }, + "name": "uint112", + "type_description": { + "type_identifier": "t_uint112", + "type_string": "uint112" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3103, + "node_type": 44, + "src": { + "id": 3104, + "line": 769, + "column": 68, + "start": 27690, + "end": 27705, + "length": 16, + "parent_index": 3097 + }, + "scope": 3095, + "name": "reserve1", + "type_name": { + "id": 3105, + "node_type": 30, + "src": { + "id": 3106, + "line": 769, + "column": 68, + "start": 27690, + "end": 27696, + "length": 7, + "parent_index": 3103 + }, + "name": "uint112", + "type_description": { + "type_identifier": "t_uint112", + "type_string": "uint112" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3107, + "node_type": 44, + "src": { + "id": 3108, + "line": 769, + "column": 86, + "start": 27708, + "end": 27732, + "length": 25, + "parent_index": 3097 + }, + "scope": 3095, + "name": "blockTimestampLast", + "type_name": { + "id": 3109, + "node_type": 30, + "src": { + "id": 3110, + "line": 769, + "column": 86, + "start": 27708, + "end": 27713, + "length": 6, + "parent_index": 3107 + }, + "name": "uint32", + "type_description": { + "type_identifier": "t_uint32", + "type_string": "uint32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint112", + "type_string": "uint112" + }, + { + "type_identifier": "t_uint112", + "type_string": "uint112" + }, + { + "type_identifier": "t_uint32", + "type_string": "uint32" + } + ] + }, + "return_parameters": { + "id": 3111, + "node_type": 43, + "src": { + "id": 3112, + "line": 769, + "column": 50, + "start": 27672, + "end": 27732, + "length": 61, + "parent_index": 3095 + }, + "parameters": [ + { + "id": 3113, + "node_type": 44, + "src": { + "id": 3114, + "line": 769, + "column": 50, + "start": 27672, + "end": 27687, + "length": 16, + "parent_index": 3111 + }, + "scope": 3095, + "name": "reserve0", + "type_name": { + "id": 3115, + "node_type": 30, + "src": { + "id": 3116, + "line": 769, + "column": 50, + "start": 27672, + "end": 27678, + "length": 7, + "parent_index": 3113 + }, + "name": "uint112", + "type_description": { + "type_identifier": "t_uint112", + "type_string": "uint112" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3117, + "node_type": 44, + "src": { + "id": 3118, + "line": 769, + "column": 68, + "start": 27690, + "end": 27705, + "length": 16, + "parent_index": 3111 + }, + "scope": 3095, + "name": "reserve1", + "type_name": { + "id": 3119, + "node_type": 30, + "src": { + "id": 3120, + "line": 769, + "column": 68, + "start": 27690, + "end": 27696, + "length": 7, + "parent_index": 3117 + }, + "name": "uint112", + "type_description": { + "type_identifier": "t_uint112", + "type_string": "uint112" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3121, + "node_type": 44, + "src": { + "id": 3122, + "line": 769, + "column": 86, + "start": 27708, + "end": 27732, + "length": 25, + "parent_index": 3111 + }, + "scope": 3095, + "name": "blockTimestampLast", + "type_name": { + "id": 3123, + "node_type": 30, + "src": { + "id": 3124, + "line": 769, + "column": 86, + "start": 27708, + "end": 27713, + "length": 6, + "parent_index": 3121 + }, + "name": "uint32", + "type_description": { + "type_identifier": "t_uint32", + "type_string": "uint32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint112", + "type_string": "uint112" + }, + { + "type_identifier": "t_uint112", + "type_string": "uint112" + }, + { + "type_identifier": "t_uint32", + "type_string": "uint32" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_uint112$_t_uint112$_t_uint32$", + "type_string": "function(uint112,uint112,uint32)" + } + }, + { + "id": 3127, + "name": "price0CumulativeLast", + "node_type": 42, + "kind": 41, + "src": { + "id": 3128, + "line": 770, + "column": 4, + "start": 27740, + "end": 27800, + "length": 61, + "parent_index": 2674 + }, + "body": { + "id": 3141, + "node_type": 46, + "kind": 0, + "src": { + "id": 3128, + "line": 770, + "column": 4, + "start": 27740, + "end": 27800, + "length": 61, + "parent_index": 3127 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3129, + "node_type": 43, + "src": { + "id": 3130, + "line": 770, + "column": 59, + "start": 27795, + "end": 27798, + "length": 4, + "parent_index": 3127 + }, + "parameters": [ + { + "id": 3131, + "node_type": 44, + "src": { + "id": 3132, + "line": 770, + "column": 59, + "start": 27795, + "end": 27798, + "length": 4, + "parent_index": 3129 + }, + "scope": 3127, + "name": "", + "type_name": { + "id": 3133, + "node_type": 30, + "src": { + "id": 3134, + "line": 770, + "column": 59, + "start": 27795, + "end": 27798, + "length": 4, + "parent_index": 3131 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 3135, + "node_type": 43, + "src": { + "id": 3136, + "line": 770, + "column": 59, + "start": 27795, + "end": 27798, + "length": 4, + "parent_index": 3127 + }, + "parameters": [ + { + "id": 3137, + "node_type": 44, + "src": { + "id": 3138, + "line": 770, + "column": 59, + "start": 27795, + "end": 27798, + "length": 4, + "parent_index": 3135 + }, + "scope": 3127, + "name": "", + "type_name": { + "id": 3139, + "node_type": 30, + "src": { + "id": 3140, + "line": 770, + "column": 59, + "start": 27795, + "end": 27798, + "length": 4, + "parent_index": 3137 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + }, + { + "id": 3143, + "name": "price1CumulativeLast", + "node_type": 42, + "kind": 41, + "src": { + "id": 3144, + "line": 771, + "column": 4, + "start": 27806, + "end": 27866, + "length": 61, + "parent_index": 2674 + }, + "body": { + "id": 3157, + "node_type": 46, + "kind": 0, + "src": { + "id": 3144, + "line": 771, + "column": 4, + "start": 27806, + "end": 27866, + "length": 61, + "parent_index": 3143 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3145, + "node_type": 43, + "src": { + "id": 3146, + "line": 771, + "column": 59, + "start": 27861, + "end": 27864, + "length": 4, + "parent_index": 3143 + }, + "parameters": [ + { + "id": 3147, + "node_type": 44, + "src": { + "id": 3148, + "line": 771, + "column": 59, + "start": 27861, + "end": 27864, + "length": 4, + "parent_index": 3145 + }, + "scope": 3143, + "name": "", + "type_name": { + "id": 3149, + "node_type": 30, + "src": { + "id": 3150, + "line": 771, + "column": 59, + "start": 27861, + "end": 27864, + "length": 4, + "parent_index": 3147 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 3151, + "node_type": 43, + "src": { + "id": 3152, + "line": 771, + "column": 59, + "start": 27861, + "end": 27864, + "length": 4, + "parent_index": 3143 + }, + "parameters": [ + { + "id": 3153, + "node_type": 44, + "src": { + "id": 3154, + "line": 771, + "column": 59, + "start": 27861, + "end": 27864, + "length": 4, + "parent_index": 3151 + }, + "scope": 3143, + "name": "", + "type_name": { + "id": 3155, + "node_type": 30, + "src": { + "id": 3156, + "line": 771, + "column": 59, + "start": 27861, + "end": 27864, + "length": 4, + "parent_index": 3153 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + }, + { + "id": 3159, + "name": "kLast", + "node_type": 42, + "kind": 41, + "src": { + "id": 3160, + "line": 772, + "column": 4, + "start": 27872, + "end": 27917, + "length": 46, + "parent_index": 2674 + }, + "body": { + "id": 3173, + "node_type": 46, + "kind": 0, + "src": { + "id": 3160, + "line": 772, + "column": 4, + "start": 27872, + "end": 27917, + "length": 46, + "parent_index": 3159 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3161, + "node_type": 43, + "src": { + "id": 3162, + "line": 772, + "column": 44, + "start": 27912, + "end": 27915, + "length": 4, + "parent_index": 3159 + }, + "parameters": [ + { + "id": 3163, + "node_type": 44, + "src": { + "id": 3164, + "line": 772, + "column": 44, + "start": 27912, + "end": 27915, + "length": 4, + "parent_index": 3161 + }, + "scope": 3159, + "name": "", + "type_name": { + "id": 3165, + "node_type": 30, + "src": { + "id": 3166, + "line": 772, + "column": 44, + "start": 27912, + "end": 27915, + "length": 4, + "parent_index": 3163 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 3167, + "node_type": 43, + "src": { + "id": 3168, + "line": 772, + "column": 44, + "start": 27912, + "end": 27915, + "length": 4, + "parent_index": 3159 + }, + "parameters": [ + { + "id": 3169, + "node_type": 44, + "src": { + "id": 3170, + "line": 772, + "column": 44, + "start": 27912, + "end": 27915, + "length": 4, + "parent_index": 3167 + }, + "scope": 3159, + "name": "", + "type_name": { + "id": 3171, + "node_type": 30, + "src": { + "id": 3172, + "line": 772, + "column": 44, + "start": 27912, + "end": 27915, + "length": 4, + "parent_index": 3169 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + }, + { + "id": 3175, + "name": "mint", + "node_type": 42, + "kind": 41, + "src": { + "id": 3176, + "line": 774, + "column": 4, + "start": 27924, + "end": 27983, + "length": 60, + "parent_index": 2674 + }, + "body": { + "id": 3189, + "node_type": 46, + "kind": 0, + "src": { + "id": 3176, + "line": 774, + "column": 4, + "start": 27924, + "end": 27983, + "length": 60, + "parent_index": 3175 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3177, + "node_type": 43, + "src": { + "id": 3178, + "line": 774, + "column": 18, + "start": 27938, + "end": 27947, + "length": 10, + "parent_index": 3175 + }, + "parameters": [ + { + "id": 3179, + "node_type": 44, + "src": { + "id": 3180, + "line": 774, + "column": 18, + "start": 27938, + "end": 27947, + "length": 10, + "parent_index": 3177 + }, + "scope": 3175, + "name": "to", + "type_name": { + "id": 3181, + "node_type": 30, + "src": { + "id": 3182, + "line": 774, + "column": 18, + "start": 27938, + "end": 27944, + "length": 7, + "parent_index": 3179 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 3183, + "node_type": 43, + "src": { + "id": 3184, + "line": 774, + "column": 48, + "start": 27968, + "end": 27981, + "length": 14, + "parent_index": 3175 + }, + "parameters": [ + { + "id": 3185, + "node_type": 44, + "src": { + "id": 3186, + "line": 774, + "column": 48, + "start": 27968, + "end": 27981, + "length": 14, + "parent_index": 3183 + }, + "scope": 3175, + "name": "liquidity", + "type_name": { + "id": 3187, + "node_type": 30, + "src": { + "id": 3188, + "line": 774, + "column": 48, + "start": 27968, + "end": 27971, + "length": 4, + "parent_index": 3185 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 3191, + "name": "burn", + "node_type": 42, + "kind": 41, + "src": { + "id": 3192, + "line": 775, + "column": 4, + "start": 27989, + "end": 28060, + "length": 72, + "parent_index": 2674 + }, + "body": { + "id": 3209, + "node_type": 46, + "kind": 0, + "src": { + "id": 3192, + "line": 775, + "column": 4, + "start": 27989, + "end": 28060, + "length": 72, + "parent_index": 3191 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3193, + "node_type": 43, + "src": { + "id": 3194, + "line": 775, + "column": 18, + "start": 28003, + "end": 28012, + "length": 10, + "parent_index": 3191 + }, + "parameters": [ + { + "id": 3195, + "node_type": 44, + "src": { + "id": 3196, + "line": 775, + "column": 18, + "start": 28003, + "end": 28012, + "length": 10, + "parent_index": 3193 + }, + "scope": 3191, + "name": "to", + "type_name": { + "id": 3197, + "node_type": 30, + "src": { + "id": 3198, + "line": 775, + "column": 18, + "start": 28003, + "end": 28009, + "length": 7, + "parent_index": 3195 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 3199, + "node_type": 43, + "src": { + "id": 3200, + "line": 775, + "column": 48, + "start": 28033, + "end": 28058, + "length": 26, + "parent_index": 3191 + }, + "parameters": [ + { + "id": 3201, + "node_type": 44, + "src": { + "id": 3202, + "line": 775, + "column": 48, + "start": 28033, + "end": 28044, + "length": 12, + "parent_index": 3199 + }, + "scope": 3191, + "name": "amount0", + "type_name": { + "id": 3203, + "node_type": 30, + "src": { + "id": 3204, + "line": 775, + "column": 48, + "start": 28033, + "end": 28036, + "length": 4, + "parent_index": 3201 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3205, + "node_type": 44, + "src": { + "id": 3206, + "line": 775, + "column": 62, + "start": 28047, + "end": 28058, + "length": 12, + "parent_index": 3199 + }, + "scope": 3191, + "name": "amount1", + "type_name": { + "id": 3207, + "node_type": 30, + "src": { + "id": 3208, + "line": 775, + "column": 62, + "start": 28047, + "end": 28050, + "length": 4, + "parent_index": 3205 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 3211, + "name": "swap", + "node_type": 42, + "kind": 41, + "src": { + "id": 3212, + "line": 776, + "column": 4, + "start": 28066, + "end": 28155, + "length": 90, + "parent_index": 2674 + }, + "body": { + "id": 3232, + "node_type": 46, + "kind": 0, + "src": { + "id": 3212, + "line": 776, + "column": 4, + "start": 28066, + "end": 28155, + "length": 90, + "parent_index": 3211 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3213, + "node_type": 43, + "src": { + "id": 3214, + "line": 776, + "column": 18, + "start": 28080, + "end": 28144, + "length": 65, + "parent_index": 3211 + }, + "parameters": [ + { + "id": 3215, + "node_type": 44, + "src": { + "id": 3216, + "line": 776, + "column": 18, + "start": 28080, + "end": 28094, + "length": 15, + "parent_index": 3213 + }, + "scope": 3211, + "name": "amount0Out", + "type_name": { + "id": 3217, + "node_type": 30, + "src": { + "id": 3218, + "line": 776, + "column": 18, + "start": 28080, + "end": 28083, + "length": 4, + "parent_index": 3215 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3219, + "node_type": 44, + "src": { + "id": 3220, + "line": 776, + "column": 35, + "start": 28097, + "end": 28111, + "length": 15, + "parent_index": 3213 + }, + "scope": 3211, + "name": "amount1Out", + "type_name": { + "id": 3221, + "node_type": 30, + "src": { + "id": 3222, + "line": 776, + "column": 35, + "start": 28097, + "end": 28100, + "length": 4, + "parent_index": 3219 + }, + "name": "uint", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3223, + "node_type": 44, + "src": { + "id": 3224, + "line": 776, + "column": 52, + "start": 28114, + "end": 28123, + "length": 10, + "parent_index": 3213 + }, + "scope": 3211, + "name": "to", + "type_name": { + "id": 3225, + "node_type": 30, + "src": { + "id": 3226, + "line": 776, + "column": 52, + "start": 28114, + "end": 28120, + "length": 7, + "parent_index": 3223 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 3227, + "node_type": 44, + "src": { + "id": 3228, + "line": 776, + "column": 64, + "start": 28126, + "end": 28144, + "length": 19, + "parent_index": 3213 + }, + "scope": 3211, + "name": "data", + "type_name": { + "id": 3229, + "node_type": 30, + "src": { + "id": 3230, + "line": 776, + "column": 64, + "start": 28126, + "end": 28130, + "length": 5, + "parent_index": 3227 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 4, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 3231, + "node_type": 43, + "src": { + "id": 3212, + "line": 776, + "column": 4, + "start": 28066, + "end": 28155, + "length": 90, + "parent_index": 3211 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$_t_address$_t_bytes$", + "type_string": "function(uint256,uint256,address,bytes)" + } + }, + { + "id": 3234, + "name": "skim", + "node_type": 42, + "kind": 41, + "src": { + "id": 3235, + "line": 777, + "column": 4, + "start": 28161, + "end": 28195, + "length": 35, + "parent_index": 2674 + }, + "body": { + "id": 3243, + "node_type": 46, + "kind": 0, + "src": { + "id": 3235, + "line": 777, + "column": 4, + "start": 28161, + "end": 28195, + "length": 35, + "parent_index": 3234 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3236, + "node_type": 43, + "src": { + "id": 3237, + "line": 777, + "column": 18, + "start": 28175, + "end": 28184, + "length": 10, + "parent_index": 3234 + }, + "parameters": [ + { + "id": 3238, + "node_type": 44, + "src": { + "id": 3239, + "line": 777, + "column": 18, + "start": 28175, + "end": 28184, + "length": 10, + "parent_index": 3236 + }, + "scope": 3234, + "name": "to", + "type_name": { + "id": 3240, + "node_type": 30, + "src": { + "id": 3241, + "line": 777, + "column": 18, + "start": 28175, + "end": 28181, + "length": 7, + "parent_index": 3238 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 3242, + "node_type": 43, + "src": { + "id": 3235, + "line": 777, + "column": 4, + "start": 28161, + "end": 28195, + "length": 35, + "parent_index": 3234 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 3245, + "name": "sync", + "node_type": 42, + "kind": 41, + "src": { + "id": 3246, + "line": 778, + "column": 4, + "start": 28201, + "end": 28225, + "length": 25, + "parent_index": 2674 + }, + "body": { + "id": 3249, + "node_type": 46, + "kind": 0, + "src": { + "id": 3246, + "line": 778, + "column": 4, + "start": 28201, + "end": 28225, + "length": 25, + "parent_index": 3245 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3247, + "node_type": 43, + "src": { + "id": 3246, + "line": 778, + "column": 4, + "start": 28201, + "end": 28225, + "length": 25, + "parent_index": 3245 + }, + "parameters": [], + "parameter_types": [] + }, + "return_parameters": { + "id": 3248, + "node_type": 43, + "src": { + "id": 3246, + "line": 778, + "column": 4, + "start": 28201, + "end": 28225, + "length": 25, + "parent_index": 3245 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + }, + { + "id": 3251, + "name": "initialize", + "node_type": 42, + "kind": 41, + "src": { + "id": 3252, + "line": 780, + "column": 4, + "start": 28232, + "end": 28278, + "length": 47, + "parent_index": 2674 + }, + "body": { + "id": 3264, + "node_type": 46, + "kind": 0, + "src": { + "id": 3252, + "line": 780, + "column": 4, + "start": 28232, + "end": 28278, + "length": 47, + "parent_index": 3251 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3253, + "node_type": 43, + "src": { + "id": 3254, + "line": 780, + "column": 24, + "start": 28252, + "end": 28267, + "length": 16, + "parent_index": 3251 + }, + "parameters": [ + { + "id": 3255, + "node_type": 44, + "src": { + "id": 3256, + "line": 780, + "column": 24, + "start": 28252, + "end": 28258, + "length": 7, + "parent_index": 3253 + }, + "scope": 3251, + "name": "", + "type_name": { + "id": 3257, + "node_type": 30, + "src": { + "id": 3258, + "line": 780, + "column": 24, + "start": 28252, + "end": 28258, + "length": 7, + "parent_index": 3255 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 3259, + "node_type": 44, + "src": { + "id": 3260, + "line": 780, + "column": 33, + "start": 28261, + "end": 28267, + "length": 7, + "parent_index": 3253 + }, + "scope": 3251, + "name": "", + "type_name": { + "id": 3261, + "node_type": 30, + "src": { + "id": 3262, + "line": 780, + "column": 33, + "start": 28261, + "end": 28267, + "length": 7, + "parent_index": 3259 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 3263, + "node_type": 43, + "src": { + "id": 3252, + "line": 780, + "column": 4, + "start": 28232, + "end": 28278, + "length": 47, + "parent_index": 3251 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2674, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$", + "type_string": "function(address,address)" + } + } + ], + "linearized_base_contracts": [ + 2674 + ], + "base_contracts": [], + "contract_dependencies": [] + } + ], + "src": { + "id": 2611, + "line": 732, + "column": 0, + "start": 25884, + "end": 28280, + "length": 2397, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IWETH.sol b/data/tests/contracts/sushixswap/IWETH.sol new file mode 100644 index 00000000..7b176fe6 --- /dev/null +++ b/data/tests/contracts/sushixswap/IWETH.sol @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity 0.8.11; + +interface IWETH { + function deposit() external payable; + + function transfer(address to, uint256 value) external returns (bool); + + function withdraw(uint256) external; +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/IWETH.solgo.ast.json b/data/tests/contracts/sushixswap/IWETH.solgo.ast.json new file mode 100644 index 00000000..c33b2d95 --- /dev/null +++ b/data/tests/contracts/sushixswap/IWETH.solgo.ast.json @@ -0,0 +1,461 @@ +{ + "id": 2303, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 2303, + "name": "IWETH", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IWETH.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IWETH.sol", + "name": "IWETH", + "node_type": 1, + "nodes": [ + { + "id": 2325, + "node_type": 10, + "src": { + "id": 2326, + "line": 669, + "column": 0, + "start": 24189, + "end": 24211, + "length": 23, + "parent_index": 2303 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 2363, + "name": "IWETH", + "node_type": 35, + "src": { + "id": 0, + "line": 671, + "column": 0, + "start": 24214, + "end": 24390, + "length": 177, + "parent_index": 2303 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 2365, + "name": "deposit", + "node_type": 42, + "kind": 41, + "src": { + "id": 2366, + "line": 672, + "column": 4, + "start": 24236, + "end": 24271, + "length": 36, + "parent_index": 2363 + }, + "body": { + "id": 2369, + "node_type": 46, + "kind": 0, + "src": { + "id": 2366, + "line": 672, + "column": 4, + "start": 24236, + "end": 24271, + "length": 36, + "parent_index": 2365 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 3, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2367, + "node_type": 43, + "src": { + "id": 2366, + "line": 672, + "column": 4, + "start": 24236, + "end": 24271, + "length": 36, + "parent_index": 2365 + }, + "parameters": [], + "parameter_types": [] + }, + "return_parameters": { + "id": 2368, + "node_type": 43, + "src": { + "id": 2366, + "line": 672, + "column": 4, + "start": 24236, + "end": 24271, + "length": 36, + "parent_index": 2365 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2363, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + }, + { + "id": 2371, + "name": "transfer", + "node_type": 42, + "kind": 41, + "src": { + "id": 2372, + "line": 674, + "column": 4, + "start": 24278, + "end": 24346, + "length": 69, + "parent_index": 2363 + }, + "body": { + "id": 2389, + "node_type": 46, + "kind": 0, + "src": { + "id": 2372, + "line": 674, + "column": 4, + "start": 24278, + "end": 24346, + "length": 69, + "parent_index": 2371 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2373, + "node_type": 43, + "src": { + "id": 2374, + "line": 674, + "column": 22, + "start": 24296, + "end": 24320, + "length": 25, + "parent_index": 2371 + }, + "parameters": [ + { + "id": 2375, + "node_type": 44, + "src": { + "id": 2376, + "line": 674, + "column": 22, + "start": 24296, + "end": 24305, + "length": 10, + "parent_index": 2373 + }, + "scope": 2371, + "name": "to", + "type_name": { + "id": 2377, + "node_type": 30, + "src": { + "id": 2378, + "line": 674, + "column": 22, + "start": 24296, + "end": 24302, + "length": 7, + "parent_index": 2375 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2379, + "node_type": 44, + "src": { + "id": 2380, + "line": 674, + "column": 34, + "start": 24308, + "end": 24320, + "length": 13, + "parent_index": 2373 + }, + "scope": 2371, + "name": "value", + "type_name": { + "id": 2381, + "node_type": 30, + "src": { + "id": 2382, + "line": 674, + "column": 34, + "start": 24308, + "end": 24314, + "length": 7, + "parent_index": 2379 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 2383, + "node_type": 43, + "src": { + "id": 2384, + "line": 674, + "column": 67, + "start": 24341, + "end": 24344, + "length": 4, + "parent_index": 2371 + }, + "parameters": [ + { + "id": 2385, + "node_type": 44, + "src": { + "id": 2386, + "line": 674, + "column": 67, + "start": 24341, + "end": 24344, + "length": 4, + "parent_index": 2383 + }, + "scope": 2371, + "name": "", + "type_name": { + "id": 2387, + "node_type": 30, + "src": { + "id": 2388, + "line": 674, + "column": 67, + "start": 24341, + "end": 24344, + "length": 4, + "parent_index": 2385 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "scope": 2363, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_uint256$", + "type_string": "function(address,uint256)" + } + }, + { + "id": 2391, + "name": "withdraw", + "node_type": 42, + "kind": 41, + "src": { + "id": 2392, + "line": 676, + "column": 4, + "start": 24353, + "end": 24388, + "length": 36, + "parent_index": 2363 + }, + "body": { + "id": 2400, + "node_type": 46, + "kind": 0, + "src": { + "id": 2392, + "line": 676, + "column": 4, + "start": 24353, + "end": 24388, + "length": 36, + "parent_index": 2391 + }, + "implemented": false, + "statements": [] + }, + "implemented": false, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2393, + "node_type": 43, + "src": { + "id": 2394, + "line": 676, + "column": 22, + "start": 24371, + "end": 24377, + "length": 7, + "parent_index": 2391 + }, + "parameters": [ + { + "id": 2395, + "node_type": 44, + "src": { + "id": 2396, + "line": 676, + "column": 22, + "start": 24371, + "end": 24377, + "length": 7, + "parent_index": 2393 + }, + "scope": 2391, + "name": "", + "type_name": { + "id": 2397, + "node_type": 30, + "src": { + "id": 2398, + "line": 676, + "column": 22, + "start": 24371, + "end": 24377, + "length": 7, + "parent_index": 2395 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 2399, + "node_type": 43, + "src": { + "id": 2392, + "line": 676, + "column": 4, + "start": 24353, + "end": 24388, + "length": 36, + "parent_index": 2391 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2363, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + } + ], + "linearized_base_contracts": [ + 2363 + ], + "base_contracts": [], + "contract_dependencies": [] + } + ], + "src": { + "id": 2304, + "line": 671, + "column": 0, + "start": 24214, + "end": 24390, + "length": 177, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/ImmutableState.sol b/data/tests/contracts/sushixswap/ImmutableState.sol new file mode 100644 index 00000000..7a38d182 --- /dev/null +++ b/data/tests/contracts/sushixswap/ImmutableState.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity 0.8.11; + +import "./IImmutableState.sol"; + +/// @title ImmutableState +/// @notice Stores the immutable state +abstract contract ImmutableState is IImmutableState { + /// @notice BentoBox token vault + IBentoBoxMinimal public immutable override bentoBox; + + /// @notice Stargate Router for cross chain interaction + IStargateRouter public immutable override stargateRouter; + + /// @notice Stargate Widget for stargate partner fee + IStargateWidget public immutable override stargateWidget; + + /// @notice Sushiswap Legacy AMM Factory + address public immutable override factory; + + /// @notice Sushiswap Legacy AMM PairCodeHash + bytes32 public immutable override pairCodeHash; + + constructor( + IBentoBoxMinimal _bentoBox, + IStargateRouter _stargateRouter, + address _factory, + bytes32 _pairCodeHash, + IStargateWidget _stargateWidget + ) { + bentoBox = _bentoBox; + stargateRouter = _stargateRouter; + stargateWidget = _stargateWidget; + factory = _factory; + pairCodeHash = _pairCodeHash; + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/ImmutableState.solgo.ast.json b/data/tests/contracts/sushixswap/ImmutableState.solgo.ast.json new file mode 100644 index 00000000..b24c1bca --- /dev/null +++ b/data/tests/contracts/sushixswap/ImmutableState.solgo.ast.json @@ -0,0 +1,1119 @@ +{ + "id": 1354, + "base_contracts": [ + { + "id": 1373, + "node_type": 62, + "src": { + "id": 1374, + "line": 382, + "column": 36, + "start": 13178, + "end": 13192, + "length": 15, + "parent_index": 1372 + }, + "base_name": { + "id": 1375, + "node_type": 52, + "src": { + "id": 1376, + "line": 382, + "column": 36, + "start": 13178, + "end": 13192, + "length": 15, + "parent_index": 1372 + }, + "name": "IImmutableState", + "referenced_declaration": 1213 + } + } + ], + "license": "MIT", + "exported_symbols": [ + { + "id": 1354, + "name": "ImmutableState", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ImmutableState.sol" + }, + { + "id": 1213, + "name": "IImmutableState", + "absolute_path": "IImmutableState.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ImmutableState.sol", + "name": "ImmutableState", + "node_type": 1, + "nodes": [ + { + "id": 1366, + "node_type": 10, + "src": { + "id": 1367, + "line": 376, + "column": 0, + "start": 13019, + "end": 13041, + "length": 23, + "parent_index": 1354 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 1371, + "node_type": 29, + "src": { + "id": 0, + "line": 378, + "column": 0, + "start": 13044, + "end": 13074, + "length": 31, + "parent_index": 1354 + }, + "absolute_path": "IImmutableState.sol", + "file": "./IImmutableState.sol", + "scope": 1354, + "unit_alias": "", + "source_unit": 1213 + }, + { + "id": 1372, + "name": "ImmutableState", + "node_type": 35, + "src": { + "id": 0, + "line": 382, + "column": 0, + "start": 13142, + "end": 14115, + "length": 974, + "parent_index": 1354 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 1378, + "name": "bentoBox", + "is_constant": false, + "is_state_variable": true, + "node_type": 44, + "src": { + "id": 1379, + "line": 384, + "column": 4, + "start": 13237, + "end": 13288, + "length": 52, + "parent_index": 1372 + }, + "scope": 1372, + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + }, + "visibility": 3, + "storage_location": 1, + "mutability": 2, + "type_name": { + "id": 1380, + "node_type": 69, + "src": { + "id": 1381, + "line": 384, + "column": 4, + "start": 13237, + "end": 13252, + "length": 16, + "parent_index": 1378 + }, + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + }, + "path_node": { + "id": 1382, + "name": "IBentoBoxMinimal", + "node_type": 52, + "referenced_declaration": 769, + "src": { + "id": 1383, + "line": 384, + "column": 4, + "start": 13237, + "end": 13252, + "length": 16, + "parent_index": 1380 + } + }, + "referenced_declaration": 769 + } + }, + { + "id": 1385, + "name": "stargateRouter", + "is_constant": false, + "is_state_variable": true, + "node_type": 44, + "src": { + "id": 1386, + "line": 387, + "column": 4, + "start": 13355, + "end": 13411, + "length": 57, + "parent_index": 1372 + }, + "scope": 1372, + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + }, + "visibility": 3, + "storage_location": 1, + "mutability": 2, + "type_name": { + "id": 1387, + "node_type": 69, + "src": { + "id": 1388, + "line": 387, + "column": 4, + "start": 13355, + "end": 13369, + "length": 15, + "parent_index": 1385 + }, + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + }, + "path_node": { + "id": 1389, + "name": "IStargateRouter", + "node_type": 52, + "referenced_declaration": 1012, + "src": { + "id": 1390, + "line": 387, + "column": 4, + "start": 13355, + "end": 13369, + "length": 15, + "parent_index": 1387 + } + }, + "referenced_declaration": 1012 + } + }, + { + "id": 1392, + "name": "stargateWidget", + "is_constant": false, + "is_state_variable": true, + "node_type": 44, + "src": { + "id": 1393, + "line": 390, + "column": 4, + "start": 13475, + "end": 13531, + "length": 57, + "parent_index": 1372 + }, + "scope": 1372, + "type_description": { + "type_identifier": "t_contract$_IStargateWidget_$1155", + "type_string": "contract IStargateWidget" + }, + "visibility": 3, + "storage_location": 1, + "mutability": 2, + "type_name": { + "id": 1394, + "node_type": 69, + "src": { + "id": 1395, + "line": 390, + "column": 4, + "start": 13475, + "end": 13489, + "length": 15, + "parent_index": 1392 + }, + "type_description": { + "type_identifier": "t_contract$_IStargateWidget_$1155", + "type_string": "contract IStargateWidget" + }, + "path_node": { + "id": 1396, + "name": "IStargateWidget", + "node_type": 52, + "referenced_declaration": 1155, + "src": { + "id": 1397, + "line": 390, + "column": 4, + "start": 13475, + "end": 13489, + "length": 15, + "parent_index": 1394 + } + }, + "referenced_declaration": 1155 + } + }, + { + "id": 1399, + "name": "factory", + "is_constant": false, + "is_state_variable": true, + "node_type": 44, + "src": { + "id": 1400, + "line": 393, + "column": 4, + "start": 13583, + "end": 13624, + "length": 42, + "parent_index": 1372 + }, + "scope": 1372, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "visibility": 3, + "storage_location": 1, + "mutability": 2, + "type_name": { + "id": 1401, + "node_type": 30, + "src": { + "id": 1402, + "line": 393, + "column": 4, + "start": 13583, + "end": 13589, + "length": 7, + "parent_index": 1399 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + } + }, + { + "id": 1404, + "name": "pairCodeHash", + "is_constant": false, + "is_state_variable": true, + "node_type": 44, + "src": { + "id": 1405, + "line": 396, + "column": 4, + "start": 13681, + "end": 13727, + "length": 47, + "parent_index": 1372 + }, + "scope": 1372, + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "visibility": 3, + "storage_location": 1, + "mutability": 2, + "type_name": { + "id": 1406, + "node_type": 30, + "src": { + "id": 1407, + "line": 396, + "column": 4, + "start": 13681, + "end": 13687, + "length": 7, + "parent_index": 1404 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + } + }, + { + "id": 1409, + "node_type": 42, + "src": { + "id": 1410, + "line": 398, + "column": 4, + "start": 13734, + "end": 14113, + "length": 380, + "parent_index": 1372 + }, + "kind": 11, + "state_mutability": 4, + "visibility": 1, + "implemented": true, + "modifiers": [], + "parameters": { + "id": 1411, + "node_type": 43, + "src": { + "id": 1412, + "line": 399, + "column": 8, + "start": 13755, + "end": 13919, + "length": 165, + "parent_index": 1409 + }, + "parameters": [ + { + "id": 1413, + "node_type": 44, + "src": { + "id": 1414, + "line": 399, + "column": 8, + "start": 13755, + "end": 13780, + "length": 26, + "parent_index": 1411 + }, + "scope": 1409, + "name": "_bentoBox", + "type_name": { + "id": 1415, + "node_type": 69, + "src": { + "id": 1416, + "line": 399, + "column": 8, + "start": 13755, + "end": 13770, + "length": 16, + "parent_index": 1413 + }, + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + }, + "path_node": { + "id": 1417, + "name": "IBentoBoxMinimal", + "node_type": 52, + "referenced_declaration": 769, + "src": { + "id": 1418, + "line": 399, + "column": 8, + "start": 13755, + "end": 13770, + "length": 16, + "parent_index": 1415 + } + }, + "referenced_declaration": 769 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1419, + "node_type": 44, + "src": { + "id": 1420, + "line": 400, + "column": 8, + "start": 13791, + "end": 13821, + "length": 31, + "parent_index": 1411 + }, + "scope": 1409, + "name": "_stargateRouter", + "type_name": { + "id": 1421, + "node_type": 69, + "src": { + "id": 1422, + "line": 400, + "column": 8, + "start": 13791, + "end": 13805, + "length": 15, + "parent_index": 1419 + }, + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + }, + "path_node": { + "id": 1423, + "name": "IStargateRouter", + "node_type": 52, + "referenced_declaration": 1012, + "src": { + "id": 1424, + "line": 400, + "column": 8, + "start": 13791, + "end": 13805, + "length": 15, + "parent_index": 1421 + } + }, + "referenced_declaration": 1012 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1425, + "node_type": 44, + "src": { + "id": 1426, + "line": 401, + "column": 8, + "start": 13832, + "end": 13847, + "length": 16, + "parent_index": 1411 + }, + "scope": 1409, + "name": "_factory", + "type_name": { + "id": 1427, + "node_type": 30, + "src": { + "id": 1428, + "line": 401, + "column": 8, + "start": 13832, + "end": 13838, + "length": 7, + "parent_index": 1425 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1429, + "node_type": 44, + "src": { + "id": 1430, + "line": 402, + "column": 8, + "start": 13858, + "end": 13878, + "length": 21, + "parent_index": 1411 + }, + "scope": 1409, + "name": "_pairCodeHash", + "type_name": { + "id": 1431, + "node_type": 30, + "src": { + "id": 1432, + "line": 402, + "column": 8, + "start": 13858, + "end": 13864, + "length": 7, + "parent_index": 1429 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1433, + "node_type": 44, + "src": { + "id": 1434, + "line": 403, + "column": 8, + "start": 13889, + "end": 13919, + "length": 31, + "parent_index": 1411 + }, + "scope": 1409, + "name": "_stargateWidget", + "type_name": { + "id": 1435, + "node_type": 69, + "src": { + "id": 1436, + "line": 403, + "column": 8, + "start": 13889, + "end": 13903, + "length": 15, + "parent_index": 1433 + }, + "type_description": { + "type_identifier": "t_contract$_IStargateWidget_$1155", + "type_string": "contract IStargateWidget" + }, + "path_node": { + "id": 1437, + "name": "IStargateWidget", + "node_type": 52, + "referenced_declaration": 1155, + "src": { + "id": 1438, + "line": 403, + "column": 8, + "start": 13889, + "end": 13903, + "length": 15, + "parent_index": 1435 + } + }, + "referenced_declaration": 1155 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + }, + { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + { + "type_identifier": "t_contract$_IStargateWidget_$1155", + "type_string": "contract IStargateWidget" + } + ] + }, + "return_parameters": { + "id": 1439, + "node_type": 43, + "src": { + "id": 1410, + "line": 398, + "column": 4, + "start": 13734, + "end": 14113, + "length": 380, + "parent_index": 1409 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 1372, + "body": { + "id": 1440, + "node_type": 46, + "kind": 0, + "src": { + "id": 1441, + "line": 404, + "column": 6, + "start": 13927, + "end": 14113, + "length": 187, + "parent_index": 1409 + }, + "implemented": true, + "statements": [ + { + "id": 1442, + "node_type": 81, + "src": { + "id": 1443, + "line": 405, + "column": 8, + "start": 13937, + "end": 13957, + "length": 21, + "parent_index": 1440 + }, + "expression": { + "id": 1444, + "node_type": 27, + "src": { + "id": 1445, + "line": 405, + "column": 8, + "start": 13937, + "end": 13956, + "length": 20, + "parent_index": 1440 + }, + "operator": 11, + "left_expression": { + "id": 1446, + "node_type": 16, + "src": { + "id": 1447, + "line": 405, + "column": 8, + "start": 13937, + "end": 13944, + "length": 8, + "parent_index": 1444 + }, + "name": "bentoBox", + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + }, + "overloaded_declarations": [], + "referenced_declaration": 1378, + "is_pure": false + }, + "right_expression": { + "id": 1448, + "node_type": 16, + "src": { + "id": 1449, + "line": 405, + "column": 19, + "start": 13948, + "end": 13956, + "length": 9, + "parent_index": 1444 + }, + "name": "_bentoBox", + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + }, + "overloaded_declarations": [], + "referenced_declaration": 1448, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + } + }, + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + } + }, + { + "id": 1450, + "node_type": 81, + "src": { + "id": 1451, + "line": 406, + "column": 8, + "start": 13967, + "end": 13999, + "length": 33, + "parent_index": 1440 + }, + "expression": { + "id": 1452, + "node_type": 27, + "src": { + "id": 1453, + "line": 406, + "column": 8, + "start": 13967, + "end": 13998, + "length": 32, + "parent_index": 1440 + }, + "operator": 11, + "left_expression": { + "id": 1454, + "node_type": 16, + "src": { + "id": 1455, + "line": 406, + "column": 8, + "start": 13967, + "end": 13980, + "length": 14, + "parent_index": 1452 + }, + "name": "stargateRouter", + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + }, + "overloaded_declarations": [], + "referenced_declaration": 1385, + "is_pure": false + }, + "right_expression": { + "id": 1456, + "node_type": 16, + "src": { + "id": 1457, + "line": 406, + "column": 25, + "start": 13984, + "end": 13998, + "length": 15, + "parent_index": 1452 + }, + "name": "_stargateRouter", + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + }, + "overloaded_declarations": [], + "referenced_declaration": 1456, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + } + }, + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + } + }, + { + "id": 1458, + "node_type": 81, + "src": { + "id": 1459, + "line": 407, + "column": 8, + "start": 14009, + "end": 14041, + "length": 33, + "parent_index": 1440 + }, + "expression": { + "id": 1460, + "node_type": 27, + "src": { + "id": 1461, + "line": 407, + "column": 8, + "start": 14009, + "end": 14040, + "length": 32, + "parent_index": 1440 + }, + "operator": 11, + "left_expression": { + "id": 1462, + "node_type": 16, + "src": { + "id": 1463, + "line": 407, + "column": 8, + "start": 14009, + "end": 14022, + "length": 14, + "parent_index": 1460 + }, + "name": "stargateWidget", + "type_description": { + "type_identifier": "t_contract$_IStargateWidget_$1155", + "type_string": "contract IStargateWidget" + }, + "overloaded_declarations": [], + "referenced_declaration": 1392, + "is_pure": false + }, + "right_expression": { + "id": 1464, + "node_type": 16, + "src": { + "id": 1465, + "line": 407, + "column": 25, + "start": 14026, + "end": 14040, + "length": 15, + "parent_index": 1460 + }, + "name": "_stargateWidget", + "type_description": { + "type_identifier": "t_contract$_IStargateWidget_$1155", + "type_string": "contract IStargateWidget" + }, + "overloaded_declarations": [], + "referenced_declaration": 1464, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_contract$_IStargateWidget_$1155", + "type_string": "contract IStargateWidget" + } + }, + "type_description": { + "type_identifier": "t_contract$_IStargateWidget_$1155", + "type_string": "contract IStargateWidget" + } + }, + { + "id": 1466, + "node_type": 81, + "src": { + "id": 1467, + "line": 408, + "column": 8, + "start": 14051, + "end": 14069, + "length": 19, + "parent_index": 1440 + }, + "expression": { + "id": 1468, + "node_type": 27, + "src": { + "id": 1469, + "line": 408, + "column": 8, + "start": 14051, + "end": 14068, + "length": 18, + "parent_index": 1440 + }, + "operator": 11, + "left_expression": { + "id": 1470, + "node_type": 16, + "src": { + "id": 1471, + "line": 408, + "column": 8, + "start": 14051, + "end": 14057, + "length": 7, + "parent_index": 1468 + }, + "name": "factory", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1399, + "is_pure": false + }, + "right_expression": { + "id": 1472, + "node_type": 16, + "src": { + "id": 1473, + "line": 408, + "column": 18, + "start": 14061, + "end": 14068, + "length": 8, + "parent_index": 1468 + }, + "name": "_factory", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1472, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + { + "id": 1474, + "node_type": 81, + "src": { + "id": 1475, + "line": 409, + "column": 8, + "start": 14079, + "end": 14107, + "length": 29, + "parent_index": 1440 + }, + "expression": { + "id": 1476, + "node_type": 27, + "src": { + "id": 1477, + "line": 409, + "column": 8, + "start": 14079, + "end": 14106, + "length": 28, + "parent_index": 1440 + }, + "operator": 11, + "left_expression": { + "id": 1478, + "node_type": 16, + "src": { + "id": 1479, + "line": 409, + "column": 8, + "start": 14079, + "end": 14090, + "length": 12, + "parent_index": 1476 + }, + "name": "pairCodeHash", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "overloaded_declarations": [], + "referenced_declaration": 1404, + "is_pure": false + }, + "right_expression": { + "id": 1480, + "node_type": 16, + "src": { + "id": 1481, + "line": 409, + "column": 23, + "start": 14094, + "end": 14106, + "length": 13, + "parent_index": 1476 + }, + "name": "_pairCodeHash", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "overloaded_declarations": [], + "referenced_declaration": 1480, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + }, + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + } + ] + } + } + ], + "linearized_base_contracts": [ + 1213, + 1372, + 1371 + ], + "base_contracts": [ + { + "id": 1373, + "node_type": 62, + "src": { + "id": 1374, + "line": 382, + "column": 36, + "start": 13178, + "end": 13192, + "length": 15, + "parent_index": 1372 + }, + "base_name": { + "id": 1375, + "node_type": 52, + "src": { + "id": 1376, + "line": 382, + "column": 36, + "start": 13178, + "end": 13192, + "length": 15, + "parent_index": 1372 + }, + "name": "IImmutableState", + "referenced_declaration": 1213 + } + } + ], + "contract_dependencies": [ + 1213, + 1371 + ] + } + ], + "src": { + "id": 1355, + "line": 382, + "column": 0, + "start": 13142, + "end": 14115, + "length": 974, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/SafeERC20.sol b/data/tests/contracts/sushixswap/SafeERC20.sol new file mode 100644 index 00000000..76c3741d --- /dev/null +++ b/data/tests/contracts/sushixswap/SafeERC20.sol @@ -0,0 +1,99 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol) + +pragma solidity ^0.8.0; + +import "./IERC20.sol"; +import "./Address.sol"; + +/** + * @title SafeERC20 + * @dev Wrappers around ERC20 operations that throw on failure (when the token + * contract returns false). Tokens that return no value (and instead revert or + * throw on failure) are also supported, non-reverting calls are assumed to be + * successful. + * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, + * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. + */ +library SafeERC20 { + using Address for address; + + function safeTransfer( + IERC20 token, + address to, + uint256 value + ) internal { + _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); + } + + function safeTransferFrom( + IERC20 token, + address from, + address to, + uint256 value + ) internal { + _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); + } + + /** + * @dev Deprecated. This function has issues similar to the ones found in + * {IERC20-approve}, and its usage is discouraged. + * + * Whenever possible, use {safeIncreaseAllowance} and + * {safeDecreaseAllowance} instead. + */ + function safeApprove( + IERC20 token, + address spender, + uint256 value + ) internal { + // safeApprove should only be called when setting an initial allowance, + // or when resetting it to zero. To increase and decrease it, use + // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' + require( + (value == 0) || (token.allowance(address(this), spender) == 0), + "SafeERC20: approve from non-zero to non-zero allowance" + ); + _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); + } + + function safeIncreaseAllowance( + IERC20 token, + address spender, + uint256 value + ) internal { + uint256 newAllowance = token.allowance(address(this), spender) + value; + _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); + } + + function safeDecreaseAllowance( + IERC20 token, + address spender, + uint256 value + ) internal { + unchecked { + uint256 oldAllowance = token.allowance(address(this), spender); + require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); + uint256 newAllowance = oldAllowance - value; + _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); + } + } + + /** + * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement + * on the return value: the return value is optional (but if data is returned, it must not be false). + * @param token The token targeted by the call. + * @param data The call data (encoded using abi.encode or one of its variants). + */ + function _callOptionalReturn(IERC20 token, bytes memory data) private { + // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since + // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that + // the target address contains contract code and also asserts for success in the low-level call. + + bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); + if (returndata.length > 0) { + // Return data is optional + require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); + } + } +} diff --git a/data/tests/contracts/sushixswap/SafeERC20.solgo.ast.json b/data/tests/contracts/sushixswap/SafeERC20.solgo.ast.json new file mode 100644 index 00000000..b6b8dd76 --- /dev/null +++ b/data/tests/contracts/sushixswap/SafeERC20.solgo.ast.json @@ -0,0 +1,4722 @@ +{ + "id": 1854, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 1854, + "name": "SafeERC20", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/SafeERC20.sol" + }, + { + "id": 1613, + "name": "IERC20", + "absolute_path": "IERC20.sol" + }, + { + "id": 1613, + "name": "Address", + "absolute_path": "Address.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/SafeERC20.sol", + "name": "SafeERC20", + "node_type": 1, + "nodes": [ + { + "id": 1874, + "node_type": 10, + "src": { + "id": 1875, + "line": 569, + "column": 0, + "start": 20339, + "end": 20361, + "length": 23, + "parent_index": 1854 + }, + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "text": "pragma solidity ^0.8.0;" + }, + { + "id": 1883, + "node_type": 29, + "src": { + "id": 0, + "line": 571, + "column": 0, + "start": 20364, + "end": 20385, + "length": 22, + "parent_index": 1854 + }, + "absolute_path": "IERC20.sol", + "file": "./IERC20.sol", + "scope": 1854, + "unit_alias": "", + "source_unit": 1613 + }, + { + "id": 1884, + "node_type": 29, + "src": { + "id": 0, + "line": 572, + "column": 0, + "start": 20387, + "end": 20409, + "length": 23, + "parent_index": 1854 + }, + "absolute_path": "Address.sol", + "file": "./Address.sol", + "scope": 1854, + "unit_alias": "", + "source_unit": 1613 + }, + { + "id": 1885, + "name": "SafeERC20", + "node_type": 35, + "src": { + "id": 0, + "line": 583, + "column": 0, + "start": 20870, + "end": 24139, + "length": 3270, + "parent_index": 1854 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 1887, + "node_type": 51, + "src": { + "id": 1888, + "line": 584, + "column": 0, + "start": 20894, + "end": 20919, + "length": 26, + "parent_index": 1885 + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "type_name": { + "id": 1889, + "node_type": 30, + "src": { + "id": 1890, + "line": 584, + "column": 22, + "start": 20912, + "end": 20918, + "length": 7, + "parent_index": 1887 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "library_name": { + "id": 1891, + "node_type": 52, + "src": { + "id": 1892, + "line": 584, + "column": 0, + "start": 20900, + "end": 20906, + "length": 7, + "parent_index": 1887 + }, + "name": "Address", + "referenced_declaration": 264 + } + }, + { + "id": 1894, + "name": "safeTransfer", + "node_type": 42, + "kind": 41, + "src": { + "id": 1895, + "line": 586, + "column": 4, + "start": 20926, + "end": 21130, + "length": 205, + "parent_index": 1885 + }, + "body": { + "id": 1913, + "node_type": 46, + "kind": 0, + "src": { + "id": 1914, + "line": 590, + "column": 15, + "start": 21028, + "end": 21130, + "length": 103, + "parent_index": 1894 + }, + "implemented": true, + "statements": [ + { + "id": 1915, + "node_type": 24, + "kind": 24, + "src": { + "id": 1916, + "line": 591, + "column": 8, + "start": 21038, + "end": 21123, + "length": 86, + "parent_index": 1913 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + ], + "arguments": [ + { + "id": 1919, + "node_type": 16, + "src": { + "id": 1920, + "line": 591, + "column": 28, + "start": 21058, + "end": 21062, + "length": 5, + "parent_index": 1915 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + }, + { + "id": 1921, + "node_type": 24, + "kind": 24, + "src": { + "id": 1922, + "line": 591, + "column": 35, + "start": 21065, + "end": 21122, + "length": 58, + "parent_index": 1915 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 1927, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1928, + "line": 591, + "column": 58, + "start": 21088, + "end": 21110, + "length": 23, + "parent_index": 1921 + }, + "expression": { + "id": 1929, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1930, + "line": 591, + "column": 58, + "start": 21088, + "end": 21101, + "length": 14, + "parent_index": 1927 + }, + "expression": { + "id": 1931, + "node_type": 16, + "src": { + "id": 1932, + "line": 591, + "column": 58, + "start": 21088, + "end": 21092, + "length": 5, + "parent_index": 1929 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + }, + "member_name": "transfer", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "member_name": "selector", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + { + "id": 1933, + "node_type": 16, + "src": { + "id": 1934, + "line": 591, + "column": 83, + "start": 21113, + "end": 21114, + "length": 2, + "parent_index": 1921 + }, + "name": "to", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1933, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 1935, + "node_type": 16, + "src": { + "id": 1936, + "line": 591, + "column": 87, + "start": 21117, + "end": 21121, + "length": 5, + "parent_index": 1921 + }, + "name": "value", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1935, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 1923, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1924, + "line": 591, + "column": 35, + "start": 21065, + "end": 21086, + "length": 22, + "parent_index": 1921 + }, + "expression": { + "id": 1925, + "node_type": 16, + "src": { + "id": 1926, + "line": 591, + "column": 35, + "start": 21065, + "end": 21067, + "length": 3, + "parent_index": 1923 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "encodeWithSelector", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + } + ], + "expression": { + "id": 1917, + "node_type": 16, + "src": { + "id": 1918, + "line": 591, + "column": 8, + "start": 21038, + "end": 21056, + "length": 19, + "parent_index": 1915 + }, + "name": "_callOptionalReturn", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,function(address,address,uint256))" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1896, + "node_type": 43, + "src": { + "id": 1897, + "line": 587, + "column": 8, + "start": 20957, + "end": 21011, + "length": 55, + "parent_index": 1894 + }, + "parameters": [ + { + "id": 1898, + "node_type": 44, + "src": { + "id": 1899, + "line": 587, + "column": 8, + "start": 20957, + "end": 20968, + "length": 12, + "parent_index": 1896 + }, + "scope": 1894, + "name": "token", + "type_name": { + "id": 1900, + "node_type": 69, + "src": { + "id": 1901, + "line": 587, + "column": 8, + "start": 20957, + "end": 20962, + "length": 6, + "parent_index": 1898 + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "path_node": { + "id": 1902, + "name": "IERC20", + "node_type": 52, + "referenced_declaration": 0, + "src": { + "id": 1903, + "line": 587, + "column": 8, + "start": 20957, + "end": 20962, + "length": 6, + "parent_index": 1900 + } + }, + "referenced_declaration": 2570 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1904, + "node_type": 44, + "src": { + "id": 1905, + "line": 588, + "column": 8, + "start": 20979, + "end": 20988, + "length": 10, + "parent_index": 1896 + }, + "scope": 1894, + "name": "to", + "type_name": { + "id": 1906, + "node_type": 30, + "src": { + "id": 1907, + "line": 588, + "column": 8, + "start": 20979, + "end": 20985, + "length": 7, + "parent_index": 1904 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1908, + "node_type": 44, + "src": { + "id": 1909, + "line": 589, + "column": 8, + "start": 20999, + "end": 21011, + "length": 13, + "parent_index": 1896 + }, + "scope": 1894, + "name": "value", + "type_name": { + "id": 1910, + "node_type": 30, + "src": { + "id": 1911, + "line": 589, + "column": 8, + "start": 20999, + "end": 21005, + "length": 7, + "parent_index": 1908 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + null, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 1912, + "node_type": 43, + "src": { + "id": 1895, + "line": 586, + "column": 4, + "start": 20926, + "end": 21130, + "length": 205, + "parent_index": 1894 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 1885, + "type_description": { + "type_identifier": "t_function_$_t_unknown_1894$_t_address$_t_uint256$", + "type_string": "function(unknown_1894,address,uint256)" + } + }, + { + "id": 1938, + "name": "safeTransferFrom", + "node_type": 42, + "kind": 41, + "src": { + "id": 1939, + "line": 594, + "column": 4, + "start": 21137, + "end": 21377, + "length": 241, + "parent_index": 1885 + }, + "body": { + "id": 1961, + "node_type": 46, + "kind": 0, + "src": { + "id": 1962, + "line": 599, + "column": 15, + "start": 21265, + "end": 21377, + "length": 113, + "parent_index": 1938 + }, + "implemented": true, + "statements": [ + { + "id": 1963, + "node_type": 24, + "kind": 24, + "src": { + "id": 1964, + "line": 600, + "column": 8, + "start": 21275, + "end": 21370, + "length": 96, + "parent_index": 1961 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,address,uint256)" + } + ], + "arguments": [ + { + "id": 1967, + "node_type": 16, + "src": { + "id": 1968, + "line": 600, + "column": 28, + "start": 21295, + "end": 21299, + "length": 5, + "parent_index": 1963 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + }, + { + "id": 1969, + "node_type": 24, + "kind": 24, + "src": { + "id": 1970, + "line": 600, + "column": 35, + "start": 21302, + "end": 21369, + "length": 68, + "parent_index": 1963 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 1975, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1976, + "line": 600, + "column": 58, + "start": 21325, + "end": 21351, + "length": 27, + "parent_index": 1969 + }, + "expression": { + "id": 1977, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1978, + "line": 600, + "column": 58, + "start": 21325, + "end": 21342, + "length": 18, + "parent_index": 1975 + }, + "expression": { + "id": 1979, + "node_type": 16, + "src": { + "id": 1980, + "line": 600, + "column": 58, + "start": 21325, + "end": 21329, + "length": 5, + "parent_index": 1977 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + }, + "member_name": "transferFrom", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "member_name": "selector", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + { + "id": 1981, + "node_type": 16, + "src": { + "id": 1982, + "line": 600, + "column": 87, + "start": 21354, + "end": 21357, + "length": 4, + "parent_index": 1969 + }, + "name": "from", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1981, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 1983, + "node_type": 16, + "src": { + "id": 1984, + "line": 600, + "column": 93, + "start": 21360, + "end": 21361, + "length": 2, + "parent_index": 1969 + }, + "name": "to", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 1983, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 1985, + "node_type": 16, + "src": { + "id": 1986, + "line": 600, + "column": 97, + "start": 21364, + "end": 21368, + "length": 5, + "parent_index": 1969 + }, + "name": "value", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1985, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 1971, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 1972, + "line": 600, + "column": 35, + "start": 21302, + "end": 21323, + "length": 22, + "parent_index": 1969 + }, + "expression": { + "id": 1973, + "node_type": 16, + "src": { + "id": 1974, + "line": 600, + "column": 35, + "start": 21302, + "end": 21304, + "length": 3, + "parent_index": 1971 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "encodeWithSelector", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,address,uint256)" + } + } + ], + "expression": { + "id": 1965, + "node_type": 16, + "src": { + "id": 1966, + "line": 600, + "column": 8, + "start": 21275, + "end": 21293, + "length": 19, + "parent_index": 1963 + }, + "name": "_callOptionalReturn", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_function_$_t_address$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,function(address,address,address,uint256))" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1940, + "node_type": 43, + "src": { + "id": 1941, + "line": 595, + "column": 8, + "start": 21172, + "end": 21248, + "length": 77, + "parent_index": 1938 + }, + "parameters": [ + { + "id": 1942, + "node_type": 44, + "src": { + "id": 1943, + "line": 595, + "column": 8, + "start": 21172, + "end": 21183, + "length": 12, + "parent_index": 1940 + }, + "scope": 1938, + "name": "token", + "type_name": { + "id": 1944, + "node_type": 69, + "src": { + "id": 1945, + "line": 595, + "column": 8, + "start": 21172, + "end": 21177, + "length": 6, + "parent_index": 1942 + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "path_node": { + "id": 1946, + "name": "IERC20", + "node_type": 52, + "referenced_declaration": 0, + "src": { + "id": 1947, + "line": 595, + "column": 8, + "start": 21172, + "end": 21177, + "length": 6, + "parent_index": 1944 + } + }, + "referenced_declaration": 2570 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1948, + "node_type": 44, + "src": { + "id": 1949, + "line": 596, + "column": 8, + "start": 21194, + "end": 21205, + "length": 12, + "parent_index": 1940 + }, + "scope": 1938, + "name": "from", + "type_name": { + "id": 1950, + "node_type": 30, + "src": { + "id": 1951, + "line": 596, + "column": 8, + "start": 21194, + "end": 21200, + "length": 7, + "parent_index": 1948 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1952, + "node_type": 44, + "src": { + "id": 1953, + "line": 597, + "column": 8, + "start": 21216, + "end": 21225, + "length": 10, + "parent_index": 1940 + }, + "scope": 1938, + "name": "to", + "type_name": { + "id": 1954, + "node_type": 30, + "src": { + "id": 1955, + "line": 597, + "column": 8, + "start": 21216, + "end": 21222, + "length": 7, + "parent_index": 1952 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 1956, + "node_type": 44, + "src": { + "id": 1957, + "line": 598, + "column": 8, + "start": 21236, + "end": 21248, + "length": 13, + "parent_index": 1940 + }, + "scope": 1938, + "name": "value", + "type_name": { + "id": 1958, + "node_type": 30, + "src": { + "id": 1959, + "line": 598, + "column": 8, + "start": 21236, + "end": 21242, + "length": 7, + "parent_index": 1956 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + null, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 1960, + "node_type": 43, + "src": { + "id": 1939, + "line": 594, + "column": 4, + "start": 21137, + "end": 21377, + "length": 241, + "parent_index": 1938 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 1885, + "type_description": { + "type_identifier": "t_function_$_t_unknown_1938$_t_address$_t_address$_t_uint256$", + "type_string": "function(unknown_1938,address,address,uint256)" + } + }, + { + "id": 1988, + "name": "safeApprove", + "node_type": 42, + "kind": 41, + "src": { + "id": 1989, + "line": 610, + "column": 4, + "start": 21638, + "end": 22240, + "length": 603, + "parent_index": 1885 + }, + "body": { + "id": 2007, + "node_type": 46, + "kind": 0, + "src": { + "id": 2008, + "line": 614, + "column": 15, + "start": 21744, + "end": 22240, + "length": 497, + "parent_index": 1988 + }, + "implemented": true, + "statements": [ + { + "id": 2009, + "node_type": 24, + "kind": 24, + "src": { + "id": 2010, + "line": 618, + "column": 8, + "start": 21971, + "end": 22133, + "length": 163, + "parent_index": 2007 + }, + "argument_types": [ + { + "type_identifier": "t_tuple_$_t_bool$", + "type_string": "tuple(bool)" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"" + } + ], + "arguments": [ + { + "id": 2013, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 2014, + "line": 619, + "column": 12, + "start": 21992, + "end": 22053, + "length": 62, + "parent_index": 2009 + }, + "operator": 33, + "left_expression": { + "id": 2015, + "node_type": 60, + "src": { + "id": 2016, + "line": 619, + "column": 12, + "start": 21992, + "end": 22003, + "length": 12, + "parent_index": 2013 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 2017, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 2018, + "line": 619, + "column": 13, + "start": 21993, + "end": 22002, + "length": 10, + "parent_index": 2015 + }, + "operator": 11, + "left_expression": { + "id": 2019, + "node_type": 16, + "src": { + "id": 2020, + "line": 619, + "column": 13, + "start": 21993, + "end": 21997, + "length": 5, + "parent_index": 2017 + }, + "name": "value", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 2019, + "is_pure": false + }, + "right_expression": { + "id": 2021, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 2022, + "line": 619, + "column": 22, + "start": 22002, + "end": 22002, + "length": 1, + "parent_index": 2017 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_bool$", + "type_string": "tuple(bool)" + } + }, + "right_expression": { + "id": 2023, + "node_type": 60, + "src": { + "id": 2024, + "line": 619, + "column": 28, + "start": 22008, + "end": 22053, + "length": 46, + "parent_index": 2013 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 2025, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 2026, + "line": 619, + "column": 29, + "start": 22009, + "end": 22052, + "length": 44, + "parent_index": 2023 + }, + "operator": 11, + "left_expression": { + "id": 2027, + "node_type": 24, + "kind": 24, + "src": { + "id": 2028, + "line": 619, + "column": 29, + "start": 22009, + "end": 22047, + "length": 39, + "parent_index": 2025 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 2033, + "node_type": 24, + "kind": 24, + "src": { + "id": 2034, + "line": 619, + "column": 45, + "start": 22025, + "end": 22037, + "length": 13, + "parent_index": 2027 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_SafeERC20_$1854", + "type_string": "contract SafeERC20" + } + ], + "arguments": [ + { + "id": 2039, + "node_type": 16, + "src": { + "id": 2040, + "line": 619, + "column": 53, + "start": 22033, + "end": 22036, + "length": 4, + "parent_index": 2033 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_SafeERC20_$1854", + "type_string": "contract SafeERC20" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 2035, + "node_type": 16, + "src": { + "id": 2036, + "line": 619, + "column": 45, + "start": 22025, + "end": 22031, + "length": 7, + "parent_index": 2033 + }, + "name": "address", + "type_name": { + "id": 2037, + "node_type": 30, + "src": { + "id": 2038, + "line": 619, + "column": 45, + "start": 22025, + "end": 22031, + "length": 7, + "parent_index": 2035 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 2041, + "node_type": 16, + "src": { + "id": 2042, + "line": 619, + "column": 60, + "start": 22040, + "end": 22046, + "length": 7, + "parent_index": 2027 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2041, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ] + } + ], + "expression": { + "id": 2029, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2030, + "line": 619, + "column": 29, + "start": 22009, + "end": 22023, + "length": 15, + "parent_index": 2027 + }, + "expression": { + "id": 2031, + "node_type": 16, + "src": { + "id": 2032, + "line": 619, + "column": 29, + "start": 22009, + "end": 22013, + "length": 5, + "parent_index": 2029 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + }, + "member_name": "allowance", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$_t_address$", + "type_string": "function(function(address),address)" + } + }, + "right_expression": { + "id": 2043, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 2044, + "line": 619, + "column": 72, + "start": 22052, + "end": 22052, + "length": 1, + "parent_index": 2025 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_bool$", + "type_string": "tuple(bool)" + } + }, + "type_description": { + "type_identifier": "t_tuple_$_t_bool$", + "type_string": "tuple(bool)" + } + }, + { + "id": 2045, + "node_type": 17, + "kind": 50, + "value": "SafeERC20: approve from non-zero to non-zero allowance", + "hex_value": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365", + "src": { + "id": 2046, + "line": 620, + "column": 12, + "start": 22068, + "end": 22123, + "length": 56, + "parent_index": 2009 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_tuple_$_t_bool$", + "type_string": "tuple(bool)" + } + ] + } + ], + "expression": { + "id": 2011, + "node_type": 16, + "src": { + "id": 2012, + "line": 618, + "column": 8, + "start": 21971, + "end": 21977, + "length": 7, + "parent_index": 2009 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_tuple_$_t_bool$_t_string_literal$", + "type_string": "function(tuple(bool),string memory)" + } + }, + { + "id": 2047, + "node_type": 24, + "kind": 24, + "src": { + "id": 2048, + "line": 622, + "column": 8, + "start": 22144, + "end": 22233, + "length": 90, + "parent_index": 2007 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + ], + "arguments": [ + { + "id": 2051, + "node_type": 16, + "src": { + "id": 2052, + "line": 622, + "column": 28, + "start": 22164, + "end": 22168, + "length": 5, + "parent_index": 2047 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + }, + { + "id": 2053, + "node_type": 24, + "kind": 24, + "src": { + "id": 2054, + "line": 622, + "column": 35, + "start": 22171, + "end": 22232, + "length": 62, + "parent_index": 2047 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 2059, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2060, + "line": 622, + "column": 58, + "start": 22194, + "end": 22215, + "length": 22, + "parent_index": 2053 + }, + "expression": { + "id": 2061, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2062, + "line": 622, + "column": 58, + "start": 22194, + "end": 22206, + "length": 13, + "parent_index": 2059 + }, + "expression": { + "id": 2063, + "node_type": 16, + "src": { + "id": 2064, + "line": 622, + "column": 58, + "start": 22194, + "end": 22198, + "length": 5, + "parent_index": 2061 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + }, + "member_name": "approve", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "member_name": "selector", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + { + "id": 2065, + "node_type": 16, + "src": { + "id": 2066, + "line": 622, + "column": 82, + "start": 22218, + "end": 22224, + "length": 7, + "parent_index": 2053 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2065, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 2067, + "node_type": 16, + "src": { + "id": 2068, + "line": 622, + "column": 91, + "start": 22227, + "end": 22231, + "length": 5, + "parent_index": 2053 + }, + "name": "value", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 2067, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 2055, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2056, + "line": 622, + "column": 35, + "start": 22171, + "end": 22192, + "length": 22, + "parent_index": 2053 + }, + "expression": { + "id": 2057, + "node_type": 16, + "src": { + "id": 2058, + "line": 622, + "column": 35, + "start": 22171, + "end": 22173, + "length": 3, + "parent_index": 2055 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "encodeWithSelector", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + } + ], + "expression": { + "id": 2049, + "node_type": 16, + "src": { + "id": 2050, + "line": 622, + "column": 8, + "start": 22144, + "end": 22162, + "length": 19, + "parent_index": 2047 + }, + "name": "_callOptionalReturn", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,function(address,address,uint256))" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 1990, + "node_type": 43, + "src": { + "id": 1991, + "line": 611, + "column": 8, + "start": 21668, + "end": 21727, + "length": 60, + "parent_index": 1988 + }, + "parameters": [ + { + "id": 1992, + "node_type": 44, + "src": { + "id": 1993, + "line": 611, + "column": 8, + "start": 21668, + "end": 21679, + "length": 12, + "parent_index": 1990 + }, + "scope": 1988, + "name": "token", + "type_name": { + "id": 1994, + "node_type": 69, + "src": { + "id": 1995, + "line": 611, + "column": 8, + "start": 21668, + "end": 21673, + "length": 6, + "parent_index": 1992 + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "path_node": { + "id": 1996, + "name": "IERC20", + "node_type": 52, + "referenced_declaration": 0, + "src": { + "id": 1997, + "line": 611, + "column": 8, + "start": 21668, + "end": 21673, + "length": 6, + "parent_index": 1994 + } + }, + "referenced_declaration": 2570 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 1998, + "node_type": 44, + "src": { + "id": 1999, + "line": 612, + "column": 8, + "start": 21690, + "end": 21704, + "length": 15, + "parent_index": 1990 + }, + "scope": 1988, + "name": "spender", + "type_name": { + "id": 2000, + "node_type": 30, + "src": { + "id": 2001, + "line": 612, + "column": 8, + "start": 21690, + "end": 21696, + "length": 7, + "parent_index": 1998 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2002, + "node_type": 44, + "src": { + "id": 2003, + "line": 613, + "column": 8, + "start": 21715, + "end": 21727, + "length": 13, + "parent_index": 1990 + }, + "scope": 1988, + "name": "value", + "type_name": { + "id": 2004, + "node_type": 30, + "src": { + "id": 2005, + "line": 613, + "column": 8, + "start": 21715, + "end": 21721, + "length": 7, + "parent_index": 2002 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + null, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 2006, + "node_type": 43, + "src": { + "id": 1989, + "line": 610, + "column": 4, + "start": 21638, + "end": 22240, + "length": 603, + "parent_index": 1988 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 1885, + "type_description": { + "type_identifier": "t_function_$_t_unknown_1988$_t_address$_t_uint256$", + "type_string": "function(unknown_1988,address,uint256)" + } + }, + { + "id": 2070, + "name": "safeIncreaseAllowance", + "node_type": 42, + "kind": 41, + "src": { + "id": 2071, + "line": 625, + "column": 4, + "start": 22247, + "end": 22556, + "length": 310, + "parent_index": 1885 + }, + "body": { + "id": 2089, + "node_type": 46, + "kind": 0, + "src": { + "id": 2090, + "line": 629, + "column": 15, + "start": 22363, + "end": 22556, + "length": 194, + "parent_index": 2070 + }, + "implemented": true, + "statements": [ + { + "id": 2091, + "node_type": 44, + "src": { + "id": 2092, + "line": 630, + "column": 8, + "start": 22373, + "end": 22443, + "length": 71, + "parent_index": 2089 + }, + "assignments": [ + 2093 + ], + "declarations": [ + { + "is_constant": false, + "id": 2093, + "state_mutability": 1, + "name": "newAllowance", + "node_type": 44, + "scope": 2089, + "src": { + "id": 2094, + "line": 630, + "column": 8, + "start": 22373, + "end": 22392, + "length": 20, + "parent_index": 2091 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 2095, + "node_type": 30, + "src": { + "id": 2096, + "line": 630, + "column": 8, + "start": 22373, + "end": 22379, + "length": 7, + "parent_index": 2093 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 2097, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 2098, + "line": 630, + "column": 31, + "start": 22396, + "end": 22442, + "length": 47, + "parent_index": 2091 + }, + "operator": 1, + "left_expression": { + "id": 2099, + "node_type": 24, + "kind": 24, + "src": { + "id": 2100, + "line": 630, + "column": 31, + "start": 22396, + "end": 22434, + "length": 39, + "parent_index": 2091 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 2105, + "node_type": 24, + "kind": 24, + "src": { + "id": 2106, + "line": 630, + "column": 47, + "start": 22412, + "end": 22424, + "length": 13, + "parent_index": 2099 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_SafeERC20_$1854", + "type_string": "contract SafeERC20" + } + ], + "arguments": [ + { + "id": 2111, + "node_type": 16, + "src": { + "id": 2112, + "line": 630, + "column": 55, + "start": 22420, + "end": 22423, + "length": 4, + "parent_index": 2105 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_SafeERC20_$1854", + "type_string": "contract SafeERC20" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 2107, + "node_type": 16, + "src": { + "id": 2108, + "line": 630, + "column": 47, + "start": 22412, + "end": 22418, + "length": 7, + "parent_index": 2105 + }, + "name": "address", + "type_name": { + "id": 2109, + "node_type": 30, + "src": { + "id": 2110, + "line": 630, + "column": 47, + "start": 22412, + "end": 22418, + "length": 7, + "parent_index": 2107 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 2113, + "node_type": 16, + "src": { + "id": 2114, + "line": 630, + "column": 62, + "start": 22427, + "end": 22433, + "length": 7, + "parent_index": 2099 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2113, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ] + } + ], + "expression": { + "id": 2101, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2102, + "line": 630, + "column": 31, + "start": 22396, + "end": 22410, + "length": 15, + "parent_index": 2099 + }, + "expression": { + "id": 2103, + "node_type": 16, + "src": { + "id": 2104, + "line": 630, + "column": 31, + "start": 22396, + "end": 22400, + "length": 5, + "parent_index": 2101 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + }, + "member_name": "allowance", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$_t_address$", + "type_string": "function(function(address),address)" + } + }, + "right_expression": { + "id": 2115, + "node_type": 16, + "src": { + "id": 2116, + "line": 630, + "column": 73, + "start": 22438, + "end": 22442, + "length": 5, + "parent_index": 2097 + }, + "name": "value", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 2115, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$_t_address$", + "type_string": "function(function(address),address)" + } + } + }, + { + "id": 2117, + "node_type": 24, + "kind": 24, + "src": { + "id": 2118, + "line": 631, + "column": 8, + "start": 22453, + "end": 22549, + "length": 97, + "parent_index": 2089 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + ], + "arguments": [ + { + "id": 2121, + "node_type": 16, + "src": { + "id": 2122, + "line": 631, + "column": 28, + "start": 22473, + "end": 22477, + "length": 5, + "parent_index": 2117 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + }, + { + "id": 2123, + "node_type": 24, + "kind": 24, + "src": { + "id": 2124, + "line": 631, + "column": 35, + "start": 22480, + "end": 22548, + "length": 69, + "parent_index": 2117 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 2129, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2130, + "line": 631, + "column": 58, + "start": 22503, + "end": 22524, + "length": 22, + "parent_index": 2123 + }, + "expression": { + "id": 2131, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2132, + "line": 631, + "column": 58, + "start": 22503, + "end": 22515, + "length": 13, + "parent_index": 2129 + }, + "expression": { + "id": 2133, + "node_type": 16, + "src": { + "id": 2134, + "line": 631, + "column": 58, + "start": 22503, + "end": 22507, + "length": 5, + "parent_index": 2131 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + }, + "member_name": "approve", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "member_name": "selector", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + { + "id": 2135, + "node_type": 16, + "src": { + "id": 2136, + "line": 631, + "column": 82, + "start": 22527, + "end": 22533, + "length": 7, + "parent_index": 2123 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2135, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 2137, + "node_type": 16, + "src": { + "id": 2138, + "line": 631, + "column": 91, + "start": 22536, + "end": 22547, + "length": 12, + "parent_index": 2123 + }, + "name": "newAllowance", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 2091, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 2125, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2126, + "line": 631, + "column": 35, + "start": 22480, + "end": 22501, + "length": 22, + "parent_index": 2123 + }, + "expression": { + "id": 2127, + "node_type": 16, + "src": { + "id": 2128, + "line": 631, + "column": 35, + "start": 22480, + "end": 22482, + "length": 3, + "parent_index": 2125 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "encodeWithSelector", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + } + ], + "expression": { + "id": 2119, + "node_type": 16, + "src": { + "id": 2120, + "line": 631, + "column": 8, + "start": 22453, + "end": 22471, + "length": 19, + "parent_index": 2117 + }, + "name": "_callOptionalReturn", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,function(address,address,uint256))" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2072, + "node_type": 43, + "src": { + "id": 2073, + "line": 626, + "column": 8, + "start": 22287, + "end": 22346, + "length": 60, + "parent_index": 2070 + }, + "parameters": [ + { + "id": 2074, + "node_type": 44, + "src": { + "id": 2075, + "line": 626, + "column": 8, + "start": 22287, + "end": 22298, + "length": 12, + "parent_index": 2072 + }, + "scope": 2070, + "name": "token", + "type_name": { + "id": 2076, + "node_type": 69, + "src": { + "id": 2077, + "line": 626, + "column": 8, + "start": 22287, + "end": 22292, + "length": 6, + "parent_index": 2074 + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "path_node": { + "id": 2078, + "name": "IERC20", + "node_type": 52, + "referenced_declaration": 0, + "src": { + "id": 2079, + "line": 626, + "column": 8, + "start": 22287, + "end": 22292, + "length": 6, + "parent_index": 2076 + } + }, + "referenced_declaration": 2570 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 2080, + "node_type": 44, + "src": { + "id": 2081, + "line": 627, + "column": 8, + "start": 22309, + "end": 22323, + "length": 15, + "parent_index": 2072 + }, + "scope": 2070, + "name": "spender", + "type_name": { + "id": 2082, + "node_type": 30, + "src": { + "id": 2083, + "line": 627, + "column": 8, + "start": 22309, + "end": 22315, + "length": 7, + "parent_index": 2080 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2084, + "node_type": 44, + "src": { + "id": 2085, + "line": 628, + "column": 8, + "start": 22334, + "end": 22346, + "length": 13, + "parent_index": 2072 + }, + "scope": 2070, + "name": "value", + "type_name": { + "id": 2086, + "node_type": 30, + "src": { + "id": 2087, + "line": 628, + "column": 8, + "start": 22334, + "end": 22340, + "length": 7, + "parent_index": 2084 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + null, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 2088, + "node_type": 43, + "src": { + "id": 2071, + "line": 625, + "column": 4, + "start": 22247, + "end": 22556, + "length": 310, + "parent_index": 2070 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 1885, + "type_description": { + "type_identifier": "t_function_$_t_unknown_2070$_t_address$_t_uint256$", + "type_string": "function(unknown_2070,address,uint256)" + } + }, + { + "id": 2140, + "name": "safeDecreaseAllowance", + "node_type": 42, + "kind": 41, + "src": { + "id": 2141, + "line": 634, + "column": 4, + "start": 22563, + "end": 23048, + "length": 486, + "parent_index": 1885 + }, + "body": { + "id": 2159, + "node_type": 46, + "kind": 0, + "src": { + "id": 2160, + "line": 638, + "column": 15, + "start": 22679, + "end": 23048, + "length": 370, + "parent_index": 2140 + }, + "implemented": true, + "statements": [ + { + "id": 2161, + "node_type": 59, + "kind": 0, + "src": { + "id": 2162, + "line": 639, + "column": 8, + "start": 22689, + "end": 23042, + "length": 354, + "parent_index": 1885 + }, + "implemented": false, + "statements": [ + { + "id": 2163, + "node_type": 44, + "src": { + "id": 2164, + "line": 640, + "column": 12, + "start": 22713, + "end": 22775, + "length": 63, + "parent_index": 2161 + }, + "assignments": [ + 2165 + ], + "declarations": [ + { + "is_constant": false, + "id": 2165, + "state_mutability": 1, + "name": "oldAllowance", + "node_type": 44, + "scope": 2161, + "src": { + "id": 2166, + "line": 640, + "column": 12, + "start": 22713, + "end": 22732, + "length": 20, + "parent_index": 2163 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 2167, + "node_type": 30, + "src": { + "id": 2168, + "line": 640, + "column": 12, + "start": 22713, + "end": 22719, + "length": 7, + "parent_index": 2165 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 2169, + "node_type": 24, + "kind": 24, + "src": { + "id": 2170, + "line": 640, + "column": 35, + "start": 22736, + "end": 22774, + "length": 39, + "parent_index": 2163 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 2175, + "node_type": 24, + "kind": 24, + "src": { + "id": 2176, + "line": 640, + "column": 51, + "start": 22752, + "end": 22764, + "length": 13, + "parent_index": 2169 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_SafeERC20_$1854", + "type_string": "contract SafeERC20" + } + ], + "arguments": [ + { + "id": 2181, + "node_type": 16, + "src": { + "id": 2182, + "line": 640, + "column": 59, + "start": 22760, + "end": 22763, + "length": 4, + "parent_index": 2175 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_SafeERC20_$1854", + "type_string": "contract SafeERC20" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 2177, + "node_type": 16, + "src": { + "id": 2178, + "line": 640, + "column": 51, + "start": 22752, + "end": 22758, + "length": 7, + "parent_index": 2175 + }, + "name": "address", + "type_name": { + "id": 2179, + "node_type": 30, + "src": { + "id": 2180, + "line": 640, + "column": 51, + "start": 22752, + "end": 22758, + "length": 7, + "parent_index": 2177 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 2183, + "node_type": 16, + "src": { + "id": 2184, + "line": 640, + "column": 66, + "start": 22767, + "end": 22773, + "length": 7, + "parent_index": 2169 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2183, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ] + } + ], + "expression": { + "id": 2171, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2172, + "line": 640, + "column": 35, + "start": 22736, + "end": 22750, + "length": 15, + "parent_index": 2169 + }, + "expression": { + "id": 2173, + "node_type": 16, + "src": { + "id": 2174, + "line": 640, + "column": 35, + "start": 22736, + "end": 22740, + "length": 5, + "parent_index": 2171 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + }, + "member_name": "allowance", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$_t_address$", + "type_string": "function(function(address),address)" + } + } + }, + { + "id": 2185, + "node_type": 24, + "kind": 24, + "src": { + "id": 2186, + "line": 641, + "column": 12, + "start": 22789, + "end": 22863, + "length": 75, + "parent_index": 2161 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"SafeERC20: decreased allowance below zero\"" + } + ], + "arguments": [ + { + "id": 2189, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 2190, + "line": 641, + "column": 20, + "start": 22797, + "end": 22817, + "length": 21, + "parent_index": 2185 + }, + "operator": 8, + "left_expression": { + "id": 2191, + "node_type": 16, + "src": { + "id": 2192, + "line": 641, + "column": 20, + "start": 22797, + "end": 22808, + "length": 12, + "parent_index": 2189 + }, + "name": "oldAllowance", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 2163, + "is_pure": false + }, + "right_expression": { + "id": 2193, + "node_type": 16, + "src": { + "id": 2194, + "line": 641, + "column": 36, + "start": 22813, + "end": 22817, + "length": 5, + "parent_index": 2189 + }, + "name": "value", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 2193, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 2195, + "node_type": 17, + "kind": 50, + "value": "SafeERC20: decreased allowance below zero", + "hex_value": "5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "src": { + "id": 2196, + "line": 641, + "column": 43, + "start": 22820, + "end": 22862, + "length": 43, + "parent_index": 2185 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"SafeERC20: decreased allowance below zero\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 2187, + "node_type": 16, + "src": { + "id": 2188, + "line": 641, + "column": 12, + "start": 22789, + "end": 22795, + "length": 7, + "parent_index": 2185 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 2197, + "node_type": 44, + "src": { + "id": 2198, + "line": 642, + "column": 12, + "start": 22878, + "end": 22921, + "length": 44, + "parent_index": 2161 + }, + "assignments": [ + 2199 + ], + "declarations": [ + { + "is_constant": false, + "id": 2199, + "state_mutability": 1, + "name": "newAllowance", + "node_type": 44, + "scope": 2161, + "src": { + "id": 2200, + "line": 642, + "column": 12, + "start": 22878, + "end": 22897, + "length": 20, + "parent_index": 2197 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 2201, + "node_type": 30, + "src": { + "id": 2202, + "line": 642, + "column": 12, + "start": 22878, + "end": 22884, + "length": 7, + "parent_index": 2199 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 2203, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 2204, + "line": 642, + "column": 35, + "start": 22901, + "end": 22920, + "length": 20, + "parent_index": 2197 + }, + "operator": 2, + "left_expression": { + "id": 2205, + "node_type": 16, + "src": { + "id": 2206, + "line": 642, + "column": 35, + "start": 22901, + "end": 22912, + "length": 12, + "parent_index": 2203 + }, + "name": "oldAllowance", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 2163, + "is_pure": false + }, + "right_expression": { + "id": 2207, + "node_type": 16, + "src": { + "id": 2208, + "line": 642, + "column": 50, + "start": 22916, + "end": 22920, + "length": 5, + "parent_index": 2203 + }, + "name": "value", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 2207, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + }, + { + "id": 2209, + "node_type": 24, + "kind": 24, + "src": { + "id": 2210, + "line": 643, + "column": 12, + "start": 22935, + "end": 23031, + "length": 97, + "parent_index": 2161 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + ], + "arguments": [ + { + "id": 2213, + "node_type": 16, + "src": { + "id": 2214, + "line": 643, + "column": 32, + "start": 22955, + "end": 22959, + "length": 5, + "parent_index": 2209 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + }, + { + "id": 2215, + "node_type": 24, + "kind": 24, + "src": { + "id": 2216, + "line": 643, + "column": 39, + "start": 22962, + "end": 23030, + "length": 69, + "parent_index": 2209 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 2221, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2222, + "line": 643, + "column": 62, + "start": 22985, + "end": 23006, + "length": 22, + "parent_index": 2215 + }, + "expression": { + "id": 2223, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2224, + "line": 643, + "column": 62, + "start": 22985, + "end": 22997, + "length": 13, + "parent_index": 2221 + }, + "expression": { + "id": 2225, + "node_type": 16, + "src": { + "id": 2226, + "line": 643, + "column": 62, + "start": 22985, + "end": 22989, + "length": 5, + "parent_index": 2223 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + }, + "member_name": "approve", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "member_name": "selector", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + { + "id": 2227, + "node_type": 16, + "src": { + "id": 2228, + "line": 643, + "column": 86, + "start": 23009, + "end": 23015, + "length": 7, + "parent_index": 2215 + }, + "name": "spender", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2227, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 2229, + "node_type": 16, + "src": { + "id": 2230, + "line": 643, + "column": 95, + "start": 23018, + "end": 23029, + "length": 12, + "parent_index": 2215 + }, + "name": "newAllowance", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 2197, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 2217, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2218, + "line": 643, + "column": 39, + "start": 22962, + "end": 22983, + "length": 22, + "parent_index": 2215 + }, + "expression": { + "id": 2219, + "node_type": 16, + "src": { + "id": 2220, + "line": 643, + "column": 39, + "start": 22962, + "end": 22964, + "length": 3, + "parent_index": 2217 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "encodeWithSelector", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + } + ], + "expression": { + "id": 2211, + "node_type": 16, + "src": { + "id": 2212, + "line": 643, + "column": 12, + "start": 22935, + "end": 22953, + "length": 19, + "parent_index": 2209 + }, + "name": "_callOptionalReturn", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,function(address,address,uint256))" + } + } + ] + } + ] + }, + "implemented": false, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2142, + "node_type": 43, + "src": { + "id": 2143, + "line": 635, + "column": 8, + "start": 22603, + "end": 22662, + "length": 60, + "parent_index": 2140 + }, + "parameters": [ + { + "id": 2144, + "node_type": 44, + "src": { + "id": 2145, + "line": 635, + "column": 8, + "start": 22603, + "end": 22614, + "length": 12, + "parent_index": 2142 + }, + "scope": 2140, + "name": "token", + "type_name": { + "id": 2146, + "node_type": 69, + "src": { + "id": 2147, + "line": 635, + "column": 8, + "start": 22603, + "end": 22608, + "length": 6, + "parent_index": 2144 + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "path_node": { + "id": 2148, + "name": "IERC20", + "node_type": 52, + "referenced_declaration": 0, + "src": { + "id": 2149, + "line": 635, + "column": 8, + "start": 22603, + "end": 22608, + "length": 6, + "parent_index": 2146 + } + }, + "referenced_declaration": 2570 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 2150, + "node_type": 44, + "src": { + "id": 2151, + "line": 636, + "column": 8, + "start": 22625, + "end": 22639, + "length": 15, + "parent_index": 2142 + }, + "scope": 2140, + "name": "spender", + "type_name": { + "id": 2152, + "node_type": 30, + "src": { + "id": 2153, + "line": 636, + "column": 8, + "start": 22625, + "end": 22631, + "length": 7, + "parent_index": 2150 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2154, + "node_type": 44, + "src": { + "id": 2155, + "line": 637, + "column": 8, + "start": 22650, + "end": 22662, + "length": 13, + "parent_index": 2142 + }, + "scope": 2140, + "name": "value", + "type_name": { + "id": 2156, + "node_type": 30, + "src": { + "id": 2157, + "line": 637, + "column": 8, + "start": 22650, + "end": 22656, + "length": 7, + "parent_index": 2154 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + null, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 2158, + "node_type": 43, + "src": { + "id": 2141, + "line": 634, + "column": 4, + "start": 22563, + "end": 23048, + "length": 486, + "parent_index": 2140 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 1885, + "type_description": { + "type_identifier": "t_function_$_t_unknown_2140$_t_address$_t_uint256$", + "type_string": "function(unknown_2140,address,uint256)" + } + }, + { + "id": 2232, + "name": "_callOptionalReturn", + "node_type": 42, + "kind": 41, + "src": { + "id": 2233, + "line": 653, + "column": 4, + "start": 23432, + "end": 24137, + "length": 706, + "parent_index": 1885 + }, + "body": { + "id": 2247, + "node_type": 46, + "kind": 0, + "src": { + "id": 2248, + "line": 653, + "column": 74, + "start": 23502, + "end": 24137, + "length": 636, + "parent_index": 2232 + }, + "implemented": true, + "statements": [ + { + "id": 2249, + "node_type": 44, + "src": { + "id": 2250, + "line": 658, + "column": 8, + "start": 23851, + "end": 23946, + "length": 96, + "parent_index": 2247 + }, + "assignments": [ + 2251 + ], + "declarations": [ + { + "is_constant": false, + "id": 2251, + "state_mutability": 1, + "name": "returndata", + "node_type": 44, + "scope": 2247, + "src": { + "id": 2252, + "line": 658, + "column": 8, + "start": 23851, + "end": 23873, + "length": 23, + "parent_index": 2249 + }, + "is_state_variable": false, + "storage_location": 2, + "type_name": { + "id": 2253, + "node_type": 30, + "src": { + "id": 2254, + "line": 658, + "column": 8, + "start": 23851, + "end": 23855, + "length": 5, + "parent_index": 2251 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 2255, + "node_type": 24, + "kind": 24, + "src": { + "id": 2256, + "line": 658, + "column": 34, + "start": 23877, + "end": 23945, + "length": 69, + "parent_index": 2249 + }, + "argument_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"SafeERC20: low-level call failed\"" + } + ], + "arguments": [ + { + "id": 2267, + "node_type": 16, + "src": { + "id": 2268, + "line": 658, + "column": 62, + "start": 23905, + "end": 23908, + "length": 4, + "parent_index": 2255 + }, + "name": "data", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 2267, + "is_pure": false + }, + { + "id": 2269, + "node_type": 17, + "kind": 50, + "value": "SafeERC20: low-level call failed", + "hex_value": "5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564", + "src": { + "id": 2270, + "line": 658, + "column": 68, + "start": 23911, + "end": 23944, + "length": 34, + "parent_index": 2255 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"SafeERC20: low-level call failed\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + } + ], + "expression": { + "id": 2257, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2258, + "line": 658, + "column": 34, + "start": 23877, + "end": 23903, + "length": 27, + "parent_index": 2255 + }, + "expression": { + "id": 2259, + "node_type": 24, + "kind": 24, + "src": { + "id": 2260, + "line": 658, + "column": 34, + "start": 23877, + "end": 23890, + "length": 14, + "parent_index": 2257 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 2265, + "node_type": 16, + "src": { + "id": 2266, + "line": 658, + "column": 42, + "start": 23885, + "end": 23889, + "length": 5, + "parent_index": 2259 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + } + ], + "expression": { + "id": 2261, + "node_type": 16, + "src": { + "id": 2262, + "line": 658, + "column": 34, + "start": 23877, + "end": 23883, + "length": 7, + "parent_index": 2259 + }, + "name": "address", + "type_name": { + "id": 2263, + "node_type": 30, + "src": { + "id": 2264, + "line": 658, + "column": 34, + "start": 23877, + "end": 23883, + "length": 7, + "parent_index": 2261 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "member_name": "functionCall", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_bytes$_t_string_literal$", + "type_string": "function(bytes,string memory)" + } + } + }, + { + "id": 2271, + "node_type": 48, + "src": { + "id": 2272, + "line": 659, + "column": 0, + "start": 23956, + "end": 24131, + "length": 176, + "parent_index": 2247 + }, + "condition": { + "id": 2273, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 2274, + "line": 659, + "column": 12, + "start": 23960, + "end": 23980, + "length": 21, + "parent_index": 2271 + }, + "operator": 7, + "left_expression": { + "id": 2275, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2276, + "line": 659, + "column": 12, + "start": 23960, + "end": 23976, + "length": 17, + "parent_index": 2273 + }, + "expression": { + "id": 2277, + "node_type": 16, + "src": { + "id": 2278, + "line": 659, + "column": 12, + "start": 23960, + "end": 23969, + "length": 10, + "parent_index": 2275 + }, + "name": "returndata", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 2249, + "is_pure": false + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + }, + "right_expression": { + "id": 2279, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 2280, + "line": 659, + "column": 32, + "start": 23980, + "end": 23980, + "length": 1, + "parent_index": 2273 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 2281, + "node_type": 46, + "kind": 0, + "src": { + "id": 2282, + "line": 659, + "column": 35, + "start": 23983, + "end": 24131, + "length": 149, + "parent_index": 2232 + }, + "implemented": true, + "statements": [ + { + "id": 2283, + "node_type": 24, + "kind": 24, + "src": { + "id": 2284, + "line": 661, + "column": 12, + "start": 24036, + "end": 24120, + "length": 85, + "parent_index": 2281 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_function_$_t_tuple_$_t_bool$", + "type_string": "function(function(),tuple(bool))" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"SafeERC20: ERC20 operation did not succeed\"" + } + ], + "arguments": [ + { + "id": 2287, + "node_type": 24, + "kind": 24, + "src": { + "id": 2288, + "line": 661, + "column": 20, + "start": 24044, + "end": 24073, + "length": 30, + "parent_index": 2283 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_tuple_$_t_bool$", + "type_string": "tuple(bool)" + } + ], + "arguments": [ + { + "id": 2293, + "node_type": 16, + "src": { + "id": 2294, + "line": 661, + "column": 31, + "start": 24055, + "end": 24064, + "length": 10, + "parent_index": 2287 + }, + "name": "returndata", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 2295, + "node_type": 60, + "src": { + "id": 2296, + "line": 661, + "column": 43, + "start": 24067, + "end": 24072, + "length": 6, + "parent_index": 2287 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 2297, + "node_type": 16, + "src": { + "id": 2298, + "line": 661, + "column": 44, + "start": 24068, + "end": 24071, + "length": 4, + "parent_index": 2295 + }, + "name": "bool", + "type_name": { + "id": 2299, + "node_type": 30, + "src": { + "id": 2300, + "line": 661, + "column": 44, + "start": 24068, + "end": 24071, + "length": 4, + "parent_index": 2297 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_bool$", + "type_string": "tuple(bool)" + } + } + ], + "expression": { + "id": 2289, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2290, + "line": 661, + "column": 20, + "start": 24044, + "end": 24053, + "length": 10, + "parent_index": 2287 + }, + "expression": { + "id": 2291, + "node_type": 16, + "src": { + "id": 2292, + "line": 661, + "column": 20, + "start": 24044, + "end": 24046, + "length": 3, + "parent_index": 2289 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "decode", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_tuple_$_t_bool$", + "type_string": "function(function(),tuple(bool))" + } + }, + { + "id": 2301, + "node_type": 17, + "kind": 50, + "value": "SafeERC20: ERC20 operation did not succeed", + "hex_value": "5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564", + "src": { + "id": 2302, + "line": 661, + "column": 52, + "start": 24076, + "end": 24119, + "length": 44, + "parent_index": 2283 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"SafeERC20: ERC20 operation did not succeed\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_function_$_t_function_$_t_tuple_$_t_bool$", + "type_string": "function(function(),tuple(bool))" + } + ] + } + ], + "expression": { + "id": 2285, + "node_type": 16, + "src": { + "id": 2286, + "line": 661, + "column": 12, + "start": 24036, + "end": 24042, + "length": 7, + "parent_index": 2283 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_tuple_$_t_bool$_t_string_literal$", + "type_string": "function(function(function(),tuple(bool)),string memory)" + } + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 2, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2234, + "node_type": 43, + "src": { + "id": 2235, + "line": 653, + "column": 33, + "start": 23461, + "end": 23491, + "length": 31, + "parent_index": 2232 + }, + "parameters": [ + { + "id": 2236, + "node_type": 44, + "src": { + "id": 2237, + "line": 653, + "column": 33, + "start": 23461, + "end": 23472, + "length": 12, + "parent_index": 2234 + }, + "scope": 2232, + "name": "token", + "type_name": { + "id": 2238, + "node_type": 69, + "src": { + "id": 2239, + "line": 653, + "column": 33, + "start": 23461, + "end": 23466, + "length": 6, + "parent_index": 2236 + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "path_node": { + "id": 2240, + "name": "IERC20", + "node_type": 52, + "referenced_declaration": 0, + "src": { + "id": 2241, + "line": 653, + "column": 33, + "start": 23461, + "end": 23466, + "length": 6, + "parent_index": 2238 + } + }, + "referenced_declaration": 2570 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 2242, + "node_type": 44, + "src": { + "id": 2243, + "line": 653, + "column": 47, + "start": 23475, + "end": 23491, + "length": 17, + "parent_index": 2234 + }, + "scope": 2232, + "name": "data", + "type_name": { + "id": 2244, + "node_type": 30, + "src": { + "id": 2245, + "line": 653, + "column": 47, + "start": 23475, + "end": 23479, + "length": 5, + "parent_index": 2242 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + null, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 2246, + "node_type": 43, + "src": { + "id": 2233, + "line": 653, + "column": 4, + "start": 23432, + "end": 24137, + "length": 706, + "parent_index": 2232 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 1885, + "type_description": { + "type_identifier": "t_function_$_t_unknown_2232$_t_bytes$", + "type_string": "function(unknown_2232,bytes)" + } + } + ], + "linearized_base_contracts": [ + 1885 + ], + "base_contracts": [], + "contract_dependencies": [], + "scope": 1854 + } + ], + "src": { + "id": 1855, + "line": 583, + "column": 0, + "start": 20870, + "end": 24139, + "length": 3270, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/SafeMath.sol b/data/tests/contracts/sushixswap/SafeMath.sol new file mode 100644 index 00000000..7991d716 --- /dev/null +++ b/data/tests/contracts/sushixswap/SafeMath.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: GPL-3.0 + +pragma solidity >=0.6.12; + +// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math) + +library SafeMathUniswap { + function add(uint256 x, uint256 y) internal pure returns (uint256 z) { + require((z = x + y) >= x, "ds-math-add-overflow"); + } + + function sub(uint256 x, uint256 y) internal pure returns (uint256 z) { + require((z = x - y) <= x, "ds-math-sub-underflow"); + } + + function mul(uint256 x, uint256 y) internal pure returns (uint256 z) { + require(y == 0 || (z = x * y) / y == x, "ds-math-mul-overflow"); + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/SafeMathUniswap.solgo.ast.json b/data/tests/contracts/sushixswap/SafeMathUniswap.solgo.ast.json new file mode 100644 index 00000000..24148222 --- /dev/null +++ b/data/tests/contracts/sushixswap/SafeMathUniswap.solgo.ast.json @@ -0,0 +1,1530 @@ +{ + "id": 3265, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 3265, + "name": "SafeMathUniswap", + "absolute_path": "" + } + ], + "absolute_path": "", + "name": "SafeMathUniswap", + "node_type": 1, + "nodes": [ + { + "id": 3293, + "node_type": 10, + "src": { + "id": 3294, + "line": 785, + "column": 0, + "start": 28320, + "end": 28344, + "length": 25, + "parent_index": 3265 + }, + "literals": [ + "pragma", + "solidity", + "\u003e=", + "0", + ".", + "6", + ".", + "12", + ";" + ], + "text": "pragma solidity \u003e=0.6.12;" + }, + { + "id": 3306, + "name": "SafeMathUniswap", + "node_type": 35, + "src": { + "id": 0, + "line": 789, + "column": 0, + "start": 28453, + "end": 28916, + "length": 464, + "parent_index": 3265 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 3308, + "name": "add", + "node_type": 42, + "kind": 41, + "src": { + "id": 3309, + "line": 790, + "column": 4, + "start": 28483, + "end": 28617, + "length": 135, + "parent_index": 3306 + }, + "body": { + "id": 3326, + "node_type": 46, + "kind": 0, + "src": { + "id": 3327, + "line": 790, + "column": 73, + "start": 28552, + "end": 28617, + "length": 66, + "parent_index": 3308 + }, + "implemented": true, + "statements": [ + { + "id": 3328, + "node_type": 24, + "kind": 24, + "src": { + "id": 3329, + "line": 791, + "column": 8, + "start": 28562, + "end": 28610, + "length": 49, + "parent_index": 3326 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ds-math-add-overflow\"" + } + ], + "arguments": [ + { + "id": 3332, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3333, + "line": 791, + "column": 16, + "start": 28570, + "end": 28585, + "length": 16, + "parent_index": 3328 + }, + "operator": 8, + "left_expression": { + "id": 3334, + "node_type": 60, + "src": { + "id": 3335, + "line": 791, + "column": 16, + "start": 28570, + "end": 28580, + "length": 11, + "parent_index": 3332 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 3336, + "node_type": 27, + "src": { + "id": 3337, + "line": 791, + "column": 17, + "start": 28571, + "end": 28579, + "length": 9, + "parent_index": 3334 + }, + "operator": 11, + "left_expression": { + "id": 3338, + "node_type": 16, + "src": { + "id": 3339, + "line": 791, + "column": 17, + "start": 28571, + "end": 28571, + "length": 1, + "parent_index": 3336 + }, + "name": "z", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3322, + "is_pure": false + }, + "right_expression": { + "id": 3340, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3341, + "line": 791, + "column": 21, + "start": 28575, + "end": 28579, + "length": 5, + "parent_index": 3336 + }, + "operator": 1, + "left_expression": { + "id": 3342, + "node_type": 16, + "src": { + "id": 3343, + "line": 791, + "column": 21, + "start": 28575, + "end": 28575, + "length": 1, + "parent_index": 3340 + }, + "name": "x", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3342, + "is_pure": false + }, + "right_expression": { + "id": 3344, + "node_type": 16, + "src": { + "id": 3345, + "line": 791, + "column": 25, + "start": 28579, + "end": 28579, + "length": 1, + "parent_index": 3340 + }, + "name": "y", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3344, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_uint256$", + "type_string": "tuple(uint256)" + } + }, + "right_expression": { + "id": 3346, + "node_type": 16, + "src": { + "id": 3347, + "line": 791, + "column": 31, + "start": 28585, + "end": 28585, + "length": 1, + "parent_index": 3332 + }, + "name": "x", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3346, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 3348, + "node_type": 17, + "kind": 50, + "value": "ds-math-add-overflow", + "hex_value": "64732d6d6174682d6164642d6f766572666c6f77", + "src": { + "id": 3349, + "line": 791, + "column": 34, + "start": 28588, + "end": 28609, + "length": 22, + "parent_index": 3328 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ds-math-add-overflow\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 3330, + "node_type": 16, + "src": { + "id": 3331, + "line": 791, + "column": 8, + "start": 28562, + "end": 28568, + "length": 7, + "parent_index": 3328 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3310, + "node_type": 43, + "src": { + "id": 3311, + "line": 790, + "column": 17, + "start": 28496, + "end": 28515, + "length": 20, + "parent_index": 3308 + }, + "parameters": [ + { + "id": 3312, + "node_type": 44, + "src": { + "id": 3313, + "line": 790, + "column": 17, + "start": 28496, + "end": 28504, + "length": 9, + "parent_index": 3310 + }, + "scope": 3308, + "name": "x", + "type_name": { + "id": 3314, + "node_type": 30, + "src": { + "id": 3315, + "line": 790, + "column": 17, + "start": 28496, + "end": 28502, + "length": 7, + "parent_index": 3312 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3316, + "node_type": 44, + "src": { + "id": 3317, + "line": 790, + "column": 28, + "start": 28507, + "end": 28515, + "length": 9, + "parent_index": 3310 + }, + "scope": 3308, + "name": "y", + "type_name": { + "id": 3318, + "node_type": 30, + "src": { + "id": 3319, + "line": 790, + "column": 28, + "start": 28507, + "end": 28513, + "length": 7, + "parent_index": 3316 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 3320, + "node_type": 43, + "src": { + "id": 3321, + "line": 790, + "column": 62, + "start": 28541, + "end": 28549, + "length": 9, + "parent_index": 3308 + }, + "parameters": [ + { + "id": 3322, + "node_type": 44, + "src": { + "id": 3323, + "line": 790, + "column": 62, + "start": 28541, + "end": 28549, + "length": 9, + "parent_index": 3320 + }, + "scope": 3308, + "name": "z", + "type_name": { + "id": 3324, + "node_type": 30, + "src": { + "id": 3325, + "line": 790, + "column": 62, + "start": 28541, + "end": 28547, + "length": 7, + "parent_index": 3322 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 3306, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + }, + { + "id": 3351, + "name": "sub", + "node_type": 42, + "kind": 41, + "src": { + "id": 3352, + "line": 794, + "column": 4, + "start": 28624, + "end": 28759, + "length": 136, + "parent_index": 3306 + }, + "body": { + "id": 3369, + "node_type": 46, + "kind": 0, + "src": { + "id": 3370, + "line": 794, + "column": 73, + "start": 28693, + "end": 28759, + "length": 67, + "parent_index": 3351 + }, + "implemented": true, + "statements": [ + { + "id": 3371, + "node_type": 24, + "kind": 24, + "src": { + "id": 3372, + "line": 795, + "column": 8, + "start": 28703, + "end": 28752, + "length": 50, + "parent_index": 3369 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ds-math-sub-underflow\"" + } + ], + "arguments": [ + { + "id": 3375, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3376, + "line": 795, + "column": 16, + "start": 28711, + "end": 28726, + "length": 16, + "parent_index": 3371 + }, + "operator": 10, + "left_expression": { + "id": 3377, + "node_type": 60, + "src": { + "id": 3378, + "line": 795, + "column": 16, + "start": 28711, + "end": 28721, + "length": 11, + "parent_index": 3375 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 3379, + "node_type": 27, + "src": { + "id": 3380, + "line": 795, + "column": 17, + "start": 28712, + "end": 28720, + "length": 9, + "parent_index": 3377 + }, + "operator": 11, + "left_expression": { + "id": 3381, + "node_type": 16, + "src": { + "id": 3382, + "line": 795, + "column": 17, + "start": 28712, + "end": 28712, + "length": 1, + "parent_index": 3379 + }, + "name": "z", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3322, + "is_pure": false + }, + "right_expression": { + "id": 3383, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3384, + "line": 795, + "column": 21, + "start": 28716, + "end": 28720, + "length": 5, + "parent_index": 3379 + }, + "operator": 2, + "left_expression": { + "id": 3385, + "node_type": 16, + "src": { + "id": 3386, + "line": 795, + "column": 21, + "start": 28716, + "end": 28716, + "length": 1, + "parent_index": 3383 + }, + "name": "x", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3385, + "is_pure": false + }, + "right_expression": { + "id": 3387, + "node_type": 16, + "src": { + "id": 3388, + "line": 795, + "column": 25, + "start": 28720, + "end": 28720, + "length": 1, + "parent_index": 3383 + }, + "name": "y", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3387, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_uint256$", + "type_string": "tuple(uint256)" + } + }, + "right_expression": { + "id": 3389, + "node_type": 16, + "src": { + "id": 3390, + "line": 795, + "column": 31, + "start": 28726, + "end": 28726, + "length": 1, + "parent_index": 3375 + }, + "name": "x", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3389, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 3391, + "node_type": 17, + "kind": 50, + "value": "ds-math-sub-underflow", + "hex_value": "64732d6d6174682d7375622d756e646572666c6f77", + "src": { + "id": 3392, + "line": 795, + "column": 34, + "start": 28729, + "end": 28751, + "length": 23, + "parent_index": 3371 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ds-math-sub-underflow\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 3373, + "node_type": 16, + "src": { + "id": 3374, + "line": 795, + "column": 8, + "start": 28703, + "end": 28709, + "length": 7, + "parent_index": 3371 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3353, + "node_type": 43, + "src": { + "id": 3354, + "line": 794, + "column": 17, + "start": 28637, + "end": 28656, + "length": 20, + "parent_index": 3351 + }, + "parameters": [ + { + "id": 3355, + "node_type": 44, + "src": { + "id": 3356, + "line": 794, + "column": 17, + "start": 28637, + "end": 28645, + "length": 9, + "parent_index": 3353 + }, + "scope": 3351, + "name": "x", + "type_name": { + "id": 3357, + "node_type": 30, + "src": { + "id": 3358, + "line": 794, + "column": 17, + "start": 28637, + "end": 28643, + "length": 7, + "parent_index": 3355 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3359, + "node_type": 44, + "src": { + "id": 3360, + "line": 794, + "column": 28, + "start": 28648, + "end": 28656, + "length": 9, + "parent_index": 3353 + }, + "scope": 3351, + "name": "y", + "type_name": { + "id": 3361, + "node_type": 30, + "src": { + "id": 3362, + "line": 794, + "column": 28, + "start": 28648, + "end": 28654, + "length": 7, + "parent_index": 3359 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 3363, + "node_type": 43, + "src": { + "id": 3364, + "line": 794, + "column": 62, + "start": 28682, + "end": 28690, + "length": 9, + "parent_index": 3351 + }, + "parameters": [ + { + "id": 3365, + "node_type": 44, + "src": { + "id": 3366, + "line": 794, + "column": 62, + "start": 28682, + "end": 28690, + "length": 9, + "parent_index": 3363 + }, + "scope": 3351, + "name": "z", + "type_name": { + "id": 3367, + "node_type": 30, + "src": { + "id": 3368, + "line": 794, + "column": 62, + "start": 28682, + "end": 28688, + "length": 7, + "parent_index": 3365 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 3306, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + }, + { + "id": 3394, + "name": "mul", + "node_type": 42, + "kind": 41, + "src": { + "id": 3395, + "line": 798, + "column": 4, + "start": 28766, + "end": 28914, + "length": 149, + "parent_index": 3306 + }, + "body": { + "id": 3412, + "node_type": 46, + "kind": 0, + "src": { + "id": 3413, + "line": 798, + "column": 73, + "start": 28835, + "end": 28914, + "length": 80, + "parent_index": 3394 + }, + "implemented": true, + "statements": [ + { + "id": 3414, + "node_type": 24, + "kind": 24, + "src": { + "id": 3415, + "line": 799, + "column": 8, + "start": 28845, + "end": 28907, + "length": 63, + "parent_index": 3412 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ds-math-mul-overflow\"" + } + ], + "arguments": [ + { + "id": 3418, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3419, + "line": 799, + "column": 16, + "start": 28853, + "end": 28882, + "length": 30, + "parent_index": 3414 + }, + "operator": 33, + "left_expression": { + "id": 3420, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3421, + "line": 799, + "column": 16, + "start": 28853, + "end": 28858, + "length": 6, + "parent_index": 3418 + }, + "operator": 11, + "left_expression": { + "id": 3422, + "node_type": 16, + "src": { + "id": 3423, + "line": 799, + "column": 16, + "start": 28853, + "end": 28853, + "length": 1, + "parent_index": 3420 + }, + "name": "y", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3422, + "is_pure": false + }, + "right_expression": { + "id": 3424, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 3425, + "line": 799, + "column": 21, + "start": 28858, + "end": 28858, + "length": 1, + "parent_index": 3420 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "right_expression": { + "id": 3426, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3427, + "line": 799, + "column": 26, + "start": 28863, + "end": 28882, + "length": 20, + "parent_index": 3418 + }, + "operator": 11, + "left_expression": { + "id": 3428, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3429, + "line": 799, + "column": 26, + "start": 28863, + "end": 28877, + "length": 15, + "parent_index": 3426 + }, + "operator": 4, + "left_expression": { + "id": 3430, + "node_type": 60, + "src": { + "id": 3431, + "line": 799, + "column": 26, + "start": 28863, + "end": 28873, + "length": 11, + "parent_index": 3428 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 3432, + "node_type": 27, + "src": { + "id": 3433, + "line": 799, + "column": 27, + "start": 28864, + "end": 28872, + "length": 9, + "parent_index": 3430 + }, + "operator": 11, + "left_expression": { + "id": 3434, + "node_type": 16, + "src": { + "id": 3435, + "line": 799, + "column": 27, + "start": 28864, + "end": 28864, + "length": 1, + "parent_index": 3432 + }, + "name": "z", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3322, + "is_pure": false + }, + "right_expression": { + "id": 3436, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3437, + "line": 799, + "column": 31, + "start": 28868, + "end": 28872, + "length": 5, + "parent_index": 3432 + }, + "operator": 3, + "left_expression": { + "id": 3438, + "node_type": 16, + "src": { + "id": 3439, + "line": 799, + "column": 31, + "start": 28868, + "end": 28868, + "length": 1, + "parent_index": 3436 + }, + "name": "x", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3438, + "is_pure": false + }, + "right_expression": { + "id": 3440, + "node_type": 16, + "src": { + "id": 3441, + "line": 799, + "column": 35, + "start": 28872, + "end": 28872, + "length": 1, + "parent_index": 3436 + }, + "name": "y", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3440, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_uint256$", + "type_string": "tuple(uint256)" + } + }, + "right_expression": { + "id": 3442, + "node_type": 16, + "src": { + "id": 3443, + "line": 799, + "column": 40, + "start": 28877, + "end": 28877, + "length": 1, + "parent_index": 3428 + }, + "name": "y", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3442, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_tuple_$_t_uint256$", + "type_string": "tuple(uint256)" + } + }, + "right_expression": { + "id": 3444, + "node_type": 16, + "src": { + "id": 3445, + "line": 799, + "column": 45, + "start": 28882, + "end": 28882, + "length": 1, + "parent_index": 3426 + }, + "name": "x", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3444, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 3446, + "node_type": 17, + "kind": 50, + "value": "ds-math-mul-overflow", + "hex_value": "64732d6d6174682d6d756c2d6f766572666c6f77", + "src": { + "id": 3447, + "line": 799, + "column": 48, + "start": 28885, + "end": 28906, + "length": 22, + "parent_index": 3414 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"ds-math-mul-overflow\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 3416, + "node_type": 16, + "src": { + "id": 3417, + "line": 799, + "column": 8, + "start": 28845, + "end": 28851, + "length": 7, + "parent_index": 3414 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3396, + "node_type": 43, + "src": { + "id": 3397, + "line": 798, + "column": 17, + "start": 28779, + "end": 28798, + "length": 20, + "parent_index": 3394 + }, + "parameters": [ + { + "id": 3398, + "node_type": 44, + "src": { + "id": 3399, + "line": 798, + "column": 17, + "start": 28779, + "end": 28787, + "length": 9, + "parent_index": 3396 + }, + "scope": 3394, + "name": "x", + "type_name": { + "id": 3400, + "node_type": 30, + "src": { + "id": 3401, + "line": 798, + "column": 17, + "start": 28779, + "end": 28785, + "length": 7, + "parent_index": 3398 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3402, + "node_type": 44, + "src": { + "id": 3403, + "line": 798, + "column": 28, + "start": 28790, + "end": 28798, + "length": 9, + "parent_index": 3396 + }, + "scope": 3394, + "name": "y", + "type_name": { + "id": 3404, + "node_type": 30, + "src": { + "id": 3405, + "line": 798, + "column": 28, + "start": 28790, + "end": 28796, + "length": 7, + "parent_index": 3402 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 3406, + "node_type": 43, + "src": { + "id": 3407, + "line": 798, + "column": 62, + "start": 28824, + "end": 28832, + "length": 9, + "parent_index": 3394 + }, + "parameters": [ + { + "id": 3408, + "node_type": 44, + "src": { + "id": 3409, + "line": 798, + "column": 62, + "start": 28824, + "end": 28832, + "length": 9, + "parent_index": 3406 + }, + "scope": 3394, + "name": "z", + "type_name": { + "id": 3410, + "node_type": 30, + "src": { + "id": 3411, + "line": 798, + "column": 62, + "start": 28824, + "end": 28830, + "length": 7, + "parent_index": 3408 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 3306, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256)" + } + } + ], + "linearized_base_contracts": [ + 3306 + ], + "base_contracts": [], + "contract_dependencies": [], + "scope": 3265 + } + ], + "src": { + "id": 3266, + "line": 789, + "column": 0, + "start": 28453, + "end": 28916, + "length": 464, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/StargateAdapter.sol b/data/tests/contracts/sushixswap/StargateAdapter.sol new file mode 100644 index 00000000..6eb252b8 --- /dev/null +++ b/data/tests/contracts/sushixswap/StargateAdapter.sol @@ -0,0 +1,150 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity 0.8.11; + +import "./IStargateAdapter.sol"; + +/// @title StargateAdapter +/// @notice Adapter for function used by Stargate Bridge +abstract contract StargateAdapter is ImmutableState, IStargateReceiver { + using SafeERC20 for IERC20; + + // Custom Error + error NotStargateRouter(); + + // events + event StargateSushiXSwapSrc(bytes32 indexed srcContext); + event StargateSushiXSwapDst(bytes32 indexed srcContext, bool failed); + + struct StargateTeleportParams { + uint16 dstChainId; // stargate dst chain id + address token; // token getting bridged + uint256 srcPoolId; // stargate src pool id + uint256 dstPoolId; // stargate dst pool id + uint256 amount; // amount to bridge + uint256 amountMin; // amount to bridge minimum + uint256 dustAmount; // native token to be received on dst chain + address receiver; // sushiXswap on dst chain + address to; // receiver bridge token incase of transaction reverts on dst chain + uint256 gas; // extra gas to be sent for dst chain operations + bytes32 srcContext; // random bytes32 as source context + } + + /// @notice Approves token to the Stargate Router + /// @param token token to approve + function approveToStargateRouter(IERC20 token) external { + token.safeApprove(address(stargateRouter), type(uint256).max); + } + + /// @notice Bridges the token to dst chain using Stargate Router + /// @dev It is hardcoded to use all the contract balance. Only call this as the last step. + /// The refund address for extra fees sent it msg.sender. + /// @param params required by the Stargate, can be found at StargateTeleportParams struct. + /// @param actions An array with a sequence of actions to execute (see ACTION_ declarations). + /// @param values A one-to-one mapped array to `actions`. Native token amount to send along action. + /// @param datas A one-to-one mapped array to `actions`. Contains abi encoded data of function arguments. + function _stargateTeleport( + StargateTeleportParams memory params, + uint8[] memory actions, + uint256[] memory values, + bytes[] memory datas + ) internal { + bytes memory payload = abi.encode(params.to, actions, values, datas, params.srcContext); + + stargateRouter.swap{value: address(this).balance}( + params.dstChainId, + params.srcPoolId, + params.dstPoolId, + payable(msg.sender), // refund address + params.amount != 0 + ? params.amount + : IERC20(params.token).balanceOf(address(this)), + params.amountMin, + IStargateRouter.lzTxObj( + params.gas, // extra gas to be sent for dst execution + params.dustAmount, + abi.encodePacked(params.receiver) + ), + abi.encodePacked(params.receiver), // sushiXswap on the dst chain + payload + ); + + stargateWidget.partnerSwap(0x0001); + + emit StargateSushiXSwapSrc(params.srcContext); + } + + /// @notice Get the fees to be paid in native token for the swap + /// @param _dstChainId stargate dst chainId + /// @param _functionType stargate Function type 1 for swap. + /// See more at https://stargateprotocol.gitbook.io/stargate/developers/function-types + /// @param _receiver sushiXswap on the dst chain + /// @param _gas extra gas being sent + /// @param _dustAmount dust amount to be received at the dst chain + /// @param _payload payload being sent at the dst chain + function getFee( + uint16 _dstChainId, + uint8 _functionType, + address _receiver, + uint256 _gas, + uint256 _dustAmount, + bytes memory _payload + ) external view returns (uint256 a, uint256 b) { + (a, b) = stargateRouter.quoteLayerZeroFee( + _dstChainId, + _functionType, + abi.encodePacked(_receiver), + abi.encode(_payload), + IStargateRouter.lzTxObj( + _gas, + _dustAmount, + abi.encodePacked(_receiver) + ) + ); + } + + /// @notice Receiver function on dst chain + /// @param _token bridge token received + /// @param amountLD amount received + /// @param payload ABI-Encoded data received from src chain + function sgReceive( + uint16, + bytes memory, + uint256, + address _token, + uint256 amountLD, + bytes memory payload + ) external override { + if (msg.sender != address(stargateRouter)) revert NotStargateRouter(); + + ( + address to, + uint8[] memory actions, + uint256[] memory values, + bytes[] memory datas, + bytes32 srcContext + ) = abi.decode(payload, (address, uint8[], uint256[], bytes[], bytes32)); + + // 100000 -> exit gas + uint256 limit = gasleft() - 200000; + bool failed; + /// @dev incase the actions fail, transfer bridge token to the to address + try + ISushiXSwap(payable(address(this))).cook{gas: limit}( + actions, + values, + datas + ) + {} catch (bytes memory) { + IERC20(_token).safeTransfer(to, amountLD); + failed = true; + } + + /// @dev transfer any native token received as dust to the to address + if (address(this).balance > 0) + to.call{value: (address(this).balance)}(""); + + emit StargateSushiXSwapDst(srcContext, failed); + + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/StargateAdapter.solgo.ast.json b/data/tests/contracts/sushixswap/StargateAdapter.solgo.ast.json new file mode 100644 index 00000000..b192d2c7 --- /dev/null +++ b/data/tests/contracts/sushixswap/StargateAdapter.solgo.ast.json @@ -0,0 +1,6420 @@ +{ + "id": 5897, + "base_contracts": [ + { + "id": 5965, + "node_type": 62, + "src": { + "id": 5966, + "line": 1245, + "column": 37, + "start": 43639, + "end": 43652, + "length": 14, + "parent_index": 5964 + }, + "base_name": { + "id": 5967, + "node_type": 52, + "src": { + "id": 5968, + "line": 1245, + "column": 37, + "start": 43639, + "end": 43652, + "length": 14, + "parent_index": 5964 + }, + "name": "ImmutableState", + "referenced_declaration": 1354 + } + }, + { + "id": 5969, + "node_type": 62, + "src": { + "id": 5970, + "line": 1245, + "column": 53, + "start": 43655, + "end": 43671, + "length": 17, + "parent_index": 5964 + }, + "base_name": { + "id": 5971, + "node_type": 52, + "src": { + "id": 5972, + "line": 1245, + "column": 53, + "start": 43655, + "end": 43671, + "length": 17, + "parent_index": 5964 + }, + "name": "IStargateReceiver", + "referenced_declaration": 6650 + } + } + ], + "license": "MIT", + "exported_symbols": [ + { + "id": 5897, + "name": "StargateAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/StargateAdapter.sol" + }, + { + "id": 5143, + "name": "IStargateAdapter", + "absolute_path": "IStargateAdapter.sol" + }, + { + "id": 5965, + "name": "ImmutableState", + "absolute_path": "" + }, + { + "id": 5969, + "name": "IStargateReceiver", + "absolute_path": "" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/StargateAdapter.sol", + "name": "StargateAdapter", + "node_type": 1, + "nodes": [ + { + "id": 5937, + "node_type": 10, + "src": { + "id": 5938, + "line": 1239, + "column": 0, + "start": 43459, + "end": 43481, + "length": 23, + "parent_index": 5897 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 5963, + "node_type": 29, + "src": { + "id": 0, + "line": 1241, + "column": 0, + "start": 43484, + "end": 43515, + "length": 32, + "parent_index": 5897 + }, + "absolute_path": "IStargateAdapter.sol", + "file": "./IStargateAdapter.sol", + "scope": 5897, + "unit_alias": "", + "source_unit": 5143 + }, + { + "id": 5964, + "name": "StargateAdapter", + "node_type": 35, + "src": { + "id": 0, + "line": 1245, + "column": 0, + "start": 43602, + "end": 49033, + "length": 5432, + "parent_index": 5897 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 5974, + "node_type": 51, + "src": { + "id": 5975, + "line": 1246, + "column": 0, + "start": 43679, + "end": 43705, + "length": 27, + "parent_index": 5964 + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "type_name": { + "id": 5976, + "node_type": 69, + "src": { + "id": 5977, + "line": 1246, + "column": 24, + "start": 43699, + "end": 43704, + "length": 6, + "parent_index": 5974 + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "path_node": { + "id": 5978, + "name": "IERC20", + "node_type": 52, + "referenced_declaration": 2570, + "src": { + "id": 5979, + "line": 1246, + "column": 24, + "start": 43699, + "end": 43704, + "length": 6, + "parent_index": 5976 + } + }, + "referenced_declaration": 2570 + }, + "library_name": { + "id": 5980, + "node_type": 52, + "src": { + "id": 5981, + "line": 1246, + "column": 0, + "start": 43685, + "end": 43693, + "length": 9, + "parent_index": 5974 + }, + "name": "SafeERC20", + "referenced_declaration": 1854 + } + }, + { + "id": 5983, + "node_type": 77, + "src": { + "id": 5984, + "line": 1249, + "column": 4, + "start": 43732, + "end": 43757, + "length": 26, + "parent_index": 5964 + }, + "name": "NotStargateRouter", + "parameters": { + "id": 5985, + "node_type": 43, + "src": { + "id": 5984, + "line": 1249, + "column": 4, + "start": 43732, + "end": 43757, + "length": 26, + "parent_index": 5983 + }, + "parameters": [], + "parameter_types": [] + }, + "type_description": { + "type_identifier": "t_error$_StargateAdapter_NotStargateRouter_$5983", + "type_string": "error StargateAdapter.NotStargateRouter" + } + }, + { + "id": 5987, + "node_type": 57, + "src": { + "id": 5988, + "line": 1252, + "column": 4, + "start": 43778, + "end": 43833, + "length": 56, + "parent_index": 5964 + }, + "parameters": { + "id": 5989, + "node_type": 43, + "src": { + "id": 5988, + "line": 1252, + "column": 4, + "start": 43778, + "end": 43833, + "length": 56, + "parent_index": 5987 + }, + "parameters": [ + { + "id": 5990, + "node_type": 44, + "src": { + "id": 5991, + "line": 1252, + "column": 32, + "start": 43806, + "end": 43831, + "length": 26, + "parent_index": 5989 + }, + "scope": 5987, + "name": "srcContext", + "type_name": { + "id": 5992, + "node_type": 30, + "src": { + "id": 5993, + "line": 1252, + "column": 32, + "start": 43806, + "end": 43812, + "length": 7, + "parent_index": 5990 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1, + "indexed": true + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "name": "StargateSushiXSwapSrc", + "anonymous": false + }, + { + "id": 5995, + "node_type": 57, + "src": { + "id": 5996, + "line": 1253, + "column": 4, + "start": 43839, + "end": 43907, + "length": 69, + "parent_index": 5964 + }, + "parameters": { + "id": 5997, + "node_type": 43, + "src": { + "id": 5996, + "line": 1253, + "column": 4, + "start": 43839, + "end": 43907, + "length": 69, + "parent_index": 5995 + }, + "parameters": [ + { + "id": 5998, + "node_type": 44, + "src": { + "id": 5999, + "line": 1253, + "column": 32, + "start": 43867, + "end": 43892, + "length": 26, + "parent_index": 5997 + }, + "scope": 5995, + "name": "srcContext", + "type_name": { + "id": 6000, + "node_type": 30, + "src": { + "id": 6001, + "line": 1253, + "column": 32, + "start": 43867, + "end": 43873, + "length": 7, + "parent_index": 5998 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1, + "indexed": true + }, + { + "id": 6002, + "node_type": 44, + "src": { + "id": 6003, + "line": 1253, + "column": 60, + "start": 43895, + "end": 43905, + "length": 11, + "parent_index": 5997 + }, + "scope": 5995, + "name": "failed", + "type_name": { + "id": 6004, + "node_type": 30, + "src": { + "id": 6005, + "line": 1253, + "column": 60, + "start": 43895, + "end": 43898, + "length": 4, + "parent_index": 6002 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "name": "StargateSushiXSwapDst", + "anonymous": false + }, + { + "id": 6007, + "node_type": 67, + "src": { + "id": 6008, + "line": 1255, + "column": 4, + "start": 43914, + "end": 44598, + "length": 685, + "parent_index": 5897 + }, + "name": "StargateTeleportParams", + "canonical_name": "StargateAdapter.StargateTeleportParams", + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + "members": [ + { + "id": 6009, + "node_type": 44, + "src": { + "id": 6010, + "line": 1256, + "column": 8, + "start": 43954, + "end": 43971, + "length": 18, + "parent_index": 6007 + }, + "scope": 5964, + "name": "dstChainId", + "type_name": { + "id": 6011, + "node_type": 30, + "src": { + "id": 6012, + "line": 1256, + "column": 8, + "start": 43954, + "end": 43959, + "length": 6, + "parent_index": 6009 + }, + "name": "uint16", + "type_description": { + "type_identifier": "t_uint16", + "type_string": "uint16" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6013, + "node_type": 44, + "src": { + "id": 6014, + "line": 1257, + "column": 8, + "start": 44006, + "end": 44019, + "length": 14, + "parent_index": 6007 + }, + "scope": 5964, + "name": "token", + "type_name": { + "id": 6015, + "node_type": 30, + "src": { + "id": 6016, + "line": 1257, + "column": 8, + "start": 44006, + "end": 44012, + "length": 7, + "parent_index": 6013 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 6017, + "node_type": 44, + "src": { + "id": 6018, + "line": 1258, + "column": 8, + "start": 44054, + "end": 44071, + "length": 18, + "parent_index": 6007 + }, + "scope": 5964, + "name": "srcPoolId", + "type_name": { + "id": 6019, + "node_type": 30, + "src": { + "id": 6020, + "line": 1258, + "column": 8, + "start": 44054, + "end": 44060, + "length": 7, + "parent_index": 6017 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6021, + "node_type": 44, + "src": { + "id": 6022, + "line": 1259, + "column": 8, + "start": 44105, + "end": 44122, + "length": 18, + "parent_index": 6007 + }, + "scope": 5964, + "name": "dstPoolId", + "type_name": { + "id": 6023, + "node_type": 30, + "src": { + "id": 6024, + "line": 1259, + "column": 8, + "start": 44105, + "end": 44111, + "length": 7, + "parent_index": 6021 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6025, + "node_type": 44, + "src": { + "id": 6026, + "line": 1260, + "column": 8, + "start": 44156, + "end": 44170, + "length": 15, + "parent_index": 6007 + }, + "scope": 5964, + "name": "amount", + "type_name": { + "id": 6027, + "node_type": 30, + "src": { + "id": 6028, + "line": 1260, + "column": 8, + "start": 44156, + "end": 44162, + "length": 7, + "parent_index": 6025 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6029, + "node_type": 44, + "src": { + "id": 6030, + "line": 1261, + "column": 8, + "start": 44200, + "end": 44217, + "length": 18, + "parent_index": 6007 + }, + "scope": 5964, + "name": "amountMin", + "type_name": { + "id": 6031, + "node_type": 30, + "src": { + "id": 6032, + "line": 1261, + "column": 8, + "start": 44200, + "end": 44206, + "length": 7, + "parent_index": 6029 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6033, + "node_type": 44, + "src": { + "id": 6034, + "line": 1262, + "column": 8, + "start": 44255, + "end": 44273, + "length": 19, + "parent_index": 6007 + }, + "scope": 5964, + "name": "dustAmount", + "type_name": { + "id": 6035, + "node_type": 30, + "src": { + "id": 6036, + "line": 1262, + "column": 8, + "start": 44255, + "end": 44261, + "length": 7, + "parent_index": 6033 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6037, + "node_type": 44, + "src": { + "id": 6038, + "line": 1263, + "column": 8, + "start": 44327, + "end": 44343, + "length": 17, + "parent_index": 6007 + }, + "scope": 5964, + "name": "receiver", + "type_name": { + "id": 6039, + "node_type": 30, + "src": { + "id": 6040, + "line": 1263, + "column": 8, + "start": 44327, + "end": 44333, + "length": 7, + "parent_index": 6037 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 6041, + "node_type": 44, + "src": { + "id": 6042, + "line": 1264, + "column": 8, + "start": 44380, + "end": 44390, + "length": 11, + "parent_index": 6007 + }, + "scope": 5964, + "name": "to", + "type_name": { + "id": 6043, + "node_type": 30, + "src": { + "id": 6044, + "line": 1264, + "column": 8, + "start": 44380, + "end": 44386, + "length": 7, + "parent_index": 6041 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 6045, + "node_type": 44, + "src": { + "id": 6046, + "line": 1265, + "column": 8, + "start": 44468, + "end": 44479, + "length": 12, + "parent_index": 6007 + }, + "scope": 5964, + "name": "gas", + "type_name": { + "id": 6047, + "node_type": 30, + "src": { + "id": 6048, + "line": 1265, + "column": 8, + "start": 44468, + "end": 44474, + "length": 7, + "parent_index": 6045 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6049, + "node_type": 44, + "src": { + "id": 6050, + "line": 1266, + "column": 8, + "start": 44538, + "end": 44556, + "length": 19, + "parent_index": 6007 + }, + "scope": 5964, + "name": "srcContext", + "type_name": { + "id": 6051, + "node_type": 30, + "src": { + "id": 6052, + "line": 1266, + "column": 8, + "start": 44538, + "end": 44544, + "length": 7, + "parent_index": 6049 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "visibility": 1, + "state_mutability": 1 + } + ], + "visibility": 3, + "storage_location": 1 + }, + { + "id": 6054, + "name": "approveToStargateRouter", + "node_type": 42, + "kind": 41, + "src": { + "id": 6055, + "line": 1271, + "column": 4, + "start": 44697, + "end": 44830, + "length": 134, + "parent_index": 5964 + }, + "body": { + "id": 6065, + "node_type": 46, + "kind": 0, + "src": { + "id": 6066, + "line": 1271, + "column": 60, + "start": 44753, + "end": 44830, + "length": 78, + "parent_index": 6054 + }, + "implemented": true, + "statements": [ + { + "id": 6067, + "node_type": 24, + "kind": 24, + "src": { + "id": 6068, + "line": 1272, + "column": 8, + "start": 44763, + "end": 44823, + "length": 61, + "parent_index": 6065 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + }, + { + "type_identifier": "", + "type_string": "type" + } + ], + "arguments": [ + { + "id": 6073, + "node_type": 24, + "kind": 24, + "src": { + "id": 6074, + "line": 1272, + "column": 26, + "start": 44781, + "end": 44803, + "length": 23, + "parent_index": 6067 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 6079, + "node_type": 16, + "src": { + "id": 6080, + "line": 1272, + "column": 34, + "start": 44789, + "end": 44802, + "length": 14, + "parent_index": 6073 + }, + "name": "stargateRouter", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 6075, + "node_type": 16, + "src": { + "id": 6076, + "line": 1272, + "column": 26, + "start": 44781, + "end": 44787, + "length": 7, + "parent_index": 6073 + }, + "name": "address", + "type_name": { + "id": 6077, + "node_type": 30, + "src": { + "id": 6078, + "line": 1272, + "column": 26, + "start": 44781, + "end": 44787, + "length": 7, + "parent_index": 6075 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + { + "id": 6081, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6082, + "line": 1272, + "column": 51, + "start": 44806, + "end": 44822, + "length": 17, + "parent_index": 6067 + }, + "expression": { + "id": 6083, + "node_type": 16, + "name": "type", + "src": { + "id": 6084, + "line": 1272, + "column": 51, + "start": 44806, + "end": 44818, + "length": 13, + "parent_index": 6081 + }, + "type_description": { + "type_identifier": "", + "type_string": "type" + } + }, + "member_name": "max", + "argument_types": [ + { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + ], + "type_description": { + "type_identifier": "", + "type_string": "type" + } + } + ], + "expression": { + "id": 6069, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6070, + "line": 1272, + "column": 8, + "start": 44763, + "end": 44779, + "length": 17, + "parent_index": 6067 + }, + "expression": { + "id": 6071, + "node_type": 16, + "src": { + "id": 6072, + "line": 1272, + "column": 8, + "start": 44763, + "end": 44767, + "length": 5, + "parent_index": 6069 + }, + "name": "token", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 6071, + "is_pure": false + }, + "member_name": "safeApprove", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_$", + "type_string": "function(function(function()),type)" + } + } + ] + }, + "implemented": true, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 6056, + "node_type": 43, + "src": { + "id": 6057, + "line": 1271, + "column": 37, + "start": 44730, + "end": 44741, + "length": 12, + "parent_index": 6054 + }, + "parameters": [ + { + "id": 6058, + "node_type": 44, + "src": { + "id": 6059, + "line": 1271, + "column": 37, + "start": 44730, + "end": 44741, + "length": 12, + "parent_index": 6056 + }, + "scope": 6054, + "name": "token", + "type_name": { + "id": 6060, + "node_type": 69, + "src": { + "id": 6061, + "line": 1271, + "column": 37, + "start": 44730, + "end": 44735, + "length": 6, + "parent_index": 6058 + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "path_node": { + "id": 6062, + "name": "IERC20", + "node_type": 52, + "referenced_declaration": 2570, + "src": { + "id": 6063, + "line": 1271, + "column": 37, + "start": 44730, + "end": 44735, + "length": 6, + "parent_index": 6060 + } + }, + "referenced_declaration": 2570 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + }, + "return_parameters": { + "id": 6064, + "node_type": 43, + "src": { + "id": 6055, + "line": 1271, + "column": 4, + "start": 44697, + "end": 44830, + "length": 134, + "parent_index": 6054 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 5964, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + { + "id": 6086, + "name": "_stargateTeleport", + "node_type": 42, + "kind": 41, + "src": { + "id": 6087, + "line": 1282, + "column": 4, + "start": 45470, + "end": 46533, + "length": 1064, + "parent_index": 5964 + }, + "body": { + "id": 6112, + "node_type": 46, + "kind": 0, + "src": { + "id": 6113, + "line": 1287, + "column": 15, + "start": 45653, + "end": 46533, + "length": 881, + "parent_index": 6086 + }, + "implemented": true, + "statements": [ + { + "id": 6114, + "node_type": 44, + "src": { + "id": 6115, + "line": 1288, + "column": 8, + "start": 45663, + "end": 45750, + "length": 88, + "parent_index": 6112 + }, + "assignments": [ + 6116 + ], + "declarations": [ + { + "is_constant": false, + "id": 6116, + "state_mutability": 1, + "name": "payload", + "node_type": 44, + "scope": 6112, + "src": { + "id": 6117, + "line": 1288, + "column": 8, + "start": 45663, + "end": 45682, + "length": 20, + "parent_index": 6114 + }, + "is_state_variable": false, + "storage_location": 2, + "type_name": { + "id": 6118, + "node_type": 30, + "src": { + "id": 6119, + "line": 1288, + "column": 8, + "start": 45663, + "end": 45667, + "length": 5, + "parent_index": 6116 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 6120, + "node_type": 24, + "kind": 24, + "src": { + "id": 6121, + "line": 1288, + "column": 31, + "start": 45686, + "end": 45749, + "length": 64, + "parent_index": 6114 + }, + "argument_types": [ + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + ], + "arguments": [ + { + "id": 6126, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6127, + "line": 1288, + "column": 42, + "start": 45697, + "end": 45705, + "length": 9, + "parent_index": 6120 + }, + "expression": { + "id": 6128, + "node_type": 16, + "src": { + "id": 6129, + "line": 1288, + "column": 42, + "start": 45697, + "end": 45702, + "length": 6, + "parent_index": 6126 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 6128, + "is_pure": false + }, + "member_name": "to", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + }, + { + "id": 6130, + "node_type": 16, + "src": { + "id": 6131, + "line": 1288, + "column": 53, + "start": 45708, + "end": 45714, + "length": 7, + "parent_index": 6120 + }, + "name": "actions", + "type_description": { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + "overloaded_declarations": [], + "referenced_declaration": 6130, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + ] + }, + { + "id": 6132, + "node_type": 16, + "src": { + "id": 6133, + "line": 1288, + "column": 62, + "start": 45717, + "end": 45722, + "length": 6, + "parent_index": 6120 + }, + "name": "values", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 6132, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_uint8", + "type_string": "uint8" + } + ] + }, + { + "id": 6134, + "node_type": 16, + "src": { + "id": 6135, + "line": 1288, + "column": 70, + "start": 45725, + "end": 45729, + "length": 5, + "parent_index": 6120 + }, + "name": "datas", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 6134, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + { + "id": 6136, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6137, + "line": 1288, + "column": 77, + "start": 45732, + "end": 45748, + "length": 17, + "parent_index": 6120 + }, + "expression": { + "id": 6138, + "node_type": 16, + "src": { + "id": 6139, + "line": 1288, + "column": 77, + "start": 45732, + "end": 45737, + "length": 6, + "parent_index": 6136 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 6138, + "is_pure": false + }, + "member_name": "srcContext", + "argument_types": [ + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ], + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + } + ], + "expression": { + "id": 6122, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6123, + "line": 1288, + "column": 31, + "start": 45686, + "end": 45695, + "length": 10, + "parent_index": 6120 + }, + "expression": { + "id": 6124, + "node_type": 16, + "src": { + "id": 6125, + "line": 1288, + "column": 31, + "start": 45686, + "end": 45688, + "length": 3, + "parent_index": 6122 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "encode", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_uint8$_t_uint256$_t_bytes$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "type_string": "function(struct StargateAdapter.StargateTeleportParams,uint8,uint256,bytes,struct StargateAdapter.StargateTeleportParams)" + } + } + }, + { + "id": 6140, + "node_type": 24, + "kind": 24, + "src": { + "id": 6141, + "line": 1290, + "column": 8, + "start": 45761, + "end": 46425, + "length": 665, + "parent_index": 6112 + }, + "argument_types": [ + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_function_payable$_t_address$", + "type_string": "function(address) payable" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "type_string": "function(struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,function(struct StargateAdapter.StargateTeleportParams))" + }, + { + "type_identifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "type_string": "function(struct StargateAdapter.StargateTeleportParams)" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ], + "arguments": [ + { + "id": 6148, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6149, + "line": 1291, + "column": 12, + "start": 45824, + "end": 45840, + "length": 17, + "parent_index": 6140 + }, + "expression": { + "id": 6150, + "node_type": 16, + "src": { + "id": 6151, + "line": 1291, + "column": 12, + "start": 45824, + "end": 45829, + "length": 6, + "parent_index": 6148 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 6150, + "is_pure": false + }, + "member_name": "dstChainId", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + }, + { + "id": 6152, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6153, + "line": 1292, + "column": 12, + "start": 45855, + "end": 45870, + "length": 16, + "parent_index": 6140 + }, + "expression": { + "id": 6154, + "node_type": 16, + "src": { + "id": 6155, + "line": 1292, + "column": 12, + "start": 45855, + "end": 45860, + "length": 6, + "parent_index": 6152 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 6154, + "is_pure": false + }, + "member_name": "srcPoolId", + "argument_types": [ + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + ], + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + }, + { + "id": 6156, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6157, + "line": 1293, + "column": 12, + "start": 45885, + "end": 45900, + "length": 16, + "parent_index": 6140 + }, + "expression": { + "id": 6158, + "node_type": 16, + "src": { + "id": 6159, + "line": 1293, + "column": 12, + "start": 45885, + "end": 45890, + "length": 6, + "parent_index": 6156 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 6158, + "is_pure": false + }, + "member_name": "dstPoolId", + "argument_types": [ + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + ], + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + }, + { + "id": 6160, + "node_type": 84, + "src": { + "id": 6161, + "line": 1294, + "column": 12, + "start": 45915, + "end": 45933, + "length": 19, + "parent_index": 6140 + }, + "arguments": [ + { + "id": 6162, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6163, + "line": 1294, + "column": 20, + "start": 45923, + "end": 45932, + "length": 10, + "parent_index": 6160 + }, + "expression": { + "id": 6164, + "node_type": 16, + "src": { + "id": 6165, + "line": 1294, + "column": 20, + "start": 45923, + "end": 45925, + "length": 3, + "parent_index": 6162 + }, + "name": "msg", + "type_description": { + "type_identifier": "t_magic_message", + "type_string": "msg" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "sender", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + } + ], + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "type_description": { + "type_identifier": "t_function_payable$_t_address$", + "type_string": "function(address) payable" + }, + "payable": true + }, + { + "id": 6167, + "node_type": 97, + "src": { + "id": 6168, + "line": 1295, + "column": 12, + "start": 45966, + "end": 46079, + "length": 114, + "parent_index": 6140 + }, + "expressions": [ + { + "id": 6169, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 6170, + "line": 1295, + "column": 12, + "start": 45966, + "end": 45983, + "length": 18, + "parent_index": 6167 + }, + "operator": 12, + "left_expression": { + "id": 6171, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6172, + "line": 1295, + "column": 12, + "start": 45966, + "end": 45978, + "length": 13, + "parent_index": 6169 + }, + "expression": { + "id": 6173, + "node_type": 16, + "src": { + "id": 6174, + "line": 1295, + "column": 12, + "start": 45966, + "end": 45971, + "length": 6, + "parent_index": 6171 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 6173, + "is_pure": false + }, + "member_name": "amount", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + }, + "right_expression": { + "id": 6175, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 6176, + "line": 1295, + "column": 29, + "start": 45983, + "end": 45983, + "length": 1, + "parent_index": 6169 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 6177, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6178, + "line": 1296, + "column": 18, + "start": 46003, + "end": 46015, + "length": 13, + "parent_index": 6167 + }, + "expression": { + "id": 6179, + "node_type": 16, + "src": { + "id": 6180, + "line": 1296, + "column": 18, + "start": 46003, + "end": 46008, + "length": 6, + "parent_index": 6177 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 6179, + "is_pure": false + }, + "member_name": "amount", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + }, + { + "id": 6181, + "node_type": 24, + "kind": 24, + "src": { + "id": 6182, + "line": 1297, + "column": 18, + "start": 46035, + "end": 46079, + "length": 45, + "parent_index": 6167 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ], + "arguments": [ + { + "id": 6193, + "node_type": 24, + "kind": 24, + "src": { + "id": 6194, + "line": 1297, + "column": 49, + "start": 46066, + "end": 46078, + "length": 13, + "parent_index": 6181 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_StargateAdapter_$5897", + "type_string": "contract StargateAdapter" + } + ], + "arguments": [ + { + "id": 6199, + "node_type": 16, + "src": { + "id": 6200, + "line": 1297, + "column": 57, + "start": 46074, + "end": 46077, + "length": 4, + "parent_index": 6193 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_StargateAdapter_$5897", + "type_string": "contract StargateAdapter" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 6195, + "node_type": 16, + "src": { + "id": 6196, + "line": 1297, + "column": 49, + "start": 46066, + "end": 46072, + "length": 7, + "parent_index": 6193 + }, + "name": "address", + "type_name": { + "id": 6197, + "node_type": 30, + "src": { + "id": 6198, + "line": 1297, + "column": 49, + "start": 46066, + "end": 46072, + "length": 7, + "parent_index": 6195 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ], + "expression": { + "id": 6183, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6184, + "line": 1297, + "column": 18, + "start": 46035, + "end": 46064, + "length": 30, + "parent_index": 6181 + }, + "expression": { + "id": 6185, + "node_type": 24, + "kind": 24, + "src": { + "id": 6186, + "line": 1297, + "column": 18, + "start": 46035, + "end": 46054, + "length": 20, + "parent_index": 6183 + }, + "argument_types": [ + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + ], + "arguments": [ + { + "id": 6189, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6190, + "line": 1297, + "column": 25, + "start": 46042, + "end": 46053, + "length": 12, + "parent_index": 6185 + }, + "expression": { + "id": 6191, + "node_type": 16, + "src": { + "id": 6192, + "line": 1297, + "column": 25, + "start": 46042, + "end": 46047, + "length": 6, + "parent_index": 6189 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 6191, + "is_pure": false + }, + "member_name": "token", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + } + ], + "expression": { + "id": 6187, + "node_type": 16, + "src": { + "id": 6188, + "line": 1297, + "column": 18, + "start": 46035, + "end": 46040, + "length": 6, + "parent_index": 6185 + }, + "name": "IERC20", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "type_string": "function(struct StargateAdapter.StargateTeleportParams)" + } + }, + "member_name": "balanceOf", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "type_string": "function(struct StargateAdapter.StargateTeleportParams)" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$", + "type_string": "function(function(address))" + } + } + ], + "type_descriptions": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_function_$_t_function_$_t_address$", + "type_string": "function(function(address))" + } + ], + "type_description": null + }, + { + "id": 6201, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6202, + "line": 1298, + "column": 12, + "start": 46094, + "end": 46109, + "length": 16, + "parent_index": 6140 + }, + "expression": { + "id": 6203, + "node_type": 16, + "src": { + "id": 6204, + "line": 1298, + "column": 12, + "start": 46094, + "end": 46099, + "length": 6, + "parent_index": 6201 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 6203, + "is_pure": false + }, + "member_name": "amountMin", + "argument_types": [ + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_function_payable$_t_address$", + "type_string": "function(address) payable" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ], + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + }, + { + "id": 6205, + "node_type": 24, + "kind": 24, + "src": { + "id": 6206, + "line": 1299, + "column": 12, + "start": 46124, + "end": 46316, + "length": 193, + "parent_index": 6140 + }, + "argument_types": [ + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "type_string": "function(struct StargateAdapter.StargateTeleportParams)" + } + ], + "arguments": [ + { + "id": 6211, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6212, + "line": 1300, + "column": 16, + "start": 46165, + "end": 46174, + "length": 10, + "parent_index": 6205 + }, + "expression": { + "id": 6213, + "node_type": 16, + "src": { + "id": 6214, + "line": 1300, + "column": 16, + "start": 46165, + "end": 46170, + "length": 6, + "parent_index": 6211 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 6213, + "is_pure": false + }, + "member_name": "gas", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + }, + { + "id": 6215, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6216, + "line": 1301, + "column": 16, + "start": 46235, + "end": 46251, + "length": 17, + "parent_index": 6205 + }, + "expression": { + "id": 6217, + "node_type": 16, + "src": { + "id": 6218, + "line": 1301, + "column": 16, + "start": 46235, + "end": 46240, + "length": 6, + "parent_index": 6215 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 6217, + "is_pure": false + }, + "member_name": "dustAmount", + "argument_types": [ + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + ], + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + }, + { + "id": 6219, + "node_type": 24, + "kind": 24, + "src": { + "id": 6220, + "line": 1302, + "column": 16, + "start": 46270, + "end": 46302, + "length": 33, + "parent_index": 6205 + }, + "argument_types": [ + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + ], + "arguments": [ + { + "id": 6225, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6226, + "line": 1302, + "column": 33, + "start": 46287, + "end": 46301, + "length": 15, + "parent_index": 6219 + }, + "expression": { + "id": 6227, + "node_type": 16, + "src": { + "id": 6228, + "line": 1302, + "column": 33, + "start": 46287, + "end": 46292, + "length": 6, + "parent_index": 6225 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 6227, + "is_pure": false + }, + "member_name": "receiver", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + } + ], + "expression": { + "id": 6221, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6222, + "line": 1302, + "column": 16, + "start": 46270, + "end": 46285, + "length": 16, + "parent_index": 6219 + }, + "expression": { + "id": 6223, + "node_type": 16, + "src": { + "id": 6224, + "line": 1302, + "column": 16, + "start": 46270, + "end": 46272, + "length": 3, + "parent_index": 6221 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "encodePacked", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "type_string": "function(struct StargateAdapter.StargateTeleportParams)" + } + } + ], + "expression": { + "id": 6207, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6208, + "line": 1299, + "column": 12, + "start": 46124, + "end": 46146, + "length": 23, + "parent_index": 6205 + }, + "expression": { + "id": 6209, + "node_type": 16, + "src": { + "id": 6210, + "line": 1299, + "column": 12, + "start": 46124, + "end": 46138, + "length": 15, + "parent_index": 6207 + }, + "name": "IStargateRouter", + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + }, + "overloaded_declarations": [], + "referenced_declaration": 1012, + "is_pure": false + }, + "member_name": "lzTxObj", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "type_string": "function(struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,function(struct StargateAdapter.StargateTeleportParams))" + } + }, + { + "id": 6229, + "node_type": 24, + "kind": 24, + "src": { + "id": 6230, + "line": 1304, + "column": 12, + "start": 46331, + "end": 46363, + "length": 33, + "parent_index": 6140 + }, + "argument_types": [ + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + ], + "arguments": [ + { + "id": 6235, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6236, + "line": 1304, + "column": 29, + "start": 46348, + "end": 46362, + "length": 15, + "parent_index": 6229 + }, + "expression": { + "id": 6237, + "node_type": 16, + "src": { + "id": 6238, + "line": 1304, + "column": 29, + "start": 46348, + "end": 46353, + "length": 6, + "parent_index": 6235 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 6237, + "is_pure": false + }, + "member_name": "receiver", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + } + ], + "expression": { + "id": 6231, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6232, + "line": 1304, + "column": 12, + "start": 46331, + "end": 46346, + "length": 16, + "parent_index": 6229 + }, + "expression": { + "id": 6233, + "node_type": 16, + "src": { + "id": 6234, + "line": 1304, + "column": 12, + "start": 46331, + "end": 46333, + "length": 3, + "parent_index": 6231 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "encodePacked", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "type_string": "function(struct StargateAdapter.StargateTeleportParams)" + } + }, + { + "id": 6239, + "node_type": 16, + "src": { + "id": 6240, + "line": 1305, + "column": 12, + "start": 46409, + "end": 46415, + "length": 7, + "parent_index": 6140 + }, + "name": "payload", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 6114, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_function_payable$_t_address$", + "type_string": "function(address) payable" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "type_string": "function(struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,function(struct StargateAdapter.StargateTeleportParams))" + }, + { + "type_identifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "type_string": "function(struct StargateAdapter.StargateTeleportParams)" + } + ] + } + ], + "expression": { + "id": 6142, + "node_type": 93, + "kind": 93, + "src": { + "id": 6143, + "line": 1290, + "column": 8, + "start": 45761, + "end": 45809, + "length": 49, + "parent_index": 6140 + }, + "expression": { + "id": 6144, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6145, + "line": 1290, + "column": 8, + "start": 45761, + "end": 45779, + "length": 19, + "parent_index": 6142 + }, + "expression": { + "id": 6146, + "node_type": 16, + "src": { + "id": 6147, + "line": 1290, + "column": 8, + "start": 45761, + "end": 45774, + "length": 14, + "parent_index": 6144 + }, + "name": "stargateRouter", + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + }, + "overloaded_declarations": [], + "referenced_declaration": 1385, + "is_pure": false + }, + "member_name": "swap", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + } + }, + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_payable$_t_address$_t_bool$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_bytes$", + "type_string": "function(struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,function(address) payable,bool,struct StargateAdapter.StargateTeleportParams,function(struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,function(struct StargateAdapter.StargateTeleportParams)),function(struct StargateAdapter.StargateTeleportParams),bytes)" + } + }, + { + "id": 6241, + "node_type": 24, + "kind": 24, + "src": { + "id": 6242, + "line": 1308, + "column": 8, + "start": 46437, + "end": 46470, + "length": 34, + "parent_index": 6112 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0x0001" + } + ], + "arguments": [ + { + "id": 6247, + "node_type": 17, + "kind": 49, + "value": "0x0001", + "hex_value": "307830303031", + "src": { + "id": 6248, + "line": 1308, + "column": 35, + "start": 46464, + "end": 46469, + "length": 6, + "parent_index": 6241 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0x0001" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 6243, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6244, + "line": 1308, + "column": 8, + "start": 46437, + "end": 46462, + "length": 26, + "parent_index": 6241 + }, + "expression": { + "id": 6245, + "node_type": 16, + "src": { + "id": 6246, + "line": 1308, + "column": 8, + "start": 46437, + "end": 46450, + "length": 14, + "parent_index": 6243 + }, + "name": "stargateWidget", + "type_description": { + "type_identifier": "t_contract$_IStargateWidget_$1155", + "type_string": "contract IStargateWidget" + }, + "overloaded_declarations": [], + "referenced_declaration": 1392, + "is_pure": false + }, + "member_name": "partnerSwap", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_IStargateWidget_$1155", + "type_string": "contract IStargateWidget" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0x0001)" + } + }, + { + "id": 6249, + "node_type": 64, + "src": { + "id": 6250, + "line": 1310, + "column": 8, + "start": 46482, + "end": 46527, + "length": 46, + "parent_index": 6086 + }, + "arguments": [ + { + "id": 6251, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6252, + "line": 1310, + "column": 35, + "start": 46509, + "end": 46525, + "length": 17, + "parent_index": 6112 + }, + "expression": { + "id": 6253, + "node_type": 16, + "src": { + "id": 6254, + "line": 1310, + "column": 35, + "start": 46509, + "end": 46514, + "length": 6, + "parent_index": 6251 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 6253, + "is_pure": false + }, + "member_name": "srcContext", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + } + } + ], + "expression": { + "id": 6255, + "node_type": 16, + "src": { + "id": 6256, + "line": 1310, + "column": 13, + "start": 46487, + "end": 46507, + "length": 21, + "parent_index": 6112 + }, + "name": "StargateSushiXSwapSrc", + "type_description": { + "type_identifier": "t_event\u0026_StargateAdapter_StargateSushiXSwapSrc_\u00265987", + "type_string": "event StargateAdapter.StargateSushiXSwapSrc" + }, + "overloaded_declarations": [], + "referenced_declaration": 5987, + "is_pure": false + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 6088, + "node_type": 43, + "src": { + "id": 6089, + "line": 1283, + "column": 8, + "start": 45506, + "end": 45636, + "length": 131, + "parent_index": 6086 + }, + "parameters": [ + { + "id": 6090, + "node_type": 44, + "src": { + "id": 6091, + "line": 1283, + "column": 8, + "start": 45506, + "end": 45541, + "length": 36, + "parent_index": 6088 + }, + "scope": 6086, + "name": "params", + "type_name": { + "id": 6092, + "node_type": 69, + "src": { + "id": 6093, + "line": 1283, + "column": 8, + "start": 45506, + "end": 45527, + "length": 22, + "parent_index": 6090 + }, + "type_description": { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + "path_node": { + "id": 6094, + "name": "StargateTeleportParams", + "node_type": 52, + "referenced_declaration": 6007, + "src": { + "id": 6095, + "line": 1283, + "column": 8, + "start": 45506, + "end": 45527, + "length": 22, + "parent_index": 6092 + } + }, + "referenced_declaration": 6007 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6096, + "node_type": 44, + "src": { + "id": 6097, + "line": 1284, + "column": 8, + "start": 45552, + "end": 45573, + "length": 22, + "parent_index": 6088 + }, + "scope": 6086, + "name": "actions", + "type_name": { + "id": 6098, + "node_type": 16, + "src": { + "id": 6100, + "line": 1284, + "column": 8, + "start": 45552, + "end": 45556, + "length": 5, + "parent_index": 6096 + }, + "name": "uint8", + "type_description": { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6101, + "node_type": 44, + "src": { + "id": 6102, + "line": 1285, + "column": 8, + "start": 45584, + "end": 45606, + "length": 23, + "parent_index": 6088 + }, + "scope": 6086, + "name": "values", + "type_name": { + "id": 6103, + "node_type": 16, + "src": { + "id": 6105, + "line": 1285, + "column": 8, + "start": 45584, + "end": 45590, + "length": 7, + "parent_index": 6101 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6106, + "node_type": 44, + "src": { + "id": 6107, + "line": 1286, + "column": 8, + "start": 45617, + "end": 45636, + "length": 20, + "parent_index": 6088 + }, + "scope": 6086, + "name": "datas", + "type_name": { + "id": 6108, + "node_type": 16, + "src": { + "id": 6110, + "line": 1286, + "column": 8, + "start": 45617, + "end": 45621, + "length": 5, + "parent_index": 6106 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "type_string": "struct StargateAdapter.StargateTeleportParams" + }, + { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 6111, + "node_type": 43, + "src": { + "id": 6087, + "line": 1282, + "column": 4, + "start": 45470, + "end": 46533, + "length": 1064, + "parent_index": 6086 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 5964, + "type_description": { + "type_identifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_uint8$_t_uint256$_t_bytes$", + "type_string": "function(struct StargateAdapter.StargateTeleportParams,uint8,uint256,bytes)" + } + }, + { + "id": 6258, + "name": "getFee", + "node_type": 42, + "kind": 41, + "src": { + "id": 6259, + "line": 1321, + "column": 4, + "start": 47037, + "end": 47611, + "length": 575, + "parent_index": 5964 + }, + "body": { + "id": 6296, + "node_type": 46, + "kind": 0, + "src": { + "id": 6297, + "line": 1328, + "column": 51, + "start": 47270, + "end": 47611, + "length": 342, + "parent_index": 6258 + }, + "implemented": true, + "statements": [ + { + "id": 6298, + "node_type": 81, + "src": { + "id": 6299, + "line": 1329, + "column": 8, + "start": 47280, + "end": 47605, + "length": 326, + "parent_index": 6296 + }, + "expression": { + "id": 6300, + "node_type": 27, + "src": { + "id": 6301, + "line": 1329, + "column": 8, + "start": 47280, + "end": 47604, + "length": 325, + "parent_index": 6296 + }, + "operator": 11, + "left_expression": { + "id": 6302, + "node_type": 60, + "src": { + "id": 6303, + "line": 1329, + "column": 8, + "start": 47280, + "end": 47285, + "length": 6, + "parent_index": 6300 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 6304, + "node_type": 16, + "src": { + "id": 6305, + "line": 1329, + "column": 9, + "start": 47281, + "end": 47281, + "length": 1, + "parent_index": 6302 + }, + "name": "a", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 6288, + "is_pure": false + }, + { + "id": 6306, + "node_type": 16, + "src": { + "id": 6307, + "line": 1329, + "column": 12, + "start": 47284, + "end": 47284, + "length": 1, + "parent_index": 6302 + }, + "name": "b", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 6292, + "is_pure": false + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_uint256_$_t_uint256$", + "type_string": "tuple(uint256,uint256)" + } + }, + "right_expression": { + "id": 6308, + "node_type": 24, + "kind": 24, + "src": { + "id": 6309, + "line": 1329, + "column": 17, + "start": 47289, + "end": 47604, + "length": 316, + "parent_index": 6300 + }, + "argument_types": [ + { + "type_identifier": "t_uint16", + "type_string": "uint16" + }, + { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + }, + { + "type_identifier": "t_function_$_t_uint256$_t_uint256$_t_function_$_t_address$", + "type_string": "function(uint256,uint256,function(address))" + } + ], + "arguments": [ + { + "id": 6314, + "node_type": 16, + "src": { + "id": 6315, + "line": 1330, + "column": 12, + "start": 47335, + "end": 47345, + "length": 11, + "parent_index": 6308 + }, + "name": "_dstChainId", + "type_description": { + "type_identifier": "t_uint16", + "type_string": "uint16" + }, + "overloaded_declarations": [], + "referenced_declaration": 6314, + "is_pure": false + }, + { + "id": 6316, + "node_type": 16, + "src": { + "id": 6317, + "line": 1331, + "column": 12, + "start": 47360, + "end": 47372, + "length": 13, + "parent_index": 6308 + }, + "name": "_functionType", + "type_description": { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + "overloaded_declarations": [], + "referenced_declaration": 6316, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_uint16", + "type_string": "uint16" + } + ] + }, + { + "id": 6318, + "node_type": 24, + "kind": 24, + "src": { + "id": 6319, + "line": 1332, + "column": 12, + "start": 47387, + "end": 47413, + "length": 27, + "parent_index": 6308 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 6324, + "node_type": 16, + "src": { + "id": 6325, + "line": 1332, + "column": 29, + "start": 47404, + "end": 47412, + "length": 9, + "parent_index": 6318 + }, + "name": "_receiver", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 6324, + "is_pure": false + } + ], + "expression": { + "id": 6320, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6321, + "line": 1332, + "column": 12, + "start": 47387, + "end": 47402, + "length": 16, + "parent_index": 6318 + }, + "expression": { + "id": 6322, + "node_type": 16, + "src": { + "id": 6323, + "line": 1332, + "column": 12, + "start": 47387, + "end": 47389, + "length": 3, + "parent_index": 6320 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "encodePacked", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 6326, + "node_type": 24, + "kind": 24, + "src": { + "id": 6327, + "line": 1333, + "column": 12, + "start": 47428, + "end": 47447, + "length": 20, + "parent_index": 6308 + }, + "argument_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ], + "arguments": [ + { + "id": 6332, + "node_type": 16, + "src": { + "id": 6333, + "line": 1333, + "column": 23, + "start": 47439, + "end": 47446, + "length": 8, + "parent_index": 6326 + }, + "name": "_payload", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 6332, + "is_pure": false + } + ], + "expression": { + "id": 6328, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6329, + "line": 1333, + "column": 12, + "start": 47428, + "end": 47437, + "length": 10, + "parent_index": 6326 + }, + "expression": { + "id": 6330, + "node_type": 16, + "src": { + "id": 6331, + "line": 1333, + "column": 12, + "start": 47428, + "end": 47430, + "length": 3, + "parent_index": 6328 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "encode", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_bytes$", + "type_string": "function(bytes)" + } + }, + { + "id": 6334, + "node_type": 24, + "kind": 24, + "src": { + "id": 6335, + "line": 1334, + "column": 12, + "start": 47462, + "end": 47594, + "length": 133, + "parent_index": 6308 + }, + "argument_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ], + "arguments": [ + { + "id": 6340, + "node_type": 16, + "src": { + "id": 6341, + "line": 1335, + "column": 16, + "start": 47503, + "end": 47506, + "length": 4, + "parent_index": 6334 + }, + "name": "_gas", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 6340, + "is_pure": false + }, + { + "id": 6342, + "node_type": 16, + "src": { + "id": 6343, + "line": 1336, + "column": 16, + "start": 47525, + "end": 47535, + "length": 11, + "parent_index": 6334 + }, + "name": "_dustAmount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 6342, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + { + "id": 6344, + "node_type": 24, + "kind": 24, + "src": { + "id": 6345, + "line": 1337, + "column": 16, + "start": 47554, + "end": 47580, + "length": 27, + "parent_index": 6334 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 6350, + "node_type": 16, + "src": { + "id": 6351, + "line": 1337, + "column": 33, + "start": 47571, + "end": 47579, + "length": 9, + "parent_index": 6344 + }, + "name": "_receiver", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 6350, + "is_pure": false + } + ], + "expression": { + "id": 6346, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6347, + "line": 1337, + "column": 16, + "start": 47554, + "end": 47569, + "length": 16, + "parent_index": 6344 + }, + "expression": { + "id": 6348, + "node_type": 16, + "src": { + "id": 6349, + "line": 1337, + "column": 16, + "start": 47554, + "end": 47556, + "length": 3, + "parent_index": 6346 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "encodePacked", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ], + "expression": { + "id": 6336, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6337, + "line": 1334, + "column": 12, + "start": 47462, + "end": 47484, + "length": 23, + "parent_index": 6334 + }, + "expression": { + "id": 6338, + "node_type": 16, + "src": { + "id": 6339, + "line": 1334, + "column": 12, + "start": 47462, + "end": 47476, + "length": 15, + "parent_index": 6336 + }, + "name": "IStargateRouter", + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + }, + "overloaded_declarations": [], + "referenced_declaration": 1012, + "is_pure": false + }, + "member_name": "lzTxObj", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$_t_function_$_t_address$", + "type_string": "function(uint256,uint256,function(address))" + } + } + ], + "expression": { + "id": 6310, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6311, + "line": 1329, + "column": 17, + "start": 47289, + "end": 47320, + "length": 32, + "parent_index": 6308 + }, + "expression": { + "id": 6312, + "node_type": 16, + "src": { + "id": 6313, + "line": 1329, + "column": 17, + "start": 47289, + "end": 47302, + "length": 14, + "parent_index": 6310 + }, + "name": "stargateRouter", + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + }, + "overloaded_declarations": [], + "referenced_declaration": 1385, + "is_pure": false + }, + "member_name": "quoteLayerZeroFee", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_IStargateRouter_$1012", + "type_string": "contract IStargateRouter" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_uint16$_t_uint8$_t_function_$_t_address$_t_function_$_t_bytes$_t_function_$_t_uint256$_t_uint256$_t_function_$_t_address$", + "type_string": "function(uint16,uint8,function(address),function(bytes),function(uint256,uint256,function(address)))" + } + }, + "type_description": { + "type_identifier": "t_tuple_$_t_uint256_$_t_uint256$", + "type_string": "tuple(uint256,uint256)" + } + }, + "type_description": { + "type_identifier": "t_tuple_$_t_uint256_$_t_uint256$", + "type_string": "tuple(uint256,uint256)" + } + } + ] + }, + "implemented": true, + "visibility": 4, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 6260, + "node_type": 43, + "src": { + "id": 6261, + "line": 1322, + "column": 8, + "start": 47062, + "end": 47217, + "length": 156, + "parent_index": 6258 + }, + "parameters": [ + { + "id": 6262, + "node_type": 44, + "src": { + "id": 6263, + "line": 1322, + "column": 8, + "start": 47062, + "end": 47079, + "length": 18, + "parent_index": 6260 + }, + "scope": 6258, + "name": "_dstChainId", + "type_name": { + "id": 6264, + "node_type": 30, + "src": { + "id": 6265, + "line": 1322, + "column": 8, + "start": 47062, + "end": 47067, + "length": 6, + "parent_index": 6262 + }, + "name": "uint16", + "type_description": { + "type_identifier": "t_uint16", + "type_string": "uint16" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6266, + "node_type": 44, + "src": { + "id": 6267, + "line": 1323, + "column": 8, + "start": 47090, + "end": 47108, + "length": 19, + "parent_index": 6260 + }, + "scope": 6258, + "name": "_functionType", + "type_name": { + "id": 6268, + "node_type": 30, + "src": { + "id": 6269, + "line": 1323, + "column": 8, + "start": 47090, + "end": 47094, + "length": 5, + "parent_index": 6266 + }, + "name": "uint8", + "type_description": { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6270, + "node_type": 44, + "src": { + "id": 6271, + "line": 1324, + "column": 8, + "start": 47119, + "end": 47135, + "length": 17, + "parent_index": 6260 + }, + "scope": 6258, + "name": "_receiver", + "type_name": { + "id": 6272, + "node_type": 30, + "src": { + "id": 6273, + "line": 1324, + "column": 8, + "start": 47119, + "end": 47125, + "length": 7, + "parent_index": 6270 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 6274, + "node_type": 44, + "src": { + "id": 6275, + "line": 1325, + "column": 8, + "start": 47146, + "end": 47157, + "length": 12, + "parent_index": 6260 + }, + "scope": 6258, + "name": "_gas", + "type_name": { + "id": 6276, + "node_type": 30, + "src": { + "id": 6277, + "line": 1325, + "column": 8, + "start": 47146, + "end": 47152, + "length": 7, + "parent_index": 6274 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6278, + "node_type": 44, + "src": { + "id": 6279, + "line": 1326, + "column": 8, + "start": 47168, + "end": 47186, + "length": 19, + "parent_index": 6260 + }, + "scope": 6258, + "name": "_dustAmount", + "type_name": { + "id": 6280, + "node_type": 30, + "src": { + "id": 6281, + "line": 1326, + "column": 8, + "start": 47168, + "end": 47174, + "length": 7, + "parent_index": 6278 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6282, + "node_type": 44, + "src": { + "id": 6283, + "line": 1327, + "column": 8, + "start": 47197, + "end": 47217, + "length": 21, + "parent_index": 6260 + }, + "scope": 6258, + "name": "_payload", + "type_name": { + "id": 6284, + "node_type": 30, + "src": { + "id": 6285, + "line": 1327, + "column": 8, + "start": 47197, + "end": 47201, + "length": 5, + "parent_index": 6282 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint16", + "type_string": "uint16" + }, + { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 6286, + "node_type": 43, + "src": { + "id": 6287, + "line": 1328, + "column": 29, + "start": 47248, + "end": 47267, + "length": 20, + "parent_index": 6258 + }, + "parameters": [ + { + "id": 6288, + "node_type": 44, + "src": { + "id": 6289, + "line": 1328, + "column": 29, + "start": 47248, + "end": 47256, + "length": 9, + "parent_index": 6286 + }, + "scope": 6258, + "name": "a", + "type_name": { + "id": 6290, + "node_type": 30, + "src": { + "id": 6291, + "line": 1328, + "column": 29, + "start": 47248, + "end": 47254, + "length": 7, + "parent_index": 6288 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6292, + "node_type": 44, + "src": { + "id": 6293, + "line": 1328, + "column": 40, + "start": 47259, + "end": 47267, + "length": 9, + "parent_index": 6286 + }, + "scope": 6258, + "name": "b", + "type_name": { + "id": 6294, + "node_type": 30, + "src": { + "id": 6295, + "line": 1328, + "column": 40, + "start": 47259, + "end": 47265, + "length": 7, + "parent_index": 6292 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 5964, + "type_description": { + "type_identifier": "t_function_$_t_uint16$_t_uint8$_t_address$_t_uint256$_t_uint256$_t_bytes$", + "type_string": "function(uint16,uint8,address,uint256,uint256,bytes)" + } + }, + { + "id": 6353, + "name": "sgReceive", + "node_type": 42, + "kind": 41, + "src": { + "id": 6354, + "line": 1346, + "column": 4, + "start": 47813, + "end": 49031, + "length": 1219, + "parent_index": 5964 + }, + "body": { + "id": 6384, + "node_type": 46, + "kind": 0, + "src": { + "id": 6385, + "line": 1353, + "column": 24, + "start": 47991, + "end": 49031, + "length": 1041, + "parent_index": 6353 + }, + "implemented": true, + "statements": [ + { + "id": 6386, + "node_type": 48, + "src": { + "id": 6387, + "line": 1354, + "column": 0, + "start": 48001, + "end": 48070, + "length": 70, + "parent_index": 6384 + }, + "condition": { + "id": 6388, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 6389, + "line": 1354, + "column": 12, + "start": 48005, + "end": 48041, + "length": 37, + "parent_index": 6386 + }, + "operator": 12, + "left_expression": { + "id": 6390, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6391, + "line": 1354, + "column": 12, + "start": 48005, + "end": 48014, + "length": 10, + "parent_index": 6388 + }, + "expression": { + "id": 6392, + "node_type": 16, + "src": { + "id": 6393, + "line": 1354, + "column": 12, + "start": 48005, + "end": 48007, + "length": 3, + "parent_index": 6390 + }, + "name": "msg", + "type_description": { + "type_identifier": "t_magic_message", + "type_string": "msg" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "sender", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "right_expression": { + "id": 6394, + "node_type": 24, + "kind": 24, + "src": { + "id": 6395, + "line": 1354, + "column": 26, + "start": 48019, + "end": 48041, + "length": 23, + "parent_index": 6388 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 6400, + "node_type": 16, + "src": { + "id": 6401, + "line": 1354, + "column": 34, + "start": 48027, + "end": 48040, + "length": 14, + "parent_index": 6394 + }, + "name": "stargateRouter", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 6396, + "node_type": 16, + "src": { + "id": 6397, + "line": 1354, + "column": 26, + "start": 48019, + "end": 48025, + "length": 7, + "parent_index": 6394 + }, + "name": "address", + "type_name": { + "id": 6398, + "node_type": 30, + "src": { + "id": 6399, + "line": 1354, + "column": 26, + "start": 48019, + "end": 48025, + "length": 7, + "parent_index": 6396 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 6402, + "node_type": 46, + "kind": 0, + "src": { + "id": 0, + "line": 0, + "column": 0, + "start": 0, + "end": 0, + "length": 0, + "parent_index": 0 + }, + "implemented": false, + "statements": [] + } + }, + { + "id": 6403, + "node_type": 44, + "src": { + "id": 6404, + "line": 1356, + "column": 8, + "start": 48081, + "end": 48325, + "length": 245, + "parent_index": 6384 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 6405, + "node_type": 24, + "kind": 24, + "src": { + "id": 6406, + "line": 1362, + "column": 12, + "start": 48257, + "end": 48324, + "length": 68, + "parent_index": 6403 + }, + "argument_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_tuple_$_t_address_$_t_[_[$_t_uint8]$_$_t_[_[$_t_uint256]$_$_t_[_[$_t_bytes]$_$_t_bytes32$", + "type_string": "tuple(address,index[uint8],index[uint256],index[bytes],bytes32)" + } + ], + "arguments": [ + { + "id": 6411, + "node_type": 16, + "src": { + "id": 6412, + "line": 1362, + "column": 23, + "start": 48268, + "end": 48274, + "length": 7, + "parent_index": 6405 + }, + "name": "payload", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 6411, + "is_pure": false + }, + { + "id": 6413, + "node_type": 60, + "src": { + "id": 6414, + "line": 1362, + "column": 32, + "start": 48277, + "end": 48323, + "length": 47, + "parent_index": 6405 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 6415, + "node_type": 16, + "src": { + "id": 6416, + "line": 1362, + "column": 33, + "start": 48278, + "end": 48284, + "length": 7, + "parent_index": 6413 + }, + "name": "address", + "type_name": { + "id": 6417, + "node_type": 30, + "src": { + "id": 6418, + "line": 1362, + "column": 33, + "start": 48278, + "end": 48284, + "length": 7, + "parent_index": 6415 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 6419, + "node_type": 22, + "src": { + "id": 6420, + "line": 1362, + "column": 42, + "start": 48287, + "end": 48293, + "length": 7, + "parent_index": 6413 + }, + "index_expression": { + "id": 6421, + "node_type": 16, + "src": { + "id": 6422, + "line": 1362, + "column": 42, + "start": 48287, + "end": 48291, + "length": 5, + "parent_index": 6419 + }, + "name": "uint8", + "type_name": { + "id": 6423, + "node_type": 30, + "src": { + "id": 6424, + "line": 1362, + "column": 42, + "start": 48287, + "end": 48291, + "length": 5, + "parent_index": 6421 + }, + "name": "uint8", + "type_description": { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_uint8", + "type_string": "uint8" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "base_expression": null, + "type_descriptions": [ + { + "type_identifier": "t_uint8", + "type_string": "uint8" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_uint8]$", + "type_string": "index[uint8]" + } + }, + { + "id": 6425, + "node_type": 22, + "src": { + "id": 6426, + "line": 1362, + "column": 51, + "start": 48296, + "end": 48304, + "length": 9, + "parent_index": 6413 + }, + "index_expression": { + "id": 6427, + "node_type": 16, + "src": { + "id": 6428, + "line": 1362, + "column": 51, + "start": 48296, + "end": 48302, + "length": 7, + "parent_index": 6425 + }, + "name": "uint256", + "type_name": { + "id": 6429, + "node_type": 30, + "src": { + "id": 6430, + "line": 1362, + "column": 51, + "start": 48296, + "end": 48302, + "length": 7, + "parent_index": 6427 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "base_expression": null, + "type_descriptions": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$", + "type_string": "index[uint256]" + } + }, + { + "id": 6431, + "node_type": 22, + "src": { + "id": 6432, + "line": 1362, + "column": 62, + "start": 48307, + "end": 48313, + "length": 7, + "parent_index": 6413 + }, + "index_expression": { + "id": 6433, + "node_type": 16, + "src": { + "id": 6434, + "line": 1362, + "column": 62, + "start": 48307, + "end": 48311, + "length": 5, + "parent_index": 6431 + }, + "name": "bytes", + "type_name": { + "id": 6435, + "node_type": 30, + "src": { + "id": 6436, + "line": 1362, + "column": 62, + "start": 48307, + "end": 48311, + "length": 5, + "parent_index": 6433 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "base_expression": null, + "type_descriptions": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_bytes]$", + "type_string": "index[bytes]" + } + }, + { + "id": 6437, + "node_type": 16, + "src": { + "id": 6438, + "line": 1362, + "column": 71, + "start": 48316, + "end": 48322, + "length": 7, + "parent_index": 6413 + }, + "name": "bytes32", + "type_name": { + "id": 6439, + "node_type": 30, + "src": { + "id": 6440, + "line": 1362, + "column": 71, + "start": 48316, + "end": 48322, + "length": 7, + "parent_index": 6437 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_address_$_t_[_[$_t_uint8]$_$_t_[_[$_t_uint256]$_$_t_[_[$_t_bytes]$_$_t_bytes32$", + "type_string": "tuple(address,index[uint8],index[uint256],index[bytes],bytes32)" + } + } + ], + "expression": { + "id": 6407, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6408, + "line": 1362, + "column": 12, + "start": 48257, + "end": 48266, + "length": 10, + "parent_index": 6405 + }, + "expression": { + "id": 6409, + "node_type": 16, + "src": { + "id": 6410, + "line": 1362, + "column": 12, + "start": 48257, + "end": 48259, + "length": 3, + "parent_index": 6407 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "decode", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_bytes$_t_tuple_$_t_address_$_t_[_[$_t_uint8]$_$_t_[_[$_t_uint256]$_$_t_[_[$_t_bytes]$_$_t_bytes32$", + "type_string": "function(bytes,tuple(address,index[uint8],index[uint256],index[bytes],bytes32))" + } + } + }, + { + "id": 6441, + "node_type": 44, + "src": { + "id": 6442, + "line": 1365, + "column": 8, + "start": 48366, + "end": 48400, + "length": 35, + "parent_index": 6384 + }, + "assignments": [ + 6443 + ], + "declarations": [ + { + "is_constant": false, + "id": 6443, + "state_mutability": 1, + "name": "limit", + "node_type": 44, + "scope": 6384, + "src": { + "id": 6444, + "line": 1365, + "column": 8, + "start": 48366, + "end": 48378, + "length": 13, + "parent_index": 6441 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 6445, + "node_type": 30, + "src": { + "id": 6446, + "line": 1365, + "column": 8, + "start": 48366, + "end": 48372, + "length": 7, + "parent_index": 6443 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 6447, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 6448, + "line": 1365, + "column": 24, + "start": 48382, + "end": 48399, + "length": 18, + "parent_index": 6441 + }, + "operator": 2, + "left_expression": { + "id": 6449, + "node_type": 24, + "kind": 24, + "src": { + "id": 6450, + "line": 1365, + "column": 24, + "start": 48382, + "end": 48390, + "length": 9, + "parent_index": 6441 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 6451, + "node_type": 16, + "src": { + "id": 6452, + "line": 1365, + "column": 24, + "start": 48382, + "end": 48388, + "length": 7, + "parent_index": 6449 + }, + "name": "gasleft", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + }, + "right_expression": { + "id": 6453, + "node_type": 17, + "kind": 49, + "value": "200000", + "hex_value": "323030303030", + "src": { + "id": 6454, + "line": 1365, + "column": 36, + "start": 48394, + "end": 48399, + "length": 6, + "parent_index": 6447 + }, + "type_description": { + "type_identifier": "t_rational_200000_by_1", + "type_string": "int_const 200000" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + }, + { + "id": 6455, + "node_type": 44, + "src": { + "id": 6456, + "line": 1366, + "column": 8, + "start": 48410, + "end": 48421, + "length": 12, + "parent_index": 6384 + }, + "assignments": [ + 6457 + ], + "declarations": [ + { + "is_constant": false, + "id": 6457, + "state_mutability": 1, + "name": "failed", + "node_type": 44, + "scope": 6384, + "src": { + "id": 6458, + "line": 1366, + "column": 8, + "start": 48410, + "end": 48420, + "length": 11, + "parent_index": 6455 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 6459, + "node_type": 30, + "src": { + "id": 6460, + "line": 1366, + "column": 8, + "start": 48410, + "end": 48413, + "length": 4, + "parent_index": 6457 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ] + }, + { + "id": 6461, + "node_type": 85, + "src": { + "id": 6462, + "line": 1368, + "column": 0, + "start": 48513, + "end": 48792, + "length": 280, + "parent_index": 6384 + }, + "body": { + "id": 6489, + "node_type": 46, + "kind": 0, + "src": { + "id": 6490, + "line": 1374, + "column": 8, + "start": 48676, + "end": 48677, + "length": 2, + "parent_index": 6461 + }, + "implemented": true, + "statements": [] + }, + "kind": 86, + "expression": { + "id": 6463, + "node_type": 24, + "kind": 24, + "src": { + "id": 6464, + "line": 1369, + "column": 12, + "start": 48529, + "end": 48666, + "length": 138, + "parent_index": 6461 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_function_$_t_function_$$$_t_function_$_t_function_$$$", + "type_string": "function(function(),function(function()))" + } + ], + "arguments": [ + { + "id": 6483, + "node_type": 16, + "src": { + "id": 6484, + "line": 1370, + "column": 16, + "start": 48599, + "end": 48605, + "length": 7, + "parent_index": 6463 + }, + "name": "actions", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 6485, + "node_type": 16, + "src": { + "id": 6486, + "line": 1371, + "column": 16, + "start": 48624, + "end": 48629, + "length": 6, + "parent_index": 6463 + }, + "name": "values", + "type_description": { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + }, + { + "id": 6487, + "node_type": 16, + "src": { + "id": 6488, + "line": 1372, + "column": 16, + "start": 48648, + "end": 48652, + "length": 5, + "parent_index": 6463 + }, + "name": "datas", + "type_description": { + "type_identifier": "t_function_$_t_function_$$$_t_function_$_t_function_$$$", + "type_string": "function(function(),function(function()))" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + } + ] + } + ], + "expression": { + "id": 6465, + "node_type": 93, + "kind": 93, + "src": { + "id": 6466, + "line": 1369, + "column": 12, + "start": 48529, + "end": 48580, + "length": 52, + "parent_index": 6463 + }, + "expression": { + "id": 6467, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6468, + "line": 1369, + "column": 12, + "start": 48529, + "end": 48568, + "length": 40, + "parent_index": 6465 + }, + "expression": { + "id": 6469, + "node_type": 24, + "kind": 24, + "src": { + "id": 6470, + "line": 1369, + "column": 12, + "start": 48529, + "end": 48563, + "length": 35, + "parent_index": 6467 + }, + "argument_types": [ + { + "type_identifier": "t_function_payable$_t_function_$_t_address$$", + "type_string": "function(function(address)) payable" + } + ], + "arguments": [ + { + "id": 6473, + "node_type": 84, + "src": { + "id": 6474, + "line": 1369, + "column": 24, + "start": 48541, + "end": 48562, + "length": 22, + "parent_index": 6469 + }, + "arguments": [ + { + "id": 6475, + "node_type": 24, + "kind": 24, + "src": { + "id": 6476, + "line": 1369, + "column": 32, + "start": 48549, + "end": 48561, + "length": 13, + "parent_index": 6473 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_StargateAdapter_$5897", + "type_string": "contract StargateAdapter" + } + ], + "arguments": [ + { + "id": 6481, + "node_type": 16, + "src": { + "id": 6482, + "line": 1369, + "column": 40, + "start": 48557, + "end": 48560, + "length": 4, + "parent_index": 6475 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_StargateAdapter_$5897", + "type_string": "contract StargateAdapter" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 6477, + "node_type": 16, + "src": { + "id": 6478, + "line": 1369, + "column": 32, + "start": 48549, + "end": 48555, + "length": 7, + "parent_index": 6475 + }, + "name": "address", + "type_name": { + "id": 6479, + "node_type": 30, + "src": { + "id": 6480, + "line": 1369, + "column": 32, + "start": 48549, + "end": 48555, + "length": 7, + "parent_index": 6477 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ], + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ], + "type_description": { + "type_identifier": "t_function_payable$_t_function_$_t_address$$", + "type_string": "function(function(address)) payable" + }, + "payable": true + } + ], + "expression": { + "id": 6471, + "node_type": 16, + "src": { + "id": 6472, + "line": 1369, + "column": 12, + "start": 48529, + "end": 48539, + "length": 11, + "parent_index": 6469 + }, + "name": "ISushiXSwap", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_payable$_t_function_$_t_address$", + "type_string": "function(function(function(address)) payable)" + } + }, + "member_name": "cook", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_function_payable$_t_function_$_t_address$", + "type_string": "function(function(function(address)) payable)" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_payable$_t_function_$_t_address$", + "type_string": "function(function(function(address)) payable)" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$", + "type_string": "function(function(),function(function()),function(function(),function(function())))" + } + }, + "clauses": [ + { + "id": 0, + "node_type": 87, + "kind": 88, + "src": { + "id": 6491, + "line": 1374, + "column": 0, + "start": 48679, + "end": 48792, + "length": 114, + "parent_index": 6461 + }, + "body": { + "id": 6498, + "node_type": 46, + "kind": 0, + "src": { + "id": 6499, + "line": 1374, + "column": 32, + "start": 48700, + "end": 48792, + "length": 93, + "parent_index": 0 + }, + "implemented": true, + "statements": [ + { + "id": 6500, + "node_type": 24, + "kind": 24, + "src": { + "id": 6501, + "line": 1375, + "column": 12, + "start": 48714, + "end": 48754, + "length": 41, + "parent_index": 6498 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + } + ], + "arguments": [ + { + "id": 6510, + "node_type": 16, + "src": { + "id": 6511, + "line": 1375, + "column": 40, + "start": 48742, + "end": 48743, + "length": 2, + "parent_index": 6500 + }, + "name": "to", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 6512, + "node_type": 16, + "src": { + "id": 6513, + "line": 1375, + "column": 44, + "start": 48746, + "end": 48753, + "length": 8, + "parent_index": 6500 + }, + "name": "amountLD", + "type_description": { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + } + ], + "expression": { + "id": 6502, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6503, + "line": 1375, + "column": 12, + "start": 48714, + "end": 48740, + "length": 27, + "parent_index": 6500 + }, + "expression": { + "id": 6504, + "node_type": 24, + "kind": 24, + "src": { + "id": 6505, + "line": 1375, + "column": 12, + "start": 48714, + "end": 48727, + "length": 14, + "parent_index": 6502 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 6508, + "node_type": 16, + "src": { + "id": 6509, + "line": 1375, + "column": 19, + "start": 48721, + "end": 48726, + "length": 6, + "parent_index": 6504 + }, + "name": "_token", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 6506, + "node_type": 16, + "src": { + "id": 6507, + "line": 1375, + "column": 12, + "start": 48714, + "end": 48719, + "length": 6, + "parent_index": 6504 + }, + "name": "IERC20", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "member_name": "safeTransfer", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$", + "type_string": "function(function(),function(function()))" + } + }, + { + "id": 6514, + "node_type": 81, + "src": { + "id": 6515, + "line": 1376, + "column": 12, + "start": 48769, + "end": 48782, + "length": 14, + "parent_index": 6498 + }, + "expression": { + "id": 6516, + "node_type": 27, + "src": { + "id": 6517, + "line": 1376, + "column": 12, + "start": 48769, + "end": 48781, + "length": 13, + "parent_index": 6498 + }, + "operator": 11, + "left_expression": { + "id": 6518, + "node_type": 16, + "src": { + "id": 6519, + "line": 1376, + "column": 12, + "start": 48769, + "end": 48774, + "length": 6, + "parent_index": 6516 + }, + "name": "failed", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 6002, + "is_pure": false + }, + "right_expression": { + "id": 6520, + "node_type": 17, + "kind": 61, + "value": "true", + "hex_value": "74727565", + "src": { + "id": 6521, + "line": 1376, + "column": 21, + "start": 48778, + "end": 48781, + "length": 4, + "parent_index": 6516 + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + } + ] + }, + "parameters": { + "id": 6492, + "node_type": 43, + "src": { + "id": 6493, + "line": 1374, + "column": 18, + "start": 48686, + "end": 48697, + "length": 12, + "parent_index": 0 + }, + "parameters": [ + { + "id": 6494, + "node_type": 44, + "src": { + "id": 6495, + "line": 1374, + "column": 18, + "start": 48686, + "end": 48697, + "length": 12, + "parent_index": 6492 + }, + "name": "", + "type_name": { + "id": 6496, + "node_type": 30, + "src": { + "id": 6497, + "line": 1374, + "column": 18, + "start": 48686, + "end": 48690, + "length": 5, + "parent_index": 6494 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + } + } + ] + }, + { + "id": 6522, + "node_type": 48, + "src": { + "id": 6523, + "line": 1380, + "column": 0, + "start": 48881, + "end": 48967, + "length": 87, + "parent_index": 6384 + }, + "condition": { + "id": 6524, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 6525, + "line": 1380, + "column": 12, + "start": 48885, + "end": 48909, + "length": 25, + "parent_index": 6522 + }, + "operator": 7, + "left_expression": { + "id": 6526, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 6527, + "line": 1380, + "column": 12, + "start": 48885, + "end": 48905, + "length": 21, + "parent_index": 6524 + }, + "expression": { + "id": 6528, + "node_type": 24, + "kind": 24, + "src": { + "id": 6529, + "line": 1380, + "column": 12, + "start": 48885, + "end": 48897, + "length": 13, + "parent_index": 6526 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_StargateAdapter_$5897", + "type_string": "contract StargateAdapter" + } + ], + "arguments": [ + { + "id": 6534, + "node_type": 16, + "src": { + "id": 6535, + "line": 1380, + "column": 20, + "start": 48893, + "end": 48896, + "length": 4, + "parent_index": 6528 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_StargateAdapter_$5897", + "type_string": "contract StargateAdapter" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 6530, + "node_type": 16, + "src": { + "id": 6531, + "line": 1380, + "column": 12, + "start": 48885, + "end": 48891, + "length": 7, + "parent_index": 6528 + }, + "name": "address", + "type_name": { + "id": 6532, + "node_type": 30, + "src": { + "id": 6533, + "line": 1380, + "column": 12, + "start": 48885, + "end": 48891, + "length": 7, + "parent_index": 6530 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "member_name": "balance", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "right_expression": { + "id": 6536, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 6537, + "line": 1380, + "column": 36, + "start": 48909, + "end": 48909, + "length": 1, + "parent_index": 6524 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 6538, + "node_type": 46, + "kind": 0, + "src": { + "id": 0, + "line": 0, + "column": 0, + "start": 0, + "end": 0, + "length": 0, + "parent_index": 0 + }, + "implemented": false, + "statements": [] + } + }, + { + "id": 6539, + "node_type": 64, + "src": { + "id": 6540, + "line": 1383, + "column": 8, + "start": 48978, + "end": 49024, + "length": 47, + "parent_index": 6353 + }, + "arguments": [ + { + "id": 6541, + "node_type": 16, + "src": { + "id": 6542, + "line": 1383, + "column": 35, + "start": 49005, + "end": 49014, + "length": 10, + "parent_index": 6384 + }, + "name": "srcContext", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "overloaded_declarations": [], + "referenced_declaration": 5990, + "is_pure": false + }, + { + "id": 6543, + "node_type": 16, + "src": { + "id": 6544, + "line": 1383, + "column": 47, + "start": 49017, + "end": 49022, + "length": 6, + "parent_index": 6384 + }, + "name": "failed", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 6455, + "is_pure": false + } + ], + "expression": { + "id": 6545, + "node_type": 16, + "src": { + "id": 6546, + "line": 1383, + "column": 13, + "start": 48983, + "end": 49003, + "length": 21, + "parent_index": 6384 + }, + "name": "StargateSushiXSwapDst", + "type_description": { + "type_identifier": "t_event\u0026_StargateAdapter_StargateSushiXSwapDst_\u00265995", + "type_string": "event StargateAdapter.StargateSushiXSwapDst" + }, + "overloaded_declarations": [], + "referenced_declaration": 5995, + "is_pure": false + } + } + ] + }, + "implemented": true, + "visibility": 4, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [ + { + "id": 6355, + "node_type": 63, + "name": "sgReceive", + "src": { + "id": 6356, + "line": 1353, + "column": 15, + "start": 47982, + "end": 47989, + "length": 8, + "parent_index": 6353 + }, + "referenced_declaration": 6353, + "type_descriptions": { + "type_identifier": "t_function_$_t_uint16$_t_bytes$_t_uint256$_t_address$_t_uint256$_t_bytes$", + "type_string": "function(uint16,bytes,uint256,address,uint256,bytes)" + } + } + ], + "parameters": { + "id": 6357, + "node_type": 43, + "src": { + "id": 6358, + "line": 1347, + "column": 8, + "start": 47841, + "end": 47965, + "length": 125, + "parent_index": 6353 + }, + "parameters": [ + { + "id": 6359, + "node_type": 44, + "src": { + "id": 6360, + "line": 1347, + "column": 8, + "start": 47841, + "end": 47846, + "length": 6, + "parent_index": 6357 + }, + "scope": 6353, + "name": "", + "type_name": { + "id": 6361, + "node_type": 30, + "src": { + "id": 6362, + "line": 1347, + "column": 8, + "start": 47841, + "end": 47846, + "length": 6, + "parent_index": 6359 + }, + "name": "uint16", + "type_description": { + "type_identifier": "t_uint16", + "type_string": "uint16" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6363, + "node_type": 44, + "src": { + "id": 6364, + "line": 1348, + "column": 8, + "start": 47857, + "end": 47868, + "length": 12, + "parent_index": 6357 + }, + "scope": 6353, + "name": "", + "type_name": { + "id": 6365, + "node_type": 30, + "src": { + "id": 6366, + "line": 1348, + "column": 8, + "start": 47857, + "end": 47861, + "length": 5, + "parent_index": 6363 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6367, + "node_type": 44, + "src": { + "id": 6368, + "line": 1349, + "column": 8, + "start": 47879, + "end": 47885, + "length": 7, + "parent_index": 6357 + }, + "scope": 6353, + "name": "", + "type_name": { + "id": 6369, + "node_type": 30, + "src": { + "id": 6370, + "line": 1349, + "column": 8, + "start": 47879, + "end": 47885, + "length": 7, + "parent_index": 6367 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6371, + "node_type": 44, + "src": { + "id": 6372, + "line": 1350, + "column": 8, + "start": 47896, + "end": 47909, + "length": 14, + "parent_index": 6357 + }, + "scope": 6353, + "name": "_token", + "type_name": { + "id": 6373, + "node_type": 30, + "src": { + "id": 6374, + "line": 1350, + "column": 8, + "start": 47896, + "end": 47902, + "length": 7, + "parent_index": 6371 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 6375, + "node_type": 44, + "src": { + "id": 6376, + "line": 1351, + "column": 8, + "start": 47920, + "end": 47935, + "length": 16, + "parent_index": 6357 + }, + "scope": 6353, + "name": "amountLD", + "type_name": { + "id": 6377, + "node_type": 30, + "src": { + "id": 6378, + "line": 1351, + "column": 8, + "start": 47920, + "end": 47926, + "length": 7, + "parent_index": 6375 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 6379, + "node_type": 44, + "src": { + "id": 6380, + "line": 1352, + "column": 8, + "start": 47946, + "end": 47965, + "length": 20, + "parent_index": 6357 + }, + "scope": 6353, + "name": "payload", + "type_name": { + "id": 6381, + "node_type": 30, + "src": { + "id": 6382, + "line": 1352, + "column": 8, + "start": 47946, + "end": 47950, + "length": 5, + "parent_index": 6379 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint16", + "type_string": "uint16" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ] + }, + "return_parameters": { + "id": 6383, + "node_type": 43, + "src": { + "id": 6354, + "line": 1346, + "column": 4, + "start": 47813, + "end": 49031, + "length": 1219, + "parent_index": 6353 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 5964, + "type_description": { + "type_identifier": "t_function_$_t_uint16$_t_bytes$_t_uint256$_t_address$_t_uint256$_t_bytes$", + "type_string": "function(uint16,bytes,uint256,address,uint256,bytes)" + } + } + ], + "linearized_base_contracts": [ + 1354, + 5964, + 5963 + ], + "base_contracts": [ + { + "id": 5965, + "node_type": 62, + "src": { + "id": 5966, + "line": 1245, + "column": 37, + "start": 43639, + "end": 43652, + "length": 14, + "parent_index": 5964 + }, + "base_name": { + "id": 5967, + "node_type": 52, + "src": { + "id": 5968, + "line": 1245, + "column": 37, + "start": 43639, + "end": 43652, + "length": 14, + "parent_index": 5964 + }, + "name": "ImmutableState", + "referenced_declaration": 1354 + } + }, + { + "id": 5969, + "node_type": 62, + "src": { + "id": 5970, + "line": 1245, + "column": 53, + "start": 43655, + "end": 43671, + "length": 17, + "parent_index": 5964 + }, + "base_name": { + "id": 5971, + "node_type": 52, + "src": { + "id": 5972, + "line": 1245, + "column": 53, + "start": 43655, + "end": 43671, + "length": 17, + "parent_index": 5964 + }, + "name": "IStargateReceiver", + "referenced_declaration": 6650 + } + } + ], + "contract_dependencies": [ + 1354, + 5963 + ] + } + ], + "src": { + "id": 5898, + "line": 1245, + "column": 0, + "start": 43602, + "end": 49033, + "length": 5432, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/SushiLegacyAdapter.sol b/data/tests/contracts/sushixswap/SushiLegacyAdapter.sol new file mode 100644 index 00000000..eff2435f --- /dev/null +++ b/data/tests/contracts/sushixswap/SushiLegacyAdapter.sol @@ -0,0 +1,72 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity 0.8.11; + +import "./SafeERC20.sol"; +import "./UniswapV2Library.sol"; +import "./ImmutableState.sol"; + +/// @title SushiLegacyAdapter +/// @notice Adapter for functions used to swap using Sushiswap Legacy AMM. +abstract contract SushiLegacyAdapter is ImmutableState { + using SafeERC20 for IERC20; + + function _swapExactTokensForTokens( + uint256 amountIn, + uint256 amountOutMin, + address[] memory path, + address to, + bool sendTokens + ) internal returns (uint256 amountOut) { + uint256[] memory amounts = UniswapV2Library.getAmountsOut( + factory, + amountIn, + path, + pairCodeHash + ); + amountOut = amounts[amounts.length - 1]; + + require(amountOut >= amountOutMin, "insufficient-amount-out"); + + /// @dev force sends token to the first pair if not already sent + if (sendTokens) { + IERC20(path[0]).safeTransfer( + UniswapV2Library.pairFor( + factory, + path[0], + path[1], + pairCodeHash + ), + IERC20(path[0]).balanceOf(address(this)) + ); + } + _swap(amounts, path, to); + } + + /// @dev requires the initial amount to have already been sent to the first pair + function _swap( + uint256[] memory amounts, + address[] memory path, + address _to + ) internal virtual { + for (uint256 i; i < path.length - 1; i++) { + (address input, address output) = (path[i], path[i + 1]); + (address token0, ) = UniswapV2Library.sortTokens(input, output); + uint256 amountOut = amounts[i + 1]; + (uint256 amount0Out, uint256 amount1Out) = input == token0 + ? (uint256(0), amountOut) + : (amountOut, uint256(0)); + address to = i < path.length - 2 + ? UniswapV2Library.pairFor( + factory, + output, + path[i + 2], + pairCodeHash + ) + : _to; + IUniswapV2Pair( + UniswapV2Library.pairFor(factory, input, output, pairCodeHash) + ).swap(amount0Out, amount1Out, to, new bytes(0)); + } + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/SushiLegacyAdapter.solgo.ast.json b/data/tests/contracts/sushixswap/SushiLegacyAdapter.solgo.ast.json new file mode 100644 index 00000000..30462b6d --- /dev/null +++ b/data/tests/contracts/sushixswap/SushiLegacyAdapter.solgo.ast.json @@ -0,0 +1,4427 @@ +{ + "id": 4404, + "base_contracts": [ + { + "id": 4455, + "node_type": 62, + "src": { + "id": 4456, + "line": 967, + "column": 40, + "start": 34672, + "end": 34685, + "length": 14, + "parent_index": 4454 + }, + "base_name": { + "id": 4457, + "node_type": 52, + "src": { + "id": 4458, + "line": 967, + "column": 40, + "start": 34672, + "end": 34685, + "length": 14, + "parent_index": 4454 + }, + "name": "ImmutableState", + "referenced_declaration": 1354 + } + } + ], + "license": "MIT", + "exported_symbols": [ + { + "id": 4404, + "name": "SushiLegacyAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/SushiLegacyAdapter.sol" + }, + { + "id": 3448, + "name": "SafeERC20", + "absolute_path": "SafeERC20.sol" + }, + { + "id": 3448, + "name": "UniswapV2Library", + "absolute_path": "UniswapV2Library.sol" + }, + { + "id": 3448, + "name": "ImmutableState", + "absolute_path": "ImmutableState.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/SushiLegacyAdapter.sol", + "name": "SushiLegacyAdapter", + "node_type": 1, + "nodes": [ + { + "id": 4436, + "node_type": 10, + "src": { + "id": 4437, + "line": 959, + "column": 0, + "start": 34411, + "end": 34433, + "length": 23, + "parent_index": 4404 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 4451, + "node_type": 29, + "src": { + "id": 0, + "line": 961, + "column": 0, + "start": 34436, + "end": 34460, + "length": 25, + "parent_index": 4404 + }, + "absolute_path": "SafeERC20.sol", + "file": "./SafeERC20.sol", + "scope": 4404, + "unit_alias": "", + "source_unit": 3448 + }, + { + "id": 4452, + "node_type": 29, + "src": { + "id": 0, + "line": 962, + "column": 0, + "start": 34462, + "end": 34493, + "length": 32, + "parent_index": 4404 + }, + "absolute_path": "UniswapV2Library.sol", + "file": "./UniswapV2Library.sol", + "scope": 4404, + "unit_alias": "", + "source_unit": 3448 + }, + { + "id": 4453, + "node_type": 29, + "src": { + "id": 0, + "line": 963, + "column": 0, + "start": 34495, + "end": 34524, + "length": 30, + "parent_index": 4404 + }, + "absolute_path": "ImmutableState.sol", + "file": "./ImmutableState.sol", + "scope": 4404, + "unit_alias": "", + "source_unit": 3448 + }, + { + "id": 4454, + "name": "SushiLegacyAdapter", + "node_type": 35, + "src": { + "id": 0, + "line": 967, + "column": 0, + "start": 34632, + "end": 36725, + "length": 2094, + "parent_index": 4404 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 4460, + "node_type": 51, + "src": { + "id": 4461, + "line": 968, + "column": 0, + "start": 34693, + "end": 34719, + "length": 27, + "parent_index": 4454 + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "type_name": { + "id": 4462, + "node_type": 69, + "src": { + "id": 4463, + "line": 968, + "column": 24, + "start": 34713, + "end": 34718, + "length": 6, + "parent_index": 4460 + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "path_node": { + "id": 4464, + "name": "IERC20", + "node_type": 52, + "referenced_declaration": 2570, + "src": { + "id": 4465, + "line": 968, + "column": 24, + "start": 34713, + "end": 34718, + "length": 6, + "parent_index": 4462 + } + }, + "referenced_declaration": 2570 + }, + "library_name": { + "id": 4466, + "node_type": 52, + "src": { + "id": 4467, + "line": 968, + "column": 0, + "start": 34699, + "end": 34707, + "length": 9, + "parent_index": 4460 + }, + "name": "SafeERC20", + "referenced_declaration": 1854 + } + }, + { + "id": 4469, + "name": "_swapExactTokensForTokens", + "node_type": 42, + "kind": 41, + "src": { + "id": 4470, + "line": 970, + "column": 4, + "start": 34726, + "end": 35666, + "length": 941, + "parent_index": 4454 + }, + "body": { + "id": 4500, + "node_type": 46, + "kind": 0, + "src": { + "id": 4501, + "line": 976, + "column": 43, + "start": 34936, + "end": 35666, + "length": 731, + "parent_index": 4469 + }, + "implemented": true, + "statements": [ + { + "id": 4502, + "node_type": 44, + "src": { + "id": 4503, + "line": 977, + "column": 8, + "start": 34946, + "end": 35100, + "length": 155, + "parent_index": 4500 + }, + "assignments": [ + 4504 + ], + "declarations": [ + { + "is_constant": false, + "id": 4504, + "state_mutability": 1, + "name": "amounts", + "node_type": 44, + "scope": 4500, + "src": { + "id": 4505, + "line": 977, + "column": 8, + "start": 34946, + "end": 34969, + "length": 24, + "parent_index": 4502 + }, + "is_state_variable": false, + "storage_location": 2, + "type_name": { + "id": 4506, + "node_type": 16, + "src": { + "id": 4508, + "line": 977, + "column": 8, + "start": 34946, + "end": 34952, + "length": 7, + "parent_index": 4504 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 4509, + "node_type": 24, + "kind": 24, + "src": { + "id": 4510, + "line": 977, + "column": 35, + "start": 34973, + "end": 35099, + "length": 127, + "parent_index": 4502 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_function_$_t_function_$$$_t_uint256$$_t_address$", + "type_string": "function(function(),uint256,address)" + } + ], + "arguments": [ + { + "id": 4515, + "node_type": 16, + "src": { + "id": 4516, + "line": 978, + "column": 12, + "start": 35017, + "end": 35023, + "length": 7, + "parent_index": 4509 + }, + "name": "factory", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 4517, + "node_type": 16, + "src": { + "id": 4518, + "line": 979, + "column": 12, + "start": 35038, + "end": 35045, + "length": 8, + "parent_index": 4509 + }, + "name": "amountIn", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4517, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + }, + { + "id": 4519, + "node_type": 16, + "src": { + "id": 4520, + "line": 980, + "column": 12, + "start": 35060, + "end": 35063, + "length": 4, + "parent_index": 4509 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4519, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + { + "id": 4521, + "node_type": 16, + "src": { + "id": 4522, + "line": 981, + "column": 12, + "start": 35078, + "end": 35089, + "length": 12, + "parent_index": 4509 + }, + "name": "pairCodeHash", + "type_description": { + "type_identifier": "t_function_$_t_function_$$$_t_uint256$$_t_address$", + "type_string": "function(function(),uint256,address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 4511, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4512, + "line": 977, + "column": 35, + "start": 34973, + "end": 35002, + "length": 30, + "parent_index": 4509 + }, + "expression": { + "id": 4513, + "node_type": 16, + "src": { + "id": 4514, + "line": 977, + "column": 35, + "start": 34973, + "end": 34988, + "length": 16, + "parent_index": 4511 + }, + "name": "UniswapV2Library", + "type_description": { + "type_identifier": "t_contract$_UniswapV2Library_$3448", + "type_string": "contract UniswapV2Library" + }, + "overloaded_declarations": [], + "referenced_declaration": 3448, + "is_pure": false + }, + "member_name": "getAmountsOut", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_UniswapV2Library_$3448", + "type_string": "contract UniswapV2Library" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_uint256$_t_address$_t_function_$_t_function_$_t_uint256$_t_address$", + "type_string": "function(function(),uint256,address,function(function(),uint256,address))" + } + } + }, + { + "id": 4523, + "node_type": 81, + "src": { + "id": 4524, + "line": 983, + "column": 8, + "start": 35110, + "end": 35149, + "length": 40, + "parent_index": 4500 + }, + "expression": { + "id": 4525, + "node_type": 27, + "src": { + "id": 4526, + "line": 983, + "column": 8, + "start": 35110, + "end": 35148, + "length": 39, + "parent_index": 4500 + }, + "operator": 11, + "left_expression": { + "id": 4527, + "node_type": 16, + "src": { + "id": 4528, + "line": 983, + "column": 8, + "start": 35110, + "end": 35118, + "length": 9, + "parent_index": 4525 + }, + "name": "amountOut", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 913, + "is_pure": false + }, + "right_expression": { + "id": 4529, + "node_type": 22, + "src": { + "id": 4530, + "line": 983, + "column": 20, + "start": 35122, + "end": 35148, + "length": 27, + "parent_index": 4525 + }, + "index_expression": { + "id": 4531, + "node_type": 16, + "src": { + "id": 4532, + "line": 983, + "column": 20, + "start": 35122, + "end": 35128, + "length": 7, + "parent_index": 4529 + }, + "name": "amounts", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4502, + "is_pure": false + }, + "base_expression": { + "id": 4533, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4534, + "line": 983, + "column": 28, + "start": 35130, + "end": 35147, + "length": 18, + "parent_index": 4529 + }, + "operator": 2, + "left_expression": { + "id": 4535, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4536, + "line": 983, + "column": 28, + "start": 35130, + "end": 35143, + "length": 14, + "parent_index": 4533 + }, + "expression": { + "id": 4537, + "node_type": 16, + "src": { + "id": 4538, + "line": 983, + "column": 28, + "start": 35130, + "end": 35136, + "length": 7, + "parent_index": 4535 + }, + "name": "amounts", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4502, + "is_pure": false + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "right_expression": { + "id": 4539, + "node_type": 17, + "kind": 49, + "value": "1", + "hex_value": "31", + "src": { + "id": 4540, + "line": 983, + "column": 45, + "start": 35147, + "end": 35147, + "length": 1, + "parent_index": 4533 + }, + "type_description": { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_descriptions": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + { + "id": 4541, + "node_type": 24, + "kind": 24, + "src": { + "id": 4542, + "line": 985, + "column": 8, + "start": 35160, + "end": 35220, + "length": 61, + "parent_index": 4500 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"insufficient-amount-out\"" + } + ], + "arguments": [ + { + "id": 4545, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4546, + "line": 985, + "column": 16, + "start": 35168, + "end": 35192, + "length": 25, + "parent_index": 4541 + }, + "operator": 8, + "left_expression": { + "id": 4547, + "node_type": 16, + "src": { + "id": 4548, + "line": 985, + "column": 16, + "start": 35168, + "end": 35176, + "length": 9, + "parent_index": 4545 + }, + "name": "amountOut", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 913, + "is_pure": false + }, + "right_expression": { + "id": 4549, + "node_type": 16, + "src": { + "id": 4550, + "line": 985, + "column": 29, + "start": 35181, + "end": 35192, + "length": 12, + "parent_index": 4545 + }, + "name": "amountOutMin", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4549, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 4551, + "node_type": 17, + "kind": 50, + "value": "insufficient-amount-out", + "hex_value": "696e73756666696369656e742d616d6f756e742d6f7574", + "src": { + "id": 4552, + "line": 985, + "column": 43, + "start": 35195, + "end": 35219, + "length": 25, + "parent_index": 4541 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"insufficient-amount-out\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 4543, + "node_type": 16, + "src": { + "id": 4544, + "line": 985, + "column": 8, + "start": 35160, + "end": 35166, + "length": 7, + "parent_index": 4541 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 4553, + "node_type": 48, + "src": { + "id": 4554, + "line": 988, + "column": 0, + "start": 35305, + "end": 35626, + "length": 322, + "parent_index": 4500 + }, + "condition": { + "id": 4555, + "node_type": 16, + "src": { + "id": 4556, + "line": 988, + "column": 12, + "start": 35309, + "end": 35318, + "length": 10, + "parent_index": 4553 + }, + "name": "sendTokens", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "overloaded_declarations": [], + "referenced_declaration": 4555, + "is_pure": false + }, + "body": { + "id": 4557, + "node_type": 46, + "kind": 0, + "src": { + "id": 4558, + "line": 988, + "column": 24, + "start": 35321, + "end": 35626, + "length": 306, + "parent_index": 4469 + }, + "implemented": true, + "statements": [ + { + "id": 4559, + "node_type": 24, + "kind": 24, + "src": { + "id": 4560, + "line": 989, + "column": 12, + "start": 35335, + "end": 35615, + "length": 281, + "parent_index": 4557 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$_t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$", + "type_string": "function(function(),index[address:int_const 0],index[address:int_const 1],function(function(),index[address:int_const 0],index[address:int_const 1]))" + }, + { + "type_identifier": "t_function_$_t_function_$_t_address$", + "type_string": "function(function(address))" + } + ], + "arguments": [ + { + "id": 4573, + "node_type": 24, + "kind": 24, + "src": { + "id": 4574, + "line": 990, + "column": 16, + "start": 35381, + "end": 35543, + "length": 163, + "parent_index": 4559 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_[_[$_t_address]$_t_rational_0_by_1]$", + "type_string": "index[address:int_const 0]" + }, + { + "type_identifier": "t_[_[$_t_address]$_t_rational_1_by_1]$", + "type_string": "index[address:int_const 1]" + }, + { + "type_identifier": "t_function_$_t_function_$$$_t_[_[$_t_address]$_t_rational_0_by_1]$$$_t_[_[$_t_address]$_t_rational_1_by_1]$$", + "type_string": "function(function(),index[address:int_const 0],index[address:int_const 1])" + } + ], + "arguments": [ + { + "id": 4579, + "node_type": 16, + "src": { + "id": 4580, + "line": 991, + "column": 20, + "start": 35427, + "end": 35433, + "length": 7, + "parent_index": 4573 + }, + "name": "factory", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 4581, + "node_type": 22, + "src": { + "id": 4582, + "line": 992, + "column": 20, + "start": 35456, + "end": 35462, + "length": 7, + "parent_index": 4573 + }, + "index_expression": { + "id": 4583, + "node_type": 16, + "src": { + "id": 4584, + "line": 992, + "column": 20, + "start": 35456, + "end": 35459, + "length": 4, + "parent_index": 4581 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4583, + "is_pure": false + }, + "base_expression": { + "id": 4585, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 4586, + "line": 992, + "column": 25, + "start": 35461, + "end": 35461, + "length": 1, + "parent_index": 4581 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_descriptions": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_address]$_t_rational_0_by_1]$", + "type_string": "index[address:int_const 0]" + } + }, + { + "id": 4587, + "node_type": 22, + "src": { + "id": 4588, + "line": 993, + "column": 20, + "start": 35485, + "end": 35491, + "length": 7, + "parent_index": 4573 + }, + "index_expression": { + "id": 4589, + "node_type": 16, + "src": { + "id": 4590, + "line": 993, + "column": 20, + "start": 35485, + "end": 35488, + "length": 4, + "parent_index": 4587 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4589, + "is_pure": false + }, + "base_expression": { + "id": 4591, + "node_type": 17, + "kind": 49, + "value": "1", + "hex_value": "31", + "src": { + "id": 4592, + "line": 993, + "column": 25, + "start": 35490, + "end": 35490, + "length": 1, + "parent_index": 4587 + }, + "type_description": { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_descriptions": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_address]$_t_rational_1_by_1]$", + "type_string": "index[address:int_const 1]" + } + }, + { + "id": 4593, + "node_type": 16, + "src": { + "id": 4594, + "line": 994, + "column": 20, + "start": 35514, + "end": 35525, + "length": 12, + "parent_index": 4573 + }, + "name": "pairCodeHash", + "type_description": { + "type_identifier": "t_function_$_t_function_$$$_t_[_[$_t_address]$_t_rational_0_by_1]$$$_t_[_[$_t_address]$_t_rational_1_by_1]$$", + "type_string": "function(function(),index[address:int_const 0],index[address:int_const 1])" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_[_[$_t_address]$_t_rational_0_by_1]$", + "type_string": "index[address:int_const 0]" + }, + { + "type_identifier": "t_[_[$_t_address]$_t_rational_1_by_1]$", + "type_string": "index[address:int_const 1]" + } + ] + } + ], + "expression": { + "id": 4575, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4576, + "line": 990, + "column": 16, + "start": 35381, + "end": 35404, + "length": 24, + "parent_index": 4573 + }, + "expression": { + "id": 4577, + "node_type": 16, + "src": { + "id": 4578, + "line": 990, + "column": 16, + "start": 35381, + "end": 35396, + "length": 16, + "parent_index": 4575 + }, + "name": "UniswapV2Library", + "type_description": { + "type_identifier": "t_contract$_UniswapV2Library_$3448", + "type_string": "contract UniswapV2Library" + }, + "overloaded_declarations": [], + "referenced_declaration": 3448, + "is_pure": false + }, + "member_name": "pairFor", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_UniswapV2Library_$3448", + "type_string": "contract UniswapV2Library" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$_t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$", + "type_string": "function(function(),index[address:int_const 0],index[address:int_const 1],function(function(),index[address:int_const 0],index[address:int_const 1]))" + } + }, + { + "id": 4595, + "node_type": 24, + "kind": 24, + "src": { + "id": 4596, + "line": 996, + "column": 16, + "start": 35562, + "end": 35601, + "length": 40, + "parent_index": 4559 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ], + "arguments": [ + { + "id": 4609, + "node_type": 24, + "kind": 24, + "src": { + "id": 4610, + "line": 996, + "column": 42, + "start": 35588, + "end": 35600, + "length": 13, + "parent_index": 4595 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_SushiLegacyAdapter_$4404", + "type_string": "contract SushiLegacyAdapter" + } + ], + "arguments": [ + { + "id": 4615, + "node_type": 16, + "src": { + "id": 4616, + "line": 996, + "column": 50, + "start": 35596, + "end": 35599, + "length": 4, + "parent_index": 4609 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_SushiLegacyAdapter_$4404", + "type_string": "contract SushiLegacyAdapter" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 4611, + "node_type": 16, + "src": { + "id": 4612, + "line": 996, + "column": 42, + "start": 35588, + "end": 35594, + "length": 7, + "parent_index": 4609 + }, + "name": "address", + "type_name": { + "id": 4613, + "node_type": 30, + "src": { + "id": 4614, + "line": 996, + "column": 42, + "start": 35588, + "end": 35594, + "length": 7, + "parent_index": 4611 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ], + "expression": { + "id": 4597, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4598, + "line": 996, + "column": 16, + "start": 35562, + "end": 35586, + "length": 25, + "parent_index": 4595 + }, + "expression": { + "id": 4599, + "node_type": 24, + "kind": 24, + "src": { + "id": 4600, + "line": 996, + "column": 16, + "start": 35562, + "end": 35576, + "length": 15, + "parent_index": 4597 + }, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_address]$_t_rational_0_by_1]$", + "type_string": "index[address:int_const 0]" + } + ], + "arguments": [ + { + "id": 4603, + "node_type": 22, + "src": { + "id": 4604, + "line": 996, + "column": 23, + "start": 35569, + "end": 35575, + "length": 7, + "parent_index": 4599 + }, + "index_expression": { + "id": 4605, + "node_type": 16, + "src": { + "id": 4606, + "line": 996, + "column": 23, + "start": 35569, + "end": 35572, + "length": 4, + "parent_index": 4603 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4605, + "is_pure": false + }, + "base_expression": { + "id": 4607, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 4608, + "line": 996, + "column": 28, + "start": 35574, + "end": 35574, + "length": 1, + "parent_index": 4603 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_descriptions": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_address]$_t_rational_0_by_1]$", + "type_string": "index[address:int_const 0]" + } + } + ], + "expression": { + "id": 4601, + "node_type": 16, + "src": { + "id": 4602, + "line": 996, + "column": 16, + "start": 35562, + "end": 35567, + "length": 6, + "parent_index": 4599 + }, + "name": "IERC20", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$", + "type_string": "function(index[address:int_const 0])" + } + }, + "member_name": "balanceOf", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$", + "type_string": "function(index[address:int_const 0])" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$", + "type_string": "function(function(address))" + } + } + ], + "expression": { + "id": 4561, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4562, + "line": 989, + "column": 12, + "start": 35335, + "end": 35362, + "length": 28, + "parent_index": 4559 + }, + "expression": { + "id": 4563, + "node_type": 24, + "kind": 24, + "src": { + "id": 4564, + "line": 989, + "column": 12, + "start": 35335, + "end": 35349, + "length": 15, + "parent_index": 4561 + }, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_address]$_t_rational_0_by_1]$", + "type_string": "index[address:int_const 0]" + } + ], + "arguments": [ + { + "id": 4567, + "node_type": 22, + "src": { + "id": 4568, + "line": 989, + "column": 19, + "start": 35342, + "end": 35348, + "length": 7, + "parent_index": 4563 + }, + "index_expression": { + "id": 4569, + "node_type": 16, + "src": { + "id": 4570, + "line": 989, + "column": 19, + "start": 35342, + "end": 35345, + "length": 4, + "parent_index": 4567 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4569, + "is_pure": false + }, + "base_expression": { + "id": 4571, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 4572, + "line": 989, + "column": 24, + "start": 35347, + "end": 35347, + "length": 1, + "parent_index": 4567 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_descriptions": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_address]$_t_rational_0_by_1]$", + "type_string": "index[address:int_const 0]" + } + } + ], + "expression": { + "id": 4565, + "node_type": 16, + "src": { + "id": 4566, + "line": 989, + "column": 12, + "start": 35335, + "end": 35340, + "length": 6, + "parent_index": 4563 + }, + "name": "IERC20", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$", + "type_string": "function(index[address:int_const 0])" + } + }, + "member_name": "safeTransfer", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$", + "type_string": "function(index[address:int_const 0])" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$_t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$_t_function_$_t_function_$_t_address$", + "type_string": "function(function(function(),index[address:int_const 0],index[address:int_const 1],function(function(),index[address:int_const 0],index[address:int_const 1])),function(function(address)))" + } + } + ] + } + }, + { + "id": 4617, + "node_type": 24, + "kind": 24, + "src": { + "id": 4618, + "line": 999, + "column": 8, + "start": 35636, + "end": 35659, + "length": 24, + "parent_index": 4500 + }, + "argument_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 4621, + "node_type": 16, + "src": { + "id": 4622, + "line": 999, + "column": 14, + "start": 35642, + "end": 35648, + "length": 7, + "parent_index": 4617 + }, + "name": "amounts", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4502, + "is_pure": false + }, + { + "id": 4623, + "node_type": 16, + "src": { + "id": 4624, + "line": 999, + "column": 23, + "start": 35651, + "end": 35654, + "length": 4, + "parent_index": 4617 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4623, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + { + "id": 4625, + "node_type": 16, + "src": { + "id": 4626, + "line": 999, + "column": 29, + "start": 35657, + "end": 35658, + "length": 2, + "parent_index": 4617 + }, + "name": "to", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4625, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 4619, + "node_type": 16, + "src": { + "id": 4620, + "line": 999, + "column": 8, + "start": 35636, + "end": 35640, + "length": 5, + "parent_index": 4617 + }, + "name": "_swap", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_address$_t_address$", + "type_string": "function(uint256,address,address)" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 4471, + "node_type": 43, + "src": { + "id": 4472, + "line": 971, + "column": 8, + "start": 34770, + "end": 34891, + "length": 122, + "parent_index": 4469 + }, + "parameters": [ + { + "id": 4473, + "node_type": 44, + "src": { + "id": 4474, + "line": 971, + "column": 8, + "start": 34770, + "end": 34785, + "length": 16, + "parent_index": 4471 + }, + "scope": 4469, + "name": "amountIn", + "type_name": { + "id": 4475, + "node_type": 30, + "src": { + "id": 4476, + "line": 971, + "column": 8, + "start": 34770, + "end": 34776, + "length": 7, + "parent_index": 4473 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 4477, + "node_type": 44, + "src": { + "id": 4478, + "line": 972, + "column": 8, + "start": 34796, + "end": 34815, + "length": 20, + "parent_index": 4471 + }, + "scope": 4469, + "name": "amountOutMin", + "type_name": { + "id": 4479, + "node_type": 30, + "src": { + "id": 4480, + "line": 972, + "column": 8, + "start": 34796, + "end": 34802, + "length": 7, + "parent_index": 4477 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 4481, + "node_type": 44, + "src": { + "id": 4482, + "line": 973, + "column": 8, + "start": 34826, + "end": 34846, + "length": 21, + "parent_index": 4471 + }, + "scope": 4469, + "name": "path", + "type_name": { + "id": 4483, + "node_type": 16, + "src": { + "id": 4485, + "line": 973, + "column": 8, + "start": 34826, + "end": 34832, + "length": 7, + "parent_index": 4481 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 4486, + "node_type": 44, + "src": { + "id": 4487, + "line": 974, + "column": 8, + "start": 34857, + "end": 34866, + "length": 10, + "parent_index": 4471 + }, + "scope": 4469, + "name": "to", + "type_name": { + "id": 4488, + "node_type": 30, + "src": { + "id": 4489, + "line": 974, + "column": 8, + "start": 34857, + "end": 34863, + "length": 7, + "parent_index": 4486 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 4490, + "node_type": 44, + "src": { + "id": 4491, + "line": 975, + "column": 8, + "start": 34877, + "end": 34891, + "length": 15, + "parent_index": 4471 + }, + "scope": 4469, + "name": "sendTokens", + "type_name": { + "id": 4492, + "node_type": 30, + "src": { + "id": 4493, + "line": 975, + "column": 8, + "start": 34877, + "end": 34880, + "length": 4, + "parent_index": 4490 + }, + "name": "bool", + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + "return_parameters": { + "id": 4494, + "node_type": 43, + "src": { + "id": 4495, + "line": 976, + "column": 24, + "start": 34917, + "end": 34933, + "length": 17, + "parent_index": 4469 + }, + "parameters": [ + { + "id": 4496, + "node_type": 44, + "src": { + "id": 4497, + "line": 976, + "column": 24, + "start": 34917, + "end": 34933, + "length": 17, + "parent_index": 4494 + }, + "scope": 4469, + "name": "amountOut", + "type_name": { + "id": 4498, + "node_type": 30, + "src": { + "id": 4499, + "line": 976, + "column": 24, + "start": 34917, + "end": 34923, + "length": 7, + "parent_index": 4496 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 4454, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$_t_address$_t_address$_t_bool$", + "type_string": "function(uint256,uint256,address,address,bool)" + } + }, + { + "id": 4628, + "name": "_swap", + "node_type": 42, + "kind": 41, + "src": { + "id": 4629, + "line": 1003, + "column": 4, + "start": 35758, + "end": 36723, + "length": 966, + "parent_index": 4454 + }, + "body": { + "id": 4647, + "node_type": 46, + "kind": 0, + "src": { + "id": 4648, + "line": 1007, + "column": 23, + "start": 35882, + "end": 36723, + "length": 842, + "parent_index": 4628 + }, + "implemented": true, + "statements": [ + { + "id": 4649, + "node_type": 79, + "src": { + "id": 4650, + "line": 1008, + "column": 0, + "start": 35892, + "end": 36717, + "length": 826, + "parent_index": 4647 + }, + "initialiser": { + "id": 4651, + "node_type": 44, + "src": { + "id": 4652, + "line": 1008, + "column": 13, + "start": 35897, + "end": 35906, + "length": 10, + "parent_index": 4647 + }, + "assignments": [ + 4653 + ], + "declarations": [ + { + "is_constant": false, + "id": 4653, + "state_mutability": 1, + "name": "i", + "node_type": 44, + "scope": 4647, + "src": { + "id": 4654, + "line": 1008, + "column": 13, + "start": 35897, + "end": 35905, + "length": 9, + "parent_index": 4651 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 4655, + "node_type": 30, + "src": { + "id": 4656, + "line": 1008, + "column": 13, + "start": 35897, + "end": 35903, + "length": 7, + "parent_index": 4653 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ] + }, + "condition": { + "id": 4657, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4658, + "line": 1008, + "column": 24, + "start": 35908, + "end": 35926, + "length": 19, + "parent_index": 4649 + }, + "operator": 9, + "left_expression": { + "id": 4659, + "node_type": 16, + "src": { + "id": 4660, + "line": 1008, + "column": 24, + "start": 35908, + "end": 35908, + "length": 1, + "parent_index": 4657 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 4661, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4662, + "line": 1008, + "column": 28, + "start": 35912, + "end": 35926, + "length": 15, + "parent_index": 4657 + }, + "operator": 2, + "left_expression": { + "id": 4663, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4664, + "line": 1008, + "column": 28, + "start": 35912, + "end": 35922, + "length": 11, + "parent_index": 4661 + }, + "expression": { + "id": 4665, + "node_type": 16, + "src": { + "id": 4666, + "line": 1008, + "column": 28, + "start": 35912, + "end": 35915, + "length": 4, + "parent_index": 4663 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4665, + "is_pure": false + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "right_expression": { + "id": 4667, + "node_type": 17, + "kind": 49, + "value": "1", + "hex_value": "31", + "src": { + "id": 4668, + "line": 1008, + "column": 42, + "start": 35926, + "end": 35926, + "length": 1, + "parent_index": 4661 + }, + "type_description": { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "closure": { + "id": 4669, + "node_type": 18, + "src": { + "id": 4670, + "line": 1008, + "column": 45, + "start": 35929, + "end": 35931, + "length": 3, + "parent_index": 4628 + }, + "operator": 27, + "expression": { + "id": 4671, + "node_type": 16, + "src": { + "id": 4672, + "line": 1008, + "column": 45, + "start": 35929, + "end": 35929, + "length": 1, + "parent_index": 4669 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "prefix": false, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false + }, + "body": { + "id": 4673, + "node_type": 46, + "kind": 0, + "src": { + "id": 4674, + "line": 1008, + "column": 50, + "start": 35934, + "end": 36717, + "length": 784, + "parent_index": 4649 + }, + "implemented": true, + "statements": [ + { + "id": 4675, + "node_type": 44, + "src": { + "id": 4676, + "line": 1009, + "column": 12, + "start": 35948, + "end": 36004, + "length": 57, + "parent_index": 4673 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 4677, + "node_type": 60, + "src": { + "id": 4678, + "line": 1009, + "column": 46, + "start": 35982, + "end": 36003, + "length": 22, + "parent_index": 4649 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 4679, + "node_type": 22, + "src": { + "id": 4680, + "line": 1009, + "column": 47, + "start": 35983, + "end": 35989, + "length": 7, + "parent_index": 4675 + }, + "index_expression": { + "id": 4681, + "node_type": 16, + "src": { + "id": 4682, + "line": 1009, + "column": 47, + "start": 35983, + "end": 35986, + "length": 4, + "parent_index": 4679 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4101, + "is_pure": false + }, + "base_expression": { + "id": 4683, + "node_type": 16, + "src": { + "id": 4684, + "line": 1009, + "column": 52, + "start": 35988, + "end": 35988, + "length": 1, + "parent_index": 4679 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + } + }, + { + "id": 4685, + "node_type": 22, + "src": { + "id": 4686, + "line": 1009, + "column": 56, + "start": 35992, + "end": 36002, + "length": 11, + "parent_index": 4675 + }, + "index_expression": { + "id": 4687, + "node_type": 16, + "src": { + "id": 4688, + "line": 1009, + "column": 56, + "start": 35992, + "end": 35995, + "length": 4, + "parent_index": 4685 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4101, + "is_pure": false + }, + "base_expression": { + "id": 4689, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4690, + "line": 1009, + "column": 61, + "start": 35997, + "end": 36001, + "length": 5, + "parent_index": 4685 + }, + "operator": 1, + "left_expression": { + "id": 4691, + "node_type": 16, + "src": { + "id": 4692, + "line": 1009, + "column": 61, + "start": 35997, + "end": 35997, + "length": 1, + "parent_index": 4689 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 4693, + "node_type": 17, + "kind": 49, + "value": "1", + "hex_value": "31", + "src": { + "id": 4694, + "line": 1009, + "column": 65, + "start": 36001, + "end": 36001, + "length": 1, + "parent_index": 4689 + }, + "type_description": { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_descriptions": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + } + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_[_[$_t_address]$_t_uint256]$_$_t_[_[$_t_address]$_t_uint256]$$", + "type_string": "tuple(index[address:uint256],index[address:uint256])" + } + } + }, + { + "id": 4695, + "node_type": 44, + "src": { + "id": 4696, + "line": 1010, + "column": 12, + "start": 36018, + "end": 36081, + "length": 64, + "parent_index": 4673 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 4697, + "node_type": 24, + "kind": 24, + "src": { + "id": 4698, + "line": 1010, + "column": 33, + "start": 36039, + "end": 36080, + "length": 42, + "parent_index": 4695 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + } + ], + "arguments": [ + { + "id": 4703, + "node_type": 16, + "src": { + "id": 4704, + "line": 1010, + "column": 61, + "start": 36067, + "end": 36071, + "length": 5, + "parent_index": 4697 + }, + "name": "input", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 4705, + "node_type": 16, + "src": { + "id": 4706, + "line": 1010, + "column": 68, + "start": 36074, + "end": 36079, + "length": 6, + "parent_index": 4697 + }, + "name": "output", + "type_description": { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + } + ], + "expression": { + "id": 4699, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4700, + "line": 1010, + "column": 33, + "start": 36039, + "end": 36065, + "length": 27, + "parent_index": 4697 + }, + "expression": { + "id": 4701, + "node_type": 16, + "src": { + "id": 4702, + "line": 1010, + "column": 33, + "start": 36039, + "end": 36054, + "length": 16, + "parent_index": 4699 + }, + "name": "UniswapV2Library", + "type_description": { + "type_identifier": "t_contract$_UniswapV2Library_$3448", + "type_string": "contract UniswapV2Library" + }, + "overloaded_declarations": [], + "referenced_declaration": 3448, + "is_pure": false + }, + "member_name": "sortTokens", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_UniswapV2Library_$3448", + "type_string": "contract UniswapV2Library" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$", + "type_string": "function(function(),function(function()))" + } + } + }, + { + "id": 4707, + "node_type": 44, + "src": { + "id": 4708, + "line": 1011, + "column": 12, + "start": 36095, + "end": 36129, + "length": 35, + "parent_index": 4673 + }, + "assignments": [ + 4709 + ], + "declarations": [ + { + "is_constant": false, + "id": 4709, + "state_mutability": 1, + "name": "amountOut", + "node_type": 44, + "scope": 4673, + "src": { + "id": 4710, + "line": 1011, + "column": 12, + "start": 36095, + "end": 36111, + "length": 17, + "parent_index": 4707 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 4711, + "node_type": 30, + "src": { + "id": 4712, + "line": 1011, + "column": 12, + "start": 36095, + "end": 36101, + "length": 7, + "parent_index": 4709 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 4713, + "node_type": 22, + "src": { + "id": 4714, + "line": 1011, + "column": 32, + "start": 36115, + "end": 36128, + "length": 14, + "parent_index": 4707 + }, + "index_expression": { + "id": 4715, + "node_type": 16, + "src": { + "id": 4716, + "line": 1011, + "column": 32, + "start": 36115, + "end": 36121, + "length": 7, + "parent_index": 4713 + }, + "name": "amounts", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4112, + "is_pure": false + }, + "base_expression": { + "id": 4717, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4718, + "line": 1011, + "column": 40, + "start": 36123, + "end": 36127, + "length": 5, + "parent_index": 4713 + }, + "operator": 1, + "left_expression": { + "id": 4719, + "node_type": 16, + "src": { + "id": 4720, + "line": 1011, + "column": 40, + "start": 36123, + "end": 36123, + "length": 1, + "parent_index": 4717 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 4721, + "node_type": 17, + "kind": 49, + "value": "1", + "hex_value": "31", + "src": { + "id": 4722, + "line": 1011, + "column": 44, + "start": 36127, + "end": 36127, + "length": 1, + "parent_index": 4717 + }, + "type_description": { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_descriptions": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + } + } + }, + { + "id": 4723, + "node_type": 44, + "src": { + "id": 4724, + "line": 1012, + "column": 12, + "start": 36143, + "end": 36285, + "length": 143, + "parent_index": 4673 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 4726, + "node_type": 97, + "src": { + "id": 4727, + "line": 1012, + "column": 55, + "start": 36186, + "end": 36284, + "length": 99, + "parent_index": 4723 + }, + "expressions": [ + { + "id": 4728, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4729, + "line": 1012, + "column": 55, + "start": 36186, + "end": 36200, + "length": 15, + "parent_index": 4723 + }, + "operator": 11, + "left_expression": { + "id": 4730, + "node_type": 16, + "src": { + "id": 4731, + "line": 1012, + "column": 55, + "start": 36186, + "end": 36190, + "length": 5, + "parent_index": 4728 + }, + "name": "input", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 4703, + "is_pure": false + }, + "right_expression": { + "id": 4732, + "node_type": 16, + "src": { + "id": 4733, + "line": 1012, + "column": 64, + "start": 36195, + "end": 36200, + "length": 6, + "parent_index": 4728 + }, + "name": "token0", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3516, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 4734, + "node_type": 60, + "src": { + "id": 4735, + "line": 1013, + "column": 18, + "start": 36220, + "end": 36242, + "length": 23, + "parent_index": 4726 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 4736, + "node_type": 24, + "kind": 24, + "src": { + "id": 4737, + "line": 1013, + "column": 19, + "start": 36221, + "end": 36230, + "length": 10, + "parent_index": 4723 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 4742, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 4743, + "line": 1013, + "column": 27, + "start": 36229, + "end": 36229, + "length": 1, + "parent_index": 4736 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 4738, + "node_type": 16, + "src": { + "id": 4739, + "line": 1013, + "column": 19, + "start": 36221, + "end": 36227, + "length": 7, + "parent_index": 4736 + }, + "name": "uint256", + "type_name": { + "id": 4740, + "node_type": 30, + "src": { + "id": 4741, + "line": 1013, + "column": 19, + "start": 36221, + "end": 36227, + "length": 7, + "parent_index": 4738 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + { + "id": 4744, + "node_type": 16, + "src": { + "id": 4745, + "line": 1013, + "column": 31, + "start": 36233, + "end": 36241, + "length": 9, + "parent_index": 4734 + }, + "name": "amountOut", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4707, + "is_pure": false + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_function_$_t_rational_0_by_1$_$_t_uint256$", + "type_string": "tuple(function(int_const 0),uint256)" + } + }, + { + "id": 4746, + "node_type": 60, + "src": { + "id": 4747, + "line": 1014, + "column": 18, + "start": 36262, + "end": 36284, + "length": 23, + "parent_index": 4726 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 4748, + "node_type": 16, + "src": { + "id": 4749, + "line": 1014, + "column": 19, + "start": 36263, + "end": 36271, + "length": 9, + "parent_index": 4746 + }, + "name": "amountOut", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4707, + "is_pure": false + }, + { + "id": 4750, + "node_type": 24, + "kind": 24, + "src": { + "id": 4751, + "line": 1014, + "column": 30, + "start": 36274, + "end": 36283, + "length": 10, + "parent_index": 4723 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 4756, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 4757, + "line": 1014, + "column": 38, + "start": 36282, + "end": 36282, + "length": 1, + "parent_index": 4750 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 4752, + "node_type": 16, + "src": { + "id": 4753, + "line": 1014, + "column": 30, + "start": 36274, + "end": 36280, + "length": 7, + "parent_index": 4750 + }, + "name": "uint256", + "type_name": { + "id": 4754, + "node_type": 30, + "src": { + "id": 4755, + "line": 1014, + "column": 30, + "start": 36274, + "end": 36280, + "length": 7, + "parent_index": 4752 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_uint256_$_t_function_$_t_rational_0_by_1$$", + "type_string": "tuple(uint256,function(int_const 0))" + } + } + ], + "type_descriptions": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_tuple_$_t_function_$_t_rational_0_by_1$_$_t_uint256$", + "type_string": "tuple(function(int_const 0),uint256)" + }, + { + "type_identifier": "t_tuple_$_t_uint256_$_t_function_$_t_rational_0_by_1$$", + "type_string": "tuple(uint256,function(int_const 0))" + } + ], + "type_description": null + } + }, + { + "id": 4758, + "node_type": 44, + "src": { + "id": 4759, + "line": 1015, + "column": 12, + "start": 36299, + "end": 36538, + "length": 240, + "parent_index": 4673 + }, + "assignments": [ + 4760 + ], + "declarations": [ + { + "is_constant": false, + "id": 4760, + "state_mutability": 1, + "name": "to", + "node_type": 44, + "scope": 4673, + "src": { + "id": 4761, + "line": 1015, + "column": 12, + "start": 36299, + "end": 36308, + "length": 10, + "parent_index": 4758 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 4762, + "node_type": 30, + "src": { + "id": 4763, + "line": 1015, + "column": 12, + "start": 36299, + "end": 36305, + "length": 7, + "parent_index": 4760 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 4765, + "node_type": 97, + "src": { + "id": 4766, + "line": 1015, + "column": 25, + "start": 36312, + "end": 36537, + "length": 226, + "parent_index": 4758 + }, + "expressions": [ + { + "id": 4767, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4768, + "line": 1015, + "column": 25, + "start": 36312, + "end": 36330, + "length": 19, + "parent_index": 4758 + }, + "operator": 9, + "left_expression": { + "id": 4769, + "node_type": 16, + "src": { + "id": 4770, + "line": 1015, + "column": 25, + "start": 36312, + "end": 36312, + "length": 1, + "parent_index": 4767 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 4771, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4772, + "line": 1015, + "column": 29, + "start": 36316, + "end": 36330, + "length": 15, + "parent_index": 4767 + }, + "operator": 2, + "left_expression": { + "id": 4773, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4774, + "line": 1015, + "column": 29, + "start": 36316, + "end": 36326, + "length": 11, + "parent_index": 4758 + }, + "expression": { + "id": 4775, + "node_type": 16, + "src": { + "id": 4776, + "line": 1015, + "column": 29, + "start": 36316, + "end": 36319, + "length": 4, + "parent_index": 4773 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4101, + "is_pure": false + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "right_expression": { + "id": 4777, + "node_type": 17, + "kind": 49, + "value": "2", + "hex_value": "32", + "src": { + "id": 4778, + "line": 1015, + "column": 43, + "start": 36330, + "end": 36330, + "length": 1, + "parent_index": 4771 + }, + "type_description": { + "type_identifier": "t_rational_2_by_1", + "type_string": "int_const 2" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 4779, + "node_type": 24, + "kind": 24, + "src": { + "id": 4780, + "line": 1016, + "column": 18, + "start": 36350, + "end": 36515, + "length": 166, + "parent_index": 4758 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + }, + { + "type_identifier": "t_function_$_t_function_$$$_t_function_$_t_function_$$$$_t_[_[$_t_address]$_t_uint256]$$", + "type_string": "function(function(),function(function()),index[address:uint256])" + } + ], + "arguments": [ + { + "id": 4785, + "node_type": 16, + "src": { + "id": 4786, + "line": 1017, + "column": 20, + "start": 36396, + "end": 36402, + "length": 7, + "parent_index": 4779 + }, + "name": "factory", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 4787, + "node_type": 16, + "src": { + "id": 4788, + "line": 1018, + "column": 20, + "start": 36425, + "end": 36430, + "length": 6, + "parent_index": 4779 + }, + "name": "output", + "type_description": { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + }, + { + "id": 4789, + "node_type": 22, + "src": { + "id": 4790, + "line": 1019, + "column": 20, + "start": 36453, + "end": 36463, + "length": 11, + "parent_index": 4779 + }, + "index_expression": { + "id": 4791, + "node_type": 16, + "src": { + "id": 4792, + "line": 1019, + "column": 20, + "start": 36453, + "end": 36456, + "length": 4, + "parent_index": 4789 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4101, + "is_pure": false + }, + "base_expression": { + "id": 4793, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4794, + "line": 1019, + "column": 25, + "start": 36458, + "end": 36462, + "length": 5, + "parent_index": 4789 + }, + "operator": 1, + "left_expression": { + "id": 4795, + "node_type": 16, + "src": { + "id": 4796, + "line": 1019, + "column": 25, + "start": 36458, + "end": 36458, + "length": 1, + "parent_index": 4793 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 4797, + "node_type": 17, + "kind": 49, + "value": "2", + "hex_value": "32", + "src": { + "id": 4798, + "line": 1019, + "column": 29, + "start": 36462, + "end": 36462, + "length": 1, + "parent_index": 4793 + }, + "type_description": { + "type_identifier": "t_rational_2_by_1", + "type_string": "int_const 2" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_descriptions": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + } + }, + { + "id": 4799, + "node_type": 16, + "src": { + "id": 4800, + "line": 1020, + "column": 20, + "start": 36486, + "end": 36497, + "length": 12, + "parent_index": 4779 + }, + "name": "pairCodeHash", + "type_description": { + "type_identifier": "t_function_$_t_function_$$$_t_function_$_t_function_$$$$_t_[_[$_t_address]$_t_uint256]$$", + "type_string": "function(function(),function(function()),index[address:uint256])" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + } + ] + } + ], + "expression": { + "id": 4781, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4782, + "line": 1016, + "column": 18, + "start": 36350, + "end": 36373, + "length": 24, + "parent_index": 4779 + }, + "expression": { + "id": 4783, + "node_type": 16, + "src": { + "id": 4784, + "line": 1016, + "column": 18, + "start": 36350, + "end": 36365, + "length": 16, + "parent_index": 4781 + }, + "name": "UniswapV2Library", + "type_description": { + "type_identifier": "t_contract$_UniswapV2Library_$3448", + "type_string": "contract UniswapV2Library" + }, + "overloaded_declarations": [], + "referenced_declaration": 3448, + "is_pure": false + }, + "member_name": "pairFor", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_UniswapV2Library_$3448", + "type_string": "contract UniswapV2Library" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$_t_function_$_t_function_$_t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$", + "type_string": "function(function(),function(function()),index[address:uint256],function(function(),function(function()),index[address:uint256]))" + } + }, + { + "id": 4801, + "node_type": 16, + "src": { + "id": 4802, + "line": 1022, + "column": 18, + "start": 36535, + "end": 36537, + "length": 3, + "parent_index": 4765 + }, + "name": "_to", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "overloaded_declarations": [], + "referenced_declaration": 1107, + "is_pure": false + } + ], + "type_descriptions": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$_t_function_$_t_function_$_t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$", + "type_string": "function(function(),function(function()),index[address:uint256],function(function(),function(function()),index[address:uint256]))" + }, + { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + ], + "type_description": null + } + }, + { + "id": 4803, + "node_type": 24, + "kind": 24, + "src": { + "id": 4804, + "line": 1023, + "column": 12, + "start": 36552, + "end": 36706, + "length": 155, + "parent_index": 4673 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + ], + "arguments": [ + { + "id": 4825, + "node_type": 16, + "src": { + "id": 4826, + "line": 1025, + "column": 19, + "start": 36666, + "end": 36675, + "length": 10, + "parent_index": 4803 + }, + "name": "amount0Out", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 4827, + "node_type": 16, + "src": { + "id": 4828, + "line": 1025, + "column": 31, + "start": 36678, + "end": 36687, + "length": 10, + "parent_index": 4803 + }, + "name": "amount1Out", + "type_description": { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + }, + { + "id": 4829, + "node_type": 16, + "src": { + "id": 4830, + "line": 1025, + "column": 43, + "start": 36690, + "end": 36691, + "length": 2, + "parent_index": 4803 + }, + "name": "to", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4758, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + } + ] + }, + { + "id": 4831, + "node_type": 24, + "kind": 24, + "src": { + "id": 4832, + "line": 1025, + "column": 47, + "start": 36694, + "end": 36705, + "length": 12, + "parent_index": 4803 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 4837, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 4838, + "line": 1025, + "column": 57, + "start": 36704, + "end": 36704, + "length": 1, + "parent_index": 4831 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 4833, + "node_type": 25, + "src": { + "id": 4834, + "line": 1025, + "column": 47, + "start": 36694, + "end": 36702, + "length": 9, + "parent_index": 4831 + }, + "argument_types": [], + "type_name": { + "id": 4835, + "node_type": 30, + "src": { + "id": 4836, + "line": 1025, + "column": 51, + "start": 36698, + "end": 36702, + "length": 5, + "parent_index": 4833 + }, + "name": "bytes", + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_bytes", + "type_string": "bytes" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + } + ], + "expression": { + "id": 4805, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4806, + "line": 1023, + "column": 12, + "start": 36552, + "end": 36664, + "length": 113, + "parent_index": 4803 + }, + "expression": { + "id": 4807, + "node_type": 24, + "kind": 24, + "src": { + "id": 4808, + "line": 1023, + "column": 12, + "start": 36552, + "end": 36659, + "length": 108, + "parent_index": 4805 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$", + "type_string": "function(function(),function(function()),function(function(),function(function())),function(function(),function(function()),function(function(),function(function()))))" + } + ], + "arguments": [ + { + "id": 4811, + "node_type": 24, + "kind": 24, + "src": { + "id": 4812, + "line": 1024, + "column": 16, + "start": 36584, + "end": 36645, + "length": 62, + "parent_index": 4807 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_function_$_t_function_$$$_t_function_$_t_function_$$$", + "type_string": "function(function(),function(function()))" + }, + { + "type_identifier": "t_function_$_t_function_$$$_t_function_$_t_function_$$$$_t_function_$_t_function_$$$_t_function_$_t_function_$$$$", + "type_string": "function(function(),function(function()),function(function(),function(function())))" + } + ], + "arguments": [ + { + "id": 4817, + "node_type": 16, + "src": { + "id": 4818, + "line": 1024, + "column": 41, + "start": 36609, + "end": 36615, + "length": 7, + "parent_index": 4811 + }, + "name": "factory", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 4819, + "node_type": 16, + "src": { + "id": 4820, + "line": 1024, + "column": 50, + "start": 36618, + "end": 36622, + "length": 5, + "parent_index": 4811 + }, + "name": "input", + "type_description": { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + }, + { + "id": 4821, + "node_type": 16, + "src": { + "id": 4822, + "line": 1024, + "column": 57, + "start": 36625, + "end": 36630, + "length": 6, + "parent_index": 4811 + }, + "name": "output", + "type_description": { + "type_identifier": "t_function_$_t_function_$$$_t_function_$_t_function_$$$", + "type_string": "function(function(),function(function()))" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + } + ] + }, + { + "id": 4823, + "node_type": 16, + "src": { + "id": 4824, + "line": 1024, + "column": 65, + "start": 36633, + "end": 36644, + "length": 12, + "parent_index": 4811 + }, + "name": "pairCodeHash", + "type_description": { + "type_identifier": "t_function_$_t_function_$$$_t_function_$_t_function_$$$$_t_function_$_t_function_$$$_t_function_$_t_function_$$$$", + "type_string": "function(function(),function(function()),function(function(),function(function())))" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_function_$_t_function_$$$_t_function_$_t_function_$$$", + "type_string": "function(function(),function(function()))" + } + ] + } + ], + "expression": { + "id": 4813, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4814, + "line": 1024, + "column": 16, + "start": 36584, + "end": 36607, + "length": 24, + "parent_index": 4811 + }, + "expression": { + "id": 4815, + "node_type": 16, + "src": { + "id": 4816, + "line": 1024, + "column": 16, + "start": 36584, + "end": 36599, + "length": 16, + "parent_index": 4813 + }, + "name": "UniswapV2Library", + "type_description": { + "type_identifier": "t_contract$_UniswapV2Library_$3448", + "type_string": "contract UniswapV2Library" + }, + "overloaded_declarations": [], + "referenced_declaration": 3448, + "is_pure": false + }, + "member_name": "pairFor", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_UniswapV2Library_$3448", + "type_string": "contract UniswapV2Library" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$", + "type_string": "function(function(),function(function()),function(function(),function(function())),function(function(),function(function()),function(function(),function(function()))))" + } + } + ], + "expression": { + "id": 4809, + "node_type": 16, + "src": { + "id": 4810, + "line": 1023, + "column": 12, + "start": 36552, + "end": 36565, + "length": 14, + "parent_index": 4807 + }, + "name": "IUniswapV2Pair", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$", + "type_string": "function(function(function(),function(function()),function(function(),function(function())),function(function(),function(function()),function(function(),function(function())))))" + } + }, + "member_name": "swap", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$", + "type_string": "function(function(function(),function(function()),function(function(),function(function())),function(function(),function(function()),function(function(),function(function())))))" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_rational_0_by_1$", + "type_string": "function(function(),function(function()),address,function(int_const 0))" + } + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": true, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 4630, + "node_type": 43, + "src": { + "id": 4631, + "line": 1004, + "column": 8, + "start": 35782, + "end": 35857, + "length": 76, + "parent_index": 4628 + }, + "parameters": [ + { + "id": 4632, + "node_type": 44, + "src": { + "id": 4633, + "line": 1004, + "column": 8, + "start": 35782, + "end": 35805, + "length": 24, + "parent_index": 4630 + }, + "scope": 4628, + "name": "amounts", + "type_name": { + "id": 4634, + "node_type": 16, + "src": { + "id": 4636, + "line": 1004, + "column": 8, + "start": 35782, + "end": 35788, + "length": 7, + "parent_index": 4632 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 4637, + "node_type": 44, + "src": { + "id": 4638, + "line": 1005, + "column": 8, + "start": 35816, + "end": 35836, + "length": 21, + "parent_index": 4630 + }, + "scope": 4628, + "name": "path", + "type_name": { + "id": 4639, + "node_type": 16, + "src": { + "id": 4641, + "line": 1005, + "column": 8, + "start": 35816, + "end": 35822, + "length": 7, + "parent_index": 4637 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 4642, + "node_type": 44, + "src": { + "id": 4643, + "line": 1006, + "column": 8, + "start": 35847, + "end": 35857, + "length": 11, + "parent_index": 4630 + }, + "scope": 4628, + "name": "_to", + "type_name": { + "id": 4644, + "node_type": 30, + "src": { + "id": 4645, + "line": 1006, + "column": 8, + "start": 35847, + "end": 35853, + "length": 7, + "parent_index": 4642 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 4646, + "node_type": 43, + "src": { + "id": 4629, + "line": 1003, + "column": 4, + "start": 35758, + "end": 36723, + "length": 966, + "parent_index": 4628 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 4454, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_address$_t_address$", + "type_string": "function(uint256,address,address)" + } + } + ], + "linearized_base_contracts": [ + 1354, + 4454, + 4451, + 4452, + 4453 + ], + "base_contracts": [ + { + "id": 4455, + "node_type": 62, + "src": { + "id": 4456, + "line": 967, + "column": 40, + "start": 34672, + "end": 34685, + "length": 14, + "parent_index": 4454 + }, + "base_name": { + "id": 4457, + "node_type": 52, + "src": { + "id": 4458, + "line": 967, + "column": 40, + "start": 34672, + "end": 34685, + "length": 14, + "parent_index": 4454 + }, + "name": "ImmutableState", + "referenced_declaration": 1354 + } + } + ], + "contract_dependencies": [ + 1354, + 4451, + 4452, + 4453 + ] + } + ], + "src": { + "id": 4405, + "line": 967, + "column": 0, + "start": 34632, + "end": 36725, + "length": 2094, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/SushiXSwap.sol b/data/tests/contracts/sushixswap/SushiXSwap.sol new file mode 100644 index 00000000..64a90db5 --- /dev/null +++ b/data/tests/contracts/sushixswap/SushiXSwap.sol @@ -0,0 +1,239 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity 0.8.11; + +import "./ISushiXSwap.sol"; + +/// @title SushiXSwap +/// @notice Enables cross chain swap for sushiswap. +/// @dev Supports both BentoBox and Wallet. Supports both Trident and Legacy AMM. Uses Stargate as bridge. +contract SushiXSwap is + ISushiXSwap, + BentoAdapter, + TokenAdapter, + SushiLegacyAdapter, + TridentSwapAdapter, + StargateAdapter +{ + constructor( + IBentoBoxMinimal _bentoBox, + IStargateRouter _stargateRouter, + address _factory, + bytes32 _pairCodeHash, + IStargateWidget _stargateWidget + ) ImmutableState(_bentoBox, _stargateRouter, _factory, _pairCodeHash, _stargateWidget) { + // Register to BentoBox + _bentoBox.registerProtocol(); + } + + /// @notice List of ACTIONS supported by the `cook()`. + + // Bento and Token Operations + uint8 internal constant ACTION_MASTER_CONTRACT_APPROVAL = 0; + uint8 internal constant ACTION_SRC_DEPOSIT_TO_BENTOBOX = 1; + uint8 internal constant ACTION_SRC_TRANSFER_FROM_BENTOBOX = 2; + uint8 internal constant ACTION_DST_DEPOSIT_TO_BENTOBOX = 3; + uint8 internal constant ACTION_DST_WITHDRAW_TOKEN = 4; + uint8 internal constant ACTION_DST_WITHDRAW_OR_TRANSFER_FROM_BENTOBOX = 5; + uint8 internal constant ACTION_UNWRAP_AND_TRANSFER = 6; + + // Swap Operations + uint8 internal constant ACTION_LEGACY_SWAP = 7; + uint8 internal constant ACTION_TRIDENT_SWAP = 8; + uint8 internal constant ACTION_TRIDENT_COMPLEX_PATH_SWAP = 9; + + // Bridge Operations + uint8 internal constant ACTION_STARGATE_TELEPORT = 10; + + uint8 internal constant ACTION_SRC_TOKEN_TRANSFER = 11; + + /// @notice Executes a set of actions and allows composability (contract calls) to other contracts. + /// @param actions An array with a sequence of actions to execute (see ACTION_ declarations). + /// @param values A one-to-one mapped array to `actions`. Native token amount to send along action. + /// @param datas A one-to-one mapped array to `actions`. Contains abi encoded data of function arguments. + /// @dev The function gets invoked both at the src and dst chain. + function cook( + uint8[] memory actions, + uint256[] memory values, + bytes[] memory datas + ) public payable override { + uint256 actionLength = actions.length; + for (uint256 i; i < actionLength; i = _increment(i)) { + uint8 action = actions[i]; + // update for total amounts in contract? + if (action == ACTION_MASTER_CONTRACT_APPROVAL) { + ( + address user, + bool approved, + uint8 v, + bytes32 r, + bytes32 s + ) = abi.decode( + datas[i], + (address, bool, uint8, bytes32, bytes32) + ); + + bentoBox.setMasterContractApproval( + user, + address(this), + approved, + v, + r, + s + ); + } else if (action == ACTION_SRC_DEPOSIT_TO_BENTOBOX) { + (address token, address to, uint256 amount, uint256 share) = abi + .decode(datas[i], (address, address, uint256, uint256)); + _depositToBentoBox( + token, + msg.sender, + to, + amount, + share, + values[i] + ); + } else if (action == ACTION_SRC_TRANSFER_FROM_BENTOBOX) { + ( + address token, + address to, + uint256 amount, + uint256 share, + bool unwrapBento + ) = abi.decode( + datas[i], + (address, address, uint256, uint256, bool) + ); + _transferFromBentoBox( + token, + msg.sender, + to, + amount, + share, + unwrapBento + ); + } else if (action == ACTION_SRC_TOKEN_TRANSFER) { + (address token, address to, uint256 amount) = abi.decode( + datas[i], + (address, address, uint256) + ); + + _transferFromToken(IERC20(token), to, amount); + } else if (action == ACTION_DST_DEPOSIT_TO_BENTOBOX) { + (address token, address to, uint256 amount, uint256 share) = abi + .decode(datas[i], (address, address, uint256, uint256)); + + if (amount == 0) { + amount = IERC20(token).balanceOf(address(this)); + // Stargate Router doesn't support value? Should we update it anyway? + // values[i] = address(this).balance; + } + + _transferTokens(IERC20(token), address(bentoBox), amount); + + _depositToBentoBox( + token, + address(bentoBox), + to, + amount, + share, + values[i] + ); + } else if (action == ACTION_DST_WITHDRAW_TOKEN) { + (address token, address to, uint256 amount) = abi.decode( + datas[i], + (address, address, uint256) + ); + if (amount == 0) { + if (token != address(0)) { + amount = IERC20(token).balanceOf(address(this)); + } else { + amount = address(this).balance; + } + } + _transferTokens(IERC20(token), to, amount); + } else if ( + action == ACTION_DST_WITHDRAW_OR_TRANSFER_FROM_BENTOBOX + ) { + ( + address token, + address to, + uint256 amount, + uint256 share, + bool unwrapBento + ) = abi.decode( + datas[i], + (address, address, uint256, uint256, bool) + ); + if (amount == 0 && share == 0) { + share = bentoBox.balanceOf(token, address(this)); + } + _transferFromBentoBox( + token, + address(this), + to, + amount, + share, + unwrapBento + ); + } else if (action == ACTION_UNWRAP_AND_TRANSFER) { + (address token, address to) = abi.decode( + datas[i], + (address, address) + ); + + _unwrapTransfer(token, to); + } else if (action == ACTION_LEGACY_SWAP) { + ( + uint256 amountIn, + uint256 amountOutMin, + address[] memory path, + address to + ) = abi.decode( + datas[i], + (uint256, uint256, address[], address) + ); + bool sendTokens; + if (amountIn == 0) { + amountIn = IERC20(path[0]).balanceOf(address(this)); + sendTokens = true; + } + _swapExactTokensForTokens( + amountIn, + amountOutMin, + path, + to, + sendTokens + ); + } else if (action == ACTION_TRIDENT_SWAP) { + ExactInputParams memory params = abi.decode( + datas[i], + (ExactInputParams) + ); + + _exactInput(params); + } else if (action == ACTION_TRIDENT_COMPLEX_PATH_SWAP) { + ComplexPathParams memory params = abi.decode( + datas[i], + (ComplexPathParams) + ); + + _complexPath(params); + } else if (action == ACTION_STARGATE_TELEPORT) { + ( + StargateTeleportParams memory params, + uint8[] memory actionsDST, + uint256[] memory valuesDST, + bytes[] memory datasDST + ) = abi.decode( + datas[i], + (StargateTeleportParams, uint8[], uint256[], bytes[]) + ); + + _stargateTeleport(params, actionsDST, valuesDST, datasDST); + } + } + } + + /// @notice Allows the contract to receive Native tokens + receive() external payable {} +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/SushiXSwap.solgo.ast.json b/data/tests/contracts/sushixswap/SushiXSwap.solgo.ast.json new file mode 100644 index 00000000..5a5e802f --- /dev/null +++ b/data/tests/contracts/sushixswap/SushiXSwap.solgo.ast.json @@ -0,0 +1 @@ +{"id":263,"node_type":80,"entry_source_unit":6849,"root":[{"id":264,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":264,"name":"Address","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/Address.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/Address.sol","name":"Address","node_type":1,"nodes":[{"id":266,"node_type":10,"src":{"id":267,"line":4,"column":0,"start":101,"end":123,"length":23,"parent_index":264},"literals":["pragma","solidity","^","0",".","8",".","1",";"],"text":"pragma solidity ^0.8.1;"},{"id":268,"name":"Address","node_type":35,"src":{"id":0,"line":9,"column":0,"start":194,"end":8254,"length":8061,"parent_index":264},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":270,"name":"isContract","node_type":42,"kind":41,"src":{"id":271,"line":36,"column":4,"start":1175,"end":1494,"length":320,"parent_index":268},"body":{"id":284,"node_type":46,"kind":0,"src":{"id":285,"line":36,"column":70,"start":1241,"end":1494,"length":254,"parent_index":270},"implemented":true,"statements":[{"id":286,"node_type":47,"src":{"id":287,"line":41,"column":8,"start":1458,"end":1488,"length":31,"parent_index":270},"function_return_parameters":270,"expression":{"id":288,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":289,"line":41,"column":15,"start":1465,"end":1487,"length":23,"parent_index":284},"operator":7,"left_expression":{"id":290,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":291,"line":41,"column":15,"start":1465,"end":1483,"length":19,"parent_index":288},"expression":{"id":292,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":293,"line":41,"column":15,"start":1465,"end":1476,"length":12,"parent_index":290},"expression":{"id":294,"node_type":16,"src":{"id":295,"line":41,"column":15,"start":1465,"end":1471,"length":7,"parent_index":292},"name":"account","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":294,"is_pure":false},"member_name":"code","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"right_expression":{"id":296,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":297,"line":41,"column":37,"start":1487,"end":1487,"length":1,"parent_index":288},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":272,"node_type":43,"src":{"id":273,"line":36,"column":24,"start":1195,"end":1209,"length":15,"parent_index":270},"parameters":[{"id":274,"node_type":44,"src":{"id":275,"line":36,"column":24,"start":1195,"end":1209,"length":15,"parent_index":272},"scope":270,"name":"account","type_name":{"id":276,"node_type":30,"src":{"id":277,"line":36,"column":24,"start":1195,"end":1201,"length":7,"parent_index":274},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":278,"node_type":43,"src":{"id":279,"line":36,"column":64,"start":1235,"end":1238,"length":4,"parent_index":270},"parameters":[{"id":280,"node_type":44,"src":{"id":281,"line":36,"column":64,"start":1235,"end":1238,"length":4,"parent_index":278},"scope":270,"name":"","type_name":{"id":282,"node_type":30,"src":{"id":283,"line":36,"column":64,"start":1235,"end":1238,"length":4,"parent_index":280},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":268,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":299,"name":"sendValue","node_type":42,"kind":41,"src":{"id":300,"line":60,"column":4,"start":2412,"end":2723,"length":312,"parent_index":268},"body":{"id":312,"node_type":46,"kind":0,"src":{"id":313,"line":60,"column":75,"start":2483,"end":2723,"length":241,"parent_index":299},"implemented":true,"statements":[{"id":314,"node_type":24,"kind":24,"src":{"id":315,"line":61,"column":8,"start":2493,"end":2565,"length":73,"parent_index":312},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: insufficient balance\""}],"arguments":[{"id":318,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":319,"line":61,"column":16,"start":2501,"end":2531,"length":31,"parent_index":314},"operator":8,"left_expression":{"id":320,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":321,"line":61,"column":16,"start":2501,"end":2521,"length":21,"parent_index":318},"expression":{"id":322,"node_type":24,"kind":24,"src":{"id":323,"line":61,"column":16,"start":2501,"end":2513,"length":13,"parent_index":320},"argument_types":[{"type_identifier":"t_contract$_Address_$264","type_string":"contract Address"}],"arguments":[{"id":328,"node_type":16,"src":{"id":329,"line":61,"column":24,"start":2509,"end":2512,"length":4,"parent_index":322},"name":"this","type_description":{"type_identifier":"t_contract$_Address_$264","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":324,"node_type":16,"src":{"id":325,"line":61,"column":16,"start":2501,"end":2507,"length":7,"parent_index":322},"name":"address","type_name":{"id":326,"node_type":30,"src":{"id":327,"line":61,"column":16,"start":2501,"end":2507,"length":7,"parent_index":324},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"balance","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"right_expression":{"id":330,"node_type":16,"src":{"id":331,"line":61,"column":41,"start":2526,"end":2531,"length":6,"parent_index":318},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":330,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":332,"node_type":17,"kind":50,"value":"Address: insufficient balance","hex_value":"416464726573733a20696e73756666696369656e742062616c616e6365","src":{"id":333,"line":61,"column":49,"start":2534,"end":2564,"length":31,"parent_index":314},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: insufficient balance\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":316,"node_type":16,"src":{"id":317,"line":61,"column":8,"start":2493,"end":2499,"length":7,"parent_index":314},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":334,"node_type":44,"src":{"id":335,"line":63,"column":8,"start":2577,"end":2629,"length":53,"parent_index":312},"assignments":[],"declarations":[],"initial_value":{"id":336,"node_type":24,"kind":24,"src":{"id":337,"line":63,"column":27,"start":2596,"end":2628,"length":33,"parent_index":334},"argument_types":[{"type_identifier":"t_string_literal","type_string":"literal_string \"\""}],"arguments":[{"id":344,"node_type":17,"kind":50,"src":{"id":345,"line":63,"column":57,"start":2626,"end":2627,"length":2,"parent_index":336},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":338,"node_type":93,"kind":93,"src":{"id":339,"line":63,"column":27,"start":2596,"end":2624,"length":29,"parent_index":336},"expression":{"id":340,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":341,"line":63,"column":27,"start":2596,"end":2609,"length":14,"parent_index":338},"expression":{"id":342,"node_type":16,"src":{"id":343,"line":63,"column":27,"start":2596,"end":2604,"length":9,"parent_index":340},"name":"recipient","type_description":{"type_identifier":"t_address_payable","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":342,"is_pure":false},"member_name":"call","argument_types":[],"type_description":{"type_identifier":"t_address_payable","type_string":"address"}},"type_description":{"type_identifier":"t_address_payable","type_string":"address"}},"type_description":{"type_identifier":"t_function__t_string_literal$","type_string":"function(string memory)"}}},{"id":346,"node_type":24,"kind":24,"src":{"id":347,"line":64,"column":8,"start":2639,"end":2716,"length":78,"parent_index":312},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"arguments":[{"id":350,"node_type":16,"src":{"id":351,"line":64,"column":16,"start":2647,"end":2653,"length":7,"parent_index":346},"name":"success","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":352,"node_type":17,"kind":50,"value":"Address: unable to send value, recipient may have reverted","hex_value":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","src":{"id":353,"line":64,"column":25,"start":2656,"end":2715,"length":60,"parent_index":346},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: unable to send value, recipient may have reverted\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]}],"expression":{"id":348,"node_type":16,"src":{"id":349,"line":64,"column":8,"start":2639,"end":2645,"length":7,"parent_index":346},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_string_literal$","type_string":"function(function(),string memory)"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":301,"node_type":43,"src":{"id":302,"line":60,"column":23,"start":2431,"end":2471,"length":41,"parent_index":299},"parameters":[{"id":303,"node_type":44,"src":{"id":304,"line":60,"column":23,"start":2431,"end":2455,"length":25,"parent_index":301},"scope":299,"name":"recipient","type_name":{"id":305,"node_type":30,"src":{"id":306,"line":60,"column":23,"start":2431,"end":2445,"length":15,"parent_index":303},"name":"addresspayable","type_description":{"type_identifier":"t_address_payable","type_string":"address"},"state_mutability":3,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":3},{"id":307,"node_type":44,"src":{"id":308,"line":60,"column":50,"start":2458,"end":2471,"length":14,"parent_index":301},"scope":299,"name":"amount","type_name":{"id":309,"node_type":30,"src":{"id":310,"line":60,"column":50,"start":2458,"end":2464,"length":7,"parent_index":307},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address_payable","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":311,"node_type":43,"src":{"id":300,"line":60,"column":4,"start":2412,"end":2723,"length":312,"parent_index":299},"parameters":[],"parameter_types":[]},"scope":268,"type_description":{"type_identifier":"t_function_$_t_address_payable$_t_uint256$","type_string":"function(address,uint256)"}},{"id":355,"name":"functionCall","node_type":42,"kind":41,"src":{"id":356,"line":85,"column":4,"start":3466,"end":3638,"length":173,"parent_index":268},"body":{"id":373,"node_type":46,"kind":0,"src":{"id":374,"line":85,"column":93,"start":3555,"end":3638,"length":84,"parent_index":355},"implemented":true,"statements":[{"id":375,"node_type":47,"src":{"id":376,"line":86,"column":8,"start":3565,"end":3632,"length":68,"parent_index":355},"function_return_parameters":355,"expression":{"id":377,"node_type":24,"kind":24,"src":{"id":378,"line":86,"column":15,"start":3572,"end":3631,"length":60,"parent_index":373},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level call failed\""}],"arguments":[{"id":381,"node_type":16,"src":{"id":382,"line":86,"column":28,"start":3585,"end":3590,"length":6,"parent_index":377},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":381,"is_pure":false},{"id":383,"node_type":16,"src":{"id":384,"line":86,"column":36,"start":3593,"end":3596,"length":4,"parent_index":377},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":383,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":385,"node_type":17,"kind":50,"value":"Address: low-level call failed","hex_value":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","src":{"id":386,"line":86,"column":42,"start":3599,"end":3630,"length":32,"parent_index":377},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level call failed\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":379,"node_type":16,"src":{"id":380,"line":86,"column":15,"start":3572,"end":3583,"length":12,"parent_index":377},"name":"functionCall","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_string_literal$","type_string":"function(address,bytes,string memory)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":357,"node_type":43,"src":{"id":358,"line":85,"column":26,"start":3488,"end":3520,"length":33,"parent_index":355},"parameters":[{"id":359,"node_type":44,"src":{"id":360,"line":85,"column":26,"start":3488,"end":3501,"length":14,"parent_index":357},"scope":355,"name":"target","type_name":{"id":361,"node_type":30,"src":{"id":362,"line":85,"column":26,"start":3488,"end":3494,"length":7,"parent_index":359},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":363,"node_type":44,"src":{"id":364,"line":85,"column":42,"start":3504,"end":3520,"length":17,"parent_index":357},"scope":355,"name":"data","type_name":{"id":365,"node_type":30,"src":{"id":366,"line":85,"column":42,"start":3504,"end":3508,"length":5,"parent_index":363},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":367,"node_type":43,"src":{"id":368,"line":85,"column":79,"start":3541,"end":3552,"length":12,"parent_index":355},"parameters":[{"id":369,"node_type":44,"src":{"id":370,"line":85,"column":79,"start":3541,"end":3552,"length":12,"parent_index":367},"scope":355,"name":"","type_name":{"id":371,"node_type":30,"src":{"id":372,"line":85,"column":79,"start":3541,"end":3545,"length":5,"parent_index":369},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":268,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$","type_string":"function(address,bytes)"}},{"id":388,"name":"functionCall","node_type":42,"kind":41,"src":{"id":389,"line":95,"column":4,"start":3861,"end":4083,"length":223,"parent_index":268},"body":{"id":410,"node_type":46,"kind":0,"src":{"id":411,"line":99,"column":38,"start":4008,"end":4083,"length":76,"parent_index":388},"implemented":true,"statements":[{"id":412,"node_type":47,"src":{"id":413,"line":100,"column":8,"start":4018,"end":4077,"length":60,"parent_index":388},"function_return_parameters":388,"expression":{"id":414,"node_type":24,"kind":24,"src":{"id":415,"line":100,"column":15,"start":4025,"end":4076,"length":52,"parent_index":410},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":418,"node_type":16,"src":{"id":419,"line":100,"column":37,"start":4047,"end":4052,"length":6,"parent_index":414},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":418,"is_pure":false},{"id":420,"node_type":16,"src":{"id":421,"line":100,"column":45,"start":4055,"end":4058,"length":4,"parent_index":414},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":420,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":422,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":423,"line":100,"column":51,"start":4061,"end":4061,"length":1,"parent_index":414},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},{"id":424,"node_type":16,"src":{"id":425,"line":100,"column":54,"start":4064,"end":4075,"length":12,"parent_index":414},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":424,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]}],"expression":{"id":416,"node_type":16,"src":{"id":417,"line":100,"column":15,"start":4025,"end":4045,"length":21,"parent_index":414},"name":"functionCallWithValue","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_rational_0_by_1$_t_string$","type_string":"function(address,bytes,int_const 0,string)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":390,"node_type":43,"src":{"id":391,"line":96,"column":8,"start":3892,"end":3968,"length":77,"parent_index":388},"parameters":[{"id":392,"node_type":44,"src":{"id":393,"line":96,"column":8,"start":3892,"end":3905,"length":14,"parent_index":390},"scope":388,"name":"target","type_name":{"id":394,"node_type":30,"src":{"id":395,"line":96,"column":8,"start":3892,"end":3898,"length":7,"parent_index":392},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":396,"node_type":44,"src":{"id":397,"line":97,"column":8,"start":3916,"end":3932,"length":17,"parent_index":390},"scope":388,"name":"data","type_name":{"id":398,"node_type":30,"src":{"id":399,"line":97,"column":8,"start":3916,"end":3920,"length":5,"parent_index":396},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":400,"node_type":44,"src":{"id":401,"line":98,"column":8,"start":3943,"end":3968,"length":26,"parent_index":390},"scope":388,"name":"errorMessage","type_name":{"id":402,"node_type":30,"src":{"id":403,"line":98,"column":8,"start":3943,"end":3948,"length":6,"parent_index":400},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":404,"node_type":43,"src":{"id":405,"line":99,"column":24,"start":3994,"end":4005,"length":12,"parent_index":388},"parameters":[{"id":406,"node_type":44,"src":{"id":407,"line":99,"column":24,"start":3994,"end":4005,"length":12,"parent_index":404},"scope":388,"name":"","type_name":{"id":408,"node_type":30,"src":{"id":409,"line":99,"column":24,"start":3994,"end":3998,"length":5,"parent_index":406},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":268,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_string$","type_string":"function(address,bytes,string)"}},{"id":427,"name":"functionCallWithValue","node_type":42,"kind":41,"src":{"id":428,"line":114,"column":4,"start":4446,"end":4699,"length":254,"parent_index":268},"body":{"id":449,"node_type":46,"kind":0,"src":{"id":450,"line":118,"column":38,"start":4589,"end":4699,"length":111,"parent_index":427},"implemented":true,"statements":[{"id":451,"node_type":47,"src":{"id":452,"line":119,"column":8,"start":4599,"end":4693,"length":95,"parent_index":427},"function_return_parameters":427,"expression":{"id":453,"node_type":24,"kind":24,"src":{"id":454,"line":119,"column":15,"start":4606,"end":4692,"length":87,"parent_index":449},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level call with value failed\""}],"arguments":[{"id":457,"node_type":16,"src":{"id":458,"line":119,"column":37,"start":4628,"end":4633,"length":6,"parent_index":453},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":457,"is_pure":false},{"id":459,"node_type":16,"src":{"id":460,"line":119,"column":45,"start":4636,"end":4639,"length":4,"parent_index":453},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":459,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":461,"node_type":16,"src":{"id":462,"line":119,"column":51,"start":4642,"end":4646,"length":5,"parent_index":453},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":461,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},{"id":463,"node_type":17,"kind":50,"value":"Address: low-level call with value failed","hex_value":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","src":{"id":464,"line":119,"column":58,"start":4649,"end":4691,"length":43,"parent_index":453},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level call with value failed\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"}]}],"expression":{"id":455,"node_type":16,"src":{"id":456,"line":119,"column":15,"start":4606,"end":4626,"length":21,"parent_index":453},"name":"functionCallWithValue","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_uint256$_t_string_literal$","type_string":"function(address,bytes,uint256,string memory)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":429,"node_type":43,"src":{"id":430,"line":115,"column":8,"start":4486,"end":4549,"length":64,"parent_index":427},"parameters":[{"id":431,"node_type":44,"src":{"id":432,"line":115,"column":8,"start":4486,"end":4499,"length":14,"parent_index":429},"scope":427,"name":"target","type_name":{"id":433,"node_type":30,"src":{"id":434,"line":115,"column":8,"start":4486,"end":4492,"length":7,"parent_index":431},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":435,"node_type":44,"src":{"id":436,"line":116,"column":8,"start":4510,"end":4526,"length":17,"parent_index":429},"scope":427,"name":"data","type_name":{"id":437,"node_type":30,"src":{"id":438,"line":116,"column":8,"start":4510,"end":4514,"length":5,"parent_index":435},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":439,"node_type":44,"src":{"id":440,"line":117,"column":8,"start":4537,"end":4549,"length":13,"parent_index":429},"scope":427,"name":"value","type_name":{"id":441,"node_type":30,"src":{"id":442,"line":117,"column":8,"start":4537,"end":4543,"length":7,"parent_index":439},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":443,"node_type":43,"src":{"id":444,"line":118,"column":24,"start":4575,"end":4586,"length":12,"parent_index":427},"parameters":[{"id":445,"node_type":44,"src":{"id":446,"line":118,"column":24,"start":4575,"end":4586,"length":12,"parent_index":443},"scope":427,"name":"","type_name":{"id":447,"node_type":30,"src":{"id":448,"line":118,"column":24,"start":4575,"end":4579,"length":5,"parent_index":445},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":268,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_uint256$","type_string":"function(address,bytes,uint256)"}},{"id":466,"name":"functionCallWithValue","node_type":42,"kind":41,"src":{"id":467,"line":128,"column":4,"start":4948,"end":5446,"length":499,"parent_index":268},"body":{"id":492,"node_type":46,"kind":0,"src":{"id":493,"line":133,"column":38,"start":5127,"end":5446,"length":320,"parent_index":466},"implemented":true,"statements":[{"id":494,"node_type":24,"kind":24,"src":{"id":495,"line":134,"column":8,"start":5137,"end":5217,"length":81,"parent_index":492},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: insufficient balance for call\""}],"arguments":[{"id":498,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":499,"line":134,"column":16,"start":5145,"end":5174,"length":30,"parent_index":494},"operator":8,"left_expression":{"id":500,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":501,"line":134,"column":16,"start":5145,"end":5165,"length":21,"parent_index":498},"expression":{"id":502,"node_type":24,"kind":24,"src":{"id":503,"line":134,"column":16,"start":5145,"end":5157,"length":13,"parent_index":500},"argument_types":[{"type_identifier":"t_contract$_Address_$264","type_string":"contract Address"}],"arguments":[{"id":508,"node_type":16,"src":{"id":509,"line":134,"column":24,"start":5153,"end":5156,"length":4,"parent_index":502},"name":"this","type_description":{"type_identifier":"t_contract$_Address_$264","type_string":"contract Address"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":504,"node_type":16,"src":{"id":505,"line":134,"column":16,"start":5145,"end":5151,"length":7,"parent_index":502},"name":"address","type_name":{"id":506,"node_type":30,"src":{"id":507,"line":134,"column":16,"start":5145,"end":5151,"length":7,"parent_index":504},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"balance","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"right_expression":{"id":510,"node_type":16,"src":{"id":511,"line":134,"column":41,"start":5170,"end":5174,"length":5,"parent_index":498},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":510,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":512,"node_type":17,"kind":50,"value":"Address: insufficient balance for call","hex_value":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","src":{"id":513,"line":134,"column":48,"start":5177,"end":5216,"length":40,"parent_index":494},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: insufficient balance for call\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":496,"node_type":16,"src":{"id":497,"line":134,"column":8,"start":5137,"end":5143,"length":7,"parent_index":494},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":514,"node_type":24,"kind":24,"src":{"id":515,"line":135,"column":8,"start":5228,"end":5287,"length":60,"parent_index":492},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: call to non-contract\""}],"arguments":[{"id":518,"node_type":24,"kind":24,"src":{"id":519,"line":135,"column":16,"start":5236,"end":5253,"length":18,"parent_index":514},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":522,"node_type":16,"src":{"id":523,"line":135,"column":27,"start":5247,"end":5252,"length":6,"parent_index":518},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":522,"is_pure":false}],"expression":{"id":520,"node_type":16,"src":{"id":521,"line":135,"column":16,"start":5236,"end":5245,"length":10,"parent_index":518},"name":"isContract","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":524,"node_type":17,"kind":50,"value":"Address: call to non-contract","hex_value":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","src":{"id":525,"line":135,"column":36,"start":5256,"end":5286,"length":31,"parent_index":514},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: call to non-contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":516,"node_type":16,"src":{"id":517,"line":135,"column":8,"start":5228,"end":5234,"length":7,"parent_index":514},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_string_literal$","type_string":"function(function(address),string memory)"}},{"id":526,"node_type":44,"src":{"id":527,"line":137,"column":8,"start":5299,"end":5372,"length":74,"parent_index":492},"assignments":[],"declarations":[],"initial_value":{"id":528,"node_type":24,"kind":24,"src":{"id":529,"line":137,"column":50,"start":5341,"end":5371,"length":31,"parent_index":526},"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":536,"node_type":16,"src":{"id":537,"line":137,"column":76,"start":5367,"end":5370,"length":4,"parent_index":528},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":536,"is_pure":false}],"expression":{"id":530,"node_type":93,"kind":93,"src":{"id":531,"line":137,"column":50,"start":5341,"end":5365,"length":25,"parent_index":528},"expression":{"id":532,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":533,"line":137,"column":50,"start":5341,"end":5351,"length":11,"parent_index":530},"expression":{"id":534,"node_type":16,"src":{"id":535,"line":137,"column":50,"start":5341,"end":5346,"length":6,"parent_index":532},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":534,"is_pure":false},"member_name":"call","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}}},{"id":538,"node_type":47,"src":{"id":539,"line":138,"column":8,"start":5382,"end":5440,"length":59,"parent_index":466},"function_return_parameters":466,"expression":{"id":540,"node_type":24,"kind":24,"src":{"id":541,"line":138,"column":15,"start":5389,"end":5439,"length":51,"parent_index":492},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":544,"node_type":16,"src":{"id":545,"line":138,"column":32,"start":5406,"end":5412,"length":7,"parent_index":540},"name":"success","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":546,"node_type":16,"src":{"id":547,"line":138,"column":41,"start":5415,"end":5424,"length":10,"parent_index":540},"name":"returndata","type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]},{"id":548,"node_type":16,"src":{"id":549,"line":138,"column":53,"start":5427,"end":5438,"length":12,"parent_index":540},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":548,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}]}],"expression":{"id":542,"node_type":16,"src":{"id":543,"line":138,"column":15,"start":5389,"end":5404,"length":16,"parent_index":540},"name":"verifyCallResult","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_string$","type_string":"function(function(),function(function()),string)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":468,"node_type":43,"src":{"id":469,"line":129,"column":8,"start":4988,"end":5087,"length":100,"parent_index":466},"parameters":[{"id":470,"node_type":44,"src":{"id":471,"line":129,"column":8,"start":4988,"end":5001,"length":14,"parent_index":468},"scope":466,"name":"target","type_name":{"id":472,"node_type":30,"src":{"id":473,"line":129,"column":8,"start":4988,"end":4994,"length":7,"parent_index":470},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":474,"node_type":44,"src":{"id":475,"line":130,"column":8,"start":5012,"end":5028,"length":17,"parent_index":468},"scope":466,"name":"data","type_name":{"id":476,"node_type":30,"src":{"id":477,"line":130,"column":8,"start":5012,"end":5016,"length":5,"parent_index":474},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":478,"node_type":44,"src":{"id":479,"line":131,"column":8,"start":5039,"end":5051,"length":13,"parent_index":468},"scope":466,"name":"value","type_name":{"id":480,"node_type":30,"src":{"id":481,"line":131,"column":8,"start":5039,"end":5045,"length":7,"parent_index":478},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":482,"node_type":44,"src":{"id":483,"line":132,"column":8,"start":5062,"end":5087,"length":26,"parent_index":468},"scope":466,"name":"errorMessage","type_name":{"id":484,"node_type":30,"src":{"id":485,"line":132,"column":8,"start":5062,"end":5067,"length":6,"parent_index":482},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":486,"node_type":43,"src":{"id":487,"line":133,"column":24,"start":5113,"end":5124,"length":12,"parent_index":466},"parameters":[{"id":488,"node_type":44,"src":{"id":489,"line":133,"column":24,"start":5113,"end":5124,"length":12,"parent_index":486},"scope":466,"name":"","type_name":{"id":490,"node_type":30,"src":{"id":491,"line":133,"column":24,"start":5113,"end":5117,"length":5,"parent_index":488},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":268,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_uint256$_t_string$","type_string":"function(address,bytes,uint256,string)"}},{"id":551,"name":"functionStaticCall","node_type":42,"kind":41,"src":{"id":552,"line":147,"column":4,"start":5624,"end":5820,"length":197,"parent_index":268},"body":{"id":569,"node_type":46,"kind":0,"src":{"id":570,"line":147,"column":104,"start":5724,"end":5820,"length":97,"parent_index":551},"implemented":true,"statements":[{"id":571,"node_type":47,"src":{"id":572,"line":148,"column":8,"start":5734,"end":5814,"length":81,"parent_index":551},"function_return_parameters":551,"expression":{"id":573,"node_type":24,"kind":24,"src":{"id":574,"line":148,"column":15,"start":5741,"end":5813,"length":73,"parent_index":569},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level static call failed\""}],"arguments":[{"id":577,"node_type":16,"src":{"id":578,"line":148,"column":34,"start":5760,"end":5765,"length":6,"parent_index":573},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":577,"is_pure":false},{"id":579,"node_type":16,"src":{"id":580,"line":148,"column":42,"start":5768,"end":5771,"length":4,"parent_index":573},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":579,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":581,"node_type":17,"kind":50,"value":"Address: low-level static call failed","hex_value":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","src":{"id":582,"line":148,"column":48,"start":5774,"end":5812,"length":39,"parent_index":573},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level static call failed\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":575,"node_type":16,"src":{"id":576,"line":148,"column":15,"start":5741,"end":5758,"length":18,"parent_index":573},"name":"functionStaticCall","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_string_literal$","type_string":"function(address,bytes,string memory)"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":553,"node_type":43,"src":{"id":554,"line":147,"column":32,"start":5652,"end":5684,"length":33,"parent_index":551},"parameters":[{"id":555,"node_type":44,"src":{"id":556,"line":147,"column":32,"start":5652,"end":5665,"length":14,"parent_index":553},"scope":551,"name":"target","type_name":{"id":557,"node_type":30,"src":{"id":558,"line":147,"column":32,"start":5652,"end":5658,"length":7,"parent_index":555},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":559,"node_type":44,"src":{"id":560,"line":147,"column":48,"start":5668,"end":5684,"length":17,"parent_index":553},"scope":551,"name":"data","type_name":{"id":561,"node_type":30,"src":{"id":562,"line":147,"column":48,"start":5668,"end":5672,"length":5,"parent_index":559},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":563,"node_type":43,"src":{"id":564,"line":147,"column":90,"start":5710,"end":5721,"length":12,"parent_index":551},"parameters":[{"id":565,"node_type":44,"src":{"id":566,"line":147,"column":90,"start":5710,"end":5721,"length":12,"parent_index":563},"scope":551,"name":"","type_name":{"id":567,"node_type":30,"src":{"id":568,"line":147,"column":90,"start":5710,"end":5714,"length":5,"parent_index":565},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":268,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$","type_string":"function(address,bytes)"}},{"id":584,"name":"functionStaticCall","node_type":42,"kind":41,"src":{"id":585,"line":157,"column":4,"start":6005,"end":6390,"length":386,"parent_index":268},"body":{"id":606,"node_type":46,"kind":0,"src":{"id":607,"line":161,"column":43,"start":6163,"end":6390,"length":228,"parent_index":584},"implemented":true,"statements":[{"id":608,"node_type":24,"kind":24,"src":{"id":609,"line":162,"column":8,"start":6173,"end":6239,"length":67,"parent_index":606},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: static call to non-contract\""}],"arguments":[{"id":612,"node_type":24,"kind":24,"src":{"id":613,"line":162,"column":16,"start":6181,"end":6198,"length":18,"parent_index":608},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":616,"node_type":16,"src":{"id":617,"line":162,"column":27,"start":6192,"end":6197,"length":6,"parent_index":612},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":616,"is_pure":false}],"expression":{"id":614,"node_type":16,"src":{"id":615,"line":162,"column":16,"start":6181,"end":6190,"length":10,"parent_index":612},"name":"isContract","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":618,"node_type":17,"kind":50,"value":"Address: static call to non-contract","hex_value":"416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374","src":{"id":619,"line":162,"column":36,"start":6201,"end":6238,"length":38,"parent_index":608},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: static call to non-contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":610,"node_type":16,"src":{"id":611,"line":162,"column":8,"start":6173,"end":6179,"length":7,"parent_index":608},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_string_literal$","type_string":"function(function(address),string memory)"}},{"id":620,"node_type":44,"src":{"id":621,"line":164,"column":8,"start":6251,"end":6316,"length":66,"parent_index":606},"assignments":[],"declarations":[],"initial_value":{"id":622,"node_type":24,"kind":24,"src":{"id":623,"line":164,"column":50,"start":6293,"end":6315,"length":23,"parent_index":620},"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":628,"node_type":16,"src":{"id":629,"line":164,"column":68,"start":6311,"end":6314,"length":4,"parent_index":622},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":628,"is_pure":false}],"expression":{"id":624,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":625,"line":164,"column":50,"start":6293,"end":6309,"length":17,"parent_index":622},"expression":{"id":626,"node_type":16,"src":{"id":627,"line":164,"column":50,"start":6293,"end":6298,"length":6,"parent_index":624},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":626,"is_pure":false},"member_name":"staticcall","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}}},{"id":630,"node_type":47,"src":{"id":631,"line":165,"column":8,"start":6326,"end":6384,"length":59,"parent_index":584},"function_return_parameters":584,"expression":{"id":632,"node_type":24,"kind":24,"src":{"id":633,"line":165,"column":15,"start":6333,"end":6383,"length":51,"parent_index":606},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":636,"node_type":16,"src":{"id":637,"line":165,"column":32,"start":6350,"end":6356,"length":7,"parent_index":632},"name":"success","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":638,"node_type":16,"src":{"id":639,"line":165,"column":41,"start":6359,"end":6368,"length":10,"parent_index":632},"name":"returndata","type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]},{"id":640,"node_type":16,"src":{"id":641,"line":165,"column":53,"start":6371,"end":6382,"length":12,"parent_index":632},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":640,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}]}],"expression":{"id":634,"node_type":16,"src":{"id":635,"line":165,"column":15,"start":6333,"end":6348,"length":16,"parent_index":632},"name":"verifyCallResult","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_string$","type_string":"function(function(),function(function()),string)"}}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":586,"node_type":43,"src":{"id":587,"line":158,"column":8,"start":6042,"end":6118,"length":77,"parent_index":584},"parameters":[{"id":588,"node_type":44,"src":{"id":589,"line":158,"column":8,"start":6042,"end":6055,"length":14,"parent_index":586},"scope":584,"name":"target","type_name":{"id":590,"node_type":30,"src":{"id":591,"line":158,"column":8,"start":6042,"end":6048,"length":7,"parent_index":588},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":592,"node_type":44,"src":{"id":593,"line":159,"column":8,"start":6066,"end":6082,"length":17,"parent_index":586},"scope":584,"name":"data","type_name":{"id":594,"node_type":30,"src":{"id":595,"line":159,"column":8,"start":6066,"end":6070,"length":5,"parent_index":592},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":596,"node_type":44,"src":{"id":597,"line":160,"column":8,"start":6093,"end":6118,"length":26,"parent_index":586},"scope":584,"name":"errorMessage","type_name":{"id":598,"node_type":30,"src":{"id":599,"line":160,"column":8,"start":6093,"end":6098,"length":6,"parent_index":596},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":600,"node_type":43,"src":{"id":601,"line":161,"column":29,"start":6149,"end":6160,"length":12,"parent_index":584},"parameters":[{"id":602,"node_type":44,"src":{"id":603,"line":161,"column":29,"start":6149,"end":6160,"length":12,"parent_index":600},"scope":584,"name":"","type_name":{"id":604,"node_type":30,"src":{"id":605,"line":161,"column":29,"start":6149,"end":6153,"length":5,"parent_index":602},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":268,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_string$","type_string":"function(address,bytes,string)"}},{"id":643,"name":"functionDelegateCall","node_type":42,"kind":41,"src":{"id":644,"line":174,"column":4,"start":6570,"end":6767,"length":198,"parent_index":268},"body":{"id":661,"node_type":46,"kind":0,"src":{"id":662,"line":174,"column":101,"start":6667,"end":6767,"length":101,"parent_index":643},"implemented":true,"statements":[{"id":663,"node_type":47,"src":{"id":664,"line":175,"column":8,"start":6677,"end":6761,"length":85,"parent_index":643},"function_return_parameters":643,"expression":{"id":665,"node_type":24,"kind":24,"src":{"id":666,"line":175,"column":15,"start":6684,"end":6760,"length":77,"parent_index":661},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level delegate call failed\""}],"arguments":[{"id":669,"node_type":16,"src":{"id":670,"line":175,"column":36,"start":6705,"end":6710,"length":6,"parent_index":665},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":669,"is_pure":false},{"id":671,"node_type":16,"src":{"id":672,"line":175,"column":44,"start":6713,"end":6716,"length":4,"parent_index":665},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":671,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":673,"node_type":17,"kind":50,"value":"Address: low-level delegate call failed","hex_value":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","src":{"id":674,"line":175,"column":50,"start":6719,"end":6759,"length":41,"parent_index":665},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: low-level delegate call failed\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":667,"node_type":16,"src":{"id":668,"line":175,"column":15,"start":6684,"end":6703,"length":20,"parent_index":665},"name":"functionDelegateCall","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_string_literal$","type_string":"function(address,bytes,string memory)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":645,"node_type":43,"src":{"id":646,"line":174,"column":34,"start":6600,"end":6632,"length":33,"parent_index":643},"parameters":[{"id":647,"node_type":44,"src":{"id":648,"line":174,"column":34,"start":6600,"end":6613,"length":14,"parent_index":645},"scope":643,"name":"target","type_name":{"id":649,"node_type":30,"src":{"id":650,"line":174,"column":34,"start":6600,"end":6606,"length":7,"parent_index":647},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":651,"node_type":44,"src":{"id":652,"line":174,"column":50,"start":6616,"end":6632,"length":17,"parent_index":645},"scope":643,"name":"data","type_name":{"id":653,"node_type":30,"src":{"id":654,"line":174,"column":50,"start":6616,"end":6620,"length":5,"parent_index":651},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":655,"node_type":43,"src":{"id":656,"line":174,"column":87,"start":6653,"end":6664,"length":12,"parent_index":643},"parameters":[{"id":657,"node_type":44,"src":{"id":658,"line":174,"column":87,"start":6653,"end":6664,"length":12,"parent_index":655},"scope":643,"name":"","type_name":{"id":659,"node_type":30,"src":{"id":660,"line":174,"column":87,"start":6653,"end":6657,"length":5,"parent_index":657},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":268,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$","type_string":"function(address,bytes)"}},{"id":676,"name":"functionDelegateCall","node_type":42,"kind":41,"src":{"id":677,"line":184,"column":4,"start":6954,"end":7340,"length":387,"parent_index":268},"body":{"id":698,"node_type":46,"kind":0,"src":{"id":699,"line":188,"column":38,"start":7109,"end":7340,"length":232,"parent_index":676},"implemented":true,"statements":[{"id":700,"node_type":24,"kind":24,"src":{"id":701,"line":189,"column":8,"start":7119,"end":7187,"length":69,"parent_index":698},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: delegate call to non-contract\""}],"arguments":[{"id":704,"node_type":24,"kind":24,"src":{"id":705,"line":189,"column":16,"start":7127,"end":7144,"length":18,"parent_index":700},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":708,"node_type":16,"src":{"id":709,"line":189,"column":27,"start":7138,"end":7143,"length":6,"parent_index":704},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":708,"is_pure":false}],"expression":{"id":706,"node_type":16,"src":{"id":707,"line":189,"column":16,"start":7127,"end":7136,"length":10,"parent_index":704},"name":"isContract","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":710,"node_type":17,"kind":50,"value":"Address: delegate call to non-contract","hex_value":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374","src":{"id":711,"line":189,"column":36,"start":7147,"end":7186,"length":40,"parent_index":700},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"Address: delegate call to non-contract\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":702,"node_type":16,"src":{"id":703,"line":189,"column":8,"start":7119,"end":7125,"length":7,"parent_index":700},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_string_literal$","type_string":"function(function(address),string memory)"}},{"id":712,"node_type":44,"src":{"id":713,"line":191,"column":8,"start":7199,"end":7266,"length":68,"parent_index":698},"assignments":[],"declarations":[],"initial_value":{"id":714,"node_type":24,"kind":24,"src":{"id":715,"line":191,"column":50,"start":7241,"end":7265,"length":25,"parent_index":712},"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":720,"node_type":16,"src":{"id":721,"line":191,"column":70,"start":7261,"end":7264,"length":4,"parent_index":714},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":720,"is_pure":false}],"expression":{"id":716,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":717,"line":191,"column":50,"start":7241,"end":7259,"length":19,"parent_index":714},"expression":{"id":718,"node_type":16,"src":{"id":719,"line":191,"column":50,"start":7241,"end":7246,"length":6,"parent_index":716},"name":"target","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":718,"is_pure":false},"member_name":"delegatecall","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}}},{"id":722,"node_type":47,"src":{"id":723,"line":192,"column":8,"start":7276,"end":7334,"length":59,"parent_index":676},"function_return_parameters":676,"expression":{"id":724,"node_type":24,"kind":24,"src":{"id":725,"line":192,"column":15,"start":7283,"end":7333,"length":51,"parent_index":698},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},{"type_identifier":"t_string","type_string":"string"}],"arguments":[{"id":728,"node_type":16,"src":{"id":729,"line":192,"column":32,"start":7300,"end":7306,"length":7,"parent_index":724},"name":"success","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":730,"node_type":16,"src":{"id":731,"line":192,"column":41,"start":7309,"end":7318,"length":10,"parent_index":724},"name":"returndata","type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]},{"id":732,"node_type":16,"src":{"id":733,"line":192,"column":53,"start":7321,"end":7332,"length":12,"parent_index":724},"name":"errorMessage","type_description":{"type_identifier":"t_string","type_string":"string"},"overloaded_declarations":[],"referenced_declaration":732,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}]}],"expression":{"id":726,"node_type":16,"src":{"id":727,"line":192,"column":15,"start":7283,"end":7298,"length":16,"parent_index":724},"name":"verifyCallResult","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_string$","type_string":"function(function(),function(function()),string)"}}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":678,"node_type":43,"src":{"id":679,"line":185,"column":8,"start":6993,"end":7069,"length":77,"parent_index":676},"parameters":[{"id":680,"node_type":44,"src":{"id":681,"line":185,"column":8,"start":6993,"end":7006,"length":14,"parent_index":678},"scope":676,"name":"target","type_name":{"id":682,"node_type":30,"src":{"id":683,"line":185,"column":8,"start":6993,"end":6999,"length":7,"parent_index":680},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":684,"node_type":44,"src":{"id":685,"line":186,"column":8,"start":7017,"end":7033,"length":17,"parent_index":678},"scope":676,"name":"data","type_name":{"id":686,"node_type":30,"src":{"id":687,"line":186,"column":8,"start":7017,"end":7021,"length":5,"parent_index":684},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":688,"node_type":44,"src":{"id":689,"line":187,"column":8,"start":7044,"end":7069,"length":26,"parent_index":678},"scope":676,"name":"errorMessage","type_name":{"id":690,"node_type":30,"src":{"id":691,"line":187,"column":8,"start":7044,"end":7049,"length":6,"parent_index":688},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":692,"node_type":43,"src":{"id":693,"line":188,"column":24,"start":7095,"end":7106,"length":12,"parent_index":676},"parameters":[{"id":694,"node_type":44,"src":{"id":695,"line":188,"column":24,"start":7095,"end":7106,"length":12,"parent_index":692},"scope":676,"name":"","type_name":{"id":696,"node_type":30,"src":{"id":697,"line":188,"column":24,"start":7095,"end":7099,"length":5,"parent_index":694},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":268,"type_description":{"type_identifier":"t_function_$_t_address$_t_bytes$_t_string$","type_string":"function(address,bytes,string)"}},{"id":735,"name":"verifyCallResult","node_type":42,"kind":41,"src":{"id":736,"line":201,"column":4,"start":7561,"end":8252,"length":692,"parent_index":268},"body":{"id":757,"node_type":46,"kind":0,"src":{"id":758,"line":205,"column":43,"start":7721,"end":8252,"length":532,"parent_index":735},"implemented":true,"statements":[{"id":759,"node_type":48,"src":{"id":760,"line":206,"column":0,"start":7731,"end":8246,"length":516,"parent_index":757},"condition":{"id":761,"node_type":16,"src":{"id":762,"line":206,"column":12,"start":7735,"end":7741,"length":7,"parent_index":759},"name":"success","type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":761,"is_pure":false},"body":{"id":763,"node_type":46,"kind":0,"src":{"id":764,"line":206,"column":21,"start":7744,"end":7785,"length":42,"parent_index":735},"implemented":true,"statements":[{"id":765,"node_type":47,"src":{"id":766,"line":207,"column":12,"start":7758,"end":7775,"length":18,"parent_index":735},"function_return_parameters":735,"expression":{"id":767,"node_type":16,"src":{"id":768,"line":207,"column":19,"start":7765,"end":7774,"length":10,"parent_index":763},"name":"returndata","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":767,"is_pure":false}}]}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":737,"node_type":43,"src":{"id":738,"line":202,"column":8,"start":7596,"end":7676,"length":81,"parent_index":735},"parameters":[{"id":739,"node_type":44,"src":{"id":740,"line":202,"column":8,"start":7596,"end":7607,"length":12,"parent_index":737},"scope":735,"name":"success","type_name":{"id":741,"node_type":30,"src":{"id":742,"line":202,"column":8,"start":7596,"end":7599,"length":4,"parent_index":739},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":743,"node_type":44,"src":{"id":744,"line":203,"column":8,"start":7618,"end":7640,"length":23,"parent_index":737},"scope":735,"name":"returndata","type_name":{"id":745,"node_type":30,"src":{"id":746,"line":203,"column":8,"start":7618,"end":7622,"length":5,"parent_index":743},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":747,"node_type":44,"src":{"id":748,"line":204,"column":8,"start":7651,"end":7676,"length":26,"parent_index":737},"scope":735,"name":"errorMessage","type_name":{"id":749,"node_type":30,"src":{"id":750,"line":204,"column":8,"start":7651,"end":7656,"length":6,"parent_index":747},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":751,"node_type":43,"src":{"id":752,"line":205,"column":29,"start":7707,"end":7718,"length":12,"parent_index":735},"parameters":[{"id":753,"node_type":44,"src":{"id":754,"line":205,"column":29,"start":7707,"end":7718,"length":12,"parent_index":751},"scope":735,"name":"","type_name":{"id":755,"node_type":30,"src":{"id":756,"line":205,"column":29,"start":7707,"end":7711,"length":5,"parent_index":753},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"scope":268,"type_description":{"type_identifier":"t_function_$_t_bool$_t_bytes$_t_string$","type_string":"function(bool,bytes,string)"}}],"linearized_base_contracts":[268],"base_contracts":[],"contract_dependencies":[],"scope":264}],"src":{"id":265,"line":9,"column":0,"start":194,"end":8254,"length":8061,"parent_index":263}},{"id":769,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":769,"name":"IBentoBoxMinimal","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IBentoBoxMinimal.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IBentoBoxMinimal.sol","name":"IBentoBoxMinimal","node_type":1,"nodes":[{"id":773,"node_type":10,"src":{"id":774,"line":227,"column":0,"start":8304,"end":8326,"length":23,"parent_index":769},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":811,"name":"IBentoBoxMinimal","node_type":35,"src":{"id":0,"line":231,"column":0,"start":8446,"end":11502,"length":3057,"parent_index":769},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":813,"name":"balanceOf","node_type":42,"kind":41,"src":{"id":814,"line":233,"column":4,"start":8543,"end":8611,"length":69,"parent_index":811},"body":{"id":831,"node_type":46,"kind":0,"src":{"id":814,"line":233,"column":4,"start":8543,"end":8611,"length":69,"parent_index":813},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":815,"node_type":43,"src":{"id":816,"line":233,"column":23,"start":8562,"end":8577,"length":16,"parent_index":813},"parameters":[{"id":817,"node_type":44,"src":{"id":818,"line":233,"column":23,"start":8562,"end":8568,"length":7,"parent_index":815},"scope":813,"name":"","type_name":{"id":819,"node_type":30,"src":{"id":820,"line":233,"column":23,"start":8562,"end":8568,"length":7,"parent_index":817},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":821,"node_type":44,"src":{"id":822,"line":233,"column":32,"start":8571,"end":8577,"length":7,"parent_index":815},"scope":813,"name":"","type_name":{"id":823,"node_type":30,"src":{"id":824,"line":233,"column":32,"start":8571,"end":8577,"length":7,"parent_index":821},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":825,"node_type":43,"src":{"id":826,"line":233,"column":64,"start":8603,"end":8609,"length":7,"parent_index":813},"parameters":[{"id":827,"node_type":44,"src":{"id":828,"line":233,"column":64,"start":8603,"end":8609,"length":7,"parent_index":825},"scope":813,"name":"","type_name":{"id":829,"node_type":30,"src":{"id":830,"line":233,"column":64,"start":8603,"end":8609,"length":7,"parent_index":827},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":811,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$","type_string":"function(address,address)"}},{"id":833,"name":"toShare","node_type":42,"kind":41,"src":{"id":834,"line":240,"column":4,"start":8904,"end":9033,"length":130,"parent_index":811},"body":{"id":855,"node_type":46,"kind":0,"src":{"id":834,"line":240,"column":4,"start":8904,"end":9033,"length":130,"parent_index":833},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":835,"node_type":43,"src":{"id":836,"line":241,"column":8,"start":8930,"end":8988,"length":59,"parent_index":833},"parameters":[{"id":837,"node_type":44,"src":{"id":838,"line":241,"column":8,"start":8930,"end":8942,"length":13,"parent_index":835},"scope":833,"name":"token","type_name":{"id":839,"node_type":30,"src":{"id":840,"line":241,"column":8,"start":8930,"end":8936,"length":7,"parent_index":837},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":841,"node_type":44,"src":{"id":842,"line":242,"column":8,"start":8953,"end":8966,"length":14,"parent_index":835},"scope":833,"name":"amount","type_name":{"id":843,"node_type":30,"src":{"id":844,"line":242,"column":8,"start":8953,"end":8959,"length":7,"parent_index":841},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":845,"node_type":44,"src":{"id":846,"line":243,"column":8,"start":8977,"end":8988,"length":12,"parent_index":835},"scope":833,"name":"roundUp","type_name":{"id":847,"node_type":30,"src":{"id":848,"line":243,"column":8,"start":8977,"end":8980,"length":4,"parent_index":845},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_bool","type_string":"bool"}]},"return_parameters":{"id":849,"node_type":43,"src":{"id":850,"line":244,"column":29,"start":9019,"end":9031,"length":13,"parent_index":833},"parameters":[{"id":851,"node_type":44,"src":{"id":852,"line":244,"column":29,"start":9019,"end":9031,"length":13,"parent_index":849},"scope":833,"name":"share","type_name":{"id":853,"node_type":30,"src":{"id":854,"line":244,"column":29,"start":9019,"end":9025,"length":7,"parent_index":851},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":811,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$_t_bool$","type_string":"function(address,uint256,bool)"}},{"id":857,"name":"toAmount","node_type":42,"kind":41,"src":{"id":858,"line":251,"column":4,"start":9333,"end":9463,"length":131,"parent_index":811},"body":{"id":879,"node_type":46,"kind":0,"src":{"id":858,"line":251,"column":4,"start":9333,"end":9463,"length":131,"parent_index":857},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":859,"node_type":43,"src":{"id":860,"line":252,"column":8,"start":9360,"end":9417,"length":58,"parent_index":857},"parameters":[{"id":861,"node_type":44,"src":{"id":862,"line":252,"column":8,"start":9360,"end":9372,"length":13,"parent_index":859},"scope":857,"name":"token","type_name":{"id":863,"node_type":30,"src":{"id":864,"line":252,"column":8,"start":9360,"end":9366,"length":7,"parent_index":861},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":865,"node_type":44,"src":{"id":866,"line":253,"column":8,"start":9383,"end":9395,"length":13,"parent_index":859},"scope":857,"name":"share","type_name":{"id":867,"node_type":30,"src":{"id":868,"line":253,"column":8,"start":9383,"end":9389,"length":7,"parent_index":865},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":869,"node_type":44,"src":{"id":870,"line":254,"column":8,"start":9406,"end":9417,"length":12,"parent_index":859},"scope":857,"name":"roundUp","type_name":{"id":871,"node_type":30,"src":{"id":872,"line":254,"column":8,"start":9406,"end":9409,"length":4,"parent_index":869},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_bool","type_string":"bool"}]},"return_parameters":{"id":873,"node_type":43,"src":{"id":874,"line":255,"column":29,"start":9448,"end":9461,"length":14,"parent_index":857},"parameters":[{"id":875,"node_type":44,"src":{"id":876,"line":255,"column":29,"start":9448,"end":9461,"length":14,"parent_index":873},"scope":857,"name":"amount","type_name":{"id":877,"node_type":30,"src":{"id":878,"line":255,"column":29,"start":9448,"end":9454,"length":7,"parent_index":875},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":811,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$_t_bool$","type_string":"function(address,uint256,bool)"}},{"id":881,"name":"registerProtocol","node_type":42,"kind":41,"src":{"id":882,"line":258,"column":4,"start":9553,"end":9589,"length":37,"parent_index":811},"body":{"id":885,"node_type":46,"kind":0,"src":{"id":882,"line":258,"column":4,"start":9553,"end":9589,"length":37,"parent_index":881},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":883,"node_type":43,"src":{"id":882,"line":258,"column":4,"start":9553,"end":9589,"length":37,"parent_index":881},"parameters":[],"parameter_types":[]},"return_parameters":{"id":884,"node_type":43,"src":{"id":882,"line":258,"column":4,"start":9553,"end":9589,"length":37,"parent_index":881},"parameters":[],"parameter_types":[]},"scope":811,"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},{"id":887,"name":"deposit","node_type":42,"kind":41,"src":{"id":888,"line":268,"column":4,"start":10130,"end":10328,"length":199,"parent_index":811},"body":{"id":921,"node_type":46,"kind":0,"src":{"id":888,"line":268,"column":4,"start":10130,"end":10328,"length":199,"parent_index":887},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":3,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":889,"node_type":43,"src":{"id":890,"line":269,"column":8,"start":10156,"end":10258,"length":103,"parent_index":887},"parameters":[{"id":891,"node_type":44,"src":{"id":892,"line":269,"column":8,"start":10156,"end":10169,"length":14,"parent_index":889},"scope":887,"name":"token_","type_name":{"id":893,"node_type":30,"src":{"id":894,"line":269,"column":8,"start":10156,"end":10162,"length":7,"parent_index":891},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":895,"node_type":44,"src":{"id":896,"line":270,"column":8,"start":10180,"end":10191,"length":12,"parent_index":889},"scope":887,"name":"from","type_name":{"id":897,"node_type":30,"src":{"id":898,"line":270,"column":8,"start":10180,"end":10186,"length":7,"parent_index":895},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":899,"node_type":44,"src":{"id":900,"line":271,"column":8,"start":10202,"end":10211,"length":10,"parent_index":889},"scope":887,"name":"to","type_name":{"id":901,"node_type":30,"src":{"id":902,"line":271,"column":8,"start":10202,"end":10208,"length":7,"parent_index":899},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":903,"node_type":44,"src":{"id":904,"line":272,"column":8,"start":10222,"end":10235,"length":14,"parent_index":889},"scope":887,"name":"amount","type_name":{"id":905,"node_type":30,"src":{"id":906,"line":272,"column":8,"start":10222,"end":10228,"length":7,"parent_index":903},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":907,"node_type":44,"src":{"id":908,"line":273,"column":8,"start":10246,"end":10258,"length":13,"parent_index":889},"scope":887,"name":"share","type_name":{"id":909,"node_type":30,"src":{"id":910,"line":273,"column":8,"start":10246,"end":10252,"length":7,"parent_index":907},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":911,"node_type":43,"src":{"id":912,"line":274,"column":32,"start":10292,"end":10326,"length":35,"parent_index":887},"parameters":[{"id":913,"node_type":44,"src":{"id":914,"line":274,"column":32,"start":10292,"end":10308,"length":17,"parent_index":911},"scope":887,"name":"amountOut","type_name":{"id":915,"node_type":30,"src":{"id":916,"line":274,"column":32,"start":10292,"end":10298,"length":7,"parent_index":913},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":917,"node_type":44,"src":{"id":918,"line":274,"column":51,"start":10311,"end":10326,"length":16,"parent_index":911},"scope":887,"name":"shareOut","type_name":{"id":919,"node_type":30,"src":{"id":920,"line":274,"column":51,"start":10311,"end":10317,"length":7,"parent_index":917},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":811,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$","type_string":"function(address,address,address,uint256,uint256)"}},{"id":923,"name":"withdraw","node_type":42,"kind":41,"src":{"id":924,"line":282,"column":4,"start":10721,"end":10912,"length":192,"parent_index":811},"body":{"id":957,"node_type":46,"kind":0,"src":{"id":924,"line":282,"column":4,"start":10721,"end":10912,"length":192,"parent_index":923},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":925,"node_type":43,"src":{"id":926,"line":283,"column":8,"start":10748,"end":10850,"length":103,"parent_index":923},"parameters":[{"id":927,"node_type":44,"src":{"id":928,"line":283,"column":8,"start":10748,"end":10761,"length":14,"parent_index":925},"scope":923,"name":"token_","type_name":{"id":929,"node_type":30,"src":{"id":930,"line":283,"column":8,"start":10748,"end":10754,"length":7,"parent_index":927},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":931,"node_type":44,"src":{"id":932,"line":284,"column":8,"start":10772,"end":10783,"length":12,"parent_index":925},"scope":923,"name":"from","type_name":{"id":933,"node_type":30,"src":{"id":934,"line":284,"column":8,"start":10772,"end":10778,"length":7,"parent_index":931},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":935,"node_type":44,"src":{"id":936,"line":285,"column":8,"start":10794,"end":10803,"length":10,"parent_index":925},"scope":923,"name":"to","type_name":{"id":937,"node_type":30,"src":{"id":938,"line":285,"column":8,"start":10794,"end":10800,"length":7,"parent_index":935},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":939,"node_type":44,"src":{"id":940,"line":286,"column":8,"start":10814,"end":10827,"length":14,"parent_index":925},"scope":923,"name":"amount","type_name":{"id":941,"node_type":30,"src":{"id":942,"line":286,"column":8,"start":10814,"end":10820,"length":7,"parent_index":939},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":943,"node_type":44,"src":{"id":944,"line":287,"column":8,"start":10838,"end":10850,"length":13,"parent_index":925},"scope":923,"name":"share","type_name":{"id":945,"node_type":30,"src":{"id":946,"line":287,"column":8,"start":10838,"end":10844,"length":7,"parent_index":943},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":947,"node_type":43,"src":{"id":948,"line":288,"column":24,"start":10876,"end":10910,"length":35,"parent_index":923},"parameters":[{"id":949,"node_type":44,"src":{"id":950,"line":288,"column":24,"start":10876,"end":10892,"length":17,"parent_index":947},"scope":923,"name":"amountOut","type_name":{"id":951,"node_type":30,"src":{"id":952,"line":288,"column":24,"start":10876,"end":10882,"length":7,"parent_index":949},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":953,"node_type":44,"src":{"id":954,"line":288,"column":43,"start":10895,"end":10910,"length":16,"parent_index":947},"scope":923,"name":"shareOut","type_name":{"id":955,"node_type":30,"src":{"id":956,"line":288,"column":43,"start":10895,"end":10901,"length":7,"parent_index":953},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":811,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$","type_string":"function(address,address,address,uint256,uint256)"}},{"id":959,"name":"transfer","node_type":42,"kind":41,"src":{"id":960,"line":295,"column":4,"start":11192,"end":11312,"length":121,"parent_index":811},"body":{"id":980,"node_type":46,"kind":0,"src":{"id":960,"line":295,"column":4,"start":11192,"end":11312,"length":121,"parent_index":959},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":961,"node_type":43,"src":{"id":962,"line":296,"column":8,"start":11219,"end":11296,"length":78,"parent_index":959},"parameters":[{"id":963,"node_type":44,"src":{"id":964,"line":296,"column":8,"start":11219,"end":11231,"length":13,"parent_index":961},"scope":959,"name":"token","type_name":{"id":965,"node_type":30,"src":{"id":966,"line":296,"column":8,"start":11219,"end":11225,"length":7,"parent_index":963},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":967,"node_type":44,"src":{"id":968,"line":297,"column":8,"start":11242,"end":11253,"length":12,"parent_index":961},"scope":959,"name":"from","type_name":{"id":969,"node_type":30,"src":{"id":970,"line":297,"column":8,"start":11242,"end":11248,"length":7,"parent_index":967},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":971,"node_type":44,"src":{"id":972,"line":298,"column":8,"start":11264,"end":11273,"length":10,"parent_index":961},"scope":959,"name":"to","type_name":{"id":973,"node_type":30,"src":{"id":974,"line":298,"column":8,"start":11264,"end":11270,"length":7,"parent_index":971},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":975,"node_type":44,"src":{"id":976,"line":299,"column":8,"start":11284,"end":11296,"length":13,"parent_index":961},"scope":959,"name":"share","type_name":{"id":977,"node_type":30,"src":{"id":978,"line":299,"column":8,"start":11284,"end":11290,"length":7,"parent_index":975},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":979,"node_type":43,"src":{"id":960,"line":295,"column":4,"start":11192,"end":11312,"length":121,"parent_index":959},"parameters":[],"parameter_types":[]},"scope":811,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,address,uint256)"}},{"id":982,"name":"setMasterContractApproval","node_type":42,"kind":41,"src":{"id":983,"line":302,"column":4,"start":11319,"end":11500,"length":182,"parent_index":811},"body":{"id":1011,"node_type":46,"kind":0,"src":{"id":983,"line":302,"column":4,"start":11319,"end":11500,"length":182,"parent_index":982},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":984,"node_type":43,"src":{"id":985,"line":303,"column":8,"start":11363,"end":11484,"length":122,"parent_index":982},"parameters":[{"id":986,"node_type":44,"src":{"id":987,"line":303,"column":8,"start":11363,"end":11374,"length":12,"parent_index":984},"scope":982,"name":"user","type_name":{"id":988,"node_type":30,"src":{"id":989,"line":303,"column":8,"start":11363,"end":11369,"length":7,"parent_index":986},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":990,"node_type":44,"src":{"id":991,"line":304,"column":8,"start":11385,"end":11406,"length":22,"parent_index":984},"scope":982,"name":"masterContract","type_name":{"id":992,"node_type":30,"src":{"id":993,"line":304,"column":8,"start":11385,"end":11391,"length":7,"parent_index":990},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":994,"node_type":44,"src":{"id":995,"line":305,"column":8,"start":11417,"end":11429,"length":13,"parent_index":984},"scope":982,"name":"approved","type_name":{"id":996,"node_type":30,"src":{"id":997,"line":305,"column":8,"start":11417,"end":11420,"length":4,"parent_index":994},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":998,"node_type":44,"src":{"id":999,"line":306,"column":8,"start":11440,"end":11446,"length":7,"parent_index":984},"scope":982,"name":"v","type_name":{"id":1000,"node_type":30,"src":{"id":1001,"line":306,"column":8,"start":11440,"end":11444,"length":5,"parent_index":998},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1002,"node_type":44,"src":{"id":1003,"line":307,"column":8,"start":11457,"end":11465,"length":9,"parent_index":984},"scope":982,"name":"r","type_name":{"id":1004,"node_type":30,"src":{"id":1005,"line":307,"column":8,"start":11457,"end":11463,"length":7,"parent_index":1002},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1006,"node_type":44,"src":{"id":1007,"line":308,"column":8,"start":11476,"end":11484,"length":9,"parent_index":984},"scope":982,"name":"s","type_name":{"id":1008,"node_type":30,"src":{"id":1009,"line":308,"column":8,"start":11476,"end":11482,"length":7,"parent_index":1006},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_uint8","type_string":"uint8"},{"type_identifier":"t_bytes32","type_string":"bytes32"},{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":1010,"node_type":43,"src":{"id":983,"line":302,"column":4,"start":11319,"end":11500,"length":182,"parent_index":982},"parameters":[],"parameter_types":[]},"scope":811,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_bool$_t_uint8$_t_bytes32$_t_bytes32$","type_string":"function(address,address,bool,uint8,bytes32,bytes32)"}}],"linearized_base_contracts":[811],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":770,"line":231,"column":0,"start":8446,"end":11502,"length":3057,"parent_index":263}},{"id":1012,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":1012,"name":"IStargateRouter","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateRouter.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateRouter.sol","name":"IStargateRouter","node_type":1,"nodes":[{"id":1018,"node_type":10,"src":{"id":1019,"line":315,"column":0,"start":11543,"end":11565,"length":23,"parent_index":1012},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":1056,"name":"IStargateRouter","node_type":35,"src":{"id":0,"line":317,"column":0,"start":11568,"end":12294,"length":727,"parent_index":1012},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":1058,"node_type":67,"src":{"id":1059,"line":319,"column":4,"start":11601,"end":11715,"length":115,"parent_index":1012},"name":"lzTxObj","canonical_name":"IStargateRouter.lzTxObj","type_description":{"type_identifier":"t_struct$_IStargateRouter_lzTxObj_$1058","type_string":"struct IStargateRouter.lzTxObj"},"members":[{"id":1060,"node_type":44,"src":{"id":1061,"line":320,"column":8,"start":11626,"end":11647,"length":22,"parent_index":1058},"scope":1056,"name":"dstGasForCall","type_name":{"id":1062,"node_type":30,"src":{"id":1063,"line":320,"column":8,"start":11626,"end":11632,"length":7,"parent_index":1060},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":1064,"node_type":44,"src":{"id":1065,"line":321,"column":8,"start":11657,"end":11680,"length":24,"parent_index":1058},"scope":1056,"name":"dstNativeAmount","type_name":{"id":1066,"node_type":30,"src":{"id":1067,"line":321,"column":8,"start":11657,"end":11663,"length":7,"parent_index":1064},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":1068,"node_type":44,"src":{"id":1069,"line":322,"column":8,"start":11690,"end":11709,"length":20,"parent_index":1058},"scope":1056,"name":"dstNativeAddr","type_name":{"id":1070,"node_type":30,"src":{"id":1071,"line":322,"column":8,"start":11690,"end":11694,"length":5,"parent_index":1068},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":1073,"name":"swap","node_type":42,"kind":41,"src":{"id":1074,"line":325,"column":4,"start":11722,"end":12036,"length":315,"parent_index":1056},"body":{"id":1116,"node_type":46,"kind":0,"src":{"id":1074,"line":325,"column":4,"start":11722,"end":12036,"length":315,"parent_index":1073},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":3,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1075,"node_type":43,"src":{"id":1076,"line":326,"column":8,"start":11745,"end":12012,"length":268,"parent_index":1073},"parameters":[{"id":1077,"node_type":44,"src":{"id":1078,"line":326,"column":8,"start":11745,"end":11762,"length":18,"parent_index":1075},"scope":1073,"name":"_dstChainId","type_name":{"id":1079,"node_type":30,"src":{"id":1080,"line":326,"column":8,"start":11745,"end":11750,"length":6,"parent_index":1077},"name":"uint16","type_description":{"type_identifier":"t_uint16","type_string":"uint16"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1081,"node_type":44,"src":{"id":1082,"line":327,"column":8,"start":11773,"end":11790,"length":18,"parent_index":1075},"scope":1073,"name":"_srcPoolId","type_name":{"id":1083,"node_type":30,"src":{"id":1084,"line":327,"column":8,"start":11773,"end":11779,"length":7,"parent_index":1081},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1085,"node_type":44,"src":{"id":1086,"line":328,"column":8,"start":11801,"end":11818,"length":18,"parent_index":1075},"scope":1073,"name":"_dstPoolId","type_name":{"id":1087,"node_type":30,"src":{"id":1088,"line":328,"column":8,"start":11801,"end":11807,"length":7,"parent_index":1085},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1089,"node_type":44,"src":{"id":1090,"line":329,"column":8,"start":11829,"end":11858,"length":30,"parent_index":1075},"scope":1073,"name":"_refundAddress","type_name":{"id":1091,"node_type":30,"src":{"id":1092,"line":329,"column":8,"start":11829,"end":11843,"length":15,"parent_index":1089},"name":"addresspayable","type_description":{"type_identifier":"t_address_payable","type_string":"address"},"state_mutability":3,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":3},{"id":1093,"node_type":44,"src":{"id":1094,"line":330,"column":8,"start":11869,"end":11885,"length":17,"parent_index":1075},"scope":1073,"name":"_amountLD","type_name":{"id":1095,"node_type":30,"src":{"id":1096,"line":330,"column":8,"start":11869,"end":11875,"length":7,"parent_index":1093},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1097,"node_type":44,"src":{"id":1098,"line":331,"column":8,"start":11896,"end":11915,"length":20,"parent_index":1075},"scope":1073,"name":"_minAmountLD","type_name":{"id":1099,"node_type":30,"src":{"id":1100,"line":331,"column":8,"start":11896,"end":11902,"length":7,"parent_index":1097},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1101,"node_type":44,"src":{"id":1102,"line":332,"column":8,"start":11926,"end":11951,"length":26,"parent_index":1075},"scope":1073,"name":"_lzTxParams","type_name":{"id":1103,"node_type":69,"src":{"id":1104,"line":332,"column":8,"start":11926,"end":11932,"length":7,"parent_index":1101},"type_description":{"type_identifier":"t_struct$_IStargateRouter_lzTxObj_$1058","type_string":"struct IStargateRouter.lzTxObj"},"path_node":{"id":1105,"name":"lzTxObj","node_type":52,"referenced_declaration":1058,"src":{"id":1106,"line":332,"column":8,"start":11926,"end":11932,"length":7,"parent_index":1103}},"referenced_declaration":1058},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1107,"node_type":44,"src":{"id":1108,"line":333,"column":8,"start":11962,"end":11979,"length":18,"parent_index":1075},"scope":1073,"name":"_to","type_name":{"id":1109,"node_type":30,"src":{"id":1110,"line":333,"column":8,"start":11962,"end":11966,"length":5,"parent_index":1107},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1},{"id":1111,"node_type":44,"src":{"id":1112,"line":334,"column":8,"start":11990,"end":12012,"length":23,"parent_index":1075},"scope":1073,"name":"_payload","type_name":{"id":1113,"node_type":30,"src":{"id":1114,"line":334,"column":8,"start":11990,"end":11994,"length":5,"parent_index":1111},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint16","type_string":"uint16"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_address_payable","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_struct$_IStargateRouter_lzTxObj_$1058","type_string":"struct IStargateRouter.lzTxObj"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":1115,"node_type":43,"src":{"id":1074,"line":325,"column":4,"start":11722,"end":12036,"length":315,"parent_index":1073},"parameters":[],"parameter_types":[]},"scope":1056,"type_description":{"type_identifier":"t_function_$_t_uint16$_t_uint256$_t_uint256$_t_address_payable$_t_uint256$_t_uint256$_t_struct$_IStargateRouter_lzTxObj_$1058$_t_bytes$_t_bytes$","type_string":"function(uint16,uint256,uint256,address,uint256,uint256,struct IStargateRouter.lzTxObj,bytes,bytes)"}},{"id":1118,"name":"quoteLayerZeroFee","node_type":42,"kind":41,"src":{"id":1119,"line":337,"column":4,"start":12043,"end":12292,"length":250,"parent_index":1056},"body":{"id":1154,"node_type":46,"kind":0,"src":{"id":1119,"line":337,"column":4,"start":12043,"end":12292,"length":250,"parent_index":1118},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1120,"node_type":43,"src":{"id":1121,"line":338,"column":8,"start":12079,"end":12244,"length":166,"parent_index":1118},"parameters":[{"id":1122,"node_type":44,"src":{"id":1123,"line":338,"column":8,"start":12079,"end":12096,"length":18,"parent_index":1120},"scope":1118,"name":"_dstChainId","type_name":{"id":1124,"node_type":30,"src":{"id":1125,"line":338,"column":8,"start":12079,"end":12084,"length":6,"parent_index":1122},"name":"uint16","type_description":{"type_identifier":"t_uint16","type_string":"uint16"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1126,"node_type":44,"src":{"id":1127,"line":339,"column":8,"start":12107,"end":12125,"length":19,"parent_index":1120},"scope":1118,"name":"_functionType","type_name":{"id":1128,"node_type":30,"src":{"id":1129,"line":339,"column":8,"start":12107,"end":12111,"length":5,"parent_index":1126},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1130,"node_type":44,"src":{"id":1131,"line":340,"column":8,"start":12136,"end":12160,"length":25,"parent_index":1120},"scope":1118,"name":"_toAddress","type_name":{"id":1132,"node_type":30,"src":{"id":1133,"line":340,"column":8,"start":12136,"end":12140,"length":5,"parent_index":1130},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1},{"id":1134,"node_type":44,"src":{"id":1135,"line":341,"column":8,"start":12171,"end":12208,"length":38,"parent_index":1120},"scope":1118,"name":"_transferAndCallPayload","type_name":{"id":1136,"node_type":30,"src":{"id":1137,"line":341,"column":8,"start":12171,"end":12175,"length":5,"parent_index":1134},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1},{"id":1138,"node_type":44,"src":{"id":1139,"line":342,"column":8,"start":12219,"end":12244,"length":26,"parent_index":1120},"scope":1118,"name":"_lzTxParams","type_name":{"id":1140,"node_type":69,"src":{"id":1141,"line":342,"column":8,"start":12219,"end":12225,"length":7,"parent_index":1138},"type_description":{"type_identifier":"t_struct$_IStargateRouter_lzTxObj_$1058","type_string":"struct IStargateRouter.lzTxObj"},"path_node":{"id":1142,"name":"lzTxObj","node_type":52,"referenced_declaration":1058,"src":{"id":1143,"line":342,"column":8,"start":12219,"end":12225,"length":7,"parent_index":1140}},"referenced_declaration":1058},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint16","type_string":"uint16"},{"type_identifier":"t_uint8","type_string":"uint8"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_struct$_IStargateRouter_lzTxObj_$1058","type_string":"struct IStargateRouter.lzTxObj"}]},"return_parameters":{"id":1144,"node_type":43,"src":{"id":1145,"line":343,"column":29,"start":12275,"end":12290,"length":16,"parent_index":1118},"parameters":[{"id":1146,"node_type":44,"src":{"id":1147,"line":343,"column":29,"start":12275,"end":12281,"length":7,"parent_index":1144},"scope":1118,"name":"","type_name":{"id":1148,"node_type":30,"src":{"id":1149,"line":343,"column":29,"start":12275,"end":12281,"length":7,"parent_index":1146},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1150,"node_type":44,"src":{"id":1151,"line":343,"column":38,"start":12284,"end":12290,"length":7,"parent_index":1144},"scope":1118,"name":"","type_name":{"id":1152,"node_type":30,"src":{"id":1153,"line":343,"column":38,"start":12284,"end":12290,"length":7,"parent_index":1150},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":1056,"type_description":{"type_identifier":"t_function_$_t_uint16$_t_uint8$_t_bytes$_t_bytes$_t_struct$_IStargateRouter_lzTxObj_$1058$","type_string":"function(uint16,uint8,bytes,bytes,struct IStargateRouter.lzTxObj)"}}],"linearized_base_contracts":[1056],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":1013,"line":317,"column":0,"start":11568,"end":12294,"length":727,"parent_index":263}},{"id":1155,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":1155,"name":"IStargateWidget","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateWidget.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateWidget.sol","name":"IStargateWidget","node_type":1,"nodes":[{"id":1163,"node_type":10,"src":{"id":1164,"line":348,"column":0,"start":12334,"end":12356,"length":23,"parent_index":1155},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":1201,"name":"IStargateWidget","node_type":35,"src":{"id":0,"line":350,"column":0,"start":12359,"end":12441,"length":83,"parent_index":1155},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":1203,"name":"partnerSwap","node_type":42,"kind":41,"src":{"id":1204,"line":351,"column":4,"start":12391,"end":12439,"length":49,"parent_index":1201},"body":{"id":1212,"node_type":46,"kind":0,"src":{"id":1204,"line":351,"column":4,"start":12391,"end":12439,"length":49,"parent_index":1203},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1205,"node_type":43,"src":{"id":1206,"line":351,"column":25,"start":12412,"end":12428,"length":17,"parent_index":1203},"parameters":[{"id":1207,"node_type":44,"src":{"id":1208,"line":351,"column":25,"start":12412,"end":12428,"length":17,"parent_index":1205},"scope":1203,"name":"_partnerId","type_name":{"id":1209,"node_type":30,"src":{"id":1210,"line":351,"column":25,"start":12412,"end":12417,"length":6,"parent_index":1207},"name":"bytes2","type_description":{"type_identifier":"t_bytes2","type_string":"bytes2"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes2","type_string":"bytes2"}]},"return_parameters":{"id":1211,"node_type":43,"src":{"id":1204,"line":351,"column":4,"start":12391,"end":12439,"length":49,"parent_index":1203},"parameters":[],"parameter_types":[]},"scope":1201,"type_description":{"type_identifier":"t_function_$_t_bytes2$","type_string":"function(bytes2)"}}],"linearized_base_contracts":[1201],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":1156,"line":350,"column":0,"start":12359,"end":12441,"length":83,"parent_index":263}},{"id":1213,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":1213,"name":"IImmutableState","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IImmutableState.sol"},{"id":1155,"name":"IBentoBoxMinimal","absolute_path":"IBentoBoxMinimal.sol"},{"id":1155,"name":"IStargateRouter","absolute_path":"IStargateRouter.sol"},{"id":1155,"name":"IStargateWidget","absolute_path":"IStargateWidget.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IImmutableState.sol","name":"IImmutableState","node_type":1,"nodes":[{"id":1223,"node_type":10,"src":{"id":1224,"line":356,"column":0,"start":12490,"end":12512,"length":23,"parent_index":1213},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":1225,"node_type":29,"src":{"id":0,"line":358,"column":0,"start":12515,"end":12546,"length":32,"parent_index":1213},"absolute_path":"IBentoBoxMinimal.sol","file":"./IBentoBoxMinimal.sol","scope":1213,"unit_alias":"","source_unit":1155},{"id":1226,"node_type":29,"src":{"id":0,"line":359,"column":0,"start":12548,"end":12578,"length":31,"parent_index":1213},"absolute_path":"IStargateRouter.sol","file":"./IStargateRouter.sol","scope":1213,"unit_alias":"","source_unit":1155},{"id":1227,"node_type":29,"src":{"id":0,"line":360,"column":0,"start":12580,"end":12610,"length":31,"parent_index":1213},"absolute_path":"IStargateWidget.sol","file":"./IStargateWidget.sol","scope":1213,"unit_alias":"","source_unit":1155},{"id":1261,"name":"IImmutableState","node_type":35,"src":{"id":0,"line":362,"column":0,"start":12613,"end":12970,"length":358,"parent_index":1213},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":1263,"name":"bentoBox","node_type":42,"kind":41,"src":{"id":1264,"line":363,"column":4,"start":12645,"end":12705,"length":61,"parent_index":1261},"body":{"id":1281,"node_type":46,"kind":0,"src":{"id":1264,"line":363,"column":4,"start":12645,"end":12705,"length":61,"parent_index":1263},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1265,"node_type":43,"src":{"id":1266,"line":363,"column":47,"start":12688,"end":12703,"length":16,"parent_index":1263},"parameters":[{"id":1267,"node_type":44,"src":{"id":1268,"line":363,"column":47,"start":12688,"end":12703,"length":16,"parent_index":1265},"scope":1263,"name":"","type_name":{"id":1269,"node_type":69,"src":{"id":1270,"line":363,"column":47,"start":12688,"end":12703,"length":16,"parent_index":1267},"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"path_node":{"id":1271,"name":"IBentoBoxMinimal","node_type":52,"referenced_declaration":769,"src":{"id":1272,"line":363,"column":47,"start":12688,"end":12703,"length":16,"parent_index":1269}},"referenced_declaration":769},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"}]},"return_parameters":{"id":1273,"node_type":43,"src":{"id":1274,"line":363,"column":47,"start":12688,"end":12703,"length":16,"parent_index":1263},"parameters":[{"id":1275,"node_type":44,"src":{"id":1276,"line":363,"column":47,"start":12688,"end":12703,"length":16,"parent_index":1273},"scope":1263,"name":"","type_name":{"id":1277,"node_type":69,"src":{"id":1278,"line":363,"column":47,"start":12688,"end":12703,"length":16,"parent_index":1275},"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"path_node":{"id":1279,"name":"IBentoBoxMinimal","node_type":52,"referenced_declaration":769,"src":{"id":1280,"line":363,"column":47,"start":12688,"end":12703,"length":16,"parent_index":1277}},"referenced_declaration":769},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"}]},"scope":1261,"type_description":{"type_identifier":"t_function_$_t_contract$_IBentoBoxMinimal_$769$","type_string":"function(contract IBentoBoxMinimal)"}},{"id":1283,"name":"stargateRouter","node_type":42,"kind":41,"src":{"id":1284,"line":365,"column":4,"start":12712,"end":12777,"length":66,"parent_index":1261},"body":{"id":1301,"node_type":46,"kind":0,"src":{"id":1284,"line":365,"column":4,"start":12712,"end":12777,"length":66,"parent_index":1283},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1285,"node_type":43,"src":{"id":1286,"line":365,"column":53,"start":12761,"end":12775,"length":15,"parent_index":1283},"parameters":[{"id":1287,"node_type":44,"src":{"id":1288,"line":365,"column":53,"start":12761,"end":12775,"length":15,"parent_index":1285},"scope":1283,"name":"","type_name":{"id":1289,"node_type":69,"src":{"id":1290,"line":365,"column":53,"start":12761,"end":12775,"length":15,"parent_index":1287},"type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"},"path_node":{"id":1291,"name":"IStargateRouter","node_type":52,"referenced_declaration":1012,"src":{"id":1292,"line":365,"column":53,"start":12761,"end":12775,"length":15,"parent_index":1289}},"referenced_declaration":1012},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"}]},"return_parameters":{"id":1293,"node_type":43,"src":{"id":1294,"line":365,"column":53,"start":12761,"end":12775,"length":15,"parent_index":1283},"parameters":[{"id":1295,"node_type":44,"src":{"id":1296,"line":365,"column":53,"start":12761,"end":12775,"length":15,"parent_index":1293},"scope":1283,"name":"","type_name":{"id":1297,"node_type":69,"src":{"id":1298,"line":365,"column":53,"start":12761,"end":12775,"length":15,"parent_index":1295},"type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"},"path_node":{"id":1299,"name":"IStargateRouter","node_type":52,"referenced_declaration":1012,"src":{"id":1300,"line":365,"column":53,"start":12761,"end":12775,"length":15,"parent_index":1297}},"referenced_declaration":1012},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"}]},"scope":1261,"type_description":{"type_identifier":"t_function_$_t_contract$_IStargateRouter_$1012$","type_string":"function(contract IStargateRouter)"}},{"id":1303,"name":"stargateWidget","node_type":42,"kind":41,"src":{"id":1304,"line":367,"column":4,"start":12784,"end":12849,"length":66,"parent_index":1261},"body":{"id":1321,"node_type":46,"kind":0,"src":{"id":1304,"line":367,"column":4,"start":12784,"end":12849,"length":66,"parent_index":1303},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1305,"node_type":43,"src":{"id":1306,"line":367,"column":53,"start":12833,"end":12847,"length":15,"parent_index":1303},"parameters":[{"id":1307,"node_type":44,"src":{"id":1308,"line":367,"column":53,"start":12833,"end":12847,"length":15,"parent_index":1305},"scope":1303,"name":"","type_name":{"id":1309,"node_type":69,"src":{"id":1310,"line":367,"column":53,"start":12833,"end":12847,"length":15,"parent_index":1307},"type_description":{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"},"path_node":{"id":1311,"name":"IStargateWidget","node_type":52,"referenced_declaration":1155,"src":{"id":1312,"line":367,"column":53,"start":12833,"end":12847,"length":15,"parent_index":1309}},"referenced_declaration":1155},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"}]},"return_parameters":{"id":1313,"node_type":43,"src":{"id":1314,"line":367,"column":53,"start":12833,"end":12847,"length":15,"parent_index":1303},"parameters":[{"id":1315,"node_type":44,"src":{"id":1316,"line":367,"column":53,"start":12833,"end":12847,"length":15,"parent_index":1313},"scope":1303,"name":"","type_name":{"id":1317,"node_type":69,"src":{"id":1318,"line":367,"column":53,"start":12833,"end":12847,"length":15,"parent_index":1315},"type_description":{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"},"path_node":{"id":1319,"name":"IStargateWidget","node_type":52,"referenced_declaration":1155,"src":{"id":1320,"line":367,"column":53,"start":12833,"end":12847,"length":15,"parent_index":1317}},"referenced_declaration":1155},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"}]},"scope":1261,"type_description":{"type_identifier":"t_function_$_t_contract$_IStargateWidget_$1155$","type_string":"function(contract IStargateWidget)"}},{"id":1323,"name":"factory","node_type":42,"kind":41,"src":{"id":1324,"line":369,"column":4,"start":12856,"end":12906,"length":51,"parent_index":1261},"body":{"id":1337,"node_type":46,"kind":0,"src":{"id":1324,"line":369,"column":4,"start":12856,"end":12906,"length":51,"parent_index":1323},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1325,"node_type":43,"src":{"id":1326,"line":369,"column":46,"start":12898,"end":12904,"length":7,"parent_index":1323},"parameters":[{"id":1327,"node_type":44,"src":{"id":1328,"line":369,"column":46,"start":12898,"end":12904,"length":7,"parent_index":1325},"scope":1323,"name":"","type_name":{"id":1329,"node_type":30,"src":{"id":1330,"line":369,"column":46,"start":12898,"end":12904,"length":7,"parent_index":1327},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1331,"node_type":43,"src":{"id":1332,"line":369,"column":46,"start":12898,"end":12904,"length":7,"parent_index":1323},"parameters":[{"id":1333,"node_type":44,"src":{"id":1334,"line":369,"column":46,"start":12898,"end":12904,"length":7,"parent_index":1331},"scope":1323,"name":"","type_name":{"id":1335,"node_type":30,"src":{"id":1336,"line":369,"column":46,"start":12898,"end":12904,"length":7,"parent_index":1333},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":1261,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1339,"name":"pairCodeHash","node_type":42,"kind":41,"src":{"id":1340,"line":371,"column":4,"start":12913,"end":12968,"length":56,"parent_index":1261},"body":{"id":1353,"node_type":46,"kind":0,"src":{"id":1340,"line":371,"column":4,"start":12913,"end":12968,"length":56,"parent_index":1339},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1341,"node_type":43,"src":{"id":1342,"line":371,"column":51,"start":12960,"end":12966,"length":7,"parent_index":1339},"parameters":[{"id":1343,"node_type":44,"src":{"id":1344,"line":371,"column":51,"start":12960,"end":12966,"length":7,"parent_index":1341},"scope":1339,"name":"","type_name":{"id":1345,"node_type":30,"src":{"id":1346,"line":371,"column":51,"start":12960,"end":12966,"length":7,"parent_index":1343},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":1347,"node_type":43,"src":{"id":1348,"line":371,"column":51,"start":12960,"end":12966,"length":7,"parent_index":1339},"parameters":[{"id":1349,"node_type":44,"src":{"id":1350,"line":371,"column":51,"start":12960,"end":12966,"length":7,"parent_index":1347},"scope":1339,"name":"","type_name":{"id":1351,"node_type":30,"src":{"id":1352,"line":371,"column":51,"start":12960,"end":12966,"length":7,"parent_index":1349},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"scope":1261,"type_description":{"type_identifier":"t_function_$_t_bytes32$","type_string":"function(bytes32)"}}],"linearized_base_contracts":[1261,1225,1226,1227],"base_contracts":[],"contract_dependencies":[1225,1226,1227]}],"src":{"id":1214,"line":362,"column":0,"start":12613,"end":12970,"length":358,"parent_index":263}},{"id":1354,"base_contracts":[{"id":1373,"node_type":62,"src":{"id":1374,"line":382,"column":36,"start":13178,"end":13192,"length":15,"parent_index":1372},"base_name":{"id":1375,"node_type":52,"src":{"id":1376,"line":382,"column":36,"start":13178,"end":13192,"length":15,"parent_index":1372},"name":"IImmutableState","referenced_declaration":1213}}],"license":"MIT","exported_symbols":[{"id":1354,"name":"ImmutableState","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ImmutableState.sol"},{"id":1213,"name":"IImmutableState","absolute_path":"IImmutableState.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ImmutableState.sol","name":"ImmutableState","node_type":1,"nodes":[{"id":1366,"node_type":10,"src":{"id":1367,"line":376,"column":0,"start":13019,"end":13041,"length":23,"parent_index":1354},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":1371,"node_type":29,"src":{"id":0,"line":378,"column":0,"start":13044,"end":13074,"length":31,"parent_index":1354},"absolute_path":"IImmutableState.sol","file":"./IImmutableState.sol","scope":1354,"unit_alias":"","source_unit":1213},{"id":1372,"name":"ImmutableState","node_type":35,"src":{"id":0,"line":382,"column":0,"start":13142,"end":14115,"length":974,"parent_index":1354},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":1378,"name":"bentoBox","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":1379,"line":384,"column":4,"start":13237,"end":13288,"length":52,"parent_index":1372},"scope":1372,"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"visibility":3,"storage_location":1,"mutability":2,"type_name":{"id":1380,"node_type":69,"src":{"id":1381,"line":384,"column":4,"start":13237,"end":13252,"length":16,"parent_index":1378},"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"path_node":{"id":1382,"name":"IBentoBoxMinimal","node_type":52,"referenced_declaration":769,"src":{"id":1383,"line":384,"column":4,"start":13237,"end":13252,"length":16,"parent_index":1380}},"referenced_declaration":769}},{"id":1385,"name":"stargateRouter","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":1386,"line":387,"column":4,"start":13355,"end":13411,"length":57,"parent_index":1372},"scope":1372,"type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"},"visibility":3,"storage_location":1,"mutability":2,"type_name":{"id":1387,"node_type":69,"src":{"id":1388,"line":387,"column":4,"start":13355,"end":13369,"length":15,"parent_index":1385},"type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"},"path_node":{"id":1389,"name":"IStargateRouter","node_type":52,"referenced_declaration":1012,"src":{"id":1390,"line":387,"column":4,"start":13355,"end":13369,"length":15,"parent_index":1387}},"referenced_declaration":1012}},{"id":1392,"name":"stargateWidget","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":1393,"line":390,"column":4,"start":13475,"end":13531,"length":57,"parent_index":1372},"scope":1372,"type_description":{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"},"visibility":3,"storage_location":1,"mutability":2,"type_name":{"id":1394,"node_type":69,"src":{"id":1395,"line":390,"column":4,"start":13475,"end":13489,"length":15,"parent_index":1392},"type_description":{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"},"path_node":{"id":1396,"name":"IStargateWidget","node_type":52,"referenced_declaration":1155,"src":{"id":1397,"line":390,"column":4,"start":13475,"end":13489,"length":15,"parent_index":1394}},"referenced_declaration":1155}},{"id":1399,"name":"factory","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":1400,"line":393,"column":4,"start":13583,"end":13624,"length":42,"parent_index":1372},"scope":1372,"type_description":{"type_identifier":"t_address","type_string":"address"},"visibility":3,"storage_location":1,"mutability":2,"type_name":{"id":1401,"node_type":30,"src":{"id":1402,"line":393,"column":4,"start":13583,"end":13589,"length":7,"parent_index":1399},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0}},{"id":1404,"name":"pairCodeHash","is_constant":false,"is_state_variable":true,"node_type":44,"src":{"id":1405,"line":396,"column":4,"start":13681,"end":13727,"length":47,"parent_index":1372},"scope":1372,"type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"visibility":3,"storage_location":1,"mutability":2,"type_name":{"id":1406,"node_type":30,"src":{"id":1407,"line":396,"column":4,"start":13681,"end":13687,"length":7,"parent_index":1404},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0}},{"id":1409,"node_type":42,"src":{"id":1410,"line":398,"column":4,"start":13734,"end":14113,"length":380,"parent_index":1372},"kind":11,"state_mutability":4,"visibility":1,"implemented":true,"modifiers":[],"parameters":{"id":1411,"node_type":43,"src":{"id":1412,"line":399,"column":8,"start":13755,"end":13919,"length":165,"parent_index":1409},"parameters":[{"id":1413,"node_type":44,"src":{"id":1414,"line":399,"column":8,"start":13755,"end":13780,"length":26,"parent_index":1411},"scope":1409,"name":"_bentoBox","type_name":{"id":1415,"node_type":69,"src":{"id":1416,"line":399,"column":8,"start":13755,"end":13770,"length":16,"parent_index":1413},"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"path_node":{"id":1417,"name":"IBentoBoxMinimal","node_type":52,"referenced_declaration":769,"src":{"id":1418,"line":399,"column":8,"start":13755,"end":13770,"length":16,"parent_index":1415}},"referenced_declaration":769},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1419,"node_type":44,"src":{"id":1420,"line":400,"column":8,"start":13791,"end":13821,"length":31,"parent_index":1411},"scope":1409,"name":"_stargateRouter","type_name":{"id":1421,"node_type":69,"src":{"id":1422,"line":400,"column":8,"start":13791,"end":13805,"length":15,"parent_index":1419},"type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"},"path_node":{"id":1423,"name":"IStargateRouter","node_type":52,"referenced_declaration":1012,"src":{"id":1424,"line":400,"column":8,"start":13791,"end":13805,"length":15,"parent_index":1421}},"referenced_declaration":1012},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1425,"node_type":44,"src":{"id":1426,"line":401,"column":8,"start":13832,"end":13847,"length":16,"parent_index":1411},"scope":1409,"name":"_factory","type_name":{"id":1427,"node_type":30,"src":{"id":1428,"line":401,"column":8,"start":13832,"end":13838,"length":7,"parent_index":1425},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1429,"node_type":44,"src":{"id":1430,"line":402,"column":8,"start":13858,"end":13878,"length":21,"parent_index":1411},"scope":1409,"name":"_pairCodeHash","type_name":{"id":1431,"node_type":30,"src":{"id":1432,"line":402,"column":8,"start":13858,"end":13864,"length":7,"parent_index":1429},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1433,"node_type":44,"src":{"id":1434,"line":403,"column":8,"start":13889,"end":13919,"length":31,"parent_index":1411},"scope":1409,"name":"_stargateWidget","type_name":{"id":1435,"node_type":69,"src":{"id":1436,"line":403,"column":8,"start":13889,"end":13903,"length":15,"parent_index":1433},"type_description":{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"},"path_node":{"id":1437,"name":"IStargateWidget","node_type":52,"referenced_declaration":1155,"src":{"id":1438,"line":403,"column":8,"start":13889,"end":13903,"length":15,"parent_index":1435}},"referenced_declaration":1155},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes32","type_string":"bytes32"},{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"}]},"return_parameters":{"id":1439,"node_type":43,"src":{"id":1410,"line":398,"column":4,"start":13734,"end":14113,"length":380,"parent_index":1409},"parameters":[],"parameter_types":[]},"scope":1372,"body":{"id":1440,"node_type":46,"kind":0,"src":{"id":1441,"line":404,"column":6,"start":13927,"end":14113,"length":187,"parent_index":1409},"implemented":true,"statements":[{"id":1442,"node_type":81,"src":{"id":1443,"line":405,"column":8,"start":13937,"end":13957,"length":21,"parent_index":1440},"expression":{"id":1444,"node_type":27,"src":{"id":1445,"line":405,"column":8,"start":13937,"end":13956,"length":20,"parent_index":1440},"operator":11,"left_expression":{"id":1446,"node_type":16,"src":{"id":1447,"line":405,"column":8,"start":13937,"end":13944,"length":8,"parent_index":1444},"name":"bentoBox","type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"overloaded_declarations":[],"referenced_declaration":1378,"is_pure":false},"right_expression":{"id":1448,"node_type":16,"src":{"id":1449,"line":405,"column":19,"start":13948,"end":13956,"length":9,"parent_index":1444},"name":"_bentoBox","type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"overloaded_declarations":[],"referenced_declaration":1448,"is_pure":false},"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"}},"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"}},{"id":1450,"node_type":81,"src":{"id":1451,"line":406,"column":8,"start":13967,"end":13999,"length":33,"parent_index":1440},"expression":{"id":1452,"node_type":27,"src":{"id":1453,"line":406,"column":8,"start":13967,"end":13998,"length":32,"parent_index":1440},"operator":11,"left_expression":{"id":1454,"node_type":16,"src":{"id":1455,"line":406,"column":8,"start":13967,"end":13980,"length":14,"parent_index":1452},"name":"stargateRouter","type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"},"overloaded_declarations":[],"referenced_declaration":1385,"is_pure":false},"right_expression":{"id":1456,"node_type":16,"src":{"id":1457,"line":406,"column":25,"start":13984,"end":13998,"length":15,"parent_index":1452},"name":"_stargateRouter","type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"},"overloaded_declarations":[],"referenced_declaration":1456,"is_pure":false},"type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"}},"type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"}},{"id":1458,"node_type":81,"src":{"id":1459,"line":407,"column":8,"start":14009,"end":14041,"length":33,"parent_index":1440},"expression":{"id":1460,"node_type":27,"src":{"id":1461,"line":407,"column":8,"start":14009,"end":14040,"length":32,"parent_index":1440},"operator":11,"left_expression":{"id":1462,"node_type":16,"src":{"id":1463,"line":407,"column":8,"start":14009,"end":14022,"length":14,"parent_index":1460},"name":"stargateWidget","type_description":{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"},"overloaded_declarations":[],"referenced_declaration":1392,"is_pure":false},"right_expression":{"id":1464,"node_type":16,"src":{"id":1465,"line":407,"column":25,"start":14026,"end":14040,"length":15,"parent_index":1460},"name":"_stargateWidget","type_description":{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"},"overloaded_declarations":[],"referenced_declaration":1464,"is_pure":false},"type_description":{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"}},"type_description":{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"}},{"id":1466,"node_type":81,"src":{"id":1467,"line":408,"column":8,"start":14051,"end":14069,"length":19,"parent_index":1440},"expression":{"id":1468,"node_type":27,"src":{"id":1469,"line":408,"column":8,"start":14051,"end":14068,"length":18,"parent_index":1440},"operator":11,"left_expression":{"id":1470,"node_type":16,"src":{"id":1471,"line":408,"column":8,"start":14051,"end":14057,"length":7,"parent_index":1468},"name":"factory","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1399,"is_pure":false},"right_expression":{"id":1472,"node_type":16,"src":{"id":1473,"line":408,"column":18,"start":14061,"end":14068,"length":8,"parent_index":1468},"name":"_factory","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1472,"is_pure":false},"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_address","type_string":"address"}},{"id":1474,"node_type":81,"src":{"id":1475,"line":409,"column":8,"start":14079,"end":14107,"length":29,"parent_index":1440},"expression":{"id":1476,"node_type":27,"src":{"id":1477,"line":409,"column":8,"start":14079,"end":14106,"length":28,"parent_index":1440},"operator":11,"left_expression":{"id":1478,"node_type":16,"src":{"id":1479,"line":409,"column":8,"start":14079,"end":14090,"length":12,"parent_index":1476},"name":"pairCodeHash","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"overloaded_declarations":[],"referenced_declaration":1404,"is_pure":false},"right_expression":{"id":1480,"node_type":16,"src":{"id":1481,"line":409,"column":23,"start":14094,"end":14106,"length":13,"parent_index":1476},"name":"_pairCodeHash","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"overloaded_declarations":[],"referenced_declaration":1480,"is_pure":false},"type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"}},"type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"}}]}}],"linearized_base_contracts":[1213,1372,1371],"base_contracts":[{"id":1373,"node_type":62,"src":{"id":1374,"line":382,"column":36,"start":13178,"end":13192,"length":15,"parent_index":1372},"base_name":{"id":1375,"node_type":52,"src":{"id":1376,"line":382,"column":36,"start":13178,"end":13192,"length":15,"parent_index":1372},"name":"IImmutableState","referenced_declaration":1213}}],"contract_dependencies":[1213,1371]}],"src":{"id":1355,"line":382,"column":0,"start":13142,"end":14115,"length":974,"parent_index":263}},{"id":1482,"base_contracts":[{"id":1505,"node_type":62,"src":{"id":1506,"line":424,"column":34,"start":14591,"end":14604,"length":14,"parent_index":1504},"base_name":{"id":1507,"node_type":52,"src":{"id":1508,"line":424,"column":34,"start":14591,"end":14604,"length":14,"parent_index":1504},"name":"ImmutableState","referenced_declaration":1354}}],"license":"MIT","exported_symbols":[{"id":1482,"name":"BentoAdapter","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/BentoAdapter.sol"},{"id":1354,"name":"IBentoBoxMinimal","absolute_path":"IBentoBoxMinimal.sol"},{"id":1354,"name":"ImmutableState","absolute_path":"ImmutableState.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/BentoAdapter.sol","name":"BentoAdapter","node_type":1,"nodes":[{"id":1496,"node_type":10,"src":{"id":1497,"line":415,"column":0,"start":14164,"end":14186,"length":23,"parent_index":1482},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":1502,"node_type":29,"src":{"id":0,"line":417,"column":0,"start":14189,"end":14220,"length":32,"parent_index":1482},"absolute_path":"IBentoBoxMinimal.sol","file":"./IBentoBoxMinimal.sol","scope":1482,"unit_alias":"","source_unit":1354},{"id":1503,"node_type":29,"src":{"id":0,"line":418,"column":0,"start":14222,"end":14251,"length":30,"parent_index":1482},"absolute_path":"ImmutableState.sol","file":"./ImmutableState.sol","scope":1482,"unit_alias":"","source_unit":1354},{"id":1504,"name":"BentoAdapter","node_type":35,"src":{"id":0,"line":424,"column":0,"start":14557,"end":16560,"length":2004,"parent_index":1482},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":1510,"name":"_depositToBentoBox","node_type":42,"kind":41,"src":{"id":1511,"line":435,"column":4,"start":15225,"end":15481,"length":257,"parent_index":1504},"body":{"id":1539,"node_type":46,"kind":0,"src":{"id":1540,"line":442,"column":15,"start":15403,"end":15481,"length":79,"parent_index":1510},"implemented":true,"statements":[{"id":1541,"node_type":24,"kind":24,"src":{"id":1542,"line":443,"column":8,"start":15413,"end":15474,"length":62,"parent_index":1539},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":1549,"node_type":16,"src":{"id":1550,"line":443,"column":39,"start":15444,"end":15448,"length":5,"parent_index":1541},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1549,"is_pure":false},{"id":1551,"node_type":16,"src":{"id":1552,"line":443,"column":46,"start":15451,"end":15454,"length":4,"parent_index":1541},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1551,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":1553,"node_type":16,"src":{"id":1554,"line":443,"column":52,"start":15457,"end":15458,"length":2,"parent_index":1541},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1553,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},{"id":1555,"node_type":16,"src":{"id":1556,"line":443,"column":56,"start":15461,"end":15466,"length":6,"parent_index":1541},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1555,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},{"id":1557,"node_type":16,"src":{"id":1558,"line":443,"column":64,"start":15469,"end":15473,"length":5,"parent_index":1541},"name":"share","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1557,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]}],"expression":{"id":1543,"node_type":93,"kind":93,"src":{"id":1544,"line":443,"column":8,"start":15413,"end":15442,"length":30,"parent_index":1541},"expression":{"id":1545,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1546,"line":443,"column":8,"start":15413,"end":15428,"length":16,"parent_index":1543},"expression":{"id":1547,"node_type":16,"src":{"id":1548,"line":443,"column":8,"start":15413,"end":15420,"length":8,"parent_index":1545},"name":"bentoBox","type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"overloaded_declarations":[],"referenced_declaration":1378,"is_pure":false},"member_name":"deposit","argument_types":[],"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"}},"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"}},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$","type_string":"function(address,address,address,uint256,uint256)"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1512,"node_type":43,"src":{"id":1513,"line":436,"column":8,"start":15262,"end":15386,"length":125,"parent_index":1510},"parameters":[{"id":1514,"node_type":44,"src":{"id":1515,"line":436,"column":8,"start":15262,"end":15274,"length":13,"parent_index":1512},"scope":1510,"name":"token","type_name":{"id":1516,"node_type":30,"src":{"id":1517,"line":436,"column":8,"start":15262,"end":15268,"length":7,"parent_index":1514},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1518,"node_type":44,"src":{"id":1519,"line":437,"column":8,"start":15285,"end":15296,"length":12,"parent_index":1512},"scope":1510,"name":"from","type_name":{"id":1520,"node_type":30,"src":{"id":1521,"line":437,"column":8,"start":15285,"end":15291,"length":7,"parent_index":1518},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1522,"node_type":44,"src":{"id":1523,"line":438,"column":8,"start":15307,"end":15316,"length":10,"parent_index":1512},"scope":1510,"name":"to","type_name":{"id":1524,"node_type":30,"src":{"id":1525,"line":438,"column":8,"start":15307,"end":15313,"length":7,"parent_index":1522},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1526,"node_type":44,"src":{"id":1527,"line":439,"column":8,"start":15327,"end":15340,"length":14,"parent_index":1512},"scope":1510,"name":"amount","type_name":{"id":1528,"node_type":30,"src":{"id":1529,"line":439,"column":8,"start":15327,"end":15333,"length":7,"parent_index":1526},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1530,"node_type":44,"src":{"id":1531,"line":440,"column":8,"start":15351,"end":15363,"length":13,"parent_index":1512},"scope":1510,"name":"share","type_name":{"id":1532,"node_type":30,"src":{"id":1533,"line":440,"column":8,"start":15351,"end":15357,"length":7,"parent_index":1530},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1534,"node_type":44,"src":{"id":1535,"line":441,"column":8,"start":15374,"end":15386,"length":13,"parent_index":1512},"scope":1510,"name":"value","type_name":{"id":1536,"node_type":30,"src":{"id":1537,"line":441,"column":8,"start":15374,"end":15380,"length":7,"parent_index":1534},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":1538,"node_type":43,"src":{"id":1511,"line":435,"column":4,"start":15225,"end":15481,"length":257,"parent_index":1510},"parameters":[],"parameter_types":[]},"scope":1504,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$_t_uint256$","type_string":"function(address,address,address,uint256,uint256,uint256)"}},{"id":1560,"name":"_transferFromBentoBox","node_type":42,"kind":41,"src":{"id":1561,"line":456,"column":4,"start":16088,"end":16558,"length":471,"parent_index":1504},"body":{"id":1589,"node_type":46,"kind":0,"src":{"id":1590,"line":463,"column":15,"start":16272,"end":16558,"length":287,"parent_index":1560},"implemented":true,"statements":[{"id":1591,"node_type":48,"src":{"id":1592,"line":464,"column":0,"start":16282,"end":16552,"length":271,"parent_index":1589},"condition":{"id":1593,"node_type":16,"src":{"id":1594,"line":464,"column":12,"start":16286,"end":16296,"length":11,"parent_index":1591},"name":"unwrapBento","type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":1593,"is_pure":false},"body":{"id":1595,"node_type":46,"kind":0,"src":{"id":1596,"line":464,"column":25,"start":16299,"end":16372,"length":74,"parent_index":1560},"implemented":true,"statements":[{"id":1597,"node_type":24,"kind":24,"src":{"id":1598,"line":465,"column":12,"start":16313,"end":16361,"length":49,"parent_index":1595},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":1603,"node_type":16,"src":{"id":1604,"line":465,"column":30,"start":16331,"end":16335,"length":5,"parent_index":1597},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1603,"is_pure":false},{"id":1605,"node_type":16,"src":{"id":1606,"line":465,"column":37,"start":16338,"end":16341,"length":4,"parent_index":1597},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1605,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":1607,"node_type":16,"src":{"id":1608,"line":465,"column":43,"start":16344,"end":16345,"length":2,"parent_index":1597},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1607,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},{"id":1609,"node_type":16,"src":{"id":1610,"line":465,"column":47,"start":16348,"end":16353,"length":6,"parent_index":1597},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1609,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},{"id":1611,"node_type":16,"src":{"id":1612,"line":465,"column":55,"start":16356,"end":16360,"length":5,"parent_index":1597},"name":"share","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1611,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]}],"expression":{"id":1599,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1600,"line":465,"column":12,"start":16313,"end":16329,"length":17,"parent_index":1597},"expression":{"id":1601,"node_type":16,"src":{"id":1602,"line":465,"column":12,"start":16313,"end":16320,"length":8,"parent_index":1599},"name":"bentoBox","type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"overloaded_declarations":[],"referenced_declaration":1378,"is_pure":false},"member_name":"withdraw","argument_types":[],"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"}},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$","type_string":"function(address,address,address,uint256,uint256)"}}]}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1562,"node_type":43,"src":{"id":1563,"line":457,"column":8,"start":16128,"end":16255,"length":128,"parent_index":1560},"parameters":[{"id":1564,"node_type":44,"src":{"id":1565,"line":457,"column":8,"start":16128,"end":16140,"length":13,"parent_index":1562},"scope":1560,"name":"token","type_name":{"id":1566,"node_type":30,"src":{"id":1567,"line":457,"column":8,"start":16128,"end":16134,"length":7,"parent_index":1564},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1568,"node_type":44,"src":{"id":1569,"line":458,"column":8,"start":16151,"end":16162,"length":12,"parent_index":1562},"scope":1560,"name":"from","type_name":{"id":1570,"node_type":30,"src":{"id":1571,"line":458,"column":8,"start":16151,"end":16157,"length":7,"parent_index":1568},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1572,"node_type":44,"src":{"id":1573,"line":459,"column":8,"start":16173,"end":16182,"length":10,"parent_index":1562},"scope":1560,"name":"to","type_name":{"id":1574,"node_type":30,"src":{"id":1575,"line":459,"column":8,"start":16173,"end":16179,"length":7,"parent_index":1572},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1576,"node_type":44,"src":{"id":1577,"line":460,"column":8,"start":16193,"end":16206,"length":14,"parent_index":1562},"scope":1560,"name":"amount","type_name":{"id":1578,"node_type":30,"src":{"id":1579,"line":460,"column":8,"start":16193,"end":16199,"length":7,"parent_index":1576},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1580,"node_type":44,"src":{"id":1581,"line":461,"column":8,"start":16217,"end":16229,"length":13,"parent_index":1562},"scope":1560,"name":"share","type_name":{"id":1582,"node_type":30,"src":{"id":1583,"line":461,"column":8,"start":16217,"end":16223,"length":7,"parent_index":1580},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1584,"node_type":44,"src":{"id":1585,"line":462,"column":8,"start":16240,"end":16255,"length":16,"parent_index":1562},"scope":1560,"name":"unwrapBento","type_name":{"id":1586,"node_type":30,"src":{"id":1587,"line":462,"column":8,"start":16240,"end":16243,"length":4,"parent_index":1584},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_bool","type_string":"bool"}]},"return_parameters":{"id":1588,"node_type":43,"src":{"id":1561,"line":456,"column":4,"start":16088,"end":16558,"length":471,"parent_index":1560},"parameters":[],"parameter_types":[]},"scope":1504,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$_t_bool$","type_string":"function(address,address,address,uint256,uint256,bool)"}}],"linearized_base_contracts":[1354,1504,1502,1503],"base_contracts":[{"id":1505,"node_type":62,"src":{"id":1506,"line":424,"column":34,"start":14591,"end":14604,"length":14,"parent_index":1504},"base_name":{"id":1507,"node_type":52,"src":{"id":1508,"line":424,"column":34,"start":14591,"end":14604,"length":14,"parent_index":1504},"name":"ImmutableState","referenced_declaration":1354}}],"contract_dependencies":[1354,1502,1503]}],"src":{"id":1483,"line":424,"column":0,"start":14557,"end":16560,"length":2004,"parent_index":263}},{"id":1613,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":1613,"name":"IPool","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IPool.sol"},{"id":1482,"name":"IERC20","absolute_path":"IERC20.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IPool.sol","name":"IPool","node_type":1,"nodes":[{"id":1631,"node_type":10,"src":{"id":1632,"line":485,"column":0,"start":16749,"end":16771,"length":23,"parent_index":1613},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":1639,"node_type":29,"src":{"id":0,"line":480,"column":0,"start":16678,"end":16699,"length":22,"parent_index":1613},"absolute_path":"IERC20.sol","file":"./IERC20.sol","scope":1613,"unit_alias":"","source_unit":1482},{"id":1669,"name":"IPool","node_type":35,"src":{"id":0,"line":488,"column":0,"start":16810,"end":20236,"length":3427,"parent_index":1613},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":1671,"name":"swap","node_type":42,"kind":41,"src":{"id":1672,"line":493,"column":4,"start":17110,"end":17202,"length":93,"parent_index":1669},"body":{"id":1685,"node_type":46,"kind":0,"src":{"id":1672,"line":493,"column":4,"start":17110,"end":17202,"length":93,"parent_index":1671},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1673,"node_type":43,"src":{"id":1674,"line":493,"column":18,"start":17124,"end":17142,"length":19,"parent_index":1671},"parameters":[{"id":1675,"node_type":44,"src":{"id":1676,"line":493,"column":18,"start":17124,"end":17142,"length":19,"parent_index":1673},"scope":1671,"name":"data","type_name":{"id":1677,"node_type":30,"src":{"id":1678,"line":493,"column":18,"start":17124,"end":17128,"length":5,"parent_index":1675},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":1679,"node_type":43,"src":{"id":1680,"line":495,"column":17,"start":17179,"end":17200,"length":22,"parent_index":1671},"parameters":[{"id":1681,"node_type":44,"src":{"id":1682,"line":495,"column":17,"start":17179,"end":17200,"length":22,"parent_index":1679},"scope":1671,"name":"finalAmountOut","type_name":{"id":1683,"node_type":30,"src":{"id":1684,"line":495,"column":17,"start":17179,"end":17185,"length":7,"parent_index":1681},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":1669,"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}},{"id":1687,"name":"flashSwap","node_type":42,"kind":41,"src":{"id":1688,"line":501,"column":4,"start":17542,"end":17639,"length":98,"parent_index":1669},"body":{"id":1701,"node_type":46,"kind":0,"src":{"id":1688,"line":501,"column":4,"start":17542,"end":17639,"length":98,"parent_index":1687},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1689,"node_type":43,"src":{"id":1690,"line":501,"column":23,"start":17561,"end":17579,"length":19,"parent_index":1687},"parameters":[{"id":1691,"node_type":44,"src":{"id":1692,"line":501,"column":23,"start":17561,"end":17579,"length":19,"parent_index":1689},"scope":1687,"name":"data","type_name":{"id":1693,"node_type":30,"src":{"id":1694,"line":501,"column":23,"start":17561,"end":17565,"length":5,"parent_index":1691},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":1695,"node_type":43,"src":{"id":1696,"line":503,"column":17,"start":17616,"end":17637,"length":22,"parent_index":1687},"parameters":[{"id":1697,"node_type":44,"src":{"id":1698,"line":503,"column":17,"start":17616,"end":17637,"length":22,"parent_index":1695},"scope":1687,"name":"finalAmountOut","type_name":{"id":1699,"node_type":30,"src":{"id":1700,"line":503,"column":17,"start":17616,"end":17622,"length":7,"parent_index":1697},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":1669,"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}},{"id":1703,"name":"mint","node_type":42,"kind":41,"src":{"id":1704,"line":508,"column":4,"start":17837,"end":17908,"length":72,"parent_index":1669},"body":{"id":1717,"node_type":46,"kind":0,"src":{"id":1704,"line":508,"column":4,"start":17837,"end":17908,"length":72,"parent_index":1703},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1705,"node_type":43,"src":{"id":1706,"line":508,"column":18,"start":17851,"end":17869,"length":19,"parent_index":1703},"parameters":[{"id":1707,"node_type":44,"src":{"id":1708,"line":508,"column":18,"start":17851,"end":17869,"length":19,"parent_index":1705},"scope":1703,"name":"data","type_name":{"id":1709,"node_type":30,"src":{"id":1710,"line":508,"column":18,"start":17851,"end":17855,"length":5,"parent_index":1707},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":1711,"node_type":43,"src":{"id":1712,"line":508,"column":57,"start":17890,"end":17906,"length":17,"parent_index":1703},"parameters":[{"id":1713,"node_type":44,"src":{"id":1714,"line":508,"column":57,"start":17890,"end":17906,"length":17,"parent_index":1711},"scope":1703,"name":"liquidity","type_name":{"id":1715,"node_type":30,"src":{"id":1716,"line":508,"column":57,"start":17890,"end":17896,"length":7,"parent_index":1713},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":1669,"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}},{"id":1719,"name":"burn","node_type":42,"kind":41,"src":{"id":1720,"line":514,"column":4,"start":18187,"end":18294,"length":108,"parent_index":1669},"body":{"id":1736,"node_type":46,"kind":0,"src":{"id":1720,"line":514,"column":4,"start":18187,"end":18294,"length":108,"parent_index":1719},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1721,"node_type":43,"src":{"id":1722,"line":514,"column":18,"start":18201,"end":18219,"length":19,"parent_index":1719},"parameters":[{"id":1723,"node_type":44,"src":{"id":1724,"line":514,"column":18,"start":18201,"end":18219,"length":19,"parent_index":1721},"scope":1719,"name":"data","type_name":{"id":1725,"node_type":30,"src":{"id":1726,"line":514,"column":18,"start":18201,"end":18205,"length":5,"parent_index":1723},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":1727,"node_type":43,"src":{"id":1728,"line":516,"column":17,"start":18256,"end":18292,"length":37,"parent_index":1719},"parameters":[{"id":1729,"node_type":44,"src":{"id":1730,"line":516,"column":17,"start":18256,"end":18292,"length":37,"parent_index":1727},"scope":1719,"name":"withdrawnAmounts","type_name":{"id":1731,"node_type":69,"src":{"id":1733,"line":516,"column":17,"start":18256,"end":18266,"length":11,"parent_index":1729},"name":"TokenAmount","type_description":{"type_identifier":"t_struct$_IPool_TokenAmount_$1844","type_string":"struct IPool.TokenAmount"},"path_node":{"id":1734,"name":"TokenAmount","node_type":52,"referenced_declaration":0,"src":{"id":1735,"line":516,"column":17,"start":18256,"end":18266,"length":11,"parent_index":1731}},"referenced_declaration":1844},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[null]},"scope":1669,"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}},{"id":1738,"name":"burnSingle","node_type":42,"kind":41,"src":{"id":1739,"line":522,"column":4,"start":18584,"end":18677,"length":94,"parent_index":1669},"body":{"id":1752,"node_type":46,"kind":0,"src":{"id":1739,"line":522,"column":4,"start":18584,"end":18677,"length":94,"parent_index":1738},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1740,"node_type":43,"src":{"id":1741,"line":522,"column":24,"start":18604,"end":18622,"length":19,"parent_index":1738},"parameters":[{"id":1742,"node_type":44,"src":{"id":1743,"line":522,"column":24,"start":18604,"end":18622,"length":19,"parent_index":1740},"scope":1738,"name":"data","type_name":{"id":1744,"node_type":30,"src":{"id":1745,"line":522,"column":24,"start":18604,"end":18608,"length":5,"parent_index":1742},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":1746,"node_type":43,"src":{"id":1747,"line":524,"column":17,"start":18659,"end":18675,"length":17,"parent_index":1738},"parameters":[{"id":1748,"node_type":44,"src":{"id":1749,"line":524,"column":17,"start":18659,"end":18675,"length":17,"parent_index":1746},"scope":1738,"name":"amountOut","type_name":{"id":1750,"node_type":30,"src":{"id":1751,"line":524,"column":17,"start":18659,"end":18665,"length":7,"parent_index":1748},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":1669,"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}},{"id":1754,"name":"poolIdentifier","node_type":42,"kind":41,"src":{"id":1755,"line":527,"column":4,"start":18739,"end":18796,"length":58,"parent_index":1669},"body":{"id":1768,"node_type":46,"kind":0,"src":{"id":1755,"line":527,"column":4,"start":18739,"end":18796,"length":58,"parent_index":1754},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1756,"node_type":43,"src":{"id":1757,"line":527,"column":53,"start":18788,"end":18794,"length":7,"parent_index":1754},"parameters":[{"id":1758,"node_type":44,"src":{"id":1759,"line":527,"column":53,"start":18788,"end":18794,"length":7,"parent_index":1756},"scope":1754,"name":"","type_name":{"id":1760,"node_type":30,"src":{"id":1761,"line":527,"column":53,"start":18788,"end":18794,"length":7,"parent_index":1758},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":1762,"node_type":43,"src":{"id":1763,"line":527,"column":53,"start":18788,"end":18794,"length":7,"parent_index":1754},"parameters":[{"id":1764,"node_type":44,"src":{"id":1765,"line":527,"column":53,"start":18788,"end":18794,"length":7,"parent_index":1762},"scope":1754,"name":"","type_name":{"id":1766,"node_type":30,"src":{"id":1767,"line":527,"column":53,"start":18788,"end":18794,"length":7,"parent_index":1764},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"scope":1669,"type_description":{"type_identifier":"t_function_$_t_bytes32$","type_string":"function(bytes32)"}},{"id":1770,"name":"getAssets","node_type":42,"kind":41,"src":{"id":1771,"line":530,"column":4,"start":18861,"end":18922,"length":62,"parent_index":1669},"body":{"id":1786,"node_type":46,"kind":0,"src":{"id":1771,"line":530,"column":4,"start":18861,"end":18922,"length":62,"parent_index":1770},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1772,"node_type":43,"src":{"id":1773,"line":530,"column":48,"start":18905,"end":18920,"length":16,"parent_index":1770},"parameters":[{"id":1774,"node_type":44,"src":{"id":1775,"line":530,"column":48,"start":18905,"end":18920,"length":16,"parent_index":1772},"scope":1770,"name":"","type_name":{"id":1776,"node_type":16,"src":{"id":1778,"line":530,"column":48,"start":18905,"end":18911,"length":7,"parent_index":1774},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":1779,"node_type":43,"src":{"id":1780,"line":530,"column":48,"start":18905,"end":18920,"length":16,"parent_index":1770},"parameters":[{"id":1781,"node_type":44,"src":{"id":1782,"line":530,"column":48,"start":18905,"end":18920,"length":16,"parent_index":1779},"scope":1770,"name":"","type_name":{"id":1783,"node_type":16,"src":{"id":1785,"line":530,"column":48,"start":18905,"end":18911,"length":7,"parent_index":1781},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":1669,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":1788,"name":"getAmountOut","node_type":42,"kind":41,"src":{"id":1789,"line":536,"column":4,"start":19282,"end":19395,"length":114,"parent_index":1669},"body":{"id":1802,"node_type":46,"kind":0,"src":{"id":1789,"line":536,"column":4,"start":19282,"end":19395,"length":114,"parent_index":1788},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1790,"node_type":43,"src":{"id":1791,"line":536,"column":26,"start":19304,"end":19322,"length":19,"parent_index":1788},"parameters":[{"id":1792,"node_type":44,"src":{"id":1793,"line":536,"column":26,"start":19304,"end":19322,"length":19,"parent_index":1790},"scope":1788,"name":"data","type_name":{"id":1794,"node_type":30,"src":{"id":1795,"line":536,"column":26,"start":19304,"end":19308,"length":5,"parent_index":1792},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":1796,"node_type":43,"src":{"id":1797,"line":539,"column":17,"start":19372,"end":19393,"length":22,"parent_index":1788},"parameters":[{"id":1798,"node_type":44,"src":{"id":1799,"line":539,"column":17,"start":19372,"end":19393,"length":22,"parent_index":1796},"scope":1788,"name":"finalAmountOut","type_name":{"id":1800,"node_type":30,"src":{"id":1801,"line":539,"column":17,"start":19372,"end":19378,"length":7,"parent_index":1798},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":1669,"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}},{"id":1804,"name":"getAmountIn","node_type":42,"kind":41,"src":{"id":1805,"line":545,"column":4,"start":19755,"end":19866,"length":112,"parent_index":1669},"body":{"id":1818,"node_type":46,"kind":0,"src":{"id":1805,"line":545,"column":4,"start":19755,"end":19866,"length":112,"parent_index":1804},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1806,"node_type":43,"src":{"id":1807,"line":545,"column":25,"start":19776,"end":19794,"length":19,"parent_index":1804},"parameters":[{"id":1808,"node_type":44,"src":{"id":1809,"line":545,"column":25,"start":19776,"end":19794,"length":19,"parent_index":1806},"scope":1804,"name":"data","type_name":{"id":1810,"node_type":30,"src":{"id":1811,"line":545,"column":25,"start":19776,"end":19780,"length":5,"parent_index":1808},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":1812,"node_type":43,"src":{"id":1813,"line":548,"column":17,"start":19844,"end":19864,"length":21,"parent_index":1804},"parameters":[{"id":1814,"node_type":44,"src":{"id":1815,"line":548,"column":17,"start":19844,"end":19864,"length":21,"parent_index":1812},"scope":1804,"name":"finalAmountIn","type_name":{"id":1816,"node_type":30,"src":{"id":1817,"line":548,"column":17,"start":19844,"end":19850,"length":7,"parent_index":1814},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":1669,"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}},{"id":1820,"node_type":57,"src":{"id":1821,"line":551,"column":4,"start":19927,"end":20098,"length":172,"parent_index":1669},"parameters":{"id":1822,"node_type":43,"src":{"id":1821,"line":551,"column":4,"start":19927,"end":20098,"length":172,"parent_index":1820},"parameters":[{"id":1823,"node_type":44,"src":{"id":1824,"line":552,"column":8,"start":19947,"end":19971,"length":25,"parent_index":1822},"scope":1820,"name":"recipient","type_name":{"id":1825,"node_type":30,"src":{"id":1826,"line":552,"column":8,"start":19947,"end":19953,"length":7,"parent_index":1823},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":1827,"node_type":44,"src":{"id":1828,"line":553,"column":8,"start":19982,"end":20004,"length":23,"parent_index":1822},"scope":1820,"name":"tokenIn","type_name":{"id":1829,"node_type":30,"src":{"id":1830,"line":553,"column":8,"start":19982,"end":19988,"length":7,"parent_index":1827},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":1831,"node_type":44,"src":{"id":1832,"line":554,"column":8,"start":20015,"end":20038,"length":24,"parent_index":1822},"scope":1820,"name":"tokenOut","type_name":{"id":1833,"node_type":30,"src":{"id":1834,"line":554,"column":8,"start":20015,"end":20021,"length":7,"parent_index":1831},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":1835,"node_type":44,"src":{"id":1836,"line":555,"column":8,"start":20049,"end":20064,"length":16,"parent_index":1822},"scope":1820,"name":"amountIn","type_name":{"id":1837,"node_type":30,"src":{"id":1838,"line":555,"column":8,"start":20049,"end":20055,"length":7,"parent_index":1835},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1839,"node_type":44,"src":{"id":1840,"line":556,"column":8,"start":20075,"end":20091,"length":17,"parent_index":1822},"scope":1820,"name":"amountOut","type_name":{"id":1841,"node_type":30,"src":{"id":1842,"line":556,"column":8,"start":20075,"end":20081,"length":7,"parent_index":1839},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"name":"Swap","anonymous":false},{"id":1844,"node_type":67,"src":{"id":1845,"line":560,"column":4,"start":20162,"end":20234,"length":73,"parent_index":1613},"name":"TokenAmount","canonical_name":"IPool.TokenAmount","type_description":{"type_identifier":"t_struct$_IPool_TokenAmount_$1844","type_string":"struct IPool.TokenAmount"},"members":[{"id":1846,"node_type":44,"src":{"id":1847,"line":561,"column":8,"start":20191,"end":20204,"length":14,"parent_index":1844},"scope":1669,"name":"token","type_name":{"id":1848,"node_type":30,"src":{"id":1849,"line":561,"column":8,"start":20191,"end":20197,"length":7,"parent_index":1846},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":1850,"node_type":44,"src":{"id":1851,"line":562,"column":8,"start":20214,"end":20228,"length":15,"parent_index":1844},"scope":1669,"name":"amount","type_name":{"id":1852,"node_type":30,"src":{"id":1853,"line":562,"column":8,"start":20214,"end":20220,"length":7,"parent_index":1850},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1}],"linearized_base_contracts":[1669,1639],"base_contracts":[],"contract_dependencies":[1639]}],"src":{"id":1614,"line":488,"column":0,"start":16810,"end":20236,"length":3427,"parent_index":263}},{"id":1854,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":1854,"name":"SafeERC20","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/SafeERC20.sol"},{"id":1613,"name":"IERC20","absolute_path":"IERC20.sol"},{"id":1613,"name":"Address","absolute_path":"Address.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/SafeERC20.sol","name":"SafeERC20","node_type":1,"nodes":[{"id":1874,"node_type":10,"src":{"id":1875,"line":569,"column":0,"start":20339,"end":20361,"length":23,"parent_index":1854},"literals":["pragma","solidity","^","0",".","8",".","0",";"],"text":"pragma solidity ^0.8.0;"},{"id":1883,"node_type":29,"src":{"id":0,"line":571,"column":0,"start":20364,"end":20385,"length":22,"parent_index":1854},"absolute_path":"IERC20.sol","file":"./IERC20.sol","scope":1854,"unit_alias":"","source_unit":1613},{"id":1884,"node_type":29,"src":{"id":0,"line":572,"column":0,"start":20387,"end":20409,"length":23,"parent_index":1854},"absolute_path":"Address.sol","file":"./Address.sol","scope":1854,"unit_alias":"","source_unit":1613},{"id":1885,"name":"SafeERC20","node_type":35,"src":{"id":0,"line":583,"column":0,"start":20870,"end":24139,"length":3270,"parent_index":1854},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":1887,"node_type":51,"src":{"id":1888,"line":584,"column":0,"start":20894,"end":20919,"length":26,"parent_index":1885},"type_description":{"type_identifier":"t_address","type_string":"address"},"type_name":{"id":1889,"node_type":30,"src":{"id":1890,"line":584,"column":22,"start":20912,"end":20918,"length":7,"parent_index":1887},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"library_name":{"id":1891,"node_type":52,"src":{"id":1892,"line":584,"column":0,"start":20900,"end":20906,"length":7,"parent_index":1887},"name":"Address","referenced_declaration":264}},{"id":1894,"name":"safeTransfer","node_type":42,"kind":41,"src":{"id":1895,"line":586,"column":4,"start":20926,"end":21130,"length":205,"parent_index":1885},"body":{"id":1913,"node_type":46,"kind":0,"src":{"id":1914,"line":590,"column":15,"start":21028,"end":21130,"length":103,"parent_index":1894},"implemented":true,"statements":[{"id":1915,"node_type":24,"kind":24,"src":{"id":1916,"line":591,"column":8,"start":21038,"end":21123,"length":86,"parent_index":1913},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}],"arguments":[{"id":1919,"node_type":16,"src":{"id":1920,"line":591,"column":28,"start":21058,"end":21062,"length":5,"parent_index":1915},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false},{"id":1921,"node_type":24,"kind":24,"src":{"id":1922,"line":591,"column":35,"start":21065,"end":21122,"length":58,"parent_index":1915},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":1927,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1928,"line":591,"column":58,"start":21088,"end":21110,"length":23,"parent_index":1921},"expression":{"id":1929,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1930,"line":591,"column":58,"start":21088,"end":21101,"length":14,"parent_index":1927},"expression":{"id":1931,"node_type":16,"src":{"id":1932,"line":591,"column":58,"start":21088,"end":21092,"length":5,"parent_index":1929},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false},"member_name":"transfer","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"member_name":"selector","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},{"id":1933,"node_type":16,"src":{"id":1934,"line":591,"column":83,"start":21113,"end":21114,"length":2,"parent_index":1921},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1933,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":1935,"node_type":16,"src":{"id":1936,"line":591,"column":87,"start":21117,"end":21121,"length":5,"parent_index":1921},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1935,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":1923,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1924,"line":591,"column":35,"start":21065,"end":21086,"length":22,"parent_index":1921},"expression":{"id":1925,"node_type":16,"src":{"id":1926,"line":591,"column":35,"start":21065,"end":21067,"length":3,"parent_index":1923},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"encodeWithSelector","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}}],"expression":{"id":1917,"node_type":16,"src":{"id":1918,"line":591,"column":8,"start":21038,"end":21056,"length":19,"parent_index":1915},"name":"_callOptionalReturn","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,function(address,address,uint256))"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1896,"node_type":43,"src":{"id":1897,"line":587,"column":8,"start":20957,"end":21011,"length":55,"parent_index":1894},"parameters":[{"id":1898,"node_type":44,"src":{"id":1899,"line":587,"column":8,"start":20957,"end":20968,"length":12,"parent_index":1896},"scope":1894,"name":"token","type_name":{"id":1900,"node_type":69,"src":{"id":1901,"line":587,"column":8,"start":20957,"end":20962,"length":6,"parent_index":1898},"type_description":{"type_identifier":"t_function_$","type_string":"function()"},"path_node":{"id":1902,"name":"IERC20","node_type":52,"referenced_declaration":0,"src":{"id":1903,"line":587,"column":8,"start":20957,"end":20962,"length":6,"parent_index":1900}},"referenced_declaration":2570},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1904,"node_type":44,"src":{"id":1905,"line":588,"column":8,"start":20979,"end":20988,"length":10,"parent_index":1896},"scope":1894,"name":"to","type_name":{"id":1906,"node_type":30,"src":{"id":1907,"line":588,"column":8,"start":20979,"end":20985,"length":7,"parent_index":1904},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1908,"node_type":44,"src":{"id":1909,"line":589,"column":8,"start":20999,"end":21011,"length":13,"parent_index":1896},"scope":1894,"name":"value","type_name":{"id":1910,"node_type":30,"src":{"id":1911,"line":589,"column":8,"start":20999,"end":21005,"length":7,"parent_index":1908},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[null,{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":1912,"node_type":43,"src":{"id":1895,"line":586,"column":4,"start":20926,"end":21130,"length":205,"parent_index":1894},"parameters":[],"parameter_types":[]},"scope":1885,"type_description":{"type_identifier":"t_function_$_t_unknown_1894$_t_address$_t_uint256$","type_string":"function(unknown_1894,address,uint256)"}},{"id":1938,"name":"safeTransferFrom","node_type":42,"kind":41,"src":{"id":1939,"line":594,"column":4,"start":21137,"end":21377,"length":241,"parent_index":1885},"body":{"id":1961,"node_type":46,"kind":0,"src":{"id":1962,"line":599,"column":15,"start":21265,"end":21377,"length":113,"parent_index":1938},"implemented":true,"statements":[{"id":1963,"node_type":24,"kind":24,"src":{"id":1964,"line":600,"column":8,"start":21275,"end":21370,"length":96,"parent_index":1961},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_address$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,address,uint256)"}],"arguments":[{"id":1967,"node_type":16,"src":{"id":1968,"line":600,"column":28,"start":21295,"end":21299,"length":5,"parent_index":1963},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false},{"id":1969,"node_type":24,"kind":24,"src":{"id":1970,"line":600,"column":35,"start":21302,"end":21369,"length":68,"parent_index":1963},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":1975,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1976,"line":600,"column":58,"start":21325,"end":21351,"length":27,"parent_index":1969},"expression":{"id":1977,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1978,"line":600,"column":58,"start":21325,"end":21342,"length":18,"parent_index":1975},"expression":{"id":1979,"node_type":16,"src":{"id":1980,"line":600,"column":58,"start":21325,"end":21329,"length":5,"parent_index":1977},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false},"member_name":"transferFrom","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"member_name":"selector","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},{"id":1981,"node_type":16,"src":{"id":1982,"line":600,"column":87,"start":21354,"end":21357,"length":4,"parent_index":1969},"name":"from","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1981,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":1983,"node_type":16,"src":{"id":1984,"line":600,"column":93,"start":21360,"end":21361,"length":2,"parent_index":1969},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":1983,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},{"id":1985,"node_type":16,"src":{"id":1986,"line":600,"column":97,"start":21364,"end":21368,"length":5,"parent_index":1969},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1985,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":1971,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":1972,"line":600,"column":35,"start":21302,"end":21323,"length":22,"parent_index":1969},"expression":{"id":1973,"node_type":16,"src":{"id":1974,"line":600,"column":35,"start":21302,"end":21304,"length":3,"parent_index":1971},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"encodeWithSelector","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,address,uint256)"}}],"expression":{"id":1965,"node_type":16,"src":{"id":1966,"line":600,"column":8,"start":21275,"end":21293,"length":19,"parent_index":1963},"name":"_callOptionalReturn","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_function_$_t_address$_t_address$_t_address$_t_uint256$","type_string":"function(address,function(address,address,address,uint256))"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1940,"node_type":43,"src":{"id":1941,"line":595,"column":8,"start":21172,"end":21248,"length":77,"parent_index":1938},"parameters":[{"id":1942,"node_type":44,"src":{"id":1943,"line":595,"column":8,"start":21172,"end":21183,"length":12,"parent_index":1940},"scope":1938,"name":"token","type_name":{"id":1944,"node_type":69,"src":{"id":1945,"line":595,"column":8,"start":21172,"end":21177,"length":6,"parent_index":1942},"type_description":{"type_identifier":"t_function_$","type_string":"function()"},"path_node":{"id":1946,"name":"IERC20","node_type":52,"referenced_declaration":0,"src":{"id":1947,"line":595,"column":8,"start":21172,"end":21177,"length":6,"parent_index":1944}},"referenced_declaration":2570},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1948,"node_type":44,"src":{"id":1949,"line":596,"column":8,"start":21194,"end":21205,"length":12,"parent_index":1940},"scope":1938,"name":"from","type_name":{"id":1950,"node_type":30,"src":{"id":1951,"line":596,"column":8,"start":21194,"end":21200,"length":7,"parent_index":1948},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1952,"node_type":44,"src":{"id":1953,"line":597,"column":8,"start":21216,"end":21225,"length":10,"parent_index":1940},"scope":1938,"name":"to","type_name":{"id":1954,"node_type":30,"src":{"id":1955,"line":597,"column":8,"start":21216,"end":21222,"length":7,"parent_index":1952},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":1956,"node_type":44,"src":{"id":1957,"line":598,"column":8,"start":21236,"end":21248,"length":13,"parent_index":1940},"scope":1938,"name":"value","type_name":{"id":1958,"node_type":30,"src":{"id":1959,"line":598,"column":8,"start":21236,"end":21242,"length":7,"parent_index":1956},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[null,{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":1960,"node_type":43,"src":{"id":1939,"line":594,"column":4,"start":21137,"end":21377,"length":241,"parent_index":1938},"parameters":[],"parameter_types":[]},"scope":1885,"type_description":{"type_identifier":"t_function_$_t_unknown_1938$_t_address$_t_address$_t_uint256$","type_string":"function(unknown_1938,address,address,uint256)"}},{"id":1988,"name":"safeApprove","node_type":42,"kind":41,"src":{"id":1989,"line":610,"column":4,"start":21638,"end":22240,"length":603,"parent_index":1885},"body":{"id":2007,"node_type":46,"kind":0,"src":{"id":2008,"line":614,"column":15,"start":21744,"end":22240,"length":497,"parent_index":1988},"implemented":true,"statements":[{"id":2009,"node_type":24,"kind":24,"src":{"id":2010,"line":618,"column":8,"start":21971,"end":22133,"length":163,"parent_index":2007},"argument_types":[{"type_identifier":"t_tuple_$_t_bool$","type_string":"tuple(bool)"},{"type_identifier":"t_string_literal","type_string":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"arguments":[{"id":2013,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2014,"line":619,"column":12,"start":21992,"end":22053,"length":62,"parent_index":2009},"operator":33,"left_expression":{"id":2015,"node_type":60,"src":{"id":2016,"line":619,"column":12,"start":21992,"end":22003,"length":12,"parent_index":2013},"is_constant":false,"is_pure":false,"components":[{"id":2017,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2018,"line":619,"column":13,"start":21993,"end":22002,"length":10,"parent_index":2015},"operator":11,"left_expression":{"id":2019,"node_type":16,"src":{"id":2020,"line":619,"column":13,"start":21993,"end":21997,"length":5,"parent_index":2017},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":2019,"is_pure":false},"right_expression":{"id":2021,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":2022,"line":619,"column":22,"start":22002,"end":22002,"length":1,"parent_index":2017},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}}],"type_description":{"type_identifier":"t_tuple_$_t_bool$","type_string":"tuple(bool)"}},"right_expression":{"id":2023,"node_type":60,"src":{"id":2024,"line":619,"column":28,"start":22008,"end":22053,"length":46,"parent_index":2013},"is_constant":false,"is_pure":false,"components":[{"id":2025,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2026,"line":619,"column":29,"start":22009,"end":22052,"length":44,"parent_index":2023},"operator":11,"left_expression":{"id":2027,"node_type":24,"kind":24,"src":{"id":2028,"line":619,"column":29,"start":22009,"end":22047,"length":39,"parent_index":2025},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2033,"node_type":24,"kind":24,"src":{"id":2034,"line":619,"column":45,"start":22025,"end":22037,"length":13,"parent_index":2027},"argument_types":[{"type_identifier":"t_contract$_SafeERC20_$1854","type_string":"contract SafeERC20"}],"arguments":[{"id":2039,"node_type":16,"src":{"id":2040,"line":619,"column":53,"start":22033,"end":22036,"length":4,"parent_index":2033},"name":"this","type_description":{"type_identifier":"t_contract$_SafeERC20_$1854","type_string":"contract SafeERC20"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":2035,"node_type":16,"src":{"id":2036,"line":619,"column":45,"start":22025,"end":22031,"length":7,"parent_index":2033},"name":"address","type_name":{"id":2037,"node_type":30,"src":{"id":2038,"line":619,"column":45,"start":22025,"end":22031,"length":7,"parent_index":2035},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":2041,"node_type":16,"src":{"id":2042,"line":619,"column":60,"start":22040,"end":22046,"length":7,"parent_index":2027},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2041,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":2029,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2030,"line":619,"column":29,"start":22009,"end":22023,"length":15,"parent_index":2027},"expression":{"id":2031,"node_type":16,"src":{"id":2032,"line":619,"column":29,"start":22009,"end":22013,"length":5,"parent_index":2029},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false},"member_name":"allowance","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_address$","type_string":"function(function(address),address)"}},"right_expression":{"id":2043,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":2044,"line":619,"column":72,"start":22052,"end":22052,"length":1,"parent_index":2025},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}}],"type_description":{"type_identifier":"t_tuple_$_t_bool$","type_string":"tuple(bool)"}},"type_description":{"type_identifier":"t_tuple_$_t_bool$","type_string":"tuple(bool)"}},{"id":2045,"node_type":17,"kind":50,"value":"SafeERC20: approve from non-zero to non-zero allowance","hex_value":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","src":{"id":2046,"line":620,"column":12,"start":22068,"end":22123,"length":56,"parent_index":2009},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_tuple_$_t_bool$","type_string":"tuple(bool)"}]}],"expression":{"id":2011,"node_type":16,"src":{"id":2012,"line":618,"column":8,"start":21971,"end":21977,"length":7,"parent_index":2009},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_tuple_$_t_bool$_t_string_literal$","type_string":"function(tuple(bool),string memory)"}},{"id":2047,"node_type":24,"kind":24,"src":{"id":2048,"line":622,"column":8,"start":22144,"end":22233,"length":90,"parent_index":2007},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}],"arguments":[{"id":2051,"node_type":16,"src":{"id":2052,"line":622,"column":28,"start":22164,"end":22168,"length":5,"parent_index":2047},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false},{"id":2053,"node_type":24,"kind":24,"src":{"id":2054,"line":622,"column":35,"start":22171,"end":22232,"length":62,"parent_index":2047},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":2059,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2060,"line":622,"column":58,"start":22194,"end":22215,"length":22,"parent_index":2053},"expression":{"id":2061,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2062,"line":622,"column":58,"start":22194,"end":22206,"length":13,"parent_index":2059},"expression":{"id":2063,"node_type":16,"src":{"id":2064,"line":622,"column":58,"start":22194,"end":22198,"length":5,"parent_index":2061},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false},"member_name":"approve","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"member_name":"selector","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},{"id":2065,"node_type":16,"src":{"id":2066,"line":622,"column":82,"start":22218,"end":22224,"length":7,"parent_index":2053},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2065,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":2067,"node_type":16,"src":{"id":2068,"line":622,"column":91,"start":22227,"end":22231,"length":5,"parent_index":2053},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":2067,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":2055,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2056,"line":622,"column":35,"start":22171,"end":22192,"length":22,"parent_index":2053},"expression":{"id":2057,"node_type":16,"src":{"id":2058,"line":622,"column":35,"start":22171,"end":22173,"length":3,"parent_index":2055},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"encodeWithSelector","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}}],"expression":{"id":2049,"node_type":16,"src":{"id":2050,"line":622,"column":8,"start":22144,"end":22162,"length":19,"parent_index":2047},"name":"_callOptionalReturn","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,function(address,address,uint256))"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":1990,"node_type":43,"src":{"id":1991,"line":611,"column":8,"start":21668,"end":21727,"length":60,"parent_index":1988},"parameters":[{"id":1992,"node_type":44,"src":{"id":1993,"line":611,"column":8,"start":21668,"end":21679,"length":12,"parent_index":1990},"scope":1988,"name":"token","type_name":{"id":1994,"node_type":69,"src":{"id":1995,"line":611,"column":8,"start":21668,"end":21673,"length":6,"parent_index":1992},"type_description":{"type_identifier":"t_function_$","type_string":"function()"},"path_node":{"id":1996,"name":"IERC20","node_type":52,"referenced_declaration":0,"src":{"id":1997,"line":611,"column":8,"start":21668,"end":21673,"length":6,"parent_index":1994}},"referenced_declaration":2570},"storage_location":2,"visibility":1,"state_mutability":1},{"id":1998,"node_type":44,"src":{"id":1999,"line":612,"column":8,"start":21690,"end":21704,"length":15,"parent_index":1990},"scope":1988,"name":"spender","type_name":{"id":2000,"node_type":30,"src":{"id":2001,"line":612,"column":8,"start":21690,"end":21696,"length":7,"parent_index":1998},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2002,"node_type":44,"src":{"id":2003,"line":613,"column":8,"start":21715,"end":21727,"length":13,"parent_index":1990},"scope":1988,"name":"value","type_name":{"id":2004,"node_type":30,"src":{"id":2005,"line":613,"column":8,"start":21715,"end":21721,"length":7,"parent_index":2002},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[null,{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":2006,"node_type":43,"src":{"id":1989,"line":610,"column":4,"start":21638,"end":22240,"length":603,"parent_index":1988},"parameters":[],"parameter_types":[]},"scope":1885,"type_description":{"type_identifier":"t_function_$_t_unknown_1988$_t_address$_t_uint256$","type_string":"function(unknown_1988,address,uint256)"}},{"id":2070,"name":"safeIncreaseAllowance","node_type":42,"kind":41,"src":{"id":2071,"line":625,"column":4,"start":22247,"end":22556,"length":310,"parent_index":1885},"body":{"id":2089,"node_type":46,"kind":0,"src":{"id":2090,"line":629,"column":15,"start":22363,"end":22556,"length":194,"parent_index":2070},"implemented":true,"statements":[{"id":2091,"node_type":44,"src":{"id":2092,"line":630,"column":8,"start":22373,"end":22443,"length":71,"parent_index":2089},"assignments":[2093],"declarations":[{"is_constant":false,"id":2093,"state_mutability":1,"name":"newAllowance","node_type":44,"scope":2089,"src":{"id":2094,"line":630,"column":8,"start":22373,"end":22392,"length":20,"parent_index":2091},"is_state_variable":false,"storage_location":1,"type_name":{"id":2095,"node_type":30,"src":{"id":2096,"line":630,"column":8,"start":22373,"end":22379,"length":7,"parent_index":2093},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":2097,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2098,"line":630,"column":31,"start":22396,"end":22442,"length":47,"parent_index":2091},"operator":1,"left_expression":{"id":2099,"node_type":24,"kind":24,"src":{"id":2100,"line":630,"column":31,"start":22396,"end":22434,"length":39,"parent_index":2091},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2105,"node_type":24,"kind":24,"src":{"id":2106,"line":630,"column":47,"start":22412,"end":22424,"length":13,"parent_index":2099},"argument_types":[{"type_identifier":"t_contract$_SafeERC20_$1854","type_string":"contract SafeERC20"}],"arguments":[{"id":2111,"node_type":16,"src":{"id":2112,"line":630,"column":55,"start":22420,"end":22423,"length":4,"parent_index":2105},"name":"this","type_description":{"type_identifier":"t_contract$_SafeERC20_$1854","type_string":"contract SafeERC20"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":2107,"node_type":16,"src":{"id":2108,"line":630,"column":47,"start":22412,"end":22418,"length":7,"parent_index":2105},"name":"address","type_name":{"id":2109,"node_type":30,"src":{"id":2110,"line":630,"column":47,"start":22412,"end":22418,"length":7,"parent_index":2107},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":2113,"node_type":16,"src":{"id":2114,"line":630,"column":62,"start":22427,"end":22433,"length":7,"parent_index":2099},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2113,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":2101,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2102,"line":630,"column":31,"start":22396,"end":22410,"length":15,"parent_index":2099},"expression":{"id":2103,"node_type":16,"src":{"id":2104,"line":630,"column":31,"start":22396,"end":22400,"length":5,"parent_index":2101},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false},"member_name":"allowance","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_address$","type_string":"function(function(address),address)"}},"right_expression":{"id":2115,"node_type":16,"src":{"id":2116,"line":630,"column":73,"start":22438,"end":22442,"length":5,"parent_index":2097},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":2115,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_address$","type_string":"function(function(address),address)"}}},{"id":2117,"node_type":24,"kind":24,"src":{"id":2118,"line":631,"column":8,"start":22453,"end":22549,"length":97,"parent_index":2089},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}],"arguments":[{"id":2121,"node_type":16,"src":{"id":2122,"line":631,"column":28,"start":22473,"end":22477,"length":5,"parent_index":2117},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false},{"id":2123,"node_type":24,"kind":24,"src":{"id":2124,"line":631,"column":35,"start":22480,"end":22548,"length":69,"parent_index":2117},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":2129,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2130,"line":631,"column":58,"start":22503,"end":22524,"length":22,"parent_index":2123},"expression":{"id":2131,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2132,"line":631,"column":58,"start":22503,"end":22515,"length":13,"parent_index":2129},"expression":{"id":2133,"node_type":16,"src":{"id":2134,"line":631,"column":58,"start":22503,"end":22507,"length":5,"parent_index":2131},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false},"member_name":"approve","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"member_name":"selector","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},{"id":2135,"node_type":16,"src":{"id":2136,"line":631,"column":82,"start":22527,"end":22533,"length":7,"parent_index":2123},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2135,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":2137,"node_type":16,"src":{"id":2138,"line":631,"column":91,"start":22536,"end":22547,"length":12,"parent_index":2123},"name":"newAllowance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":2091,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":2125,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2126,"line":631,"column":35,"start":22480,"end":22501,"length":22,"parent_index":2123},"expression":{"id":2127,"node_type":16,"src":{"id":2128,"line":631,"column":35,"start":22480,"end":22482,"length":3,"parent_index":2125},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"encodeWithSelector","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}}],"expression":{"id":2119,"node_type":16,"src":{"id":2120,"line":631,"column":8,"start":22453,"end":22471,"length":19,"parent_index":2117},"name":"_callOptionalReturn","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,function(address,address,uint256))"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2072,"node_type":43,"src":{"id":2073,"line":626,"column":8,"start":22287,"end":22346,"length":60,"parent_index":2070},"parameters":[{"id":2074,"node_type":44,"src":{"id":2075,"line":626,"column":8,"start":22287,"end":22298,"length":12,"parent_index":2072},"scope":2070,"name":"token","type_name":{"id":2076,"node_type":69,"src":{"id":2077,"line":626,"column":8,"start":22287,"end":22292,"length":6,"parent_index":2074},"type_description":{"type_identifier":"t_function_$","type_string":"function()"},"path_node":{"id":2078,"name":"IERC20","node_type":52,"referenced_declaration":0,"src":{"id":2079,"line":626,"column":8,"start":22287,"end":22292,"length":6,"parent_index":2076}},"referenced_declaration":2570},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2080,"node_type":44,"src":{"id":2081,"line":627,"column":8,"start":22309,"end":22323,"length":15,"parent_index":2072},"scope":2070,"name":"spender","type_name":{"id":2082,"node_type":30,"src":{"id":2083,"line":627,"column":8,"start":22309,"end":22315,"length":7,"parent_index":2080},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2084,"node_type":44,"src":{"id":2085,"line":628,"column":8,"start":22334,"end":22346,"length":13,"parent_index":2072},"scope":2070,"name":"value","type_name":{"id":2086,"node_type":30,"src":{"id":2087,"line":628,"column":8,"start":22334,"end":22340,"length":7,"parent_index":2084},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[null,{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":2088,"node_type":43,"src":{"id":2071,"line":625,"column":4,"start":22247,"end":22556,"length":310,"parent_index":2070},"parameters":[],"parameter_types":[]},"scope":1885,"type_description":{"type_identifier":"t_function_$_t_unknown_2070$_t_address$_t_uint256$","type_string":"function(unknown_2070,address,uint256)"}},{"id":2140,"name":"safeDecreaseAllowance","node_type":42,"kind":41,"src":{"id":2141,"line":634,"column":4,"start":22563,"end":23048,"length":486,"parent_index":1885},"body":{"id":2159,"node_type":46,"kind":0,"src":{"id":2160,"line":638,"column":15,"start":22679,"end":23048,"length":370,"parent_index":2140},"implemented":true,"statements":[{"id":2161,"node_type":59,"kind":0,"src":{"id":2162,"line":639,"column":8,"start":22689,"end":23042,"length":354,"parent_index":1885},"implemented":false,"statements":[{"id":2163,"node_type":44,"src":{"id":2164,"line":640,"column":12,"start":22713,"end":22775,"length":63,"parent_index":2161},"assignments":[2165],"declarations":[{"is_constant":false,"id":2165,"state_mutability":1,"name":"oldAllowance","node_type":44,"scope":2161,"src":{"id":2166,"line":640,"column":12,"start":22713,"end":22732,"length":20,"parent_index":2163},"is_state_variable":false,"storage_location":1,"type_name":{"id":2167,"node_type":30,"src":{"id":2168,"line":640,"column":12,"start":22713,"end":22719,"length":7,"parent_index":2165},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":2169,"node_type":24,"kind":24,"src":{"id":2170,"line":640,"column":35,"start":22736,"end":22774,"length":39,"parent_index":2163},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2175,"node_type":24,"kind":24,"src":{"id":2176,"line":640,"column":51,"start":22752,"end":22764,"length":13,"parent_index":2169},"argument_types":[{"type_identifier":"t_contract$_SafeERC20_$1854","type_string":"contract SafeERC20"}],"arguments":[{"id":2181,"node_type":16,"src":{"id":2182,"line":640,"column":59,"start":22760,"end":22763,"length":4,"parent_index":2175},"name":"this","type_description":{"type_identifier":"t_contract$_SafeERC20_$1854","type_string":"contract SafeERC20"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":2177,"node_type":16,"src":{"id":2178,"line":640,"column":51,"start":22752,"end":22758,"length":7,"parent_index":2175},"name":"address","type_name":{"id":2179,"node_type":30,"src":{"id":2180,"line":640,"column":51,"start":22752,"end":22758,"length":7,"parent_index":2177},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":2183,"node_type":16,"src":{"id":2184,"line":640,"column":66,"start":22767,"end":22773,"length":7,"parent_index":2169},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2183,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]}],"expression":{"id":2171,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2172,"line":640,"column":35,"start":22736,"end":22750,"length":15,"parent_index":2169},"expression":{"id":2173,"node_type":16,"src":{"id":2174,"line":640,"column":35,"start":22736,"end":22740,"length":5,"parent_index":2171},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false},"member_name":"allowance","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_address$","type_string":"function(function(address),address)"}}},{"id":2185,"node_type":24,"kind":24,"src":{"id":2186,"line":641,"column":12,"start":22789,"end":22863,"length":75,"parent_index":2161},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"SafeERC20: decreased allowance below zero\""}],"arguments":[{"id":2189,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2190,"line":641,"column":20,"start":22797,"end":22817,"length":21,"parent_index":2185},"operator":8,"left_expression":{"id":2191,"node_type":16,"src":{"id":2192,"line":641,"column":20,"start":22797,"end":22808,"length":12,"parent_index":2189},"name":"oldAllowance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":2163,"is_pure":false},"right_expression":{"id":2193,"node_type":16,"src":{"id":2194,"line":641,"column":36,"start":22813,"end":22817,"length":5,"parent_index":2189},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":2193,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":2195,"node_type":17,"kind":50,"value":"SafeERC20: decreased allowance below zero","hex_value":"5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","src":{"id":2196,"line":641,"column":43,"start":22820,"end":22862,"length":43,"parent_index":2185},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"SafeERC20: decreased allowance below zero\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":2187,"node_type":16,"src":{"id":2188,"line":641,"column":12,"start":22789,"end":22795,"length":7,"parent_index":2185},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":2197,"node_type":44,"src":{"id":2198,"line":642,"column":12,"start":22878,"end":22921,"length":44,"parent_index":2161},"assignments":[2199],"declarations":[{"is_constant":false,"id":2199,"state_mutability":1,"name":"newAllowance","node_type":44,"scope":2161,"src":{"id":2200,"line":642,"column":12,"start":22878,"end":22897,"length":20,"parent_index":2197},"is_state_variable":false,"storage_location":1,"type_name":{"id":2201,"node_type":30,"src":{"id":2202,"line":642,"column":12,"start":22878,"end":22884,"length":7,"parent_index":2199},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":2203,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2204,"line":642,"column":35,"start":22901,"end":22920,"length":20,"parent_index":2197},"operator":2,"left_expression":{"id":2205,"node_type":16,"src":{"id":2206,"line":642,"column":35,"start":22901,"end":22912,"length":12,"parent_index":2203},"name":"oldAllowance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":2163,"is_pure":false},"right_expression":{"id":2207,"node_type":16,"src":{"id":2208,"line":642,"column":50,"start":22916,"end":22920,"length":5,"parent_index":2203},"name":"value","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":2207,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}},{"id":2209,"node_type":24,"kind":24,"src":{"id":2210,"line":643,"column":12,"start":22935,"end":23031,"length":97,"parent_index":2161},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}],"arguments":[{"id":2213,"node_type":16,"src":{"id":2214,"line":643,"column":32,"start":22955,"end":22959,"length":5,"parent_index":2209},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false},{"id":2215,"node_type":24,"kind":24,"src":{"id":2216,"line":643,"column":39,"start":22962,"end":23030,"length":69,"parent_index":2209},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":2221,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2222,"line":643,"column":62,"start":22985,"end":23006,"length":22,"parent_index":2215},"expression":{"id":2223,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2224,"line":643,"column":62,"start":22985,"end":22997,"length":13,"parent_index":2221},"expression":{"id":2225,"node_type":16,"src":{"id":2226,"line":643,"column":62,"start":22985,"end":22989,"length":5,"parent_index":2223},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false},"member_name":"approve","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"member_name":"selector","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},{"id":2227,"node_type":16,"src":{"id":2228,"line":643,"column":86,"start":23009,"end":23015,"length":7,"parent_index":2215},"name":"spender","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2227,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":2229,"node_type":16,"src":{"id":2230,"line":643,"column":95,"start":23018,"end":23029,"length":12,"parent_index":2215},"name":"newAllowance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":2197,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":2217,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2218,"line":643,"column":39,"start":22962,"end":22983,"length":22,"parent_index":2215},"expression":{"id":2219,"node_type":16,"src":{"id":2220,"line":643,"column":39,"start":22962,"end":22964,"length":3,"parent_index":2217},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"encodeWithSelector","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}}],"expression":{"id":2211,"node_type":16,"src":{"id":2212,"line":643,"column":12,"start":22935,"end":22953,"length":19,"parent_index":2209},"name":"_callOptionalReturn","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,function(address,address,uint256))"}}]}]},"implemented":false,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2142,"node_type":43,"src":{"id":2143,"line":635,"column":8,"start":22603,"end":22662,"length":60,"parent_index":2140},"parameters":[{"id":2144,"node_type":44,"src":{"id":2145,"line":635,"column":8,"start":22603,"end":22614,"length":12,"parent_index":2142},"scope":2140,"name":"token","type_name":{"id":2146,"node_type":69,"src":{"id":2147,"line":635,"column":8,"start":22603,"end":22608,"length":6,"parent_index":2144},"type_description":{"type_identifier":"t_function_$","type_string":"function()"},"path_node":{"id":2148,"name":"IERC20","node_type":52,"referenced_declaration":0,"src":{"id":2149,"line":635,"column":8,"start":22603,"end":22608,"length":6,"parent_index":2146}},"referenced_declaration":2570},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2150,"node_type":44,"src":{"id":2151,"line":636,"column":8,"start":22625,"end":22639,"length":15,"parent_index":2142},"scope":2140,"name":"spender","type_name":{"id":2152,"node_type":30,"src":{"id":2153,"line":636,"column":8,"start":22625,"end":22631,"length":7,"parent_index":2150},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2154,"node_type":44,"src":{"id":2155,"line":637,"column":8,"start":22650,"end":22662,"length":13,"parent_index":2142},"scope":2140,"name":"value","type_name":{"id":2156,"node_type":30,"src":{"id":2157,"line":637,"column":8,"start":22650,"end":22656,"length":7,"parent_index":2154},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[null,{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":2158,"node_type":43,"src":{"id":2141,"line":634,"column":4,"start":22563,"end":23048,"length":486,"parent_index":2140},"parameters":[],"parameter_types":[]},"scope":1885,"type_description":{"type_identifier":"t_function_$_t_unknown_2140$_t_address$_t_uint256$","type_string":"function(unknown_2140,address,uint256)"}},{"id":2232,"name":"_callOptionalReturn","node_type":42,"kind":41,"src":{"id":2233,"line":653,"column":4,"start":23432,"end":24137,"length":706,"parent_index":1885},"body":{"id":2247,"node_type":46,"kind":0,"src":{"id":2248,"line":653,"column":74,"start":23502,"end":24137,"length":636,"parent_index":2232},"implemented":true,"statements":[{"id":2249,"node_type":44,"src":{"id":2250,"line":658,"column":8,"start":23851,"end":23946,"length":96,"parent_index":2247},"assignments":[2251],"declarations":[{"is_constant":false,"id":2251,"state_mutability":1,"name":"returndata","node_type":44,"scope":2247,"src":{"id":2252,"line":658,"column":8,"start":23851,"end":23873,"length":23,"parent_index":2249},"is_state_variable":false,"storage_location":2,"type_name":{"id":2253,"node_type":30,"src":{"id":2254,"line":658,"column":8,"start":23851,"end":23855,"length":5,"parent_index":2251},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":2255,"node_type":24,"kind":24,"src":{"id":2256,"line":658,"column":34,"start":23877,"end":23945,"length":69,"parent_index":2249},"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_string_literal","type_string":"literal_string \"SafeERC20: low-level call failed\""}],"arguments":[{"id":2267,"node_type":16,"src":{"id":2268,"line":658,"column":62,"start":23905,"end":23908,"length":4,"parent_index":2255},"name":"data","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":2267,"is_pure":false},{"id":2269,"node_type":17,"kind":50,"value":"SafeERC20: low-level call failed","hex_value":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","src":{"id":2270,"line":658,"column":68,"start":23911,"end":23944,"length":34,"parent_index":2255},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"SafeERC20: low-level call failed\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]}],"expression":{"id":2257,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2258,"line":658,"column":34,"start":23877,"end":23903,"length":27,"parent_index":2255},"expression":{"id":2259,"node_type":24,"kind":24,"src":{"id":2260,"line":658,"column":34,"start":23877,"end":23890,"length":14,"parent_index":2257},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2265,"node_type":16,"src":{"id":2266,"line":658,"column":42,"start":23885,"end":23889,"length":5,"parent_index":2259},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false}],"expression":{"id":2261,"node_type":16,"src":{"id":2262,"line":658,"column":34,"start":23877,"end":23883,"length":7,"parent_index":2259},"name":"address","type_name":{"id":2263,"node_type":30,"src":{"id":2264,"line":658,"column":34,"start":23877,"end":23883,"length":7,"parent_index":2261},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"functionCall","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"type_description":{"type_identifier":"t_function_$_t_bytes$_t_string_literal$","type_string":"function(bytes,string memory)"}}},{"id":2271,"node_type":48,"src":{"id":2272,"line":659,"column":0,"start":23956,"end":24131,"length":176,"parent_index":2247},"condition":{"id":2273,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2274,"line":659,"column":12,"start":23960,"end":23980,"length":21,"parent_index":2271},"operator":7,"left_expression":{"id":2275,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2276,"line":659,"column":12,"start":23960,"end":23976,"length":17,"parent_index":2273},"expression":{"id":2277,"node_type":16,"src":{"id":2278,"line":659,"column":12,"start":23960,"end":23969,"length":10,"parent_index":2275},"name":"returndata","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":2249,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_bytes","type_string":"bytes"}},"right_expression":{"id":2279,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":2280,"line":659,"column":32,"start":23980,"end":23980,"length":1,"parent_index":2273},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":2281,"node_type":46,"kind":0,"src":{"id":2282,"line":659,"column":35,"start":23983,"end":24131,"length":149,"parent_index":2232},"implemented":true,"statements":[{"id":2283,"node_type":24,"kind":24,"src":{"id":2284,"line":661,"column":12,"start":24036,"end":24120,"length":85,"parent_index":2281},"argument_types":[{"type_identifier":"t_function_$_t_function_$_t_tuple_$_t_bool$","type_string":"function(function(),tuple(bool))"},{"type_identifier":"t_string_literal","type_string":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"arguments":[{"id":2287,"node_type":24,"kind":24,"src":{"id":2288,"line":661,"column":20,"start":24044,"end":24073,"length":30,"parent_index":2283},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_tuple_$_t_bool$","type_string":"tuple(bool)"}],"arguments":[{"id":2293,"node_type":16,"src":{"id":2294,"line":661,"column":31,"start":24055,"end":24064,"length":10,"parent_index":2287},"name":"returndata","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":2295,"node_type":60,"src":{"id":2296,"line":661,"column":43,"start":24067,"end":24072,"length":6,"parent_index":2287},"is_constant":false,"is_pure":false,"components":[{"id":2297,"node_type":16,"src":{"id":2298,"line":661,"column":44,"start":24068,"end":24071,"length":4,"parent_index":2295},"name":"bool","type_name":{"id":2299,"node_type":30,"src":{"id":2300,"line":661,"column":44,"start":24068,"end":24071,"length":4,"parent_index":2297},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_bool$","type_string":"tuple(bool)"}}],"expression":{"id":2289,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2290,"line":661,"column":20,"start":24044,"end":24053,"length":10,"parent_index":2287},"expression":{"id":2291,"node_type":16,"src":{"id":2292,"line":661,"column":20,"start":24044,"end":24046,"length":3,"parent_index":2289},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"decode","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_tuple_$_t_bool$","type_string":"function(function(),tuple(bool))"}},{"id":2301,"node_type":17,"kind":50,"value":"SafeERC20: ERC20 operation did not succeed","hex_value":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","src":{"id":2302,"line":661,"column":52,"start":24076,"end":24119,"length":44,"parent_index":2283},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"SafeERC20: ERC20 operation did not succeed\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_function_$_t_function_$_t_tuple_$_t_bool$","type_string":"function(function(),tuple(bool))"}]}],"expression":{"id":2285,"node_type":16,"src":{"id":2286,"line":661,"column":12,"start":24036,"end":24042,"length":7,"parent_index":2283},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_tuple_$_t_bool$_t_string_literal$","type_string":"function(function(function(),tuple(bool)),string memory)"}}]}}]},"implemented":true,"visibility":2,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2234,"node_type":43,"src":{"id":2235,"line":653,"column":33,"start":23461,"end":23491,"length":31,"parent_index":2232},"parameters":[{"id":2236,"node_type":44,"src":{"id":2237,"line":653,"column":33,"start":23461,"end":23472,"length":12,"parent_index":2234},"scope":2232,"name":"token","type_name":{"id":2238,"node_type":69,"src":{"id":2239,"line":653,"column":33,"start":23461,"end":23466,"length":6,"parent_index":2236},"type_description":{"type_identifier":"t_function_$","type_string":"function()"},"path_node":{"id":2240,"name":"IERC20","node_type":52,"referenced_declaration":0,"src":{"id":2241,"line":653,"column":33,"start":23461,"end":23466,"length":6,"parent_index":2238}},"referenced_declaration":2570},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2242,"node_type":44,"src":{"id":2243,"line":653,"column":47,"start":23475,"end":23491,"length":17,"parent_index":2234},"scope":2232,"name":"data","type_name":{"id":2244,"node_type":30,"src":{"id":2245,"line":653,"column":47,"start":23475,"end":23479,"length":5,"parent_index":2242},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[null,{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":2246,"node_type":43,"src":{"id":2233,"line":653,"column":4,"start":23432,"end":24137,"length":706,"parent_index":2232},"parameters":[],"parameter_types":[]},"scope":1885,"type_description":{"type_identifier":"t_function_$_t_unknown_2232$_t_bytes$","type_string":"function(unknown_2232,bytes)"}}],"linearized_base_contracts":[1885],"base_contracts":[],"contract_dependencies":[],"scope":1854}],"src":{"id":1855,"line":583,"column":0,"start":20870,"end":24139,"length":3270,"parent_index":263}},{"id":2303,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":2303,"name":"IWETH","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IWETH.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IWETH.sol","name":"IWETH","node_type":1,"nodes":[{"id":2325,"node_type":10,"src":{"id":2326,"line":669,"column":0,"start":24189,"end":24211,"length":23,"parent_index":2303},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":2363,"name":"IWETH","node_type":35,"src":{"id":0,"line":671,"column":0,"start":24214,"end":24390,"length":177,"parent_index":2303},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":2365,"name":"deposit","node_type":42,"kind":41,"src":{"id":2366,"line":672,"column":4,"start":24236,"end":24271,"length":36,"parent_index":2363},"body":{"id":2369,"node_type":46,"kind":0,"src":{"id":2366,"line":672,"column":4,"start":24236,"end":24271,"length":36,"parent_index":2365},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":3,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2367,"node_type":43,"src":{"id":2366,"line":672,"column":4,"start":24236,"end":24271,"length":36,"parent_index":2365},"parameters":[],"parameter_types":[]},"return_parameters":{"id":2368,"node_type":43,"src":{"id":2366,"line":672,"column":4,"start":24236,"end":24271,"length":36,"parent_index":2365},"parameters":[],"parameter_types":[]},"scope":2363,"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},{"id":2371,"name":"transfer","node_type":42,"kind":41,"src":{"id":2372,"line":674,"column":4,"start":24278,"end":24346,"length":69,"parent_index":2363},"body":{"id":2389,"node_type":46,"kind":0,"src":{"id":2372,"line":674,"column":4,"start":24278,"end":24346,"length":69,"parent_index":2371},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2373,"node_type":43,"src":{"id":2374,"line":674,"column":22,"start":24296,"end":24320,"length":25,"parent_index":2371},"parameters":[{"id":2375,"node_type":44,"src":{"id":2376,"line":674,"column":22,"start":24296,"end":24305,"length":10,"parent_index":2373},"scope":2371,"name":"to","type_name":{"id":2377,"node_type":30,"src":{"id":2378,"line":674,"column":22,"start":24296,"end":24302,"length":7,"parent_index":2375},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2379,"node_type":44,"src":{"id":2380,"line":674,"column":34,"start":24308,"end":24320,"length":13,"parent_index":2373},"scope":2371,"name":"value","type_name":{"id":2381,"node_type":30,"src":{"id":2382,"line":674,"column":34,"start":24308,"end":24314,"length":7,"parent_index":2379},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":2383,"node_type":43,"src":{"id":2384,"line":674,"column":67,"start":24341,"end":24344,"length":4,"parent_index":2371},"parameters":[{"id":2385,"node_type":44,"src":{"id":2386,"line":674,"column":67,"start":24341,"end":24344,"length":4,"parent_index":2383},"scope":2371,"name":"","type_name":{"id":2387,"node_type":30,"src":{"id":2388,"line":674,"column":67,"start":24341,"end":24344,"length":4,"parent_index":2385},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":2363,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}},{"id":2391,"name":"withdraw","node_type":42,"kind":41,"src":{"id":2392,"line":676,"column":4,"start":24353,"end":24388,"length":36,"parent_index":2363},"body":{"id":2400,"node_type":46,"kind":0,"src":{"id":2392,"line":676,"column":4,"start":24353,"end":24388,"length":36,"parent_index":2391},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2393,"node_type":43,"src":{"id":2394,"line":676,"column":22,"start":24371,"end":24377,"length":7,"parent_index":2391},"parameters":[{"id":2395,"node_type":44,"src":{"id":2396,"line":676,"column":22,"start":24371,"end":24377,"length":7,"parent_index":2393},"scope":2391,"name":"","type_name":{"id":2397,"node_type":30,"src":{"id":2398,"line":676,"column":22,"start":24371,"end":24377,"length":7,"parent_index":2395},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":2399,"node_type":43,"src":{"id":2392,"line":676,"column":4,"start":24353,"end":24388,"length":36,"parent_index":2391},"parameters":[],"parameter_types":[]},"scope":2363,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}}],"linearized_base_contracts":[2363],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":2304,"line":671,"column":0,"start":24214,"end":24390,"length":177,"parent_index":263}},{"id":2401,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":2401,"name":"TokenAdapter","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/TokenAdapter.sol"},{"id":2303,"name":"SafeERC20","absolute_path":"SafeERC20.sol"},{"id":2303,"name":"IWETH","absolute_path":"IWETH.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/TokenAdapter.sol","name":"TokenAdapter","node_type":1,"nodes":[{"id":2425,"node_type":10,"src":{"id":2426,"line":681,"column":0,"start":24439,"end":24461,"length":23,"parent_index":2401},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":2436,"node_type":29,"src":{"id":0,"line":683,"column":0,"start":24464,"end":24488,"length":25,"parent_index":2401},"absolute_path":"SafeERC20.sol","file":"./SafeERC20.sol","scope":2401,"unit_alias":"","source_unit":2303},{"id":2437,"node_type":29,"src":{"id":0,"line":684,"column":0,"start":24490,"end":24510,"length":21,"parent_index":2401},"absolute_path":"IWETH.sol","file":"./IWETH.sol","scope":2401,"unit_alias":"","source_unit":2303},{"id":2438,"name":"TokenAdapter","node_type":35,"src":{"id":0,"line":688,"column":0,"start":24582,"end":25818,"length":1237,"parent_index":2401},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":2440,"node_type":51,"src":{"id":2441,"line":689,"column":0,"start":24619,"end":24645,"length":27,"parent_index":2438},"type_description":{"type_identifier":"t_function_$","type_string":"function()"},"type_name":{"id":2442,"node_type":69,"src":{"id":2443,"line":689,"column":24,"start":24639,"end":24644,"length":6,"parent_index":2440},"type_description":{"type_identifier":"t_function_$","type_string":"function()"},"path_node":{"id":2444,"name":"IERC20","node_type":52,"referenced_declaration":0,"src":{"id":2445,"line":689,"column":24,"start":24639,"end":24644,"length":6,"parent_index":2442}},"referenced_declaration":2570},"library_name":{"id":2446,"node_type":52,"src":{"id":2447,"line":689,"column":0,"start":24625,"end":24633,"length":9,"parent_index":2440},"name":"SafeERC20","referenced_declaration":2570}},{"id":2449,"name":"_transferTokens","node_type":42,"kind":41,"src":{"id":2450,"line":695,"column":4,"start":24822,"end":25091,"length":270,"parent_index":2438},"body":{"id":2468,"node_type":46,"kind":0,"src":{"id":2469,"line":699,"column":15,"start":24928,"end":25091,"length":164,"parent_index":2449},"implemented":true,"statements":[{"id":2470,"node_type":48,"src":{"id":2471,"line":700,"column":0,"start":24938,"end":25085,"length":148,"parent_index":2468},"condition":{"id":2472,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":2473,"line":700,"column":12,"start":24942,"end":24969,"length":28,"parent_index":2470},"operator":12,"left_expression":{"id":2474,"node_type":24,"kind":24,"src":{"id":2475,"line":700,"column":12,"start":24942,"end":24955,"length":14,"parent_index":2472},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2480,"node_type":16,"src":{"id":2481,"line":700,"column":20,"start":24950,"end":24954,"length":5,"parent_index":2474},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false}],"expression":{"id":2476,"node_type":16,"src":{"id":2477,"line":700,"column":12,"start":24942,"end":24948,"length":7,"parent_index":2474},"name":"address","type_name":{"id":2478,"node_type":30,"src":{"id":2479,"line":700,"column":12,"start":24942,"end":24948,"length":7,"parent_index":2476},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"right_expression":{"id":2482,"node_type":24,"kind":24,"src":{"id":2483,"line":700,"column":30,"start":24960,"end":24969,"length":10,"parent_index":2472},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":2488,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":2489,"line":700,"column":38,"start":24968,"end":24968,"length":1,"parent_index":2482},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":2484,"node_type":16,"src":{"id":2485,"line":700,"column":30,"start":24960,"end":24966,"length":7,"parent_index":2482},"name":"address","type_name":{"id":2486,"node_type":30,"src":{"id":2487,"line":700,"column":30,"start":24960,"end":24966,"length":7,"parent_index":2484},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":2490,"node_type":46,"kind":0,"src":{"id":2491,"line":700,"column":42,"start":24972,"end":25026,"length":55,"parent_index":2449},"implemented":true,"statements":[{"id":2492,"node_type":24,"kind":24,"src":{"id":2493,"line":701,"column":12,"start":24986,"end":25015,"length":30,"parent_index":2490},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":2498,"node_type":16,"src":{"id":2499,"line":701,"column":31,"start":25005,"end":25006,"length":2,"parent_index":2492},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2498,"is_pure":false},{"id":2500,"node_type":16,"src":{"id":2501,"line":701,"column":35,"start":25009,"end":25014,"length":6,"parent_index":2492},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":2500,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":2494,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2495,"line":701,"column":12,"start":24986,"end":25003,"length":18,"parent_index":2492},"expression":{"id":2496,"node_type":16,"src":{"id":2497,"line":701,"column":12,"start":24986,"end":24990,"length":5,"parent_index":2494},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false},"member_name":"safeTransfer","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}}]}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2451,"node_type":43,"src":{"id":2452,"line":696,"column":8,"start":24856,"end":24911,"length":56,"parent_index":2449},"parameters":[{"id":2453,"node_type":44,"src":{"id":2454,"line":696,"column":8,"start":24856,"end":24867,"length":12,"parent_index":2451},"scope":2449,"name":"token","type_name":{"id":2455,"node_type":69,"src":{"id":2456,"line":696,"column":8,"start":24856,"end":24861,"length":6,"parent_index":2453},"type_description":{"type_identifier":"t_function_$","type_string":"function()"},"path_node":{"id":2457,"name":"IERC20","node_type":52,"referenced_declaration":0,"src":{"id":2458,"line":696,"column":8,"start":24856,"end":24861,"length":6,"parent_index":2455}},"referenced_declaration":2570},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2459,"node_type":44,"src":{"id":2460,"line":697,"column":8,"start":24878,"end":24887,"length":10,"parent_index":2451},"scope":2449,"name":"to","type_name":{"id":2461,"node_type":30,"src":{"id":2462,"line":697,"column":8,"start":24878,"end":24884,"length":7,"parent_index":2459},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2463,"node_type":44,"src":{"id":2464,"line":698,"column":8,"start":24898,"end":24911,"length":14,"parent_index":2451},"scope":2449,"name":"amount","type_name":{"id":2465,"node_type":30,"src":{"id":2466,"line":698,"column":8,"start":24898,"end":24904,"length":7,"parent_index":2463},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[null,{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":2467,"node_type":43,"src":{"id":2450,"line":695,"column":4,"start":24822,"end":25091,"length":270,"parent_index":2449},"parameters":[],"parameter_types":[]},"scope":2438,"type_description":{"type_identifier":"t_function_$_t_unknown_2449$_t_address$_t_uint256$","type_string":"function(unknown_2449,address,uint256)"}},{"id":2503,"name":"_transferFromToken","node_type":42,"kind":41,"src":{"id":2504,"line":711,"column":4,"start":25277,"end":25448,"length":172,"parent_index":2438},"body":{"id":2522,"node_type":46,"kind":0,"src":{"id":2523,"line":715,"column":15,"start":25386,"end":25448,"length":63,"parent_index":2503},"implemented":true,"statements":[{"id":2524,"node_type":24,"kind":24,"src":{"id":2525,"line":716,"column":8,"start":25396,"end":25441,"length":46,"parent_index":2522},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":2530,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2531,"line":716,"column":31,"start":25419,"end":25428,"length":10,"parent_index":2524},"expression":{"id":2532,"node_type":16,"src":{"id":2533,"line":716,"column":31,"start":25419,"end":25421,"length":3,"parent_index":2530},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},{"id":2534,"node_type":16,"src":{"id":2535,"line":716,"column":43,"start":25431,"end":25432,"length":2,"parent_index":2524},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2534,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":2536,"node_type":16,"src":{"id":2537,"line":716,"column":47,"start":25435,"end":25440,"length":6,"parent_index":2524},"name":"amount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":2536,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":2526,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2527,"line":716,"column":8,"start":25396,"end":25417,"length":22,"parent_index":2524},"expression":{"id":2528,"node_type":16,"src":{"id":2529,"line":716,"column":8,"start":25396,"end":25400,"length":5,"parent_index":2526},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":837,"is_pure":false},"member_name":"safeTransferFrom","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2505,"node_type":43,"src":{"id":2506,"line":712,"column":8,"start":25314,"end":25369,"length":56,"parent_index":2503},"parameters":[{"id":2507,"node_type":44,"src":{"id":2508,"line":712,"column":8,"start":25314,"end":25325,"length":12,"parent_index":2505},"scope":2503,"name":"token","type_name":{"id":2509,"node_type":69,"src":{"id":2510,"line":712,"column":8,"start":25314,"end":25319,"length":6,"parent_index":2507},"type_description":{"type_identifier":"t_function_$","type_string":"function()"},"path_node":{"id":2511,"name":"IERC20","node_type":52,"referenced_declaration":0,"src":{"id":2512,"line":712,"column":8,"start":25314,"end":25319,"length":6,"parent_index":2509}},"referenced_declaration":2570},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2513,"node_type":44,"src":{"id":2514,"line":713,"column":8,"start":25336,"end":25345,"length":10,"parent_index":2505},"scope":2503,"name":"to","type_name":{"id":2515,"node_type":30,"src":{"id":2516,"line":713,"column":8,"start":25336,"end":25342,"length":7,"parent_index":2513},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2517,"node_type":44,"src":{"id":2518,"line":714,"column":8,"start":25356,"end":25369,"length":14,"parent_index":2505},"scope":2503,"name":"amount","type_name":{"id":2519,"node_type":30,"src":{"id":2520,"line":714,"column":8,"start":25356,"end":25362,"length":7,"parent_index":2517},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[null,{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":2521,"node_type":43,"src":{"id":2504,"line":711,"column":4,"start":25277,"end":25448,"length":172,"parent_index":2503},"parameters":[],"parameter_types":[]},"scope":2438,"type_description":{"type_identifier":"t_function_$_t_unknown_2503$_t_address$_t_uint256$","type_string":"function(unknown_2503,address,uint256)"}},{"id":2539,"name":"_unwrapTransfer","node_type":42,"kind":41,"src":{"id":2540,"line":722,"column":4,"start":25606,"end":25816,"length":211,"parent_index":2438},"body":{"id":2552,"node_type":46,"kind":0,"src":{"id":2553,"line":722,"column":65,"start":25667,"end":25816,"length":150,"parent_index":2539},"implemented":true,"statements":[{"id":2554,"node_type":24,"kind":24,"src":{"id":2555,"line":723,"column":8,"start":25677,"end":25737,"length":61,"parent_index":2552},"argument_types":[{"type_identifier":"t_function_$_t_function_$_t_address$","type_string":"function(function(address))"}],"arguments":[{"id":2564,"node_type":24,"kind":24,"src":{"id":2565,"line":723,"column":30,"start":25699,"end":25736,"length":38,"parent_index":2554},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}],"arguments":[{"id":2574,"node_type":24,"kind":24,"src":{"id":2575,"line":723,"column":54,"start":25723,"end":25735,"length":13,"parent_index":2564},"argument_types":[{"type_identifier":"t_contract$_TokenAdapter_$2401","type_string":"contract TokenAdapter"}],"arguments":[{"id":2580,"node_type":16,"src":{"id":2581,"line":723,"column":62,"start":25731,"end":25734,"length":4,"parent_index":2574},"name":"this","type_description":{"type_identifier":"t_contract$_TokenAdapter_$2401","type_string":"contract TokenAdapter"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":2576,"node_type":16,"src":{"id":2577,"line":723,"column":54,"start":25723,"end":25729,"length":7,"parent_index":2574},"name":"address","type_name":{"id":2578,"node_type":30,"src":{"id":2579,"line":723,"column":54,"start":25723,"end":25729,"length":7,"parent_index":2576},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}],"expression":{"id":2566,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2567,"line":723,"column":30,"start":25699,"end":25721,"length":23,"parent_index":2564},"expression":{"id":2568,"node_type":24,"kind":24,"src":{"id":2569,"line":723,"column":30,"start":25699,"end":25711,"length":13,"parent_index":2566},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2572,"node_type":16,"src":{"id":2573,"line":723,"column":37,"start":25706,"end":25710,"length":5,"parent_index":2568},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2572,"is_pure":false}],"expression":{"id":2570,"node_type":16,"src":{"id":2571,"line":723,"column":30,"start":25699,"end":25704,"length":6,"parent_index":2568},"name":"IERC20","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"balanceOf","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$","type_string":"function(function(address))"}}],"expression":{"id":2556,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2557,"line":723,"column":8,"start":25677,"end":25697,"length":21,"parent_index":2554},"expression":{"id":2558,"node_type":24,"kind":24,"src":{"id":2559,"line":723,"column":8,"start":25677,"end":25688,"length":12,"parent_index":2556},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":2562,"node_type":16,"src":{"id":2563,"line":723,"column":14,"start":25683,"end":25687,"length":5,"parent_index":2558},"name":"token","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2562,"is_pure":false}],"expression":{"id":2560,"node_type":16,"src":{"id":2561,"line":723,"column":8,"start":25677,"end":25681,"length":5,"parent_index":2558},"name":"IWETH","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"withdraw","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_address$","type_string":"function(function(function(address)))"}},{"id":2582,"node_type":24,"kind":24,"src":{"id":2583,"line":724,"column":8,"start":25748,"end":25809,"length":62,"parent_index":2552},"argument_types":[{"type_identifier":"t_function_$_t_function_$_t_rational_0_by_1$","type_string":"function(function(int_const 0))"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}],"arguments":[{"id":2586,"node_type":24,"kind":24,"src":{"id":2587,"line":724,"column":24,"start":25764,"end":25781,"length":18,"parent_index":2582},"argument_types":[{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}],"arguments":[{"id":2590,"node_type":24,"kind":24,"src":{"id":2591,"line":724,"column":31,"start":25771,"end":25780,"length":10,"parent_index":2586},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":2596,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":2597,"line":724,"column":39,"start":25779,"end":25779,"length":1,"parent_index":2590},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":2592,"node_type":16,"src":{"id":2593,"line":724,"column":31,"start":25771,"end":25777,"length":7,"parent_index":2590},"name":"address","type_name":{"id":2594,"node_type":30,"src":{"id":2595,"line":724,"column":31,"start":25771,"end":25777,"length":7,"parent_index":2592},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}}],"expression":{"id":2588,"node_type":16,"src":{"id":2589,"line":724,"column":24,"start":25764,"end":25769,"length":6,"parent_index":2586},"name":"IERC20","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_rational_0_by_1$","type_string":"function(function(int_const 0))"}},{"id":2598,"node_type":16,"src":{"id":2599,"line":724,"column":44,"start":25784,"end":25785,"length":2,"parent_index":2582},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":2598,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_function_$_t_rational_0_by_1$","type_string":"function(function(int_const 0))"}]},{"id":2600,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":2601,"line":724,"column":48,"start":25788,"end":25808,"length":21,"parent_index":2582},"expression":{"id":2602,"node_type":24,"kind":24,"src":{"id":2603,"line":724,"column":48,"start":25788,"end":25800,"length":13,"parent_index":2600},"argument_types":[{"type_identifier":"t_contract$_TokenAdapter_$2401","type_string":"contract TokenAdapter"}],"arguments":[{"id":2608,"node_type":16,"src":{"id":2609,"line":724,"column":56,"start":25796,"end":25799,"length":4,"parent_index":2602},"name":"this","type_description":{"type_identifier":"t_contract$_TokenAdapter_$2401","type_string":"contract TokenAdapter"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":2604,"node_type":16,"src":{"id":2605,"line":724,"column":48,"start":25788,"end":25794,"length":7,"parent_index":2602},"name":"address","type_name":{"id":2606,"node_type":30,"src":{"id":2607,"line":724,"column":48,"start":25788,"end":25794,"length":7,"parent_index":2604},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"balance","argument_types":[{"type_identifier":"t_function_$_t_function_$_t_rational_0_by_1$","type_string":"function(function(int_const 0))"},{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}],"expression":{"id":2584,"node_type":16,"src":{"id":2585,"line":724,"column":8,"start":25748,"end":25762,"length":15,"parent_index":2582},"name":"_transferTokens","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_rational_0_by_1$_t_address$_t_function_$_t_address$","type_string":"function(function(function(int_const 0)),address,function(address))"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2541,"node_type":43,"src":{"id":2542,"line":722,"column":29,"start":25631,"end":25655,"length":25,"parent_index":2539},"parameters":[{"id":2543,"node_type":44,"src":{"id":2544,"line":722,"column":29,"start":25631,"end":25643,"length":13,"parent_index":2541},"scope":2539,"name":"token","type_name":{"id":2545,"node_type":30,"src":{"id":2546,"line":722,"column":29,"start":25631,"end":25637,"length":7,"parent_index":2543},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2547,"node_type":44,"src":{"id":2548,"line":722,"column":44,"start":25646,"end":25655,"length":10,"parent_index":2541},"scope":2539,"name":"to","type_name":{"id":2549,"node_type":30,"src":{"id":2550,"line":722,"column":44,"start":25646,"end":25652,"length":7,"parent_index":2547},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2551,"node_type":43,"src":{"id":2540,"line":722,"column":4,"start":25606,"end":25816,"length":211,"parent_index":2539},"parameters":[],"parameter_types":[]},"scope":2438,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$","type_string":"function(address,address)"}}],"linearized_base_contracts":[2438,2436,2437],"base_contracts":[],"contract_dependencies":[2436,2437]}],"src":{"id":2402,"line":688,"column":0,"start":24582,"end":25818,"length":1237,"parent_index":263}},{"id":2610,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":2610,"name":"IUniswapV2Pair","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IUniswapV2Pair.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IUniswapV2Pair.sol","name":"IUniswapV2Pair","node_type":1,"nodes":[{"id":2636,"node_type":10,"src":{"id":2637,"line":730,"column":0,"start":25858,"end":25881,"length":24,"parent_index":2610},"literals":["pragma","solidity","\u003e=","0",".","5",".","0",";"],"text":"pragma solidity \u003e=0.5.0;"},{"id":2674,"name":"IUniswapV2Pair","node_type":35,"src":{"id":0,"line":732,"column":0,"start":25884,"end":28280,"length":2397,"parent_index":2610},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":2676,"node_type":57,"src":{"id":2677,"line":733,"column":4,"start":25915,"end":25989,"length":75,"parent_index":2674},"parameters":{"id":2678,"node_type":43,"src":{"id":2677,"line":733,"column":4,"start":25915,"end":25989,"length":75,"parent_index":2676},"parameters":[{"id":2679,"node_type":44,"src":{"id":2680,"line":733,"column":19,"start":25930,"end":25950,"length":21,"parent_index":2678},"scope":2676,"name":"owner","type_name":{"id":2681,"node_type":30,"src":{"id":2682,"line":733,"column":19,"start":25930,"end":25936,"length":7,"parent_index":2679},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":2683,"node_type":44,"src":{"id":2684,"line":733,"column":42,"start":25953,"end":25975,"length":23,"parent_index":2678},"scope":2676,"name":"spender","type_name":{"id":2685,"node_type":30,"src":{"id":2686,"line":733,"column":42,"start":25953,"end":25959,"length":7,"parent_index":2683},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":2687,"node_type":44,"src":{"id":2688,"line":733,"column":67,"start":25978,"end":25987,"length":10,"parent_index":2678},"scope":2676,"name":"value","type_name":{"id":2689,"node_type":30,"src":{"id":2690,"line":733,"column":67,"start":25978,"end":25981,"length":4,"parent_index":2687},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"name":"Approval","anonymous":false},{"id":2692,"node_type":57,"src":{"id":2693,"line":734,"column":4,"start":25995,"end":26063,"length":69,"parent_index":2674},"parameters":{"id":2694,"node_type":43,"src":{"id":2693,"line":734,"column":4,"start":25995,"end":26063,"length":69,"parent_index":2692},"parameters":[{"id":2695,"node_type":44,"src":{"id":2696,"line":734,"column":19,"start":26010,"end":26029,"length":20,"parent_index":2694},"scope":2692,"name":"from","type_name":{"id":2697,"node_type":30,"src":{"id":2698,"line":734,"column":19,"start":26010,"end":26016,"length":7,"parent_index":2695},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":2699,"node_type":44,"src":{"id":2700,"line":734,"column":41,"start":26032,"end":26049,"length":18,"parent_index":2694},"scope":2692,"name":"to","type_name":{"id":2701,"node_type":30,"src":{"id":2702,"line":734,"column":41,"start":26032,"end":26038,"length":7,"parent_index":2699},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":2703,"node_type":44,"src":{"id":2704,"line":734,"column":61,"start":26052,"end":26061,"length":10,"parent_index":2694},"scope":2692,"name":"value","type_name":{"id":2705,"node_type":30,"src":{"id":2706,"line":734,"column":61,"start":26052,"end":26055,"length":4,"parent_index":2703},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"name":"Transfer","anonymous":false},{"id":2708,"name":"name","node_type":42,"kind":41,"src":{"id":2709,"line":736,"column":4,"start":26070,"end":26123,"length":54,"parent_index":2674},"body":{"id":2722,"node_type":46,"kind":0,"src":{"id":2709,"line":736,"column":4,"start":26070,"end":26123,"length":54,"parent_index":2708},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2710,"node_type":43,"src":{"id":2711,"line":736,"column":43,"start":26109,"end":26121,"length":13,"parent_index":2708},"parameters":[{"id":2712,"node_type":44,"src":{"id":2713,"line":736,"column":43,"start":26109,"end":26121,"length":13,"parent_index":2710},"scope":2708,"name":"","type_name":{"id":2714,"node_type":30,"src":{"id":2715,"line":736,"column":43,"start":26109,"end":26114,"length":6,"parent_index":2712},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":2716,"node_type":43,"src":{"id":2717,"line":736,"column":43,"start":26109,"end":26121,"length":13,"parent_index":2708},"parameters":[{"id":2718,"node_type":44,"src":{"id":2719,"line":736,"column":43,"start":26109,"end":26121,"length":13,"parent_index":2716},"scope":2708,"name":"","type_name":{"id":2720,"node_type":30,"src":{"id":2721,"line":736,"column":43,"start":26109,"end":26114,"length":6,"parent_index":2718},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_string$","type_string":"function(string)"}},{"id":2724,"name":"symbol","node_type":42,"kind":41,"src":{"id":2725,"line":737,"column":4,"start":26129,"end":26184,"length":56,"parent_index":2674},"body":{"id":2738,"node_type":46,"kind":0,"src":{"id":2725,"line":737,"column":4,"start":26129,"end":26184,"length":56,"parent_index":2724},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2726,"node_type":43,"src":{"id":2727,"line":737,"column":45,"start":26170,"end":26182,"length":13,"parent_index":2724},"parameters":[{"id":2728,"node_type":44,"src":{"id":2729,"line":737,"column":45,"start":26170,"end":26182,"length":13,"parent_index":2726},"scope":2724,"name":"","type_name":{"id":2730,"node_type":30,"src":{"id":2731,"line":737,"column":45,"start":26170,"end":26175,"length":6,"parent_index":2728},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"return_parameters":{"id":2732,"node_type":43,"src":{"id":2733,"line":737,"column":45,"start":26170,"end":26182,"length":13,"parent_index":2724},"parameters":[{"id":2734,"node_type":44,"src":{"id":2735,"line":737,"column":45,"start":26170,"end":26182,"length":13,"parent_index":2732},"scope":2724,"name":"","type_name":{"id":2736,"node_type":30,"src":{"id":2737,"line":737,"column":45,"start":26170,"end":26175,"length":6,"parent_index":2734},"name":"string","type_description":{"type_identifier":"t_string","type_string":"string"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_string","type_string":"string"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_string$","type_string":"function(string)"}},{"id":2740,"name":"decimals","node_type":42,"kind":41,"src":{"id":2741,"line":738,"column":4,"start":26190,"end":26239,"length":50,"parent_index":2674},"body":{"id":2754,"node_type":46,"kind":0,"src":{"id":2741,"line":738,"column":4,"start":26190,"end":26239,"length":50,"parent_index":2740},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2742,"node_type":43,"src":{"id":2743,"line":738,"column":47,"start":26233,"end":26237,"length":5,"parent_index":2740},"parameters":[{"id":2744,"node_type":44,"src":{"id":2745,"line":738,"column":47,"start":26233,"end":26237,"length":5,"parent_index":2742},"scope":2740,"name":"","type_name":{"id":2746,"node_type":30,"src":{"id":2747,"line":738,"column":47,"start":26233,"end":26237,"length":5,"parent_index":2744},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint8","type_string":"uint8"}]},"return_parameters":{"id":2748,"node_type":43,"src":{"id":2749,"line":738,"column":47,"start":26233,"end":26237,"length":5,"parent_index":2740},"parameters":[{"id":2750,"node_type":44,"src":{"id":2751,"line":738,"column":47,"start":26233,"end":26237,"length":5,"parent_index":2748},"scope":2740,"name":"","type_name":{"id":2752,"node_type":30,"src":{"id":2753,"line":738,"column":47,"start":26233,"end":26237,"length":5,"parent_index":2750},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint8","type_string":"uint8"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_uint8$","type_string":"function(uint8)"}},{"id":2756,"name":"totalSupply","node_type":42,"kind":41,"src":{"id":2757,"line":739,"column":4,"start":26245,"end":26296,"length":52,"parent_index":2674},"body":{"id":2770,"node_type":46,"kind":0,"src":{"id":2757,"line":739,"column":4,"start":26245,"end":26296,"length":52,"parent_index":2756},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2758,"node_type":43,"src":{"id":2759,"line":739,"column":50,"start":26291,"end":26294,"length":4,"parent_index":2756},"parameters":[{"id":2760,"node_type":44,"src":{"id":2761,"line":739,"column":50,"start":26291,"end":26294,"length":4,"parent_index":2758},"scope":2756,"name":"","type_name":{"id":2762,"node_type":30,"src":{"id":2763,"line":739,"column":50,"start":26291,"end":26294,"length":4,"parent_index":2760},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":2764,"node_type":43,"src":{"id":2765,"line":739,"column":50,"start":26291,"end":26294,"length":4,"parent_index":2756},"parameters":[{"id":2766,"node_type":44,"src":{"id":2767,"line":739,"column":50,"start":26291,"end":26294,"length":4,"parent_index":2764},"scope":2756,"name":"","type_name":{"id":2768,"node_type":30,"src":{"id":2769,"line":739,"column":50,"start":26291,"end":26294,"length":4,"parent_index":2766},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},{"id":2772,"name":"balanceOf","node_type":42,"kind":41,"src":{"id":2773,"line":740,"column":4,"start":26302,"end":26364,"length":63,"parent_index":2674},"body":{"id":2786,"node_type":46,"kind":0,"src":{"id":2773,"line":740,"column":4,"start":26302,"end":26364,"length":63,"parent_index":2772},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2774,"node_type":43,"src":{"id":2775,"line":740,"column":23,"start":26321,"end":26333,"length":13,"parent_index":2772},"parameters":[{"id":2776,"node_type":44,"src":{"id":2777,"line":740,"column":23,"start":26321,"end":26333,"length":13,"parent_index":2774},"scope":2772,"name":"owner","type_name":{"id":2778,"node_type":30,"src":{"id":2779,"line":740,"column":23,"start":26321,"end":26327,"length":7,"parent_index":2776},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2780,"node_type":43,"src":{"id":2781,"line":740,"column":61,"start":26359,"end":26362,"length":4,"parent_index":2772},"parameters":[{"id":2782,"node_type":44,"src":{"id":2783,"line":740,"column":61,"start":26359,"end":26362,"length":4,"parent_index":2780},"scope":2772,"name":"","type_name":{"id":2784,"node_type":30,"src":{"id":2785,"line":740,"column":61,"start":26359,"end":26362,"length":4,"parent_index":2782},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":2788,"name":"allowance","node_type":42,"kind":41,"src":{"id":2789,"line":741,"column":4,"start":26370,"end":26449,"length":80,"parent_index":2674},"body":{"id":2806,"node_type":46,"kind":0,"src":{"id":2789,"line":741,"column":4,"start":26370,"end":26449,"length":80,"parent_index":2788},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2790,"node_type":43,"src":{"id":2791,"line":741,"column":23,"start":26389,"end":26418,"length":30,"parent_index":2788},"parameters":[{"id":2792,"node_type":44,"src":{"id":2793,"line":741,"column":23,"start":26389,"end":26401,"length":13,"parent_index":2790},"scope":2788,"name":"owner","type_name":{"id":2794,"node_type":30,"src":{"id":2795,"line":741,"column":23,"start":26389,"end":26395,"length":7,"parent_index":2792},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2796,"node_type":44,"src":{"id":2797,"line":741,"column":38,"start":26404,"end":26418,"length":15,"parent_index":2790},"scope":2788,"name":"spender","type_name":{"id":2798,"node_type":30,"src":{"id":2799,"line":741,"column":38,"start":26404,"end":26410,"length":7,"parent_index":2796},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2800,"node_type":43,"src":{"id":2801,"line":741,"column":78,"start":26444,"end":26447,"length":4,"parent_index":2788},"parameters":[{"id":2802,"node_type":44,"src":{"id":2803,"line":741,"column":78,"start":26444,"end":26447,"length":4,"parent_index":2800},"scope":2788,"name":"","type_name":{"id":2804,"node_type":30,"src":{"id":2805,"line":741,"column":78,"start":26444,"end":26447,"length":4,"parent_index":2802},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$","type_string":"function(address,address)"}},{"id":2808,"name":"approve","node_type":42,"kind":41,"src":{"id":2809,"line":743,"column":4,"start":26456,"end":26525,"length":70,"parent_index":2674},"body":{"id":2826,"node_type":46,"kind":0,"src":{"id":2809,"line":743,"column":4,"start":26456,"end":26525,"length":70,"parent_index":2808},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2810,"node_type":43,"src":{"id":2811,"line":743,"column":21,"start":26473,"end":26499,"length":27,"parent_index":2808},"parameters":[{"id":2812,"node_type":44,"src":{"id":2813,"line":743,"column":21,"start":26473,"end":26487,"length":15,"parent_index":2810},"scope":2808,"name":"spender","type_name":{"id":2814,"node_type":30,"src":{"id":2815,"line":743,"column":21,"start":26473,"end":26479,"length":7,"parent_index":2812},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2816,"node_type":44,"src":{"id":2817,"line":743,"column":38,"start":26490,"end":26499,"length":10,"parent_index":2810},"scope":2808,"name":"value","type_name":{"id":2818,"node_type":30,"src":{"id":2819,"line":743,"column":38,"start":26490,"end":26493,"length":4,"parent_index":2816},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":2820,"node_type":43,"src":{"id":2821,"line":743,"column":68,"start":26520,"end":26523,"length":4,"parent_index":2808},"parameters":[{"id":2822,"node_type":44,"src":{"id":2823,"line":743,"column":68,"start":26520,"end":26523,"length":4,"parent_index":2820},"scope":2808,"name":"","type_name":{"id":2824,"node_type":30,"src":{"id":2825,"line":743,"column":68,"start":26520,"end":26523,"length":4,"parent_index":2822},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}},{"id":2828,"name":"transfer","node_type":42,"kind":41,"src":{"id":2829,"line":744,"column":4,"start":26531,"end":26596,"length":66,"parent_index":2674},"body":{"id":2846,"node_type":46,"kind":0,"src":{"id":2829,"line":744,"column":4,"start":26531,"end":26596,"length":66,"parent_index":2828},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2830,"node_type":43,"src":{"id":2831,"line":744,"column":22,"start":26549,"end":26570,"length":22,"parent_index":2828},"parameters":[{"id":2832,"node_type":44,"src":{"id":2833,"line":744,"column":22,"start":26549,"end":26558,"length":10,"parent_index":2830},"scope":2828,"name":"to","type_name":{"id":2834,"node_type":30,"src":{"id":2835,"line":744,"column":22,"start":26549,"end":26555,"length":7,"parent_index":2832},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2836,"node_type":44,"src":{"id":2837,"line":744,"column":34,"start":26561,"end":26570,"length":10,"parent_index":2830},"scope":2828,"name":"value","type_name":{"id":2838,"node_type":30,"src":{"id":2839,"line":744,"column":34,"start":26561,"end":26564,"length":4,"parent_index":2836},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":2840,"node_type":43,"src":{"id":2841,"line":744,"column":64,"start":26591,"end":26594,"length":4,"parent_index":2828},"parameters":[{"id":2842,"node_type":44,"src":{"id":2843,"line":744,"column":64,"start":26591,"end":26594,"length":4,"parent_index":2840},"scope":2828,"name":"","type_name":{"id":2844,"node_type":30,"src":{"id":2845,"line":744,"column":64,"start":26591,"end":26594,"length":4,"parent_index":2842},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$","type_string":"function(address,uint256)"}},{"id":2848,"name":"transferFrom","node_type":42,"kind":41,"src":{"id":2849,"line":745,"column":4,"start":26602,"end":26685,"length":84,"parent_index":2674},"body":{"id":2870,"node_type":46,"kind":0,"src":{"id":2849,"line":745,"column":4,"start":26602,"end":26685,"length":84,"parent_index":2848},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2850,"node_type":43,"src":{"id":2851,"line":745,"column":26,"start":26624,"end":26659,"length":36,"parent_index":2848},"parameters":[{"id":2852,"node_type":44,"src":{"id":2853,"line":745,"column":26,"start":26624,"end":26635,"length":12,"parent_index":2850},"scope":2848,"name":"from","type_name":{"id":2854,"node_type":30,"src":{"id":2855,"line":745,"column":26,"start":26624,"end":26630,"length":7,"parent_index":2852},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2856,"node_type":44,"src":{"id":2857,"line":745,"column":40,"start":26638,"end":26647,"length":10,"parent_index":2850},"scope":2848,"name":"to","type_name":{"id":2858,"node_type":30,"src":{"id":2859,"line":745,"column":40,"start":26638,"end":26644,"length":7,"parent_index":2856},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2860,"node_type":44,"src":{"id":2861,"line":745,"column":52,"start":26650,"end":26659,"length":10,"parent_index":2850},"scope":2848,"name":"value","type_name":{"id":2862,"node_type":30,"src":{"id":2863,"line":745,"column":52,"start":26650,"end":26653,"length":4,"parent_index":2860},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":2864,"node_type":43,"src":{"id":2865,"line":745,"column":82,"start":26680,"end":26683,"length":4,"parent_index":2848},"parameters":[{"id":2866,"node_type":44,"src":{"id":2867,"line":745,"column":82,"start":26680,"end":26683,"length":4,"parent_index":2864},"scope":2848,"name":"","type_name":{"id":2868,"node_type":30,"src":{"id":2869,"line":745,"column":82,"start":26680,"end":26683,"length":4,"parent_index":2866},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bool","type_string":"bool"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$","type_string":"function(address,address,uint256)"}},{"id":2872,"name":"DOMAIN_SEPARATOR","node_type":42,"kind":41,"src":{"id":2873,"line":747,"column":4,"start":26692,"end":26751,"length":60,"parent_index":2674},"body":{"id":2886,"node_type":46,"kind":0,"src":{"id":2873,"line":747,"column":4,"start":26692,"end":26751,"length":60,"parent_index":2872},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2874,"node_type":43,"src":{"id":2875,"line":747,"column":55,"start":26743,"end":26749,"length":7,"parent_index":2872},"parameters":[{"id":2876,"node_type":44,"src":{"id":2877,"line":747,"column":55,"start":26743,"end":26749,"length":7,"parent_index":2874},"scope":2872,"name":"","type_name":{"id":2878,"node_type":30,"src":{"id":2879,"line":747,"column":55,"start":26743,"end":26749,"length":7,"parent_index":2876},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":2880,"node_type":43,"src":{"id":2881,"line":747,"column":55,"start":26743,"end":26749,"length":7,"parent_index":2872},"parameters":[{"id":2882,"node_type":44,"src":{"id":2883,"line":747,"column":55,"start":26743,"end":26749,"length":7,"parent_index":2880},"scope":2872,"name":"","type_name":{"id":2884,"node_type":30,"src":{"id":2885,"line":747,"column":55,"start":26743,"end":26749,"length":7,"parent_index":2882},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_bytes32$","type_string":"function(bytes32)"}},{"id":2888,"name":"PERMIT_TYPEHASH","node_type":42,"kind":41,"src":{"id":2889,"line":748,"column":4,"start":26757,"end":26815,"length":59,"parent_index":2674},"body":{"id":2902,"node_type":46,"kind":0,"src":{"id":2889,"line":748,"column":4,"start":26757,"end":26815,"length":59,"parent_index":2888},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2890,"node_type":43,"src":{"id":2891,"line":748,"column":54,"start":26807,"end":26813,"length":7,"parent_index":2888},"parameters":[{"id":2892,"node_type":44,"src":{"id":2893,"line":748,"column":54,"start":26807,"end":26813,"length":7,"parent_index":2890},"scope":2888,"name":"","type_name":{"id":2894,"node_type":30,"src":{"id":2895,"line":748,"column":54,"start":26807,"end":26813,"length":7,"parent_index":2892},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":2896,"node_type":43,"src":{"id":2897,"line":748,"column":54,"start":26807,"end":26813,"length":7,"parent_index":2888},"parameters":[{"id":2898,"node_type":44,"src":{"id":2899,"line":748,"column":54,"start":26807,"end":26813,"length":7,"parent_index":2896},"scope":2888,"name":"","type_name":{"id":2900,"node_type":30,"src":{"id":2901,"line":748,"column":54,"start":26807,"end":26813,"length":7,"parent_index":2898},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_bytes32$","type_string":"function(bytes32)"}},{"id":2904,"name":"nonces","node_type":42,"kind":41,"src":{"id":2905,"line":749,"column":4,"start":26821,"end":26880,"length":60,"parent_index":2674},"body":{"id":2918,"node_type":46,"kind":0,"src":{"id":2905,"line":749,"column":4,"start":26821,"end":26880,"length":60,"parent_index":2904},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2906,"node_type":43,"src":{"id":2907,"line":749,"column":20,"start":26837,"end":26849,"length":13,"parent_index":2904},"parameters":[{"id":2908,"node_type":44,"src":{"id":2909,"line":749,"column":20,"start":26837,"end":26849,"length":13,"parent_index":2906},"scope":2904,"name":"owner","type_name":{"id":2910,"node_type":30,"src":{"id":2911,"line":749,"column":20,"start":26837,"end":26843,"length":7,"parent_index":2908},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":2912,"node_type":43,"src":{"id":2913,"line":749,"column":58,"start":26875,"end":26878,"length":4,"parent_index":2904},"parameters":[{"id":2914,"node_type":44,"src":{"id":2915,"line":749,"column":58,"start":26875,"end":26878,"length":4,"parent_index":2912},"scope":2904,"name":"","type_name":{"id":2916,"node_type":30,"src":{"id":2917,"line":749,"column":58,"start":26875,"end":26878,"length":4,"parent_index":2914},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":2920,"name":"permit","node_type":42,"kind":41,"src":{"id":2921,"line":751,"column":4,"start":26887,"end":27001,"length":115,"parent_index":2674},"body":{"id":2953,"node_type":46,"kind":0,"src":{"id":2921,"line":751,"column":4,"start":26887,"end":27001,"length":115,"parent_index":2920},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":2922,"node_type":43,"src":{"id":2923,"line":751,"column":20,"start":26903,"end":26990,"length":88,"parent_index":2920},"parameters":[{"id":2924,"node_type":44,"src":{"id":2925,"line":751,"column":20,"start":26903,"end":26915,"length":13,"parent_index":2922},"scope":2920,"name":"owner","type_name":{"id":2926,"node_type":30,"src":{"id":2927,"line":751,"column":20,"start":26903,"end":26909,"length":7,"parent_index":2924},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2928,"node_type":44,"src":{"id":2929,"line":751,"column":35,"start":26918,"end":26932,"length":15,"parent_index":2922},"scope":2920,"name":"spender","type_name":{"id":2930,"node_type":30,"src":{"id":2931,"line":751,"column":35,"start":26918,"end":26924,"length":7,"parent_index":2928},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":2932,"node_type":44,"src":{"id":2933,"line":751,"column":52,"start":26935,"end":26944,"length":10,"parent_index":2922},"scope":2920,"name":"value","type_name":{"id":2934,"node_type":30,"src":{"id":2935,"line":751,"column":52,"start":26935,"end":26938,"length":4,"parent_index":2932},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2936,"node_type":44,"src":{"id":2937,"line":751,"column":64,"start":26947,"end":26959,"length":13,"parent_index":2922},"scope":2920,"name":"deadline","type_name":{"id":2938,"node_type":30,"src":{"id":2939,"line":751,"column":64,"start":26947,"end":26950,"length":4,"parent_index":2936},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2940,"node_type":44,"src":{"id":2941,"line":751,"column":79,"start":26962,"end":26968,"length":7,"parent_index":2922},"scope":2920,"name":"v","type_name":{"id":2942,"node_type":30,"src":{"id":2943,"line":751,"column":79,"start":26962,"end":26966,"length":5,"parent_index":2940},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2944,"node_type":44,"src":{"id":2945,"line":751,"column":88,"start":26971,"end":26979,"length":9,"parent_index":2922},"scope":2920,"name":"r","type_name":{"id":2946,"node_type":30,"src":{"id":2947,"line":751,"column":88,"start":26971,"end":26977,"length":7,"parent_index":2944},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2948,"node_type":44,"src":{"id":2949,"line":751,"column":99,"start":26982,"end":26990,"length":9,"parent_index":2922},"scope":2920,"name":"s","type_name":{"id":2950,"node_type":30,"src":{"id":2951,"line":751,"column":99,"start":26982,"end":26988,"length":7,"parent_index":2948},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint8","type_string":"uint8"},{"type_identifier":"t_bytes32","type_string":"bytes32"},{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":2952,"node_type":43,"src":{"id":2921,"line":751,"column":4,"start":26887,"end":27001,"length":115,"parent_index":2920},"parameters":[],"parameter_types":[]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_uint256$_t_uint256$_t_uint8$_t_bytes32$_t_bytes32$","type_string":"function(address,address,uint256,uint256,uint8,bytes32,bytes32)"}},{"id":2955,"node_type":57,"src":{"id":2956,"line":753,"column":4,"start":27008,"end":27070,"length":63,"parent_index":2674},"parameters":{"id":2957,"node_type":43,"src":{"id":2956,"line":753,"column":4,"start":27008,"end":27070,"length":63,"parent_index":2955},"parameters":[{"id":2958,"node_type":44,"src":{"id":2959,"line":753,"column":15,"start":27019,"end":27040,"length":22,"parent_index":2957},"scope":2955,"name":"sender","type_name":{"id":2960,"node_type":30,"src":{"id":2961,"line":753,"column":15,"start":27019,"end":27025,"length":7,"parent_index":2958},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":2962,"node_type":44,"src":{"id":2963,"line":753,"column":39,"start":27043,"end":27054,"length":12,"parent_index":2957},"scope":2955,"name":"amount0","type_name":{"id":2964,"node_type":30,"src":{"id":2965,"line":753,"column":39,"start":27043,"end":27046,"length":4,"parent_index":2962},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2966,"node_type":44,"src":{"id":2967,"line":753,"column":53,"start":27057,"end":27068,"length":12,"parent_index":2957},"scope":2955,"name":"amount1","type_name":{"id":2968,"node_type":30,"src":{"id":2969,"line":753,"column":53,"start":27057,"end":27060,"length":4,"parent_index":2966},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"name":"Mint","anonymous":false},{"id":2971,"node_type":57,"src":{"id":2972,"line":754,"column":4,"start":27076,"end":27158,"length":83,"parent_index":2674},"parameters":{"id":2973,"node_type":43,"src":{"id":2972,"line":754,"column":4,"start":27076,"end":27158,"length":83,"parent_index":2971},"parameters":[{"id":2974,"node_type":44,"src":{"id":2975,"line":754,"column":15,"start":27087,"end":27108,"length":22,"parent_index":2973},"scope":2971,"name":"sender","type_name":{"id":2976,"node_type":30,"src":{"id":2977,"line":754,"column":15,"start":27087,"end":27093,"length":7,"parent_index":2974},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":2978,"node_type":44,"src":{"id":2979,"line":754,"column":39,"start":27111,"end":27122,"length":12,"parent_index":2973},"scope":2971,"name":"amount0","type_name":{"id":2980,"node_type":30,"src":{"id":2981,"line":754,"column":39,"start":27111,"end":27114,"length":4,"parent_index":2978},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2982,"node_type":44,"src":{"id":2983,"line":754,"column":53,"start":27125,"end":27136,"length":12,"parent_index":2973},"scope":2971,"name":"amount1","type_name":{"id":2984,"node_type":30,"src":{"id":2985,"line":754,"column":53,"start":27125,"end":27128,"length":4,"parent_index":2982},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":2986,"node_type":44,"src":{"id":2987,"line":754,"column":67,"start":27139,"end":27156,"length":18,"parent_index":2973},"scope":2971,"name":"to","type_name":{"id":2988,"node_type":30,"src":{"id":2989,"line":754,"column":67,"start":27139,"end":27145,"length":7,"parent_index":2986},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_address","type_string":"address"}]},"name":"Burn","anonymous":false},{"id":2991,"node_type":57,"src":{"id":2992,"line":755,"column":4,"start":27164,"end":27338,"length":175,"parent_index":2674},"parameters":{"id":2993,"node_type":43,"src":{"id":2992,"line":755,"column":4,"start":27164,"end":27338,"length":175,"parent_index":2991},"parameters":[{"id":2994,"node_type":44,"src":{"id":2995,"line":756,"column":8,"start":27184,"end":27205,"length":22,"parent_index":2993},"scope":2991,"name":"sender","type_name":{"id":2996,"node_type":30,"src":{"id":2997,"line":756,"column":8,"start":27184,"end":27190,"length":7,"parent_index":2994},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true},{"id":2998,"node_type":44,"src":{"id":2999,"line":757,"column":8,"start":27216,"end":27229,"length":14,"parent_index":2993},"scope":2991,"name":"amount0In","type_name":{"id":3000,"node_type":30,"src":{"id":3001,"line":757,"column":8,"start":27216,"end":27219,"length":4,"parent_index":2998},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3002,"node_type":44,"src":{"id":3003,"line":758,"column":8,"start":27240,"end":27253,"length":14,"parent_index":2993},"scope":2991,"name":"amount1In","type_name":{"id":3004,"node_type":30,"src":{"id":3005,"line":758,"column":8,"start":27240,"end":27243,"length":4,"parent_index":3002},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3006,"node_type":44,"src":{"id":3007,"line":759,"column":8,"start":27264,"end":27278,"length":15,"parent_index":2993},"scope":2991,"name":"amount0Out","type_name":{"id":3008,"node_type":30,"src":{"id":3009,"line":759,"column":8,"start":27264,"end":27267,"length":4,"parent_index":3006},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3010,"node_type":44,"src":{"id":3011,"line":760,"column":8,"start":27289,"end":27303,"length":15,"parent_index":2993},"scope":2991,"name":"amount1Out","type_name":{"id":3012,"node_type":30,"src":{"id":3013,"line":760,"column":8,"start":27289,"end":27292,"length":4,"parent_index":3010},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3014,"node_type":44,"src":{"id":3015,"line":761,"column":8,"start":27314,"end":27331,"length":18,"parent_index":2993},"scope":2991,"name":"to","type_name":{"id":3016,"node_type":30,"src":{"id":3017,"line":761,"column":8,"start":27314,"end":27320,"length":7,"parent_index":3014},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4,"indexed":true}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_address","type_string":"address"}]},"name":"Swap","anonymous":false},{"id":3019,"node_type":57,"src":{"id":3020,"line":763,"column":4,"start":27344,"end":27390,"length":47,"parent_index":2674},"parameters":{"id":3021,"node_type":43,"src":{"id":3020,"line":763,"column":4,"start":27344,"end":27390,"length":47,"parent_index":3019},"parameters":[{"id":3022,"node_type":44,"src":{"id":3023,"line":763,"column":15,"start":27355,"end":27370,"length":16,"parent_index":3021},"scope":3019,"name":"reserve0","type_name":{"id":3024,"node_type":30,"src":{"id":3025,"line":763,"column":15,"start":27355,"end":27361,"length":7,"parent_index":3022},"name":"uint112","type_description":{"type_identifier":"t_uint112","type_string":"uint112"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3026,"node_type":44,"src":{"id":3027,"line":763,"column":33,"start":27373,"end":27388,"length":16,"parent_index":3021},"scope":3019,"name":"reserve1","type_name":{"id":3028,"node_type":30,"src":{"id":3029,"line":763,"column":33,"start":27373,"end":27379,"length":7,"parent_index":3026},"name":"uint112","type_description":{"type_identifier":"t_uint112","type_string":"uint112"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint112","type_string":"uint112"},{"type_identifier":"t_uint112","type_string":"uint112"}]},"name":"Sync","anonymous":false},{"id":3031,"name":"MINIMUM_LIQUIDITY","node_type":42,"kind":41,"src":{"id":3032,"line":765,"column":4,"start":27397,"end":27454,"length":58,"parent_index":2674},"body":{"id":3045,"node_type":46,"kind":0,"src":{"id":3032,"line":765,"column":4,"start":27397,"end":27454,"length":58,"parent_index":3031},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3033,"node_type":43,"src":{"id":3034,"line":765,"column":56,"start":27449,"end":27452,"length":4,"parent_index":3031},"parameters":[{"id":3035,"node_type":44,"src":{"id":3036,"line":765,"column":56,"start":27449,"end":27452,"length":4,"parent_index":3033},"scope":3031,"name":"","type_name":{"id":3037,"node_type":30,"src":{"id":3038,"line":765,"column":56,"start":27449,"end":27452,"length":4,"parent_index":3035},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":3039,"node_type":43,"src":{"id":3040,"line":765,"column":56,"start":27449,"end":27452,"length":4,"parent_index":3031},"parameters":[{"id":3041,"node_type":44,"src":{"id":3042,"line":765,"column":56,"start":27449,"end":27452,"length":4,"parent_index":3039},"scope":3031,"name":"","type_name":{"id":3043,"node_type":30,"src":{"id":3044,"line":765,"column":56,"start":27449,"end":27452,"length":4,"parent_index":3041},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},{"id":3047,"name":"factory","node_type":42,"kind":41,"src":{"id":3048,"line":766,"column":4,"start":27460,"end":27510,"length":51,"parent_index":2674},"body":{"id":3061,"node_type":46,"kind":0,"src":{"id":3048,"line":766,"column":4,"start":27460,"end":27510,"length":51,"parent_index":3047},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3049,"node_type":43,"src":{"id":3050,"line":766,"column":46,"start":27502,"end":27508,"length":7,"parent_index":3047},"parameters":[{"id":3051,"node_type":44,"src":{"id":3052,"line":766,"column":46,"start":27502,"end":27508,"length":7,"parent_index":3049},"scope":3047,"name":"","type_name":{"id":3053,"node_type":30,"src":{"id":3054,"line":766,"column":46,"start":27502,"end":27508,"length":7,"parent_index":3051},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":3055,"node_type":43,"src":{"id":3056,"line":766,"column":46,"start":27502,"end":27508,"length":7,"parent_index":3047},"parameters":[{"id":3057,"node_type":44,"src":{"id":3058,"line":766,"column":46,"start":27502,"end":27508,"length":7,"parent_index":3055},"scope":3047,"name":"","type_name":{"id":3059,"node_type":30,"src":{"id":3060,"line":766,"column":46,"start":27502,"end":27508,"length":7,"parent_index":3057},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":3063,"name":"token0","node_type":42,"kind":41,"src":{"id":3064,"line":767,"column":4,"start":27516,"end":27565,"length":50,"parent_index":2674},"body":{"id":3077,"node_type":46,"kind":0,"src":{"id":3064,"line":767,"column":4,"start":27516,"end":27565,"length":50,"parent_index":3063},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3065,"node_type":43,"src":{"id":3066,"line":767,"column":45,"start":27557,"end":27563,"length":7,"parent_index":3063},"parameters":[{"id":3067,"node_type":44,"src":{"id":3068,"line":767,"column":45,"start":27557,"end":27563,"length":7,"parent_index":3065},"scope":3063,"name":"","type_name":{"id":3069,"node_type":30,"src":{"id":3070,"line":767,"column":45,"start":27557,"end":27563,"length":7,"parent_index":3067},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":3071,"node_type":43,"src":{"id":3072,"line":767,"column":45,"start":27557,"end":27563,"length":7,"parent_index":3063},"parameters":[{"id":3073,"node_type":44,"src":{"id":3074,"line":767,"column":45,"start":27557,"end":27563,"length":7,"parent_index":3071},"scope":3063,"name":"","type_name":{"id":3075,"node_type":30,"src":{"id":3076,"line":767,"column":45,"start":27557,"end":27563,"length":7,"parent_index":3073},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":3079,"name":"token1","node_type":42,"kind":41,"src":{"id":3080,"line":768,"column":4,"start":27571,"end":27620,"length":50,"parent_index":2674},"body":{"id":3093,"node_type":46,"kind":0,"src":{"id":3080,"line":768,"column":4,"start":27571,"end":27620,"length":50,"parent_index":3079},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3081,"node_type":43,"src":{"id":3082,"line":768,"column":45,"start":27612,"end":27618,"length":7,"parent_index":3079},"parameters":[{"id":3083,"node_type":44,"src":{"id":3084,"line":768,"column":45,"start":27612,"end":27618,"length":7,"parent_index":3081},"scope":3079,"name":"","type_name":{"id":3085,"node_type":30,"src":{"id":3086,"line":768,"column":45,"start":27612,"end":27618,"length":7,"parent_index":3083},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":3087,"node_type":43,"src":{"id":3088,"line":768,"column":45,"start":27612,"end":27618,"length":7,"parent_index":3079},"parameters":[{"id":3089,"node_type":44,"src":{"id":3090,"line":768,"column":45,"start":27612,"end":27618,"length":7,"parent_index":3087},"scope":3079,"name":"","type_name":{"id":3091,"node_type":30,"src":{"id":3092,"line":768,"column":45,"start":27612,"end":27618,"length":7,"parent_index":3089},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":3095,"name":"getReserves","node_type":42,"kind":41,"src":{"id":3096,"line":769,"column":4,"start":27626,"end":27734,"length":109,"parent_index":2674},"body":{"id":3125,"node_type":46,"kind":0,"src":{"id":3096,"line":769,"column":4,"start":27626,"end":27734,"length":109,"parent_index":3095},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3097,"node_type":43,"src":{"id":3098,"line":769,"column":50,"start":27672,"end":27732,"length":61,"parent_index":3095},"parameters":[{"id":3099,"node_type":44,"src":{"id":3100,"line":769,"column":50,"start":27672,"end":27687,"length":16,"parent_index":3097},"scope":3095,"name":"reserve0","type_name":{"id":3101,"node_type":30,"src":{"id":3102,"line":769,"column":50,"start":27672,"end":27678,"length":7,"parent_index":3099},"name":"uint112","type_description":{"type_identifier":"t_uint112","type_string":"uint112"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3103,"node_type":44,"src":{"id":3104,"line":769,"column":68,"start":27690,"end":27705,"length":16,"parent_index":3097},"scope":3095,"name":"reserve1","type_name":{"id":3105,"node_type":30,"src":{"id":3106,"line":769,"column":68,"start":27690,"end":27696,"length":7,"parent_index":3103},"name":"uint112","type_description":{"type_identifier":"t_uint112","type_string":"uint112"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3107,"node_type":44,"src":{"id":3108,"line":769,"column":86,"start":27708,"end":27732,"length":25,"parent_index":3097},"scope":3095,"name":"blockTimestampLast","type_name":{"id":3109,"node_type":30,"src":{"id":3110,"line":769,"column":86,"start":27708,"end":27713,"length":6,"parent_index":3107},"name":"uint32","type_description":{"type_identifier":"t_uint32","type_string":"uint32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint112","type_string":"uint112"},{"type_identifier":"t_uint112","type_string":"uint112"},{"type_identifier":"t_uint32","type_string":"uint32"}]},"return_parameters":{"id":3111,"node_type":43,"src":{"id":3112,"line":769,"column":50,"start":27672,"end":27732,"length":61,"parent_index":3095},"parameters":[{"id":3113,"node_type":44,"src":{"id":3114,"line":769,"column":50,"start":27672,"end":27687,"length":16,"parent_index":3111},"scope":3095,"name":"reserve0","type_name":{"id":3115,"node_type":30,"src":{"id":3116,"line":769,"column":50,"start":27672,"end":27678,"length":7,"parent_index":3113},"name":"uint112","type_description":{"type_identifier":"t_uint112","type_string":"uint112"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3117,"node_type":44,"src":{"id":3118,"line":769,"column":68,"start":27690,"end":27705,"length":16,"parent_index":3111},"scope":3095,"name":"reserve1","type_name":{"id":3119,"node_type":30,"src":{"id":3120,"line":769,"column":68,"start":27690,"end":27696,"length":7,"parent_index":3117},"name":"uint112","type_description":{"type_identifier":"t_uint112","type_string":"uint112"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3121,"node_type":44,"src":{"id":3122,"line":769,"column":86,"start":27708,"end":27732,"length":25,"parent_index":3111},"scope":3095,"name":"blockTimestampLast","type_name":{"id":3123,"node_type":30,"src":{"id":3124,"line":769,"column":86,"start":27708,"end":27713,"length":6,"parent_index":3121},"name":"uint32","type_description":{"type_identifier":"t_uint32","type_string":"uint32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint112","type_string":"uint112"},{"type_identifier":"t_uint112","type_string":"uint112"},{"type_identifier":"t_uint32","type_string":"uint32"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_uint112$_t_uint112$_t_uint32$","type_string":"function(uint112,uint112,uint32)"}},{"id":3127,"name":"price0CumulativeLast","node_type":42,"kind":41,"src":{"id":3128,"line":770,"column":4,"start":27740,"end":27800,"length":61,"parent_index":2674},"body":{"id":3141,"node_type":46,"kind":0,"src":{"id":3128,"line":770,"column":4,"start":27740,"end":27800,"length":61,"parent_index":3127},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3129,"node_type":43,"src":{"id":3130,"line":770,"column":59,"start":27795,"end":27798,"length":4,"parent_index":3127},"parameters":[{"id":3131,"node_type":44,"src":{"id":3132,"line":770,"column":59,"start":27795,"end":27798,"length":4,"parent_index":3129},"scope":3127,"name":"","type_name":{"id":3133,"node_type":30,"src":{"id":3134,"line":770,"column":59,"start":27795,"end":27798,"length":4,"parent_index":3131},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":3135,"node_type":43,"src":{"id":3136,"line":770,"column":59,"start":27795,"end":27798,"length":4,"parent_index":3127},"parameters":[{"id":3137,"node_type":44,"src":{"id":3138,"line":770,"column":59,"start":27795,"end":27798,"length":4,"parent_index":3135},"scope":3127,"name":"","type_name":{"id":3139,"node_type":30,"src":{"id":3140,"line":770,"column":59,"start":27795,"end":27798,"length":4,"parent_index":3137},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},{"id":3143,"name":"price1CumulativeLast","node_type":42,"kind":41,"src":{"id":3144,"line":771,"column":4,"start":27806,"end":27866,"length":61,"parent_index":2674},"body":{"id":3157,"node_type":46,"kind":0,"src":{"id":3144,"line":771,"column":4,"start":27806,"end":27866,"length":61,"parent_index":3143},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3145,"node_type":43,"src":{"id":3146,"line":771,"column":59,"start":27861,"end":27864,"length":4,"parent_index":3143},"parameters":[{"id":3147,"node_type":44,"src":{"id":3148,"line":771,"column":59,"start":27861,"end":27864,"length":4,"parent_index":3145},"scope":3143,"name":"","type_name":{"id":3149,"node_type":30,"src":{"id":3150,"line":771,"column":59,"start":27861,"end":27864,"length":4,"parent_index":3147},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":3151,"node_type":43,"src":{"id":3152,"line":771,"column":59,"start":27861,"end":27864,"length":4,"parent_index":3143},"parameters":[{"id":3153,"node_type":44,"src":{"id":3154,"line":771,"column":59,"start":27861,"end":27864,"length":4,"parent_index":3151},"scope":3143,"name":"","type_name":{"id":3155,"node_type":30,"src":{"id":3156,"line":771,"column":59,"start":27861,"end":27864,"length":4,"parent_index":3153},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},{"id":3159,"name":"kLast","node_type":42,"kind":41,"src":{"id":3160,"line":772,"column":4,"start":27872,"end":27917,"length":46,"parent_index":2674},"body":{"id":3173,"node_type":46,"kind":0,"src":{"id":3160,"line":772,"column":4,"start":27872,"end":27917,"length":46,"parent_index":3159},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3161,"node_type":43,"src":{"id":3162,"line":772,"column":44,"start":27912,"end":27915,"length":4,"parent_index":3159},"parameters":[{"id":3163,"node_type":44,"src":{"id":3164,"line":772,"column":44,"start":27912,"end":27915,"length":4,"parent_index":3161},"scope":3159,"name":"","type_name":{"id":3165,"node_type":30,"src":{"id":3166,"line":772,"column":44,"start":27912,"end":27915,"length":4,"parent_index":3163},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":3167,"node_type":43,"src":{"id":3168,"line":772,"column":44,"start":27912,"end":27915,"length":4,"parent_index":3159},"parameters":[{"id":3169,"node_type":44,"src":{"id":3170,"line":772,"column":44,"start":27912,"end":27915,"length":4,"parent_index":3167},"scope":3159,"name":"","type_name":{"id":3171,"node_type":30,"src":{"id":3172,"line":772,"column":44,"start":27912,"end":27915,"length":4,"parent_index":3169},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},{"id":3175,"name":"mint","node_type":42,"kind":41,"src":{"id":3176,"line":774,"column":4,"start":27924,"end":27983,"length":60,"parent_index":2674},"body":{"id":3189,"node_type":46,"kind":0,"src":{"id":3176,"line":774,"column":4,"start":27924,"end":27983,"length":60,"parent_index":3175},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3177,"node_type":43,"src":{"id":3178,"line":774,"column":18,"start":27938,"end":27947,"length":10,"parent_index":3175},"parameters":[{"id":3179,"node_type":44,"src":{"id":3180,"line":774,"column":18,"start":27938,"end":27947,"length":10,"parent_index":3177},"scope":3175,"name":"to","type_name":{"id":3181,"node_type":30,"src":{"id":3182,"line":774,"column":18,"start":27938,"end":27944,"length":7,"parent_index":3179},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":3183,"node_type":43,"src":{"id":3184,"line":774,"column":48,"start":27968,"end":27981,"length":14,"parent_index":3175},"parameters":[{"id":3185,"node_type":44,"src":{"id":3186,"line":774,"column":48,"start":27968,"end":27981,"length":14,"parent_index":3183},"scope":3175,"name":"liquidity","type_name":{"id":3187,"node_type":30,"src":{"id":3188,"line":774,"column":48,"start":27968,"end":27971,"length":4,"parent_index":3185},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":3191,"name":"burn","node_type":42,"kind":41,"src":{"id":3192,"line":775,"column":4,"start":27989,"end":28060,"length":72,"parent_index":2674},"body":{"id":3209,"node_type":46,"kind":0,"src":{"id":3192,"line":775,"column":4,"start":27989,"end":28060,"length":72,"parent_index":3191},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3193,"node_type":43,"src":{"id":3194,"line":775,"column":18,"start":28003,"end":28012,"length":10,"parent_index":3191},"parameters":[{"id":3195,"node_type":44,"src":{"id":3196,"line":775,"column":18,"start":28003,"end":28012,"length":10,"parent_index":3193},"scope":3191,"name":"to","type_name":{"id":3197,"node_type":30,"src":{"id":3198,"line":775,"column":18,"start":28003,"end":28009,"length":7,"parent_index":3195},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":3199,"node_type":43,"src":{"id":3200,"line":775,"column":48,"start":28033,"end":28058,"length":26,"parent_index":3191},"parameters":[{"id":3201,"node_type":44,"src":{"id":3202,"line":775,"column":48,"start":28033,"end":28044,"length":12,"parent_index":3199},"scope":3191,"name":"amount0","type_name":{"id":3203,"node_type":30,"src":{"id":3204,"line":775,"column":48,"start":28033,"end":28036,"length":4,"parent_index":3201},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3205,"node_type":44,"src":{"id":3206,"line":775,"column":62,"start":28047,"end":28058,"length":12,"parent_index":3199},"scope":3191,"name":"amount1","type_name":{"id":3207,"node_type":30,"src":{"id":3208,"line":775,"column":62,"start":28047,"end":28050,"length":4,"parent_index":3205},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":3211,"name":"swap","node_type":42,"kind":41,"src":{"id":3212,"line":776,"column":4,"start":28066,"end":28155,"length":90,"parent_index":2674},"body":{"id":3232,"node_type":46,"kind":0,"src":{"id":3212,"line":776,"column":4,"start":28066,"end":28155,"length":90,"parent_index":3211},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3213,"node_type":43,"src":{"id":3214,"line":776,"column":18,"start":28080,"end":28144,"length":65,"parent_index":3211},"parameters":[{"id":3215,"node_type":44,"src":{"id":3216,"line":776,"column":18,"start":28080,"end":28094,"length":15,"parent_index":3213},"scope":3211,"name":"amount0Out","type_name":{"id":3217,"node_type":30,"src":{"id":3218,"line":776,"column":18,"start":28080,"end":28083,"length":4,"parent_index":3215},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3219,"node_type":44,"src":{"id":3220,"line":776,"column":35,"start":28097,"end":28111,"length":15,"parent_index":3213},"scope":3211,"name":"amount1Out","type_name":{"id":3221,"node_type":30,"src":{"id":3222,"line":776,"column":35,"start":28097,"end":28100,"length":4,"parent_index":3219},"name":"uint","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3223,"node_type":44,"src":{"id":3224,"line":776,"column":52,"start":28114,"end":28123,"length":10,"parent_index":3213},"scope":3211,"name":"to","type_name":{"id":3225,"node_type":30,"src":{"id":3226,"line":776,"column":52,"start":28114,"end":28120,"length":7,"parent_index":3223},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":3227,"node_type":44,"src":{"id":3228,"line":776,"column":64,"start":28126,"end":28144,"length":19,"parent_index":3213},"scope":3211,"name":"data","type_name":{"id":3229,"node_type":30,"src":{"id":3230,"line":776,"column":64,"start":28126,"end":28130,"length":5,"parent_index":3227},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":4,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":3231,"node_type":43,"src":{"id":3212,"line":776,"column":4,"start":28066,"end":28155,"length":90,"parent_index":3211},"parameters":[],"parameter_types":[]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$_t_address$_t_bytes$","type_string":"function(uint256,uint256,address,bytes)"}},{"id":3234,"name":"skim","node_type":42,"kind":41,"src":{"id":3235,"line":777,"column":4,"start":28161,"end":28195,"length":35,"parent_index":2674},"body":{"id":3243,"node_type":46,"kind":0,"src":{"id":3235,"line":777,"column":4,"start":28161,"end":28195,"length":35,"parent_index":3234},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3236,"node_type":43,"src":{"id":3237,"line":777,"column":18,"start":28175,"end":28184,"length":10,"parent_index":3234},"parameters":[{"id":3238,"node_type":44,"src":{"id":3239,"line":777,"column":18,"start":28175,"end":28184,"length":10,"parent_index":3236},"scope":3234,"name":"to","type_name":{"id":3240,"node_type":30,"src":{"id":3241,"line":777,"column":18,"start":28175,"end":28181,"length":7,"parent_index":3238},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":3242,"node_type":43,"src":{"id":3235,"line":777,"column":4,"start":28161,"end":28195,"length":35,"parent_index":3234},"parameters":[],"parameter_types":[]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":3245,"name":"sync","node_type":42,"kind":41,"src":{"id":3246,"line":778,"column":4,"start":28201,"end":28225,"length":25,"parent_index":2674},"body":{"id":3249,"node_type":46,"kind":0,"src":{"id":3246,"line":778,"column":4,"start":28201,"end":28225,"length":25,"parent_index":3245},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3247,"node_type":43,"src":{"id":3246,"line":778,"column":4,"start":28201,"end":28225,"length":25,"parent_index":3245},"parameters":[],"parameter_types":[]},"return_parameters":{"id":3248,"node_type":43,"src":{"id":3246,"line":778,"column":4,"start":28201,"end":28225,"length":25,"parent_index":3245},"parameters":[],"parameter_types":[]},"scope":2674,"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},{"id":3251,"name":"initialize","node_type":42,"kind":41,"src":{"id":3252,"line":780,"column":4,"start":28232,"end":28278,"length":47,"parent_index":2674},"body":{"id":3264,"node_type":46,"kind":0,"src":{"id":3252,"line":780,"column":4,"start":28232,"end":28278,"length":47,"parent_index":3251},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3253,"node_type":43,"src":{"id":3254,"line":780,"column":24,"start":28252,"end":28267,"length":16,"parent_index":3251},"parameters":[{"id":3255,"node_type":44,"src":{"id":3256,"line":780,"column":24,"start":28252,"end":28258,"length":7,"parent_index":3253},"scope":3251,"name":"","type_name":{"id":3257,"node_type":30,"src":{"id":3258,"line":780,"column":24,"start":28252,"end":28258,"length":7,"parent_index":3255},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":3259,"node_type":44,"src":{"id":3260,"line":780,"column":33,"start":28261,"end":28267,"length":7,"parent_index":3253},"scope":3251,"name":"","type_name":{"id":3261,"node_type":30,"src":{"id":3262,"line":780,"column":33,"start":28261,"end":28267,"length":7,"parent_index":3259},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":3263,"node_type":43,"src":{"id":3252,"line":780,"column":4,"start":28232,"end":28278,"length":47,"parent_index":3251},"parameters":[],"parameter_types":[]},"scope":2674,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$","type_string":"function(address,address)"}}],"linearized_base_contracts":[2674],"base_contracts":[],"contract_dependencies":[]}],"src":{"id":2611,"line":732,"column":0,"start":25884,"end":28280,"length":2397,"parent_index":263}},{"id":3265,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":3265,"name":"SafeMathUniswap","absolute_path":""}],"absolute_path":"","name":"SafeMathUniswap","node_type":1,"nodes":[{"id":3293,"node_type":10,"src":{"id":3294,"line":785,"column":0,"start":28320,"end":28344,"length":25,"parent_index":3265},"literals":["pragma","solidity","\u003e=","0",".","6",".","12",";"],"text":"pragma solidity \u003e=0.6.12;"},{"id":3306,"name":"SafeMathUniswap","node_type":35,"src":{"id":0,"line":789,"column":0,"start":28453,"end":28916,"length":464,"parent_index":3265},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":3308,"name":"add","node_type":42,"kind":41,"src":{"id":3309,"line":790,"column":4,"start":28483,"end":28617,"length":135,"parent_index":3306},"body":{"id":3326,"node_type":46,"kind":0,"src":{"id":3327,"line":790,"column":73,"start":28552,"end":28617,"length":66,"parent_index":3308},"implemented":true,"statements":[{"id":3328,"node_type":24,"kind":24,"src":{"id":3329,"line":791,"column":8,"start":28562,"end":28610,"length":49,"parent_index":3326},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ds-math-add-overflow\""}],"arguments":[{"id":3332,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3333,"line":791,"column":16,"start":28570,"end":28585,"length":16,"parent_index":3328},"operator":8,"left_expression":{"id":3334,"node_type":60,"src":{"id":3335,"line":791,"column":16,"start":28570,"end":28580,"length":11,"parent_index":3332},"is_constant":false,"is_pure":false,"components":[{"id":3336,"node_type":27,"src":{"id":3337,"line":791,"column":17,"start":28571,"end":28579,"length":9,"parent_index":3334},"operator":11,"left_expression":{"id":3338,"node_type":16,"src":{"id":3339,"line":791,"column":17,"start":28571,"end":28571,"length":1,"parent_index":3336},"name":"z","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3322,"is_pure":false},"right_expression":{"id":3340,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3341,"line":791,"column":21,"start":28575,"end":28579,"length":5,"parent_index":3336},"operator":1,"left_expression":{"id":3342,"node_type":16,"src":{"id":3343,"line":791,"column":21,"start":28575,"end":28575,"length":1,"parent_index":3340},"name":"x","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3342,"is_pure":false},"right_expression":{"id":3344,"node_type":16,"src":{"id":3345,"line":791,"column":25,"start":28579,"end":28579,"length":1,"parent_index":3340},"name":"y","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3344,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}],"type_description":{"type_identifier":"t_tuple_$_t_uint256$","type_string":"tuple(uint256)"}},"right_expression":{"id":3346,"node_type":16,"src":{"id":3347,"line":791,"column":31,"start":28585,"end":28585,"length":1,"parent_index":3332},"name":"x","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3346,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":3348,"node_type":17,"kind":50,"value":"ds-math-add-overflow","hex_value":"64732d6d6174682d6164642d6f766572666c6f77","src":{"id":3349,"line":791,"column":34,"start":28588,"end":28609,"length":22,"parent_index":3328},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ds-math-add-overflow\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":3330,"node_type":16,"src":{"id":3331,"line":791,"column":8,"start":28562,"end":28568,"length":7,"parent_index":3328},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3310,"node_type":43,"src":{"id":3311,"line":790,"column":17,"start":28496,"end":28515,"length":20,"parent_index":3308},"parameters":[{"id":3312,"node_type":44,"src":{"id":3313,"line":790,"column":17,"start":28496,"end":28504,"length":9,"parent_index":3310},"scope":3308,"name":"x","type_name":{"id":3314,"node_type":30,"src":{"id":3315,"line":790,"column":17,"start":28496,"end":28502,"length":7,"parent_index":3312},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3316,"node_type":44,"src":{"id":3317,"line":790,"column":28,"start":28507,"end":28515,"length":9,"parent_index":3310},"scope":3308,"name":"y","type_name":{"id":3318,"node_type":30,"src":{"id":3319,"line":790,"column":28,"start":28507,"end":28513,"length":7,"parent_index":3316},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":3320,"node_type":43,"src":{"id":3321,"line":790,"column":62,"start":28541,"end":28549,"length":9,"parent_index":3308},"parameters":[{"id":3322,"node_type":44,"src":{"id":3323,"line":790,"column":62,"start":28541,"end":28549,"length":9,"parent_index":3320},"scope":3308,"name":"z","type_name":{"id":3324,"node_type":30,"src":{"id":3325,"line":790,"column":62,"start":28541,"end":28547,"length":7,"parent_index":3322},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":3306,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}},{"id":3351,"name":"sub","node_type":42,"kind":41,"src":{"id":3352,"line":794,"column":4,"start":28624,"end":28759,"length":136,"parent_index":3306},"body":{"id":3369,"node_type":46,"kind":0,"src":{"id":3370,"line":794,"column":73,"start":28693,"end":28759,"length":67,"parent_index":3351},"implemented":true,"statements":[{"id":3371,"node_type":24,"kind":24,"src":{"id":3372,"line":795,"column":8,"start":28703,"end":28752,"length":50,"parent_index":3369},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ds-math-sub-underflow\""}],"arguments":[{"id":3375,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3376,"line":795,"column":16,"start":28711,"end":28726,"length":16,"parent_index":3371},"operator":10,"left_expression":{"id":3377,"node_type":60,"src":{"id":3378,"line":795,"column":16,"start":28711,"end":28721,"length":11,"parent_index":3375},"is_constant":false,"is_pure":false,"components":[{"id":3379,"node_type":27,"src":{"id":3380,"line":795,"column":17,"start":28712,"end":28720,"length":9,"parent_index":3377},"operator":11,"left_expression":{"id":3381,"node_type":16,"src":{"id":3382,"line":795,"column":17,"start":28712,"end":28712,"length":1,"parent_index":3379},"name":"z","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3322,"is_pure":false},"right_expression":{"id":3383,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3384,"line":795,"column":21,"start":28716,"end":28720,"length":5,"parent_index":3379},"operator":2,"left_expression":{"id":3385,"node_type":16,"src":{"id":3386,"line":795,"column":21,"start":28716,"end":28716,"length":1,"parent_index":3383},"name":"x","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3385,"is_pure":false},"right_expression":{"id":3387,"node_type":16,"src":{"id":3388,"line":795,"column":25,"start":28720,"end":28720,"length":1,"parent_index":3383},"name":"y","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3387,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}],"type_description":{"type_identifier":"t_tuple_$_t_uint256$","type_string":"tuple(uint256)"}},"right_expression":{"id":3389,"node_type":16,"src":{"id":3390,"line":795,"column":31,"start":28726,"end":28726,"length":1,"parent_index":3375},"name":"x","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3389,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":3391,"node_type":17,"kind":50,"value":"ds-math-sub-underflow","hex_value":"64732d6d6174682d7375622d756e646572666c6f77","src":{"id":3392,"line":795,"column":34,"start":28729,"end":28751,"length":23,"parent_index":3371},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ds-math-sub-underflow\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":3373,"node_type":16,"src":{"id":3374,"line":795,"column":8,"start":28703,"end":28709,"length":7,"parent_index":3371},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3353,"node_type":43,"src":{"id":3354,"line":794,"column":17,"start":28637,"end":28656,"length":20,"parent_index":3351},"parameters":[{"id":3355,"node_type":44,"src":{"id":3356,"line":794,"column":17,"start":28637,"end":28645,"length":9,"parent_index":3353},"scope":3351,"name":"x","type_name":{"id":3357,"node_type":30,"src":{"id":3358,"line":794,"column":17,"start":28637,"end":28643,"length":7,"parent_index":3355},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3359,"node_type":44,"src":{"id":3360,"line":794,"column":28,"start":28648,"end":28656,"length":9,"parent_index":3353},"scope":3351,"name":"y","type_name":{"id":3361,"node_type":30,"src":{"id":3362,"line":794,"column":28,"start":28648,"end":28654,"length":7,"parent_index":3359},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":3363,"node_type":43,"src":{"id":3364,"line":794,"column":62,"start":28682,"end":28690,"length":9,"parent_index":3351},"parameters":[{"id":3365,"node_type":44,"src":{"id":3366,"line":794,"column":62,"start":28682,"end":28690,"length":9,"parent_index":3363},"scope":3351,"name":"z","type_name":{"id":3367,"node_type":30,"src":{"id":3368,"line":794,"column":62,"start":28682,"end":28688,"length":7,"parent_index":3365},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":3306,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}},{"id":3394,"name":"mul","node_type":42,"kind":41,"src":{"id":3395,"line":798,"column":4,"start":28766,"end":28914,"length":149,"parent_index":3306},"body":{"id":3412,"node_type":46,"kind":0,"src":{"id":3413,"line":798,"column":73,"start":28835,"end":28914,"length":80,"parent_index":3394},"implemented":true,"statements":[{"id":3414,"node_type":24,"kind":24,"src":{"id":3415,"line":799,"column":8,"start":28845,"end":28907,"length":63,"parent_index":3412},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"ds-math-mul-overflow\""}],"arguments":[{"id":3418,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3419,"line":799,"column":16,"start":28853,"end":28882,"length":30,"parent_index":3414},"operator":33,"left_expression":{"id":3420,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3421,"line":799,"column":16,"start":28853,"end":28858,"length":6,"parent_index":3418},"operator":11,"left_expression":{"id":3422,"node_type":16,"src":{"id":3423,"line":799,"column":16,"start":28853,"end":28853,"length":1,"parent_index":3420},"name":"y","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3422,"is_pure":false},"right_expression":{"id":3424,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":3425,"line":799,"column":21,"start":28858,"end":28858,"length":1,"parent_index":3420},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"right_expression":{"id":3426,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3427,"line":799,"column":26,"start":28863,"end":28882,"length":20,"parent_index":3418},"operator":11,"left_expression":{"id":3428,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3429,"line":799,"column":26,"start":28863,"end":28877,"length":15,"parent_index":3426},"operator":4,"left_expression":{"id":3430,"node_type":60,"src":{"id":3431,"line":799,"column":26,"start":28863,"end":28873,"length":11,"parent_index":3428},"is_constant":false,"is_pure":false,"components":[{"id":3432,"node_type":27,"src":{"id":3433,"line":799,"column":27,"start":28864,"end":28872,"length":9,"parent_index":3430},"operator":11,"left_expression":{"id":3434,"node_type":16,"src":{"id":3435,"line":799,"column":27,"start":28864,"end":28864,"length":1,"parent_index":3432},"name":"z","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3322,"is_pure":false},"right_expression":{"id":3436,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3437,"line":799,"column":31,"start":28868,"end":28872,"length":5,"parent_index":3432},"operator":3,"left_expression":{"id":3438,"node_type":16,"src":{"id":3439,"line":799,"column":31,"start":28868,"end":28868,"length":1,"parent_index":3436},"name":"x","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3438,"is_pure":false},"right_expression":{"id":3440,"node_type":16,"src":{"id":3441,"line":799,"column":35,"start":28872,"end":28872,"length":1,"parent_index":3436},"name":"y","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3440,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}],"type_description":{"type_identifier":"t_tuple_$_t_uint256$","type_string":"tuple(uint256)"}},"right_expression":{"id":3442,"node_type":16,"src":{"id":3443,"line":799,"column":40,"start":28877,"end":28877,"length":1,"parent_index":3428},"name":"y","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3442,"is_pure":false},"type_description":{"type_identifier":"t_tuple_$_t_uint256$","type_string":"tuple(uint256)"}},"right_expression":{"id":3444,"node_type":16,"src":{"id":3445,"line":799,"column":45,"start":28882,"end":28882,"length":1,"parent_index":3426},"name":"x","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3444,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":3446,"node_type":17,"kind":50,"value":"ds-math-mul-overflow","hex_value":"64732d6d6174682d6d756c2d6f766572666c6f77","src":{"id":3447,"line":799,"column":48,"start":28885,"end":28906,"length":22,"parent_index":3414},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"ds-math-mul-overflow\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":3416,"node_type":16,"src":{"id":3417,"line":799,"column":8,"start":28845,"end":28851,"length":7,"parent_index":3414},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3396,"node_type":43,"src":{"id":3397,"line":798,"column":17,"start":28779,"end":28798,"length":20,"parent_index":3394},"parameters":[{"id":3398,"node_type":44,"src":{"id":3399,"line":798,"column":17,"start":28779,"end":28787,"length":9,"parent_index":3396},"scope":3394,"name":"x","type_name":{"id":3400,"node_type":30,"src":{"id":3401,"line":798,"column":17,"start":28779,"end":28785,"length":7,"parent_index":3398},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3402,"node_type":44,"src":{"id":3403,"line":798,"column":28,"start":28790,"end":28798,"length":9,"parent_index":3396},"scope":3394,"name":"y","type_name":{"id":3404,"node_type":30,"src":{"id":3405,"line":798,"column":28,"start":28790,"end":28796,"length":7,"parent_index":3402},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":3406,"node_type":43,"src":{"id":3407,"line":798,"column":62,"start":28824,"end":28832,"length":9,"parent_index":3394},"parameters":[{"id":3408,"node_type":44,"src":{"id":3409,"line":798,"column":62,"start":28824,"end":28832,"length":9,"parent_index":3406},"scope":3394,"name":"z","type_name":{"id":3410,"node_type":30,"src":{"id":3411,"line":798,"column":62,"start":28824,"end":28830,"length":7,"parent_index":3408},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":3306,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256)"}}],"linearized_base_contracts":[3306],"base_contracts":[],"contract_dependencies":[],"scope":3265}],"src":{"id":3266,"line":789,"column":0,"start":28453,"end":28916,"length":464,"parent_index":263}},{"id":3448,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":3448,"name":"UniswapV2Library","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/UniswapV2Library.sol"},{"id":3265,"name":"IUniswapV2Pair","absolute_path":"IUniswapV2Pair.sol"},{"id":3265,"name":"SafeMath","absolute_path":"SafeMath.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/UniswapV2Library.sol","name":"UniswapV2Library","node_type":1,"nodes":[{"id":3478,"node_type":10,"src":{"id":3479,"line":805,"column":0,"start":28956,"end":28979,"length":24,"parent_index":3448},"literals":["pragma","solidity","\u003e=","0",".","5",".","0",";"],"text":"pragma solidity \u003e=0.5.0;"},{"id":3491,"node_type":29,"src":{"id":0,"line":807,"column":0,"start":28982,"end":29011,"length":30,"parent_index":3448},"absolute_path":"IUniswapV2Pair.sol","file":"./IUniswapV2Pair.sol","scope":3448,"unit_alias":"","source_unit":3265},{"id":3492,"node_type":29,"src":{"id":0,"line":809,"column":0,"start":29014,"end":29037,"length":24,"parent_index":3448},"absolute_path":"SafeMath.sol","file":"./SafeMath.sol","scope":3448,"unit_alias":"","source_unit":3265},{"id":3493,"name":"UniswapV2Library","node_type":35,"src":{"id":0,"line":811,"column":0,"start":29040,"end":34362,"length":5323,"parent_index":3448},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":3495,"node_type":51,"src":{"id":3496,"line":812,"column":0,"start":29071,"end":29104,"length":34,"parent_index":3493},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"type_name":{"id":3497,"node_type":30,"src":{"id":3498,"line":812,"column":30,"start":29097,"end":29103,"length":7,"parent_index":3495},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"library_name":{"id":3499,"node_type":52,"src":{"id":3500,"line":812,"column":0,"start":29077,"end":29091,"length":15,"parent_index":3495},"name":"SafeMathUniswap","referenced_declaration":3265}},{"id":3502,"name":"sortTokens","node_type":42,"kind":41,"src":{"id":3503,"line":815,"column":4,"start":29211,"end":29607,"length":397,"parent_index":3493},"body":{"id":3524,"node_type":46,"kind":0,"src":{"id":3525,"line":819,"column":4,"start":29346,"end":29607,"length":262,"parent_index":3502},"implemented":true,"statements":[{"id":3526,"node_type":24,"kind":24,"src":{"id":3527,"line":820,"column":8,"start":29356,"end":29421,"length":66,"parent_index":3524},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: IDENTICAL_ADDRESSES\""}],"arguments":[{"id":3530,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3531,"line":820,"column":16,"start":29364,"end":29379,"length":16,"parent_index":3526},"operator":12,"left_expression":{"id":3532,"node_type":16,"src":{"id":3533,"line":820,"column":16,"start":29364,"end":29369,"length":6,"parent_index":3530},"name":"tokenA","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3532,"is_pure":false},"right_expression":{"id":3534,"node_type":16,"src":{"id":3535,"line":820,"column":26,"start":29374,"end":29379,"length":6,"parent_index":3530},"name":"tokenB","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3534,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":3536,"node_type":17,"kind":50,"value":"UniswapV2Library: IDENTICAL_ADDRESSES","hex_value":"556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553","src":{"id":3537,"line":820,"column":34,"start":29382,"end":29420,"length":39,"parent_index":3526},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: IDENTICAL_ADDRESSES\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":3528,"node_type":16,"src":{"id":3529,"line":820,"column":8,"start":29356,"end":29362,"length":7,"parent_index":3526},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":3538,"node_type":81,"src":{"id":3539,"line":821,"column":8,"start":29432,"end":29528,"length":97,"parent_index":3524},"expression":{"id":3540,"node_type":27,"src":{"id":3541,"line":821,"column":8,"start":29432,"end":29527,"length":96,"parent_index":3524},"operator":11,"left_expression":{"id":3542,"node_type":60,"src":{"id":3543,"line":821,"column":8,"start":29432,"end":29447,"length":16,"parent_index":3540},"is_constant":false,"is_pure":false,"components":[{"id":3544,"node_type":16,"src":{"id":3545,"line":821,"column":9,"start":29433,"end":29438,"length":6,"parent_index":3542},"name":"token0","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3516,"is_pure":false},{"id":3546,"node_type":16,"src":{"id":3547,"line":821,"column":17,"start":29441,"end":29446,"length":6,"parent_index":3542},"name":"token1","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3520,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_address_$_t_address$","type_string":"tuple(address,address)"}},"right_expression":{"id":3549,"node_type":97,"src":{"id":3550,"line":821,"column":27,"start":29451,"end":29527,"length":77,"parent_index":3540},"expressions":[{"id":3551,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3552,"line":821,"column":27,"start":29451,"end":29465,"length":15,"parent_index":3549},"operator":9,"left_expression":{"id":3553,"node_type":16,"src":{"id":3554,"line":821,"column":27,"start":29451,"end":29456,"length":6,"parent_index":3551},"name":"tokenA","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3553,"is_pure":false},"right_expression":{"id":3555,"node_type":16,"src":{"id":3556,"line":821,"column":36,"start":29460,"end":29465,"length":6,"parent_index":3551},"name":"tokenB","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3555,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":3557,"node_type":60,"src":{"id":3558,"line":822,"column":14,"start":29481,"end":29496,"length":16,"parent_index":3549},"is_constant":false,"is_pure":false,"components":[{"id":3559,"node_type":16,"src":{"id":3560,"line":822,"column":15,"start":29482,"end":29487,"length":6,"parent_index":3557},"name":"tokenA","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3559,"is_pure":false},{"id":3561,"node_type":16,"src":{"id":3562,"line":822,"column":23,"start":29490,"end":29495,"length":6,"parent_index":3557},"name":"tokenB","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3561,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_address_$_t_address$","type_string":"tuple(address,address)"}},{"id":3563,"node_type":60,"src":{"id":3564,"line":823,"column":14,"start":29512,"end":29527,"length":16,"parent_index":3549},"is_constant":false,"is_pure":false,"components":[{"id":3565,"node_type":16,"src":{"id":3566,"line":823,"column":15,"start":29513,"end":29518,"length":6,"parent_index":3563},"name":"tokenB","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3565,"is_pure":false},{"id":3567,"node_type":16,"src":{"id":3568,"line":823,"column":23,"start":29521,"end":29526,"length":6,"parent_index":3563},"name":"tokenA","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3567,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_address_$_t_address$","type_string":"tuple(address,address)"}}],"type_descriptions":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_tuple_$_t_address_$_t_address$","type_string":"tuple(address,address)"},{"type_identifier":"t_tuple_$_t_address_$_t_address$","type_string":"tuple(address,address)"}],"type_description":null},"type_description":{"type_identifier":"t_tuple_$_t_address_$_t_address$","type_string":"tuple(address,address)"}},"type_description":{"type_identifier":"t_tuple_$_t_address_$_t_address$","type_string":"tuple(address,address)"}},{"id":3569,"node_type":24,"kind":24,"src":{"id":3570,"line":824,"column":8,"start":29538,"end":29600,"length":63,"parent_index":3524},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: ZERO_ADDRESS\""}],"arguments":[{"id":3573,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3574,"line":824,"column":16,"start":29546,"end":29565,"length":20,"parent_index":3569},"operator":12,"left_expression":{"id":3575,"node_type":16,"src":{"id":3576,"line":824,"column":16,"start":29546,"end":29551,"length":6,"parent_index":3573},"name":"token0","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3516,"is_pure":false},"right_expression":{"id":3577,"node_type":24,"kind":24,"src":{"id":3578,"line":824,"column":26,"start":29556,"end":29565,"length":10,"parent_index":3573},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":3583,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":3584,"line":824,"column":34,"start":29564,"end":29564,"length":1,"parent_index":3577},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":3579,"node_type":16,"src":{"id":3580,"line":824,"column":26,"start":29556,"end":29562,"length":7,"parent_index":3577},"name":"address","type_name":{"id":3581,"node_type":30,"src":{"id":3582,"line":824,"column":26,"start":29556,"end":29562,"length":7,"parent_index":3579},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":3585,"node_type":17,"kind":50,"value":"UniswapV2Library: ZERO_ADDRESS","hex_value":"556e697377617056324c6962726172793a205a45524f5f41444452455353","src":{"id":3586,"line":824,"column":38,"start":29568,"end":29599,"length":32,"parent_index":3569},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: ZERO_ADDRESS\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":3571,"node_type":16,"src":{"id":3572,"line":824,"column":8,"start":29538,"end":29544,"length":7,"parent_index":3569},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3504,"node_type":43,"src":{"id":3505,"line":815,"column":24,"start":29231,"end":29260,"length":30,"parent_index":3502},"parameters":[{"id":3506,"node_type":44,"src":{"id":3507,"line":815,"column":24,"start":29231,"end":29244,"length":14,"parent_index":3504},"scope":3502,"name":"tokenA","type_name":{"id":3508,"node_type":30,"src":{"id":3509,"line":815,"column":24,"start":29231,"end":29237,"length":7,"parent_index":3506},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":3510,"node_type":44,"src":{"id":3511,"line":815,"column":40,"start":29247,"end":29260,"length":14,"parent_index":3504},"scope":3502,"name":"tokenB","type_name":{"id":3512,"node_type":30,"src":{"id":3513,"line":815,"column":40,"start":29247,"end":29253,"length":7,"parent_index":3510},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":3514,"node_type":43,"src":{"id":3515,"line":818,"column":17,"start":29310,"end":29339,"length":30,"parent_index":3502},"parameters":[{"id":3516,"node_type":44,"src":{"id":3517,"line":818,"column":17,"start":29310,"end":29323,"length":14,"parent_index":3514},"scope":3502,"name":"token0","type_name":{"id":3518,"node_type":30,"src":{"id":3519,"line":818,"column":17,"start":29310,"end":29316,"length":7,"parent_index":3516},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":3520,"node_type":44,"src":{"id":3521,"line":818,"column":33,"start":29326,"end":29339,"length":14,"parent_index":3514},"scope":3502,"name":"token1","type_name":{"id":3522,"node_type":30,"src":{"id":3523,"line":818,"column":33,"start":29326,"end":29332,"length":7,"parent_index":3520},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"scope":3493,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$","type_string":"function(address,address)"}},{"id":3588,"name":"pairFor","node_type":42,"kind":41,"src":{"id":3589,"line":828,"column":4,"start":29697,"end":30377,"length":681,"parent_index":3493},"body":{"id":3614,"node_type":46,"kind":0,"src":{"id":3615,"line":833,"column":43,"start":29860,"end":30377,"length":518,"parent_index":3588},"implemented":true,"statements":[{"id":3616,"node_type":44,"src":{"id":3617,"line":834,"column":8,"start":29870,"end":29931,"length":62,"parent_index":3614},"assignments":[],"declarations":[],"initial_value":{"id":3618,"node_type":24,"kind":24,"src":{"id":3619,"line":834,"column":43,"start":29905,"end":29930,"length":26,"parent_index":3616},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":3622,"node_type":16,"src":{"id":3623,"line":834,"column":54,"start":29916,"end":29921,"length":6,"parent_index":3618},"name":"tokenA","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3622,"is_pure":false},{"id":3624,"node_type":16,"src":{"id":3625,"line":834,"column":62,"start":29924,"end":29929,"length":6,"parent_index":3618},"name":"tokenB","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3624,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":3620,"node_type":16,"src":{"id":3621,"line":834,"column":43,"start":29905,"end":29914,"length":10,"parent_index":3618},"name":"sortTokens","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$","type_string":"function(address,address)"}}},{"id":3626,"node_type":81,"src":{"id":3627,"line":835,"column":8,"start":29941,"end":30371,"length":431,"parent_index":3614},"expression":{"id":3628,"node_type":27,"src":{"id":3629,"line":835,"column":8,"start":29941,"end":30370,"length":430,"parent_index":3614},"operator":11,"left_expression":{"id":3630,"node_type":16,"src":{"id":3631,"line":835,"column":8,"start":29941,"end":29944,"length":4,"parent_index":3628},"name":"pair","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3610,"is_pure":false},"right_expression":{"id":3632,"node_type":24,"kind":24,"src":{"id":3633,"line":835,"column":15,"start":29948,"end":30370,"length":423,"parent_index":3628},"argument_types":[{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$","type_string":"function(function(function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32))))"}],"arguments":[{"id":3638,"node_type":24,"kind":24,"src":{"id":3639,"line":836,"column":12,"start":29969,"end":30360,"length":392,"parent_index":3632},"argument_types":[{"type_identifier":"t_function_$_t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$","type_string":"function(function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32)))"}],"arguments":[{"id":3644,"node_type":24,"kind":24,"src":{"id":3645,"line":837,"column":16,"start":29994,"end":30346,"length":353,"parent_index":3638},"argument_types":[{"type_identifier":"t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$","type_string":"function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32))"}],"arguments":[{"id":3650,"node_type":24,"kind":24,"src":{"id":3651,"line":838,"column":20,"start":30023,"end":30328,"length":306,"parent_index":3644},"argument_types":[{"type_identifier":"t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$","type_string":"function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32)"}],"arguments":[{"id":3654,"node_type":24,"kind":24,"src":{"id":3655,"line":839,"column":24,"start":30058,"end":30306,"length":249,"parent_index":3650},"argument_types":[{"type_identifier":"t_string_hex_literal","type_string":"literal_hex_string hex\"ff\""},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_function_$","type_string":"function(function(function(),function(function())))"},{"type_identifier":"t_bytes32","type_string":"bytes32"}],"arguments":[{"id":3660,"node_type":17,"kind":65,"value":"hexff","hex_value":"6865786666","src":{"id":3661,"line":840,"column":28,"start":30104,"end":30110,"length":7,"parent_index":3654},"type_description":{"type_identifier":"t_string_hex_literal","type_string":"literal_hex_string hex\"ff\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},{"id":3662,"node_type":16,"src":{"id":3663,"line":841,"column":28,"start":30141,"end":30147,"length":7,"parent_index":3654},"name":"factory","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3662,"is_pure":false,"argument_types":[{"type_identifier":"t_string_hex_literal","type_string":"literal_hex_string hex\"ff\""}]},{"id":3664,"node_type":24,"kind":24,"src":{"id":3665,"line":842,"column":28,"start":30178,"end":30220,"length":43,"parent_index":3654},"argument_types":[{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$","type_string":"function(function(),function(function()))"}],"arguments":[{"id":3668,"node_type":24,"kind":24,"src":{"id":3669,"line":842,"column":38,"start":30188,"end":30219,"length":32,"parent_index":3664},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}],"arguments":[{"id":3674,"node_type":16,"src":{"id":3675,"line":842,"column":55,"start":30205,"end":30210,"length":6,"parent_index":3668},"name":"token0","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":3676,"node_type":16,"src":{"id":3677,"line":842,"column":63,"start":30213,"end":30218,"length":6,"parent_index":3668},"name":"token1","type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]}],"expression":{"id":3670,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":3671,"line":842,"column":38,"start":30188,"end":30203,"length":16,"parent_index":3668},"expression":{"id":3672,"node_type":16,"src":{"id":3673,"line":842,"column":38,"start":30188,"end":30190,"length":3,"parent_index":3670},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"encodePacked","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$","type_string":"function(function(),function(function()))"}}],"expression":{"id":3666,"node_type":16,"src":{"id":3667,"line":842,"column":28,"start":30178,"end":30186,"length":9,"parent_index":3664},"name":"keccak256","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_function_$","type_string":"function(function(function(),function(function())))"}},{"id":3678,"node_type":16,"src":{"id":3679,"line":843,"column":28,"start":30251,"end":30262,"length":12,"parent_index":3654},"name":"pairCodeHash","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"overloaded_declarations":[],"referenced_declaration":3678,"is_pure":false,"argument_types":[{"type_identifier":"t_string_hex_literal","type_string":"literal_hex_string hex\"ff\""},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_function_$","type_string":"function(function(function(),function(function())))"}]}],"expression":{"id":3656,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":3657,"line":839,"column":24,"start":30058,"end":30073,"length":16,"parent_index":3654},"expression":{"id":3658,"node_type":16,"src":{"id":3659,"line":839,"column":24,"start":30058,"end":30060,"length":3,"parent_index":3656},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"encodePacked","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$","type_string":"function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32)"}}],"expression":{"id":3652,"node_type":16,"src":{"id":3653,"line":838,"column":20,"start":30023,"end":30031,"length":9,"parent_index":3650},"name":"keccak256","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$","type_string":"function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32))"}}],"expression":{"id":3646,"node_type":16,"src":{"id":3647,"line":837,"column":16,"start":29994,"end":30000,"length":7,"parent_index":3644},"name":"uint256","type_name":{"id":3648,"node_type":30,"src":{"id":3649,"line":837,"column":16,"start":29994,"end":30000,"length":7,"parent_index":3646},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$","type_string":"function(function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32)))"}}],"expression":{"id":3640,"node_type":16,"src":{"id":3641,"line":836,"column":12,"start":29969,"end":29975,"length":7,"parent_index":3638},"name":"uint160","type_name":{"id":3642,"node_type":30,"src":{"id":3643,"line":836,"column":12,"start":29969,"end":29975,"length":7,"parent_index":3640},"name":"uint160","type_description":{"type_identifier":"t_uint160","type_string":"uint160"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_uint160$","type_string":"function(uint160)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_uint160","type_string":"uint160"}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$","type_string":"function(function(function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32))))"}}],"expression":{"id":3634,"node_type":16,"src":{"id":3635,"line":835,"column":15,"start":29948,"end":29954,"length":7,"parent_index":3632},"name":"address","type_name":{"id":3636,"node_type":30,"src":{"id":3637,"line":835,"column":15,"start":29948,"end":29954,"length":7,"parent_index":3634},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$","type_string":"function(function(function(function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32)))))"}},"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_address","type_string":"address"}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3590,"node_type":43,"src":{"id":3591,"line":829,"column":8,"start":29723,"end":29815,"length":93,"parent_index":3588},"parameters":[{"id":3592,"node_type":44,"src":{"id":3593,"line":829,"column":8,"start":29723,"end":29737,"length":15,"parent_index":3590},"scope":3588,"name":"factory","type_name":{"id":3594,"node_type":30,"src":{"id":3595,"line":829,"column":8,"start":29723,"end":29729,"length":7,"parent_index":3592},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":3596,"node_type":44,"src":{"id":3597,"line":830,"column":8,"start":29748,"end":29761,"length":14,"parent_index":3590},"scope":3588,"name":"tokenA","type_name":{"id":3598,"node_type":30,"src":{"id":3599,"line":830,"column":8,"start":29748,"end":29754,"length":7,"parent_index":3596},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":3600,"node_type":44,"src":{"id":3601,"line":831,"column":8,"start":29772,"end":29785,"length":14,"parent_index":3590},"scope":3588,"name":"tokenB","type_name":{"id":3602,"node_type":30,"src":{"id":3603,"line":831,"column":8,"start":29772,"end":29778,"length":7,"parent_index":3600},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":3604,"node_type":44,"src":{"id":3605,"line":832,"column":8,"start":29796,"end":29815,"length":20,"parent_index":3590},"scope":3588,"name":"pairCodeHash","type_name":{"id":3606,"node_type":30,"src":{"id":3607,"line":832,"column":8,"start":29796,"end":29802,"length":7,"parent_index":3604},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":3608,"node_type":43,"src":{"id":3609,"line":833,"column":29,"start":29846,"end":29857,"length":12,"parent_index":3588},"parameters":[{"id":3610,"node_type":44,"src":{"id":3611,"line":833,"column":29,"start":29846,"end":29857,"length":12,"parent_index":3608},"scope":3588,"name":"pair","type_name":{"id":3612,"node_type":30,"src":{"id":3613,"line":833,"column":29,"start":29846,"end":29852,"length":7,"parent_index":3610},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"}]},"scope":3493,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_address$_t_bytes32$","type_string":"function(address,address,address,bytes32)"}},{"id":3681,"name":"getReserves","node_type":42,"kind":41,"src":{"id":3682,"line":852,"column":4,"start":30433,"end":30953,"length":521,"parent_index":3493},"body":{"id":3711,"node_type":46,"kind":0,"src":{"id":3712,"line":857,"column":65,"start":30622,"end":30953,"length":332,"parent_index":3681},"implemented":true,"statements":[{"id":3713,"node_type":44,"src":{"id":3714,"line":858,"column":8,"start":30632,"end":30679,"length":48,"parent_index":3711},"assignments":[],"declarations":[],"initial_value":{"id":3715,"node_type":24,"kind":24,"src":{"id":3716,"line":858,"column":29,"start":30653,"end":30678,"length":26,"parent_index":3713},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":3719,"node_type":16,"src":{"id":3720,"line":858,"column":40,"start":30664,"end":30669,"length":6,"parent_index":3715},"name":"tokenA","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3719,"is_pure":false},{"id":3721,"node_type":16,"src":{"id":3722,"line":858,"column":48,"start":30672,"end":30677,"length":6,"parent_index":3715},"name":"tokenB","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3721,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":3717,"node_type":16,"src":{"id":3718,"line":858,"column":29,"start":30653,"end":30662,"length":10,"parent_index":3715},"name":"sortTokens","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$","type_string":"function(address,address)"}}},{"id":3723,"node_type":44,"src":{"id":3724,"line":859,"column":8,"start":30689,"end":30828,"length":140,"parent_index":3711},"assignments":[],"declarations":[],"initial_value":{"id":3725,"node_type":24,"kind":24,"src":{"id":3726,"line":859,"column":49,"start":30730,"end":30827,"length":98,"parent_index":3723},"argument_types":[],"arguments":[],"expression":{"id":3727,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":3728,"line":859,"column":49,"start":30730,"end":30825,"length":96,"parent_index":3725},"expression":{"id":3729,"node_type":24,"kind":24,"src":{"id":3730,"line":859,"column":49,"start":30730,"end":30813,"length":84,"parent_index":3727},"argument_types":[{"type_identifier":"t_function_$_t_address$_t_address$_t_address$_t_bytes32$","type_string":"function(address,address,address,bytes32)"}],"arguments":[{"id":3733,"node_type":24,"kind":24,"src":{"id":3734,"line":860,"column":12,"start":30758,"end":30803,"length":46,"parent_index":3729},"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes32","type_string":"bytes32"}],"arguments":[{"id":3737,"node_type":16,"src":{"id":3738,"line":860,"column":20,"start":30766,"end":30772,"length":7,"parent_index":3733},"name":"factory","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3737,"is_pure":false},{"id":3739,"node_type":16,"src":{"id":3740,"line":860,"column":29,"start":30775,"end":30780,"length":6,"parent_index":3733},"name":"tokenA","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3739,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},{"id":3741,"node_type":16,"src":{"id":3742,"line":860,"column":37,"start":30783,"end":30788,"length":6,"parent_index":3733},"name":"tokenB","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3741,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},{"id":3743,"node_type":16,"src":{"id":3744,"line":860,"column":45,"start":30791,"end":30802,"length":12,"parent_index":3733},"name":"pairCodeHash","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"overloaded_declarations":[],"referenced_declaration":3743,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":3735,"node_type":16,"src":{"id":3736,"line":860,"column":12,"start":30758,"end":30764,"length":7,"parent_index":3733},"name":"pairFor","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_address$_t_bytes32$","type_string":"function(address,address,address,bytes32)"}}],"expression":{"id":3731,"node_type":16,"src":{"id":3732,"line":859,"column":49,"start":30730,"end":30743,"length":14,"parent_index":3729},"name":"IUniswapV2Pair","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_address$_t_address$_t_bytes32$","type_string":"function(function(address,address,address,bytes32))"}},"member_name":"getReserves","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$_t_address$_t_address$_t_bytes32$","type_string":"function(function(address,address,address,bytes32))"}},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}},{"id":3745,"node_type":81,"src":{"id":3746,"line":862,"column":8,"start":30838,"end":30947,"length":110,"parent_index":3711},"expression":{"id":3747,"node_type":27,"src":{"id":3748,"line":862,"column":8,"start":30838,"end":30946,"length":109,"parent_index":3711},"operator":11,"left_expression":{"id":3749,"node_type":60,"src":{"id":3750,"line":862,"column":8,"start":30838,"end":30857,"length":20,"parent_index":3747},"is_constant":false,"is_pure":false,"components":[{"id":3751,"node_type":16,"src":{"id":3752,"line":862,"column":9,"start":30839,"end":30846,"length":8,"parent_index":3749},"name":"reserveA","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3703,"is_pure":false},{"id":3753,"node_type":16,"src":{"id":3754,"line":862,"column":19,"start":30849,"end":30856,"length":8,"parent_index":3749},"name":"reserveB","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3707,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_uint256_$_t_uint256$","type_string":"tuple(uint256,uint256)"}},"right_expression":{"id":3756,"node_type":97,"src":{"id":3757,"line":862,"column":31,"start":30861,"end":30946,"length":86,"parent_index":3747},"expressions":[{"id":3758,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3759,"line":862,"column":31,"start":30861,"end":30876,"length":16,"parent_index":3756},"operator":11,"left_expression":{"id":3760,"node_type":16,"src":{"id":3761,"line":862,"column":31,"start":30861,"end":30866,"length":6,"parent_index":3758},"name":"tokenA","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3760,"is_pure":false},"right_expression":{"id":3762,"node_type":16,"src":{"id":3763,"line":862,"column":41,"start":30871,"end":30876,"length":6,"parent_index":3758},"name":"token0","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3516,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":3764,"node_type":60,"src":{"id":3765,"line":863,"column":14,"start":30892,"end":30911,"length":20,"parent_index":3756},"is_constant":false,"is_pure":false,"components":[{"id":3766,"node_type":16,"src":{"id":3767,"line":863,"column":15,"start":30893,"end":30900,"length":8,"parent_index":3764},"name":"reserve0","type_description":{"type_identifier":"t_uint112","type_string":"uint112"},"overloaded_declarations":[],"referenced_declaration":3022,"is_pure":false},{"id":3768,"node_type":16,"src":{"id":3769,"line":863,"column":25,"start":30903,"end":30910,"length":8,"parent_index":3764},"name":"reserve1","type_description":{"type_identifier":"t_uint112","type_string":"uint112"},"overloaded_declarations":[],"referenced_declaration":3026,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_uint112_$_t_uint112$","type_string":"tuple(uint112,uint112)"}},{"id":3770,"node_type":60,"src":{"id":3771,"line":864,"column":14,"start":30927,"end":30946,"length":20,"parent_index":3756},"is_constant":false,"is_pure":false,"components":[{"id":3772,"node_type":16,"src":{"id":3773,"line":864,"column":15,"start":30928,"end":30935,"length":8,"parent_index":3770},"name":"reserve1","type_description":{"type_identifier":"t_uint112","type_string":"uint112"},"overloaded_declarations":[],"referenced_declaration":3026,"is_pure":false},{"id":3774,"node_type":16,"src":{"id":3775,"line":864,"column":25,"start":30938,"end":30945,"length":8,"parent_index":3770},"name":"reserve0","type_description":{"type_identifier":"t_uint112","type_string":"uint112"},"overloaded_declarations":[],"referenced_declaration":3022,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_uint112_$_t_uint112$","type_string":"tuple(uint112,uint112)"}}],"type_descriptions":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_tuple_$_t_uint112_$_t_uint112$","type_string":"tuple(uint112,uint112)"},{"type_identifier":"t_tuple_$_t_uint112_$_t_uint112$","type_string":"tuple(uint112,uint112)"}],"type_description":null},"type_description":{"type_identifier":"t_tuple_$_t_uint256_$_t_uint256$","type_string":"tuple(uint256,uint256)"}},"type_description":{"type_identifier":"t_tuple_$_t_uint256_$_t_uint256$","type_string":"tuple(uint256,uint256)"}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3683,"node_type":43,"src":{"id":3684,"line":853,"column":8,"start":30463,"end":30555,"length":93,"parent_index":3681},"parameters":[{"id":3685,"node_type":44,"src":{"id":3686,"line":853,"column":8,"start":30463,"end":30477,"length":15,"parent_index":3683},"scope":3681,"name":"factory","type_name":{"id":3687,"node_type":30,"src":{"id":3688,"line":853,"column":8,"start":30463,"end":30469,"length":7,"parent_index":3685},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":3689,"node_type":44,"src":{"id":3690,"line":854,"column":8,"start":30488,"end":30501,"length":14,"parent_index":3683},"scope":3681,"name":"tokenA","type_name":{"id":3691,"node_type":30,"src":{"id":3692,"line":854,"column":8,"start":30488,"end":30494,"length":7,"parent_index":3689},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":3693,"node_type":44,"src":{"id":3694,"line":855,"column":8,"start":30512,"end":30525,"length":14,"parent_index":3683},"scope":3681,"name":"tokenB","type_name":{"id":3695,"node_type":30,"src":{"id":3696,"line":855,"column":8,"start":30512,"end":30518,"length":7,"parent_index":3693},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":3697,"node_type":44,"src":{"id":3698,"line":856,"column":8,"start":30536,"end":30555,"length":20,"parent_index":3683},"scope":3681,"name":"pairCodeHash","type_name":{"id":3699,"node_type":30,"src":{"id":3700,"line":856,"column":8,"start":30536,"end":30542,"length":7,"parent_index":3697},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":3701,"node_type":43,"src":{"id":3702,"line":857,"column":29,"start":30586,"end":30619,"length":34,"parent_index":3681},"parameters":[{"id":3703,"node_type":44,"src":{"id":3704,"line":857,"column":29,"start":30586,"end":30601,"length":16,"parent_index":3701},"scope":3681,"name":"reserveA","type_name":{"id":3705,"node_type":30,"src":{"id":3706,"line":857,"column":29,"start":30586,"end":30592,"length":7,"parent_index":3703},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3707,"node_type":44,"src":{"id":3708,"line":857,"column":47,"start":30604,"end":30619,"length":16,"parent_index":3701},"scope":3681,"name":"reserveB","type_name":{"id":3709,"node_type":30,"src":{"id":3710,"line":857,"column":47,"start":30604,"end":30610,"length":7,"parent_index":3707},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":3493,"type_description":{"type_identifier":"t_function_$_t_address$_t_address$_t_address$_t_bytes32$","type_string":"function(address,address,address,bytes32)"}},{"id":3777,"name":"quote","node_type":42,"kind":41,"src":{"id":3778,"line":868,"column":4,"start":31064,"end":31456,"length":393,"parent_index":3493},"body":{"id":3799,"node_type":46,"kind":0,"src":{"id":3800,"line":872,"column":46,"start":31202,"end":31456,"length":255,"parent_index":3777},"implemented":true,"statements":[{"id":3801,"node_type":24,"kind":24,"src":{"id":3802,"line":873,"column":8,"start":31212,"end":31272,"length":61,"parent_index":3799},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: INSUFFICIENT_AMOUNT\""}],"arguments":[{"id":3805,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3806,"line":873,"column":16,"start":31220,"end":31230,"length":11,"parent_index":3801},"operator":7,"left_expression":{"id":3807,"node_type":16,"src":{"id":3808,"line":873,"column":16,"start":31220,"end":31226,"length":7,"parent_index":3805},"name":"amountA","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3807,"is_pure":false},"right_expression":{"id":3809,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":3810,"line":873,"column":26,"start":31230,"end":31230,"length":1,"parent_index":3805},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":3811,"node_type":17,"kind":50,"value":"UniswapV2Library: INSUFFICIENT_AMOUNT","hex_value":"556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54","src":{"id":3812,"line":873,"column":29,"start":31233,"end":31271,"length":39,"parent_index":3801},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: INSUFFICIENT_AMOUNT\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":3803,"node_type":16,"src":{"id":3804,"line":873,"column":8,"start":31212,"end":31218,"length":7,"parent_index":3801},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":3813,"node_type":24,"kind":24,"src":{"id":3814,"line":874,"column":8,"start":31283,"end":31397,"length":115,"parent_index":3799},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\""}],"arguments":[{"id":3818,"node_type":96,"src":{"id":3819,"line":875,"column":12,"start":31304,"end":31331,"length":28,"parent_index":3813},"expressions":[{"id":3820,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3821,"line":875,"column":12,"start":31304,"end":31315,"length":12,"parent_index":3818},"operator":7,"left_expression":{"id":3822,"node_type":16,"src":{"id":3823,"line":875,"column":12,"start":31304,"end":31311,"length":8,"parent_index":3820},"name":"reserveA","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3822,"is_pure":false},"right_expression":{"id":3824,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":3825,"line":875,"column":23,"start":31315,"end":31315,"length":1,"parent_index":3820},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":3826,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3827,"line":875,"column":28,"start":31320,"end":31331,"length":12,"parent_index":3818},"operator":7,"left_expression":{"id":3828,"node_type":16,"src":{"id":3829,"line":875,"column":28,"start":31320,"end":31327,"length":8,"parent_index":3826},"name":"reserveB","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3828,"is_pure":false},"right_expression":{"id":3830,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":3831,"line":875,"column":39,"start":31331,"end":31331,"length":1,"parent_index":3826},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}}],"type_descriptions":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_bool","type_string":"bool"}]},{"id":3832,"node_type":17,"kind":50,"value":"UniswapV2Library: INSUFFICIENT_LIQUIDITY","hex_value":"556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459","src":{"id":3833,"line":876,"column":12,"start":31346,"end":31387,"length":42,"parent_index":3813},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":3815,"node_type":16,"src":{"id":3816,"line":874,"column":8,"start":31283,"end":31289,"length":7,"parent_index":3813},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":3834,"node_type":81,"src":{"id":3835,"line":878,"column":8,"start":31408,"end":31450,"length":43,"parent_index":3799},"expression":{"id":3836,"node_type":27,"src":{"id":3837,"line":878,"column":8,"start":31408,"end":31449,"length":42,"parent_index":3799},"operator":11,"left_expression":{"id":3838,"node_type":16,"src":{"id":3839,"line":878,"column":8,"start":31408,"end":31414,"length":7,"parent_index":3836},"name":"amountB","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3795,"is_pure":false},"right_expression":{"id":3840,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3841,"line":878,"column":18,"start":31418,"end":31449,"length":32,"parent_index":3836},"operator":4,"left_expression":{"id":3842,"node_type":24,"kind":24,"src":{"id":3843,"line":878,"column":18,"start":31418,"end":31438,"length":21,"parent_index":3840},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":3848,"node_type":16,"src":{"id":3849,"line":878,"column":30,"start":31430,"end":31437,"length":8,"parent_index":3842},"name":"reserveB","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3848,"is_pure":false}],"expression":{"id":3844,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":3845,"line":878,"column":18,"start":31418,"end":31428,"length":11,"parent_index":3842},"expression":{"id":3846,"node_type":16,"src":{"id":3847,"line":878,"column":18,"start":31418,"end":31424,"length":7,"parent_index":3844},"name":"amountA","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3846,"is_pure":false},"member_name":"mul","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},"right_expression":{"id":3850,"node_type":16,"src":{"id":3851,"line":878,"column":42,"start":31442,"end":31449,"length":8,"parent_index":3840},"name":"reserveA","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3850,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3779,"node_type":43,"src":{"id":3780,"line":869,"column":8,"start":31088,"end":31154,"length":67,"parent_index":3777},"parameters":[{"id":3781,"node_type":44,"src":{"id":3782,"line":869,"column":8,"start":31088,"end":31102,"length":15,"parent_index":3779},"scope":3777,"name":"amountA","type_name":{"id":3783,"node_type":30,"src":{"id":3784,"line":869,"column":8,"start":31088,"end":31094,"length":7,"parent_index":3781},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3785,"node_type":44,"src":{"id":3786,"line":870,"column":8,"start":31113,"end":31128,"length":16,"parent_index":3779},"scope":3777,"name":"reserveA","type_name":{"id":3787,"node_type":30,"src":{"id":3788,"line":870,"column":8,"start":31113,"end":31119,"length":7,"parent_index":3785},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3789,"node_type":44,"src":{"id":3790,"line":871,"column":8,"start":31139,"end":31154,"length":16,"parent_index":3779},"scope":3777,"name":"reserveB","type_name":{"id":3791,"node_type":30,"src":{"id":3792,"line":871,"column":8,"start":31139,"end":31145,"length":7,"parent_index":3789},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":3793,"node_type":43,"src":{"id":3794,"line":872,"column":29,"start":31185,"end":31199,"length":15,"parent_index":3777},"parameters":[{"id":3795,"node_type":44,"src":{"id":3796,"line":872,"column":29,"start":31185,"end":31199,"length":15,"parent_index":3793},"scope":3777,"name":"amountB","type_name":{"id":3797,"node_type":30,"src":{"id":3798,"line":872,"column":29,"start":31185,"end":31191,"length":7,"parent_index":3795},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":3493,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256,uint256)"}},{"id":3853,"name":"getAmountOut","node_type":42,"kind":41,"src":{"id":3854,"line":882,"column":4,"start":31576,"end":32170,"length":595,"parent_index":3493},"body":{"id":3875,"node_type":46,"kind":0,"src":{"id":3876,"line":886,"column":48,"start":31727,"end":32170,"length":444,"parent_index":3853},"implemented":true,"statements":[{"id":3877,"node_type":24,"kind":24,"src":{"id":3878,"line":887,"column":8,"start":31737,"end":31804,"length":68,"parent_index":3875},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT\""}],"arguments":[{"id":3881,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3882,"line":887,"column":16,"start":31745,"end":31756,"length":12,"parent_index":3877},"operator":7,"left_expression":{"id":3883,"node_type":16,"src":{"id":3884,"line":887,"column":16,"start":31745,"end":31752,"length":8,"parent_index":3881},"name":"amountIn","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3883,"is_pure":false},"right_expression":{"id":3885,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":3886,"line":887,"column":27,"start":31756,"end":31756,"length":1,"parent_index":3881},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":3887,"node_type":17,"kind":50,"value":"UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT","hex_value":"556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54","src":{"id":3888,"line":887,"column":30,"start":31759,"end":31803,"length":45,"parent_index":3877},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":3879,"node_type":16,"src":{"id":3880,"line":887,"column":8,"start":31737,"end":31743,"length":7,"parent_index":3877},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":3889,"node_type":24,"kind":24,"src":{"id":3890,"line":888,"column":8,"start":31815,"end":31932,"length":118,"parent_index":3875},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\""}],"arguments":[{"id":3894,"node_type":96,"src":{"id":3895,"line":889,"column":12,"start":31836,"end":31866,"length":31,"parent_index":3889},"expressions":[{"id":3896,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3897,"line":889,"column":12,"start":31836,"end":31848,"length":13,"parent_index":3894},"operator":7,"left_expression":{"id":3898,"node_type":16,"src":{"id":3899,"line":889,"column":12,"start":31836,"end":31844,"length":9,"parent_index":3896},"name":"reserveIn","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3898,"is_pure":false},"right_expression":{"id":3900,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":3901,"line":889,"column":24,"start":31848,"end":31848,"length":1,"parent_index":3896},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":3902,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3903,"line":889,"column":29,"start":31853,"end":31866,"length":14,"parent_index":3894},"operator":7,"left_expression":{"id":3904,"node_type":16,"src":{"id":3905,"line":889,"column":29,"start":31853,"end":31862,"length":10,"parent_index":3902},"name":"reserveOut","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3904,"is_pure":false},"right_expression":{"id":3906,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":3907,"line":889,"column":42,"start":31866,"end":31866,"length":1,"parent_index":3902},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}}],"type_descriptions":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_bool","type_string":"bool"}]},{"id":3908,"node_type":17,"kind":50,"value":"UniswapV2Library: INSUFFICIENT_LIQUIDITY","hex_value":"556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459","src":{"id":3909,"line":890,"column":12,"start":31881,"end":31922,"length":42,"parent_index":3889},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":3891,"node_type":16,"src":{"id":3892,"line":888,"column":8,"start":31815,"end":31821,"length":7,"parent_index":3889},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":3910,"node_type":44,"src":{"id":3911,"line":892,"column":8,"start":31943,"end":31986,"length":44,"parent_index":3875},"assignments":[3912],"declarations":[{"is_constant":false,"id":3912,"state_mutability":1,"name":"amountInWithFee","node_type":44,"scope":3875,"src":{"id":3913,"line":892,"column":8,"start":31943,"end":31965,"length":23,"parent_index":3910},"is_state_variable":false,"storage_location":1,"type_name":{"id":3914,"node_type":30,"src":{"id":3915,"line":892,"column":8,"start":31943,"end":31949,"length":7,"parent_index":3912},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":3916,"node_type":24,"kind":24,"src":{"id":3917,"line":892,"column":34,"start":31969,"end":31985,"length":17,"parent_index":3910},"argument_types":[{"type_identifier":"t_rational_997_by_1","type_string":"int_const 997"}],"arguments":[{"id":3922,"node_type":17,"kind":49,"value":"997","hex_value":"393937","src":{"id":3923,"line":892,"column":47,"start":31982,"end":31984,"length":3,"parent_index":3916},"type_description":{"type_identifier":"t_rational_997_by_1","type_string":"int_const 997"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":3918,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":3919,"line":892,"column":34,"start":31969,"end":31980,"length":12,"parent_index":3916},"expression":{"id":3920,"node_type":16,"src":{"id":3921,"line":892,"column":34,"start":31969,"end":31976,"length":8,"parent_index":3918},"name":"amountIn","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3920,"is_pure":false},"member_name":"mul","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_function_$_t_rational_997_by_1$","type_string":"function(int_const 997)"}}},{"id":3924,"node_type":44,"src":{"id":3925,"line":893,"column":8,"start":31996,"end":32047,"length":52,"parent_index":3875},"assignments":[3926],"declarations":[{"is_constant":false,"id":3926,"state_mutability":1,"name":"numerator","node_type":44,"scope":3875,"src":{"id":3927,"line":893,"column":8,"start":31996,"end":32012,"length":17,"parent_index":3924},"is_state_variable":false,"storage_location":1,"type_name":{"id":3928,"node_type":30,"src":{"id":3929,"line":893,"column":8,"start":31996,"end":32002,"length":7,"parent_index":3926},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":3930,"node_type":24,"kind":24,"src":{"id":3931,"line":893,"column":28,"start":32016,"end":32046,"length":31,"parent_index":3924},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":3936,"node_type":16,"src":{"id":3937,"line":893,"column":48,"start":32036,"end":32045,"length":10,"parent_index":3930},"name":"reserveOut","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3936,"is_pure":false}],"expression":{"id":3932,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":3933,"line":893,"column":28,"start":32016,"end":32034,"length":19,"parent_index":3930},"expression":{"id":3934,"node_type":16,"src":{"id":3935,"line":893,"column":28,"start":32016,"end":32030,"length":15,"parent_index":3932},"name":"amountInWithFee","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3910,"is_pure":false},"member_name":"mul","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}}},{"id":3938,"node_type":44,"src":{"id":3939,"line":894,"column":8,"start":32057,"end":32119,"length":63,"parent_index":3875},"assignments":[3940],"declarations":[{"is_constant":false,"id":3940,"state_mutability":1,"name":"denominator","node_type":44,"scope":3875,"src":{"id":3941,"line":894,"column":8,"start":32057,"end":32075,"length":19,"parent_index":3938},"is_state_variable":false,"storage_location":1,"type_name":{"id":3942,"node_type":30,"src":{"id":3943,"line":894,"column":8,"start":32057,"end":32063,"length":7,"parent_index":3940},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":3944,"node_type":24,"kind":24,"src":{"id":3945,"line":894,"column":30,"start":32079,"end":32118,"length":40,"parent_index":3938},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":3956,"node_type":16,"src":{"id":3957,"line":894,"column":54,"start":32103,"end":32117,"length":15,"parent_index":3944},"name":"amountInWithFee","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3910,"is_pure":false}],"expression":{"id":3946,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":3947,"line":894,"column":30,"start":32079,"end":32101,"length":23,"parent_index":3944},"expression":{"id":3948,"node_type":24,"kind":24,"src":{"id":3949,"line":894,"column":30,"start":32079,"end":32097,"length":19,"parent_index":3946},"argument_types":[{"type_identifier":"t_rational_1000_by_1","type_string":"int_const 1000"}],"arguments":[{"id":3954,"node_type":17,"kind":49,"value":"1000","hex_value":"31303030","src":{"id":3955,"line":894,"column":44,"start":32093,"end":32096,"length":4,"parent_index":3948},"type_description":{"type_identifier":"t_rational_1000_by_1","type_string":"int_const 1000"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":3950,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":3951,"line":894,"column":30,"start":32079,"end":32091,"length":13,"parent_index":3948},"expression":{"id":3952,"node_type":16,"src":{"id":3953,"line":894,"column":30,"start":32079,"end":32087,"length":9,"parent_index":3950},"name":"reserveIn","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3952,"is_pure":false},"member_name":"mul","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_function_$_t_rational_1000_by_1$","type_string":"function(int_const 1000)"}},"member_name":"add","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_rational_1000_by_1$","type_string":"function(int_const 1000)"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}}},{"id":3958,"node_type":81,"src":{"id":3959,"line":895,"column":8,"start":32129,"end":32164,"length":36,"parent_index":3875},"expression":{"id":3960,"node_type":27,"src":{"id":3961,"line":895,"column":8,"start":32129,"end":32163,"length":35,"parent_index":3875},"operator":11,"left_expression":{"id":3962,"node_type":16,"src":{"id":3963,"line":895,"column":8,"start":32129,"end":32137,"length":9,"parent_index":3960},"name":"amountOut","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":913,"is_pure":false},"right_expression":{"id":3964,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":3965,"line":895,"column":20,"start":32141,"end":32163,"length":23,"parent_index":3960},"operator":4,"left_expression":{"id":3966,"node_type":16,"src":{"id":3967,"line":895,"column":20,"start":32141,"end":32149,"length":9,"parent_index":3964},"name":"numerator","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3924,"is_pure":false},"right_expression":{"id":3968,"node_type":16,"src":{"id":3969,"line":895,"column":32,"start":32153,"end":32163,"length":11,"parent_index":3964},"name":"denominator","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":3938,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3855,"node_type":43,"src":{"id":3856,"line":883,"column":8,"start":31607,"end":31677,"length":71,"parent_index":3853},"parameters":[{"id":3857,"node_type":44,"src":{"id":3858,"line":883,"column":8,"start":31607,"end":31622,"length":16,"parent_index":3855},"scope":3853,"name":"amountIn","type_name":{"id":3859,"node_type":30,"src":{"id":3860,"line":883,"column":8,"start":31607,"end":31613,"length":7,"parent_index":3857},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3861,"node_type":44,"src":{"id":3862,"line":884,"column":8,"start":31633,"end":31649,"length":17,"parent_index":3855},"scope":3853,"name":"reserveIn","type_name":{"id":3863,"node_type":30,"src":{"id":3864,"line":884,"column":8,"start":31633,"end":31639,"length":7,"parent_index":3861},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3865,"node_type":44,"src":{"id":3866,"line":885,"column":8,"start":31660,"end":31677,"length":18,"parent_index":3855},"scope":3853,"name":"reserveOut","type_name":{"id":3867,"node_type":30,"src":{"id":3868,"line":885,"column":8,"start":31660,"end":31666,"length":7,"parent_index":3865},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":3869,"node_type":43,"src":{"id":3870,"line":886,"column":29,"start":31708,"end":31724,"length":17,"parent_index":3853},"parameters":[{"id":3871,"node_type":44,"src":{"id":3872,"line":886,"column":29,"start":31708,"end":31724,"length":17,"parent_index":3869},"scope":3853,"name":"amountOut","type_name":{"id":3873,"node_type":30,"src":{"id":3874,"line":886,"column":29,"start":31708,"end":31714,"length":7,"parent_index":3871},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":3493,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256,uint256)"}},{"id":3971,"name":"getAmountIn","node_type":42,"kind":41,"src":{"id":3972,"line":899,"column":4,"start":32289,"end":32836,"length":548,"parent_index":3493},"body":{"id":3993,"node_type":46,"kind":0,"src":{"id":3994,"line":903,"column":47,"start":32439,"end":32836,"length":398,"parent_index":3971},"implemented":true,"statements":[{"id":3995,"node_type":24,"kind":24,"src":{"id":3996,"line":904,"column":8,"start":32449,"end":32518,"length":70,"parent_index":3993},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT\""}],"arguments":[{"id":3999,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4000,"line":904,"column":16,"start":32457,"end":32469,"length":13,"parent_index":3995},"operator":7,"left_expression":{"id":4001,"node_type":16,"src":{"id":4002,"line":904,"column":16,"start":32457,"end":32465,"length":9,"parent_index":3999},"name":"amountOut","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4001,"is_pure":false},"right_expression":{"id":4003,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":4004,"line":904,"column":28,"start":32469,"end":32469,"length":1,"parent_index":3999},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":4005,"node_type":17,"kind":50,"value":"UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT","hex_value":"556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54","src":{"id":4006,"line":904,"column":31,"start":32472,"end":32517,"length":46,"parent_index":3995},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":3997,"node_type":16,"src":{"id":3998,"line":904,"column":8,"start":32449,"end":32455,"length":7,"parent_index":3995},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":4007,"node_type":24,"kind":24,"src":{"id":4008,"line":905,"column":8,"start":32529,"end":32646,"length":118,"parent_index":3993},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\""}],"arguments":[{"id":4012,"node_type":96,"src":{"id":4013,"line":906,"column":12,"start":32550,"end":32580,"length":31,"parent_index":4007},"expressions":[{"id":4014,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4015,"line":906,"column":12,"start":32550,"end":32562,"length":13,"parent_index":4012},"operator":7,"left_expression":{"id":4016,"node_type":16,"src":{"id":4017,"line":906,"column":12,"start":32550,"end":32558,"length":9,"parent_index":4014},"name":"reserveIn","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4016,"is_pure":false},"right_expression":{"id":4018,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":4019,"line":906,"column":24,"start":32562,"end":32562,"length":1,"parent_index":4014},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":4020,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4021,"line":906,"column":29,"start":32567,"end":32580,"length":14,"parent_index":4012},"operator":7,"left_expression":{"id":4022,"node_type":16,"src":{"id":4023,"line":906,"column":29,"start":32567,"end":32576,"length":10,"parent_index":4020},"name":"reserveOut","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4022,"is_pure":false},"right_expression":{"id":4024,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":4025,"line":906,"column":42,"start":32580,"end":32580,"length":1,"parent_index":4020},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}}],"type_descriptions":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_bool","type_string":"bool"}]},{"id":4026,"node_type":17,"kind":50,"value":"UniswapV2Library: INSUFFICIENT_LIQUIDITY","hex_value":"556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459","src":{"id":4027,"line":907,"column":12,"start":32595,"end":32636,"length":42,"parent_index":4007},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":4009,"node_type":16,"src":{"id":4010,"line":905,"column":8,"start":32529,"end":32535,"length":7,"parent_index":4007},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":4028,"node_type":44,"src":{"id":4029,"line":909,"column":8,"start":32657,"end":32711,"length":55,"parent_index":3993},"assignments":[4030],"declarations":[{"is_constant":false,"id":4030,"state_mutability":1,"name":"numerator","node_type":44,"scope":3993,"src":{"id":4031,"line":909,"column":8,"start":32657,"end":32673,"length":17,"parent_index":4028},"is_state_variable":false,"storage_location":1,"type_name":{"id":4032,"node_type":30,"src":{"id":4033,"line":909,"column":8,"start":32657,"end":32663,"length":7,"parent_index":4030},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":4034,"node_type":24,"kind":24,"src":{"id":4035,"line":909,"column":28,"start":32677,"end":32710,"length":34,"parent_index":4028},"argument_types":[{"type_identifier":"t_rational_1000_by_1","type_string":"int_const 1000"}],"arguments":[{"id":4046,"node_type":17,"kind":49,"value":"1000","hex_value":"31303030","src":{"id":4047,"line":909,"column":57,"start":32706,"end":32709,"length":4,"parent_index":4034},"type_description":{"type_identifier":"t_rational_1000_by_1","type_string":"int_const 1000"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":4036,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4037,"line":909,"column":28,"start":32677,"end":32704,"length":28,"parent_index":4034},"expression":{"id":4038,"node_type":24,"kind":24,"src":{"id":4039,"line":909,"column":28,"start":32677,"end":32700,"length":24,"parent_index":4036},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":4044,"node_type":16,"src":{"id":4045,"line":909,"column":42,"start":32691,"end":32699,"length":9,"parent_index":4038},"name":"amountOut","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4044,"is_pure":false}],"expression":{"id":4040,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4041,"line":909,"column":28,"start":32677,"end":32689,"length":13,"parent_index":4038},"expression":{"id":4042,"node_type":16,"src":{"id":4043,"line":909,"column":28,"start":32677,"end":32685,"length":9,"parent_index":4040},"name":"reserveIn","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4042,"is_pure":false},"member_name":"mul","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},"member_name":"mul","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},"type_description":{"type_identifier":"t_function_$_t_rational_1000_by_1$","type_string":"function(int_const 1000)"}}},{"id":4048,"node_type":44,"src":{"id":4049,"line":910,"column":8,"start":32721,"end":32777,"length":57,"parent_index":3993},"assignments":[4050],"declarations":[{"is_constant":false,"id":4050,"state_mutability":1,"name":"denominator","node_type":44,"scope":3993,"src":{"id":4051,"line":910,"column":8,"start":32721,"end":32739,"length":19,"parent_index":4048},"is_state_variable":false,"storage_location":1,"type_name":{"id":4052,"node_type":30,"src":{"id":4053,"line":910,"column":8,"start":32721,"end":32727,"length":7,"parent_index":4050},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":4054,"node_type":24,"kind":24,"src":{"id":4055,"line":910,"column":30,"start":32743,"end":32776,"length":34,"parent_index":4048},"argument_types":[{"type_identifier":"t_rational_997_by_1","type_string":"int_const 997"}],"arguments":[{"id":4066,"node_type":17,"kind":49,"value":"997","hex_value":"393937","src":{"id":4067,"line":910,"column":60,"start":32773,"end":32775,"length":3,"parent_index":4054},"type_description":{"type_identifier":"t_rational_997_by_1","type_string":"int_const 997"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":4056,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4057,"line":910,"column":30,"start":32743,"end":32771,"length":29,"parent_index":4054},"expression":{"id":4058,"node_type":24,"kind":24,"src":{"id":4059,"line":910,"column":30,"start":32743,"end":32767,"length":25,"parent_index":4056},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":4064,"node_type":16,"src":{"id":4065,"line":910,"column":45,"start":32758,"end":32766,"length":9,"parent_index":4058},"name":"amountOut","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4064,"is_pure":false}],"expression":{"id":4060,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4061,"line":910,"column":30,"start":32743,"end":32756,"length":14,"parent_index":4058},"expression":{"id":4062,"node_type":16,"src":{"id":4063,"line":910,"column":30,"start":32743,"end":32752,"length":10,"parent_index":4060},"name":"reserveOut","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4062,"is_pure":false},"member_name":"sub","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},"member_name":"mul","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}},"type_description":{"type_identifier":"t_function_$_t_rational_997_by_1$","type_string":"function(int_const 997)"}}},{"id":4068,"node_type":81,"src":{"id":4069,"line":911,"column":8,"start":32787,"end":32830,"length":44,"parent_index":3993},"expression":{"id":4070,"node_type":27,"src":{"id":4071,"line":911,"column":8,"start":32787,"end":32829,"length":43,"parent_index":3993},"operator":11,"left_expression":{"id":4072,"node_type":16,"src":{"id":4073,"line":911,"column":8,"start":32787,"end":32794,"length":8,"parent_index":4070},"name":"amountIn","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":1835,"is_pure":false},"right_expression":{"id":4074,"node_type":24,"kind":24,"src":{"id":4075,"line":911,"column":19,"start":32798,"end":32829,"length":32,"parent_index":4070},"argument_types":[{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"}],"arguments":[{"id":4086,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":4087,"line":911,"column":49,"start":32828,"end":32828,"length":1,"parent_index":4074},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":4076,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4077,"line":911,"column":19,"start":32798,"end":32826,"length":29,"parent_index":4074},"expression":{"id":4078,"node_type":60,"src":{"id":4079,"line":911,"column":19,"start":32798,"end":32822,"length":25,"parent_index":4076},"is_constant":false,"is_pure":false,"components":[{"id":4080,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4081,"line":911,"column":20,"start":32799,"end":32821,"length":23,"parent_index":4078},"operator":4,"left_expression":{"id":4082,"node_type":16,"src":{"id":4083,"line":911,"column":20,"start":32799,"end":32807,"length":9,"parent_index":4080},"name":"numerator","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4028,"is_pure":false},"right_expression":{"id":4084,"node_type":16,"src":{"id":4085,"line":911,"column":32,"start":32811,"end":32821,"length":11,"parent_index":4080},"name":"denominator","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4048,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}],"type_description":{"type_identifier":"t_tuple_$_t_uint256$","type_string":"tuple(uint256)"}},"member_name":"add","argument_types":[],"type_description":{"type_identifier":"t_tuple_$_t_uint256$","type_string":"tuple(uint256)"}},"type_description":{"type_identifier":"t_function_$_t_rational_1_by_1$","type_string":"function(int_const 1)"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}]},"implemented":true,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":3973,"node_type":43,"src":{"id":3974,"line":900,"column":8,"start":32319,"end":32390,"length":72,"parent_index":3971},"parameters":[{"id":3975,"node_type":44,"src":{"id":3976,"line":900,"column":8,"start":32319,"end":32335,"length":17,"parent_index":3973},"scope":3971,"name":"amountOut","type_name":{"id":3977,"node_type":30,"src":{"id":3978,"line":900,"column":8,"start":32319,"end":32325,"length":7,"parent_index":3975},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3979,"node_type":44,"src":{"id":3980,"line":901,"column":8,"start":32346,"end":32362,"length":17,"parent_index":3973},"scope":3971,"name":"reserveIn","type_name":{"id":3981,"node_type":30,"src":{"id":3982,"line":901,"column":8,"start":32346,"end":32352,"length":7,"parent_index":3979},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":3983,"node_type":44,"src":{"id":3984,"line":902,"column":8,"start":32373,"end":32390,"length":18,"parent_index":3973},"scope":3971,"name":"reserveOut","type_name":{"id":3985,"node_type":30,"src":{"id":3986,"line":902,"column":8,"start":32373,"end":32379,"length":7,"parent_index":3983},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":3987,"node_type":43,"src":{"id":3988,"line":903,"column":29,"start":32421,"end":32436,"length":16,"parent_index":3971},"parameters":[{"id":3989,"node_type":44,"src":{"id":3990,"line":903,"column":29,"start":32421,"end":32436,"length":16,"parent_index":3987},"scope":3971,"name":"amountIn","type_name":{"id":3991,"node_type":30,"src":{"id":3992,"line":903,"column":29,"start":32421,"end":32427,"length":7,"parent_index":3989},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":3493,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$_t_uint256$","type_string":"function(uint256,uint256,uint256)"}},{"id":4089,"name":"getAmountsOut","node_type":42,"kind":41,"src":{"id":4090,"line":915,"column":4,"start":32916,"end":33588,"length":673,"parent_index":3493},"body":{"id":4117,"node_type":46,"kind":0,"src":{"id":4118,"line":920,"column":55,"start":33106,"end":33588,"length":483,"parent_index":4089},"implemented":true,"statements":[{"id":4119,"node_type":24,"kind":24,"src":{"id":4120,"line":921,"column":8,"start":33116,"end":33174,"length":59,"parent_index":4117},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: INVALID_PATH\""}],"arguments":[{"id":4123,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4124,"line":921,"column":16,"start":33124,"end":33139,"length":16,"parent_index":4119},"operator":8,"left_expression":{"id":4125,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4126,"line":921,"column":16,"start":33124,"end":33134,"length":11,"parent_index":4123},"expression":{"id":4127,"node_type":16,"src":{"id":4128,"line":921,"column":16,"start":33124,"end":33127,"length":4,"parent_index":4125},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4127,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"right_expression":{"id":4129,"node_type":17,"kind":49,"value":"2","hex_value":"32","src":{"id":4130,"line":921,"column":31,"start":33139,"end":33139,"length":1,"parent_index":4123},"type_description":{"type_identifier":"t_rational_2_by_1","type_string":"int_const 2"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":4131,"node_type":17,"kind":50,"value":"UniswapV2Library: INVALID_PATH","hex_value":"556e697377617056324c6962726172793a20494e56414c49445f50415448","src":{"id":4132,"line":921,"column":34,"start":33142,"end":33173,"length":32,"parent_index":4119},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: INVALID_PATH\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":4121,"node_type":16,"src":{"id":4122,"line":921,"column":8,"start":33116,"end":33122,"length":7,"parent_index":4119},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":4133,"node_type":81,"src":{"id":4134,"line":922,"column":8,"start":33185,"end":33221,"length":37,"parent_index":4117},"expression":{"id":4135,"node_type":27,"src":{"id":4136,"line":922,"column":8,"start":33185,"end":33220,"length":36,"parent_index":4117},"operator":11,"left_expression":{"id":4137,"node_type":16,"src":{"id":4138,"line":922,"column":8,"start":33185,"end":33191,"length":7,"parent_index":4135},"name":"amounts","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4112,"is_pure":false},"right_expression":{"id":4139,"node_type":24,"kind":24,"src":{"id":4140,"line":922,"column":18,"start":33195,"end":33220,"length":26,"parent_index":4135},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":4146,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4147,"line":922,"column":32,"start":33209,"end":33219,"length":11,"parent_index":4139},"expression":{"id":4148,"node_type":16,"src":{"id":4149,"line":922,"column":32,"start":33209,"end":33212,"length":4,"parent_index":4146},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4148,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}}],"expression":{"id":4141,"node_type":25,"src":{"id":4142,"line":922,"column":18,"start":33195,"end":33207,"length":13,"parent_index":4139},"argument_types":[],"type_name":{"id":4143,"node_type":16,"src":{"id":4145,"line":922,"column":22,"start":33199,"end":33205,"length":7,"parent_index":4141},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},{"id":4150,"node_type":81,"src":{"id":4151,"line":923,"column":8,"start":33231,"end":33252,"length":22,"parent_index":4117},"expression":{"id":4152,"node_type":27,"src":{"id":4153,"line":923,"column":8,"start":33231,"end":33251,"length":21,"parent_index":4117},"operator":11,"left_expression":{"id":4154,"node_type":22,"src":{"id":4155,"line":923,"column":8,"start":33231,"end":33240,"length":10,"parent_index":4152},"index_expression":{"id":4156,"node_type":16,"src":{"id":4157,"line":923,"column":8,"start":33231,"end":33237,"length":7,"parent_index":4154},"name":"amounts","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4112,"is_pure":false},"base_expression":{"id":4158,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":4159,"line":923,"column":16,"start":33239,"end":33239,"length":1,"parent_index":4154},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_descriptions":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"type_description":{"type_identifier":"t_[_[$_t_uint256]$_t_rational_0_by_1]$","type_string":"index[uint256:int_const 0]"}},"right_expression":{"id":4160,"node_type":16,"src":{"id":4161,"line":923,"column":21,"start":33244,"end":33251,"length":8,"parent_index":4152},"name":"amountIn","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4160,"is_pure":false},"type_description":{"type_identifier":"t_[_[$_t_uint256]$_t_rational_0_by_1]$","type_string":"index[uint256:int_const 0]"}},"type_description":{"type_identifier":"t_[_[$_t_uint256]$_t_rational_0_by_1]$","type_string":"index[uint256:int_const 0]"}},{"id":4162,"node_type":79,"src":{"id":4163,"line":924,"column":0,"start":33262,"end":33582,"length":321,"parent_index":4117},"initialiser":{"id":4164,"node_type":44,"src":{"id":4165,"line":924,"column":13,"start":33267,"end":33276,"length":10,"parent_index":4117},"assignments":[4166],"declarations":[{"is_constant":false,"id":4166,"state_mutability":1,"name":"i","node_type":44,"scope":4117,"src":{"id":4167,"line":924,"column":13,"start":33267,"end":33275,"length":9,"parent_index":4164},"is_state_variable":false,"storage_location":1,"type_name":{"id":4168,"node_type":30,"src":{"id":4169,"line":924,"column":13,"start":33267,"end":33273,"length":7,"parent_index":4166},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}]},"condition":{"id":4170,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4171,"line":924,"column":24,"start":33278,"end":33296,"length":19,"parent_index":4162},"operator":9,"left_expression":{"id":4172,"node_type":16,"src":{"id":4173,"line":924,"column":24,"start":33278,"end":33278,"length":1,"parent_index":4170},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":4174,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4175,"line":924,"column":28,"start":33282,"end":33296,"length":15,"parent_index":4170},"operator":2,"left_expression":{"id":4176,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4177,"line":924,"column":28,"start":33282,"end":33292,"length":11,"parent_index":4174},"expression":{"id":4178,"node_type":16,"src":{"id":4179,"line":924,"column":28,"start":33282,"end":33285,"length":4,"parent_index":4176},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4178,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"right_expression":{"id":4180,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":4181,"line":924,"column":42,"start":33296,"end":33296,"length":1,"parent_index":4174},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"closure":{"id":4182,"node_type":18,"src":{"id":4183,"line":924,"column":45,"start":33299,"end":33301,"length":3,"parent_index":4089},"operator":27,"expression":{"id":4184,"node_type":16,"src":{"id":4185,"line":924,"column":45,"start":33299,"end":33299,"length":1,"parent_index":4182},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"prefix":false,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false},"body":{"id":4186,"node_type":46,"kind":0,"src":{"id":4187,"line":924,"column":50,"start":33304,"end":33582,"length":279,"parent_index":4162},"implemented":true,"statements":[{"id":4188,"node_type":44,"src":{"id":4189,"line":925,"column":12,"start":33318,"end":33494,"length":177,"parent_index":4186},"assignments":[],"declarations":[],"initial_value":{"id":4190,"node_type":24,"kind":24,"src":{"id":4191,"line":925,"column":54,"start":33360,"end":33493,"length":134,"parent_index":4188},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"},{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"},{"type_identifier":"t_function_$_t_function_$$$_t_[_[$_t_address]$_t_uint256]$$$_t_[_[$_t_address]$_t_uint256]$$","type_string":"function(function(),index[address:uint256],index[address:uint256])"}],"arguments":[{"id":4194,"node_type":16,"src":{"id":4195,"line":926,"column":16,"start":33389,"end":33395,"length":7,"parent_index":4190},"name":"factory","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":4196,"node_type":22,"src":{"id":4197,"line":927,"column":16,"start":33414,"end":33420,"length":7,"parent_index":4190},"index_expression":{"id":4198,"node_type":16,"src":{"id":4199,"line":927,"column":16,"start":33414,"end":33417,"length":4,"parent_index":4196},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4101,"is_pure":false},"base_expression":{"id":4200,"node_type":16,"src":{"id":4201,"line":927,"column":21,"start":33419,"end":33419,"length":1,"parent_index":4196},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"}},{"id":4202,"node_type":22,"src":{"id":4203,"line":928,"column":16,"start":33439,"end":33449,"length":11,"parent_index":4190},"index_expression":{"id":4204,"node_type":16,"src":{"id":4205,"line":928,"column":16,"start":33439,"end":33442,"length":4,"parent_index":4202},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4101,"is_pure":false},"base_expression":{"id":4206,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4207,"line":928,"column":21,"start":33444,"end":33448,"length":5,"parent_index":4202},"operator":1,"left_expression":{"id":4208,"node_type":16,"src":{"id":4209,"line":928,"column":21,"start":33444,"end":33444,"length":1,"parent_index":4206},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":4210,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":4211,"line":928,"column":25,"start":33448,"end":33448,"length":1,"parent_index":4206},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_descriptions":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"}},{"id":4212,"node_type":16,"src":{"id":4213,"line":929,"column":16,"start":33468,"end":33479,"length":12,"parent_index":4190},"name":"pairCodeHash","type_description":{"type_identifier":"t_function_$_t_function_$$$_t_[_[$_t_address]$_t_uint256]$$$_t_[_[$_t_address]$_t_uint256]$$","type_string":"function(function(),index[address:uint256],index[address:uint256])"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"},{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"}]}],"expression":{"id":4192,"node_type":16,"src":{"id":4193,"line":925,"column":54,"start":33360,"end":33370,"length":11,"parent_index":4190},"name":"getReserves","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$_t_[_[$_t_address]$_t_uint256]$_t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$_t_[_[$_t_address]$_t_uint256]$","type_string":"function(function(),index[address:uint256],index[address:uint256],function(function(),index[address:uint256],index[address:uint256]))"}}},{"id":4214,"node_type":81,"src":{"id":4215,"line":931,"column":12,"start":33508,"end":33572,"length":65,"parent_index":4186},"expression":{"id":4216,"node_type":27,"src":{"id":4217,"line":931,"column":12,"start":33508,"end":33571,"length":64,"parent_index":4186},"operator":11,"left_expression":{"id":4218,"node_type":22,"src":{"id":4219,"line":931,"column":12,"start":33508,"end":33521,"length":14,"parent_index":4216},"index_expression":{"id":4220,"node_type":16,"src":{"id":4221,"line":931,"column":12,"start":33508,"end":33514,"length":7,"parent_index":4218},"name":"amounts","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4112,"is_pure":false},"base_expression":{"id":4222,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4223,"line":931,"column":20,"start":33516,"end":33520,"length":5,"parent_index":4218},"operator":1,"left_expression":{"id":4224,"node_type":16,"src":{"id":4225,"line":931,"column":20,"start":33516,"end":33516,"length":1,"parent_index":4222},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":4226,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":4227,"line":931,"column":24,"start":33520,"end":33520,"length":1,"parent_index":4222},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_descriptions":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"}},"right_expression":{"id":4228,"node_type":24,"kind":24,"src":{"id":4229,"line":931,"column":29,"start":33525,"end":33571,"length":47,"parent_index":4216},"argument_types":[{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"},{"type_identifier":"t_function_$_t_[_[$_t_uint256]$_t_uint256]$$","type_string":"function(index[uint256:uint256])"},{"type_identifier":"t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$","type_string":"function(index[uint256:uint256],function(index[uint256:uint256]))"}],"arguments":[{"id":4232,"node_type":22,"src":{"id":4233,"line":931,"column":42,"start":33538,"end":33547,"length":10,"parent_index":4228},"index_expression":{"id":4234,"node_type":16,"src":{"id":4235,"line":931,"column":42,"start":33538,"end":33544,"length":7,"parent_index":4232},"name":"amounts","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4112,"is_pure":false},"base_expression":{"id":4236,"node_type":16,"src":{"id":4237,"line":931,"column":50,"start":33546,"end":33546,"length":1,"parent_index":4232},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"}},{"id":4238,"node_type":16,"src":{"id":4239,"line":931,"column":54,"start":33550,"end":33558,"length":9,"parent_index":4228},"name":"reserveIn","type_description":{"type_identifier":"t_function_$_t_[_[$_t_uint256]$_t_uint256]$$","type_string":"function(index[uint256:uint256])"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"}]},{"id":4240,"node_type":16,"src":{"id":4241,"line":931,"column":65,"start":33561,"end":33570,"length":10,"parent_index":4228},"name":"reserveOut","type_description":{"type_identifier":"t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$","type_string":"function(index[uint256:uint256],function(index[uint256:uint256]))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"},{"type_identifier":"t_function_$_t_[_[$_t_uint256]$_t_uint256]$$","type_string":"function(index[uint256:uint256])"}]}],"expression":{"id":4230,"node_type":16,"src":{"id":4231,"line":931,"column":29,"start":33525,"end":33536,"length":12,"parent_index":4228},"name":"getAmountOut","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$","type_string":"function(index[uint256:uint256],function(index[uint256:uint256]),function(index[uint256:uint256],function(index[uint256:uint256])))"}},"type_description":{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"}},"type_description":{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"}}]}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":4091,"node_type":43,"src":{"id":4092,"line":916,"column":8,"start":32948,"end":33049,"length":102,"parent_index":4089},"parameters":[{"id":4093,"node_type":44,"src":{"id":4094,"line":916,"column":8,"start":32948,"end":32962,"length":15,"parent_index":4091},"scope":4089,"name":"factory","type_name":{"id":4095,"node_type":30,"src":{"id":4096,"line":916,"column":8,"start":32948,"end":32954,"length":7,"parent_index":4093},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":4097,"node_type":44,"src":{"id":4098,"line":917,"column":8,"start":32973,"end":32988,"length":16,"parent_index":4091},"scope":4089,"name":"amountIn","type_name":{"id":4099,"node_type":30,"src":{"id":4100,"line":917,"column":8,"start":32973,"end":32979,"length":7,"parent_index":4097},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":4101,"node_type":44,"src":{"id":4102,"line":918,"column":8,"start":32999,"end":33019,"length":21,"parent_index":4091},"scope":4089,"name":"path","type_name":{"id":4103,"node_type":16,"src":{"id":4105,"line":918,"column":8,"start":32999,"end":33005,"length":7,"parent_index":4101},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":4106,"node_type":44,"src":{"id":4107,"line":919,"column":8,"start":33030,"end":33049,"length":20,"parent_index":4091},"scope":4089,"name":"pairCodeHash","type_name":{"id":4108,"node_type":30,"src":{"id":4109,"line":919,"column":8,"start":33030,"end":33036,"length":7,"parent_index":4106},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":4110,"node_type":43,"src":{"id":4111,"line":920,"column":29,"start":33080,"end":33103,"length":24,"parent_index":4089},"parameters":[{"id":4112,"node_type":44,"src":{"id":4113,"line":920,"column":29,"start":33080,"end":33103,"length":24,"parent_index":4110},"scope":4089,"name":"amounts","type_name":{"id":4114,"node_type":16,"src":{"id":4116,"line":920,"column":29,"start":33080,"end":33086,"length":7,"parent_index":4112},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":3493,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$_t_address$_t_bytes32$","type_string":"function(address,uint256,address,bytes32)"}},{"id":4243,"name":"getAmountsIn","node_type":42,"kind":41,"src":{"id":4244,"line":936,"column":4,"start":33667,"end":34360,"length":694,"parent_index":3493},"body":{"id":4271,"node_type":46,"kind":0,"src":{"id":4272,"line":941,"column":55,"start":33857,"end":34360,"length":504,"parent_index":4243},"implemented":true,"statements":[{"id":4273,"node_type":24,"kind":24,"src":{"id":4274,"line":942,"column":8,"start":33867,"end":33925,"length":59,"parent_index":4271},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: INVALID_PATH\""}],"arguments":[{"id":4277,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4278,"line":942,"column":16,"start":33875,"end":33890,"length":16,"parent_index":4273},"operator":8,"left_expression":{"id":4279,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4280,"line":942,"column":16,"start":33875,"end":33885,"length":11,"parent_index":4277},"expression":{"id":4281,"node_type":16,"src":{"id":4282,"line":942,"column":16,"start":33875,"end":33878,"length":4,"parent_index":4279},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4281,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"right_expression":{"id":4283,"node_type":17,"kind":49,"value":"2","hex_value":"32","src":{"id":4284,"line":942,"column":31,"start":33890,"end":33890,"length":1,"parent_index":4277},"type_description":{"type_identifier":"t_rational_2_by_1","type_string":"int_const 2"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":4285,"node_type":17,"kind":50,"value":"UniswapV2Library: INVALID_PATH","hex_value":"556e697377617056324c6962726172793a20494e56414c49445f50415448","src":{"id":4286,"line":942,"column":34,"start":33893,"end":33924,"length":32,"parent_index":4273},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"UniswapV2Library: INVALID_PATH\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":4275,"node_type":16,"src":{"id":4276,"line":942,"column":8,"start":33867,"end":33873,"length":7,"parent_index":4273},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":4287,"node_type":81,"src":{"id":4288,"line":943,"column":8,"start":33936,"end":33972,"length":37,"parent_index":4271},"expression":{"id":4289,"node_type":27,"src":{"id":4290,"line":943,"column":8,"start":33936,"end":33971,"length":36,"parent_index":4271},"operator":11,"left_expression":{"id":4291,"node_type":16,"src":{"id":4292,"line":943,"column":8,"start":33936,"end":33942,"length":7,"parent_index":4289},"name":"amounts","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4112,"is_pure":false},"right_expression":{"id":4293,"node_type":24,"kind":24,"src":{"id":4294,"line":943,"column":18,"start":33946,"end":33971,"length":26,"parent_index":4289},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":4300,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4301,"line":943,"column":32,"start":33960,"end":33970,"length":11,"parent_index":4293},"expression":{"id":4302,"node_type":16,"src":{"id":4303,"line":943,"column":32,"start":33960,"end":33963,"length":4,"parent_index":4300},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4302,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}}],"expression":{"id":4295,"node_type":25,"src":{"id":4296,"line":943,"column":18,"start":33946,"end":33958,"length":13,"parent_index":4293},"argument_types":[],"type_name":{"id":4297,"node_type":16,"src":{"id":4299,"line":943,"column":22,"start":33950,"end":33956,"length":7,"parent_index":4295},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},{"id":4304,"node_type":81,"src":{"id":4305,"line":944,"column":8,"start":33982,"end":34021,"length":40,"parent_index":4271},"expression":{"id":4306,"node_type":27,"src":{"id":4307,"line":944,"column":8,"start":33982,"end":34020,"length":39,"parent_index":4271},"operator":11,"left_expression":{"id":4308,"node_type":22,"src":{"id":4309,"line":944,"column":8,"start":33982,"end":34008,"length":27,"parent_index":4306},"index_expression":{"id":4310,"node_type":16,"src":{"id":4311,"line":944,"column":8,"start":33982,"end":33988,"length":7,"parent_index":4308},"name":"amounts","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4112,"is_pure":false},"base_expression":{"id":4312,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4313,"line":944,"column":16,"start":33990,"end":34007,"length":18,"parent_index":4308},"operator":2,"left_expression":{"id":4314,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4315,"line":944,"column":16,"start":33990,"end":34003,"length":14,"parent_index":4312},"expression":{"id":4316,"node_type":16,"src":{"id":4317,"line":944,"column":16,"start":33990,"end":33996,"length":7,"parent_index":4314},"name":"amounts","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4112,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"right_expression":{"id":4318,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":4319,"line":944,"column":33,"start":34007,"end":34007,"length":1,"parent_index":4312},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_descriptions":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"}},"right_expression":{"id":4320,"node_type":16,"src":{"id":4321,"line":944,"column":38,"start":34012,"end":34020,"length":9,"parent_index":4306},"name":"amountOut","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4320,"is_pure":false},"type_description":{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"}},"type_description":{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"}},{"id":4322,"node_type":79,"src":{"id":4323,"line":945,"column":0,"start":34031,"end":34354,"length":324,"parent_index":4271},"initialiser":{"id":4324,"node_type":44,"src":{"id":4325,"line":945,"column":13,"start":34036,"end":34063,"length":28,"parent_index":4271},"assignments":[4326],"declarations":[{"is_constant":false,"id":4326,"state_mutability":1,"name":"i","node_type":44,"scope":4271,"src":{"id":4327,"line":945,"column":13,"start":34036,"end":34044,"length":9,"parent_index":4324},"is_state_variable":false,"storage_location":1,"type_name":{"id":4328,"node_type":30,"src":{"id":4329,"line":945,"column":13,"start":34036,"end":34042,"length":7,"parent_index":4326},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":4330,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4331,"line":945,"column":25,"start":34048,"end":34062,"length":15,"parent_index":4324},"operator":2,"left_expression":{"id":4332,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4333,"line":945,"column":25,"start":34048,"end":34058,"length":11,"parent_index":4324},"expression":{"id":4334,"node_type":16,"src":{"id":4335,"line":945,"column":25,"start":34048,"end":34051,"length":4,"parent_index":4332},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4334,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"right_expression":{"id":4336,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":4337,"line":945,"column":39,"start":34062,"end":34062,"length":1,"parent_index":4330},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_address","type_string":"address"}}},"condition":{"id":4338,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4339,"line":945,"column":42,"start":34065,"end":34069,"length":5,"parent_index":4322},"operator":7,"left_expression":{"id":4340,"node_type":16,"src":{"id":4341,"line":945,"column":42,"start":34065,"end":34065,"length":1,"parent_index":4338},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":4342,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":4343,"line":945,"column":46,"start":34069,"end":34069,"length":1,"parent_index":4338},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"closure":{"id":4344,"node_type":18,"src":{"id":4345,"line":945,"column":49,"start":34072,"end":34074,"length":3,"parent_index":4243},"operator":28,"expression":{"id":4346,"node_type":16,"src":{"id":4347,"line":945,"column":49,"start":34072,"end":34072,"length":1,"parent_index":4344},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"prefix":false,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false},"body":{"id":4348,"node_type":46,"kind":0,"src":{"id":4349,"line":945,"column":54,"start":34077,"end":34354,"length":278,"parent_index":4322},"implemented":true,"statements":[{"id":4350,"node_type":44,"src":{"id":4351,"line":946,"column":12,"start":34091,"end":34267,"length":177,"parent_index":4348},"assignments":[],"declarations":[],"initial_value":{"id":4352,"node_type":24,"kind":24,"src":{"id":4353,"line":946,"column":54,"start":34133,"end":34266,"length":134,"parent_index":4350},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"},{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"},{"type_identifier":"t_function_$_t_function_$$$_t_[_[$_t_address]$_t_uint256]$$$_t_[_[$_t_address]$_t_uint256]$$","type_string":"function(function(),index[address:uint256],index[address:uint256])"}],"arguments":[{"id":4356,"node_type":16,"src":{"id":4357,"line":947,"column":16,"start":34162,"end":34168,"length":7,"parent_index":4352},"name":"factory","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":4358,"node_type":22,"src":{"id":4359,"line":948,"column":16,"start":34187,"end":34197,"length":11,"parent_index":4352},"index_expression":{"id":4360,"node_type":16,"src":{"id":4361,"line":948,"column":16,"start":34187,"end":34190,"length":4,"parent_index":4358},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4101,"is_pure":false},"base_expression":{"id":4362,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4363,"line":948,"column":21,"start":34192,"end":34196,"length":5,"parent_index":4358},"operator":2,"left_expression":{"id":4364,"node_type":16,"src":{"id":4365,"line":948,"column":21,"start":34192,"end":34192,"length":1,"parent_index":4362},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":4366,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":4367,"line":948,"column":25,"start":34196,"end":34196,"length":1,"parent_index":4362},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_descriptions":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"}},{"id":4368,"node_type":22,"src":{"id":4369,"line":949,"column":16,"start":34216,"end":34222,"length":7,"parent_index":4352},"index_expression":{"id":4370,"node_type":16,"src":{"id":4371,"line":949,"column":16,"start":34216,"end":34219,"length":4,"parent_index":4368},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4101,"is_pure":false},"base_expression":{"id":4372,"node_type":16,"src":{"id":4373,"line":949,"column":21,"start":34221,"end":34221,"length":1,"parent_index":4368},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"}},{"id":4374,"node_type":16,"src":{"id":4375,"line":950,"column":16,"start":34241,"end":34252,"length":12,"parent_index":4352},"name":"pairCodeHash","type_description":{"type_identifier":"t_function_$_t_function_$$$_t_[_[$_t_address]$_t_uint256]$$$_t_[_[$_t_address]$_t_uint256]$$","type_string":"function(function(),index[address:uint256],index[address:uint256])"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"},{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"}]}],"expression":{"id":4354,"node_type":16,"src":{"id":4355,"line":946,"column":54,"start":34133,"end":34143,"length":11,"parent_index":4352},"name":"getReserves","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$_t_[_[$_t_address]$_t_uint256]$_t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$_t_[_[$_t_address]$_t_uint256]$","type_string":"function(function(),index[address:uint256],index[address:uint256],function(function(),index[address:uint256],index[address:uint256]))"}}},{"id":4376,"node_type":81,"src":{"id":4377,"line":952,"column":12,"start":34281,"end":34344,"length":64,"parent_index":4348},"expression":{"id":4378,"node_type":27,"src":{"id":4379,"line":952,"column":12,"start":34281,"end":34343,"length":63,"parent_index":4348},"operator":11,"left_expression":{"id":4380,"node_type":22,"src":{"id":4381,"line":952,"column":12,"start":34281,"end":34294,"length":14,"parent_index":4378},"index_expression":{"id":4382,"node_type":16,"src":{"id":4383,"line":952,"column":12,"start":34281,"end":34287,"length":7,"parent_index":4380},"name":"amounts","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4112,"is_pure":false},"base_expression":{"id":4384,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4385,"line":952,"column":20,"start":34289,"end":34293,"length":5,"parent_index":4380},"operator":2,"left_expression":{"id":4386,"node_type":16,"src":{"id":4387,"line":952,"column":20,"start":34289,"end":34289,"length":1,"parent_index":4384},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":4388,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":4389,"line":952,"column":24,"start":34293,"end":34293,"length":1,"parent_index":4384},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_descriptions":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"}},"right_expression":{"id":4390,"node_type":24,"kind":24,"src":{"id":4391,"line":952,"column":29,"start":34298,"end":34343,"length":46,"parent_index":4378},"argument_types":[{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"},{"type_identifier":"t_function_$_t_[_[$_t_uint256]$_t_uint256]$$","type_string":"function(index[uint256:uint256])"},{"type_identifier":"t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$","type_string":"function(index[uint256:uint256],function(index[uint256:uint256]))"}],"arguments":[{"id":4394,"node_type":22,"src":{"id":4395,"line":952,"column":41,"start":34310,"end":34319,"length":10,"parent_index":4390},"index_expression":{"id":4396,"node_type":16,"src":{"id":4397,"line":952,"column":41,"start":34310,"end":34316,"length":7,"parent_index":4394},"name":"amounts","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4112,"is_pure":false},"base_expression":{"id":4398,"node_type":16,"src":{"id":4399,"line":952,"column":49,"start":34318,"end":34318,"length":1,"parent_index":4394},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"}},{"id":4400,"node_type":16,"src":{"id":4401,"line":952,"column":53,"start":34322,"end":34330,"length":9,"parent_index":4390},"name":"reserveIn","type_description":{"type_identifier":"t_function_$_t_[_[$_t_uint256]$_t_uint256]$$","type_string":"function(index[uint256:uint256])"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"}]},{"id":4402,"node_type":16,"src":{"id":4403,"line":952,"column":64,"start":34333,"end":34342,"length":10,"parent_index":4390},"name":"reserveOut","type_description":{"type_identifier":"t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$","type_string":"function(index[uint256:uint256],function(index[uint256:uint256]))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"},{"type_identifier":"t_function_$_t_[_[$_t_uint256]$_t_uint256]$$","type_string":"function(index[uint256:uint256])"}]}],"expression":{"id":4392,"node_type":16,"src":{"id":4393,"line":952,"column":29,"start":34298,"end":34308,"length":11,"parent_index":4390},"name":"getAmountIn","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$","type_string":"function(index[uint256:uint256],function(index[uint256:uint256]),function(index[uint256:uint256],function(index[uint256:uint256])))"}},"type_description":{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"}},"type_description":{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"}}]}}]},"implemented":true,"visibility":1,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":4245,"node_type":43,"src":{"id":4246,"line":937,"column":8,"start":33698,"end":33800,"length":103,"parent_index":4243},"parameters":[{"id":4247,"node_type":44,"src":{"id":4248,"line":937,"column":8,"start":33698,"end":33712,"length":15,"parent_index":4245},"scope":4243,"name":"factory","type_name":{"id":4249,"node_type":30,"src":{"id":4250,"line":937,"column":8,"start":33698,"end":33704,"length":7,"parent_index":4247},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":4251,"node_type":44,"src":{"id":4252,"line":938,"column":8,"start":33723,"end":33739,"length":17,"parent_index":4245},"scope":4243,"name":"amountOut","type_name":{"id":4253,"node_type":30,"src":{"id":4254,"line":938,"column":8,"start":33723,"end":33729,"length":7,"parent_index":4251},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":4255,"node_type":44,"src":{"id":4256,"line":939,"column":8,"start":33750,"end":33770,"length":21,"parent_index":4245},"scope":4243,"name":"path","type_name":{"id":4257,"node_type":16,"src":{"id":4259,"line":939,"column":8,"start":33750,"end":33756,"length":7,"parent_index":4255},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":4260,"node_type":44,"src":{"id":4261,"line":940,"column":8,"start":33781,"end":33800,"length":20,"parent_index":4245},"scope":4243,"name":"pairCodeHash","type_name":{"id":4262,"node_type":30,"src":{"id":4263,"line":940,"column":8,"start":33781,"end":33787,"length":7,"parent_index":4260},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"return_parameters":{"id":4264,"node_type":43,"src":{"id":4265,"line":941,"column":29,"start":33831,"end":33854,"length":24,"parent_index":4243},"parameters":[{"id":4266,"node_type":44,"src":{"id":4267,"line":941,"column":29,"start":33831,"end":33854,"length":24,"parent_index":4264},"scope":4243,"name":"amounts","type_name":{"id":4268,"node_type":16,"src":{"id":4270,"line":941,"column":29,"start":33831,"end":33837,"length":7,"parent_index":4266},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":3493,"type_description":{"type_identifier":"t_function_$_t_address$_t_uint256$_t_address$_t_bytes32$","type_string":"function(address,uint256,address,bytes32)"}}],"linearized_base_contracts":[3493],"base_contracts":[],"contract_dependencies":[],"scope":3448}],"src":{"id":3449,"line":811,"column":0,"start":29040,"end":34362,"length":5323,"parent_index":263}},{"id":4404,"base_contracts":[{"id":4455,"node_type":62,"src":{"id":4456,"line":967,"column":40,"start":34672,"end":34685,"length":14,"parent_index":4454},"base_name":{"id":4457,"node_type":52,"src":{"id":4458,"line":967,"column":40,"start":34672,"end":34685,"length":14,"parent_index":4454},"name":"ImmutableState","referenced_declaration":1354}}],"license":"MIT","exported_symbols":[{"id":4404,"name":"SushiLegacyAdapter","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/SushiLegacyAdapter.sol"},{"id":3448,"name":"SafeERC20","absolute_path":"SafeERC20.sol"},{"id":3448,"name":"UniswapV2Library","absolute_path":"UniswapV2Library.sol"},{"id":3448,"name":"ImmutableState","absolute_path":"ImmutableState.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/SushiLegacyAdapter.sol","name":"SushiLegacyAdapter","node_type":1,"nodes":[{"id":4436,"node_type":10,"src":{"id":4437,"line":959,"column":0,"start":34411,"end":34433,"length":23,"parent_index":4404},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":4451,"node_type":29,"src":{"id":0,"line":961,"column":0,"start":34436,"end":34460,"length":25,"parent_index":4404},"absolute_path":"SafeERC20.sol","file":"./SafeERC20.sol","scope":4404,"unit_alias":"","source_unit":3448},{"id":4452,"node_type":29,"src":{"id":0,"line":962,"column":0,"start":34462,"end":34493,"length":32,"parent_index":4404},"absolute_path":"UniswapV2Library.sol","file":"./UniswapV2Library.sol","scope":4404,"unit_alias":"","source_unit":3448},{"id":4453,"node_type":29,"src":{"id":0,"line":963,"column":0,"start":34495,"end":34524,"length":30,"parent_index":4404},"absolute_path":"ImmutableState.sol","file":"./ImmutableState.sol","scope":4404,"unit_alias":"","source_unit":3448},{"id":4454,"name":"SushiLegacyAdapter","node_type":35,"src":{"id":0,"line":967,"column":0,"start":34632,"end":36725,"length":2094,"parent_index":4404},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":4460,"node_type":51,"src":{"id":4461,"line":968,"column":0,"start":34693,"end":34719,"length":27,"parent_index":4454},"type_description":{"type_identifier":"t_function_$","type_string":"function()"},"type_name":{"id":4462,"node_type":69,"src":{"id":4463,"line":968,"column":24,"start":34713,"end":34718,"length":6,"parent_index":4460},"type_description":{"type_identifier":"t_function_$","type_string":"function()"},"path_node":{"id":4464,"name":"IERC20","node_type":52,"referenced_declaration":2570,"src":{"id":4465,"line":968,"column":24,"start":34713,"end":34718,"length":6,"parent_index":4462}},"referenced_declaration":2570},"library_name":{"id":4466,"node_type":52,"src":{"id":4467,"line":968,"column":0,"start":34699,"end":34707,"length":9,"parent_index":4460},"name":"SafeERC20","referenced_declaration":1854}},{"id":4469,"name":"_swapExactTokensForTokens","node_type":42,"kind":41,"src":{"id":4470,"line":970,"column":4,"start":34726,"end":35666,"length":941,"parent_index":4454},"body":{"id":4500,"node_type":46,"kind":0,"src":{"id":4501,"line":976,"column":43,"start":34936,"end":35666,"length":731,"parent_index":4469},"implemented":true,"statements":[{"id":4502,"node_type":44,"src":{"id":4503,"line":977,"column":8,"start":34946,"end":35100,"length":155,"parent_index":4500},"assignments":[4504],"declarations":[{"is_constant":false,"id":4504,"state_mutability":1,"name":"amounts","node_type":44,"scope":4500,"src":{"id":4505,"line":977,"column":8,"start":34946,"end":34969,"length":24,"parent_index":4502},"is_state_variable":false,"storage_location":2,"type_name":{"id":4506,"node_type":16,"src":{"id":4508,"line":977,"column":8,"start":34946,"end":34952,"length":7,"parent_index":4504},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":4509,"node_type":24,"kind":24,"src":{"id":4510,"line":977,"column":35,"start":34973,"end":35099,"length":127,"parent_index":4502},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_function_$$$_t_uint256$$_t_address$","type_string":"function(function(),uint256,address)"}],"arguments":[{"id":4515,"node_type":16,"src":{"id":4516,"line":978,"column":12,"start":35017,"end":35023,"length":7,"parent_index":4509},"name":"factory","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":4517,"node_type":16,"src":{"id":4518,"line":979,"column":12,"start":35038,"end":35045,"length":8,"parent_index":4509},"name":"amountIn","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4517,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]},{"id":4519,"node_type":16,"src":{"id":4520,"line":980,"column":12,"start":35060,"end":35063,"length":4,"parent_index":4509},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4519,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_uint256","type_string":"uint256"}]},{"id":4521,"node_type":16,"src":{"id":4522,"line":981,"column":12,"start":35078,"end":35089,"length":12,"parent_index":4509},"name":"pairCodeHash","type_description":{"type_identifier":"t_function_$_t_function_$$$_t_uint256$$_t_address$","type_string":"function(function(),uint256,address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":4511,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4512,"line":977,"column":35,"start":34973,"end":35002,"length":30,"parent_index":4509},"expression":{"id":4513,"node_type":16,"src":{"id":4514,"line":977,"column":35,"start":34973,"end":34988,"length":16,"parent_index":4511},"name":"UniswapV2Library","type_description":{"type_identifier":"t_contract$_UniswapV2Library_$3448","type_string":"contract UniswapV2Library"},"overloaded_declarations":[],"referenced_declaration":3448,"is_pure":false},"member_name":"getAmountsOut","argument_types":[],"type_description":{"type_identifier":"t_contract$_UniswapV2Library_$3448","type_string":"contract UniswapV2Library"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_uint256$_t_address$_t_function_$_t_function_$_t_uint256$_t_address$","type_string":"function(function(),uint256,address,function(function(),uint256,address))"}}},{"id":4523,"node_type":81,"src":{"id":4524,"line":983,"column":8,"start":35110,"end":35149,"length":40,"parent_index":4500},"expression":{"id":4525,"node_type":27,"src":{"id":4526,"line":983,"column":8,"start":35110,"end":35148,"length":39,"parent_index":4500},"operator":11,"left_expression":{"id":4527,"node_type":16,"src":{"id":4528,"line":983,"column":8,"start":35110,"end":35118,"length":9,"parent_index":4525},"name":"amountOut","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":913,"is_pure":false},"right_expression":{"id":4529,"node_type":22,"src":{"id":4530,"line":983,"column":20,"start":35122,"end":35148,"length":27,"parent_index":4525},"index_expression":{"id":4531,"node_type":16,"src":{"id":4532,"line":983,"column":20,"start":35122,"end":35128,"length":7,"parent_index":4529},"name":"amounts","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4502,"is_pure":false},"base_expression":{"id":4533,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4534,"line":983,"column":28,"start":35130,"end":35147,"length":18,"parent_index":4529},"operator":2,"left_expression":{"id":4535,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4536,"line":983,"column":28,"start":35130,"end":35143,"length":14,"parent_index":4533},"expression":{"id":4537,"node_type":16,"src":{"id":4538,"line":983,"column":28,"start":35130,"end":35136,"length":7,"parent_index":4535},"name":"amounts","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4502,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"right_expression":{"id":4539,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":4540,"line":983,"column":45,"start":35147,"end":35147,"length":1,"parent_index":4533},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_descriptions":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},{"id":4541,"node_type":24,"kind":24,"src":{"id":4542,"line":985,"column":8,"start":35160,"end":35220,"length":61,"parent_index":4500},"argument_types":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_string_literal","type_string":"literal_string \"insufficient-amount-out\""}],"arguments":[{"id":4545,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4546,"line":985,"column":16,"start":35168,"end":35192,"length":25,"parent_index":4541},"operator":8,"left_expression":{"id":4547,"node_type":16,"src":{"id":4548,"line":985,"column":16,"start":35168,"end":35176,"length":9,"parent_index":4545},"name":"amountOut","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":913,"is_pure":false},"right_expression":{"id":4549,"node_type":16,"src":{"id":4550,"line":985,"column":29,"start":35181,"end":35192,"length":12,"parent_index":4545},"name":"amountOutMin","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4549,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":4551,"node_type":17,"kind":50,"value":"insufficient-amount-out","hex_value":"696e73756666696369656e742d616d6f756e742d6f7574","src":{"id":4552,"line":985,"column":43,"start":35195,"end":35219,"length":25,"parent_index":4541},"type_description":{"type_identifier":"t_string_literal","type_string":"literal_string \"insufficient-amount-out\""},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_bool","type_string":"bool"}]}],"expression":{"id":4543,"node_type":16,"src":{"id":4544,"line":985,"column":8,"start":35160,"end":35166,"length":7,"parent_index":4541},"name":"require","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_bool$_t_string_literal$","type_string":"function(bool,string memory)"}},{"id":4553,"node_type":48,"src":{"id":4554,"line":988,"column":0,"start":35305,"end":35626,"length":322,"parent_index":4500},"condition":{"id":4555,"node_type":16,"src":{"id":4556,"line":988,"column":12,"start":35309,"end":35318,"length":10,"parent_index":4553},"name":"sendTokens","type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":4555,"is_pure":false},"body":{"id":4557,"node_type":46,"kind":0,"src":{"id":4558,"line":988,"column":24,"start":35321,"end":35626,"length":306,"parent_index":4469},"implemented":true,"statements":[{"id":4559,"node_type":24,"kind":24,"src":{"id":4560,"line":989,"column":12,"start":35335,"end":35615,"length":281,"parent_index":4557},"argument_types":[{"type_identifier":"t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$_t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$","type_string":"function(function(),index[address:int_const 0],index[address:int_const 1],function(function(),index[address:int_const 0],index[address:int_const 1]))"},{"type_identifier":"t_function_$_t_function_$_t_address$","type_string":"function(function(address))"}],"arguments":[{"id":4573,"node_type":24,"kind":24,"src":{"id":4574,"line":990,"column":16,"start":35381,"end":35543,"length":163,"parent_index":4559},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_[_[$_t_address]$_t_rational_0_by_1]$","type_string":"index[address:int_const 0]"},{"type_identifier":"t_[_[$_t_address]$_t_rational_1_by_1]$","type_string":"index[address:int_const 1]"},{"type_identifier":"t_function_$_t_function_$$$_t_[_[$_t_address]$_t_rational_0_by_1]$$$_t_[_[$_t_address]$_t_rational_1_by_1]$$","type_string":"function(function(),index[address:int_const 0],index[address:int_const 1])"}],"arguments":[{"id":4579,"node_type":16,"src":{"id":4580,"line":991,"column":20,"start":35427,"end":35433,"length":7,"parent_index":4573},"name":"factory","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":4581,"node_type":22,"src":{"id":4582,"line":992,"column":20,"start":35456,"end":35462,"length":7,"parent_index":4573},"index_expression":{"id":4583,"node_type":16,"src":{"id":4584,"line":992,"column":20,"start":35456,"end":35459,"length":4,"parent_index":4581},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4583,"is_pure":false},"base_expression":{"id":4585,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":4586,"line":992,"column":25,"start":35461,"end":35461,"length":1,"parent_index":4581},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_descriptions":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"type_description":{"type_identifier":"t_[_[$_t_address]$_t_rational_0_by_1]$","type_string":"index[address:int_const 0]"}},{"id":4587,"node_type":22,"src":{"id":4588,"line":993,"column":20,"start":35485,"end":35491,"length":7,"parent_index":4573},"index_expression":{"id":4589,"node_type":16,"src":{"id":4590,"line":993,"column":20,"start":35485,"end":35488,"length":4,"parent_index":4587},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4589,"is_pure":false},"base_expression":{"id":4591,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":4592,"line":993,"column":25,"start":35490,"end":35490,"length":1,"parent_index":4587},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_descriptions":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"}],"type_description":{"type_identifier":"t_[_[$_t_address]$_t_rational_1_by_1]$","type_string":"index[address:int_const 1]"}},{"id":4593,"node_type":16,"src":{"id":4594,"line":994,"column":20,"start":35514,"end":35525,"length":12,"parent_index":4573},"name":"pairCodeHash","type_description":{"type_identifier":"t_function_$_t_function_$$$_t_[_[$_t_address]$_t_rational_0_by_1]$$$_t_[_[$_t_address]$_t_rational_1_by_1]$$","type_string":"function(function(),index[address:int_const 0],index[address:int_const 1])"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_[_[$_t_address]$_t_rational_0_by_1]$","type_string":"index[address:int_const 0]"},{"type_identifier":"t_[_[$_t_address]$_t_rational_1_by_1]$","type_string":"index[address:int_const 1]"}]}],"expression":{"id":4575,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4576,"line":990,"column":16,"start":35381,"end":35404,"length":24,"parent_index":4573},"expression":{"id":4577,"node_type":16,"src":{"id":4578,"line":990,"column":16,"start":35381,"end":35396,"length":16,"parent_index":4575},"name":"UniswapV2Library","type_description":{"type_identifier":"t_contract$_UniswapV2Library_$3448","type_string":"contract UniswapV2Library"},"overloaded_declarations":[],"referenced_declaration":3448,"is_pure":false},"member_name":"pairFor","argument_types":[],"type_description":{"type_identifier":"t_contract$_UniswapV2Library_$3448","type_string":"contract UniswapV2Library"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$_t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$","type_string":"function(function(),index[address:int_const 0],index[address:int_const 1],function(function(),index[address:int_const 0],index[address:int_const 1]))"}},{"id":4595,"node_type":24,"kind":24,"src":{"id":4596,"line":996,"column":16,"start":35562,"end":35601,"length":40,"parent_index":4559},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}],"arguments":[{"id":4609,"node_type":24,"kind":24,"src":{"id":4610,"line":996,"column":42,"start":35588,"end":35600,"length":13,"parent_index":4595},"argument_types":[{"type_identifier":"t_contract$_SushiLegacyAdapter_$4404","type_string":"contract SushiLegacyAdapter"}],"arguments":[{"id":4615,"node_type":16,"src":{"id":4616,"line":996,"column":50,"start":35596,"end":35599,"length":4,"parent_index":4609},"name":"this","type_description":{"type_identifier":"t_contract$_SushiLegacyAdapter_$4404","type_string":"contract SushiLegacyAdapter"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":4611,"node_type":16,"src":{"id":4612,"line":996,"column":42,"start":35588,"end":35594,"length":7,"parent_index":4609},"name":"address","type_name":{"id":4613,"node_type":30,"src":{"id":4614,"line":996,"column":42,"start":35588,"end":35594,"length":7,"parent_index":4611},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}],"expression":{"id":4597,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4598,"line":996,"column":16,"start":35562,"end":35586,"length":25,"parent_index":4595},"expression":{"id":4599,"node_type":24,"kind":24,"src":{"id":4600,"line":996,"column":16,"start":35562,"end":35576,"length":15,"parent_index":4597},"argument_types":[{"type_identifier":"t_[_[$_t_address]$_t_rational_0_by_1]$","type_string":"index[address:int_const 0]"}],"arguments":[{"id":4603,"node_type":22,"src":{"id":4604,"line":996,"column":23,"start":35569,"end":35575,"length":7,"parent_index":4599},"index_expression":{"id":4605,"node_type":16,"src":{"id":4606,"line":996,"column":23,"start":35569,"end":35572,"length":4,"parent_index":4603},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4605,"is_pure":false},"base_expression":{"id":4607,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":4608,"line":996,"column":28,"start":35574,"end":35574,"length":1,"parent_index":4603},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_descriptions":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"type_description":{"type_identifier":"t_[_[$_t_address]$_t_rational_0_by_1]$","type_string":"index[address:int_const 0]"}}],"expression":{"id":4601,"node_type":16,"src":{"id":4602,"line":996,"column":16,"start":35562,"end":35567,"length":6,"parent_index":4599},"name":"IERC20","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$","type_string":"function(index[address:int_const 0])"}},"member_name":"balanceOf","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$","type_string":"function(index[address:int_const 0])"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$","type_string":"function(function(address))"}}],"expression":{"id":4561,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4562,"line":989,"column":12,"start":35335,"end":35362,"length":28,"parent_index":4559},"expression":{"id":4563,"node_type":24,"kind":24,"src":{"id":4564,"line":989,"column":12,"start":35335,"end":35349,"length":15,"parent_index":4561},"argument_types":[{"type_identifier":"t_[_[$_t_address]$_t_rational_0_by_1]$","type_string":"index[address:int_const 0]"}],"arguments":[{"id":4567,"node_type":22,"src":{"id":4568,"line":989,"column":19,"start":35342,"end":35348,"length":7,"parent_index":4563},"index_expression":{"id":4569,"node_type":16,"src":{"id":4570,"line":989,"column":19,"start":35342,"end":35345,"length":4,"parent_index":4567},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4569,"is_pure":false},"base_expression":{"id":4571,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":4572,"line":989,"column":24,"start":35347,"end":35347,"length":1,"parent_index":4567},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_descriptions":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"type_description":{"type_identifier":"t_[_[$_t_address]$_t_rational_0_by_1]$","type_string":"index[address:int_const 0]"}}],"expression":{"id":4565,"node_type":16,"src":{"id":4566,"line":989,"column":12,"start":35335,"end":35340,"length":6,"parent_index":4563},"name":"IERC20","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$","type_string":"function(index[address:int_const 0])"}},"member_name":"safeTransfer","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$","type_string":"function(index[address:int_const 0])"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$_t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$_t_function_$_t_function_$_t_address$","type_string":"function(function(function(),index[address:int_const 0],index[address:int_const 1],function(function(),index[address:int_const 0],index[address:int_const 1])),function(function(address)))"}}]}},{"id":4617,"node_type":24,"kind":24,"src":{"id":4618,"line":999,"column":8,"start":35636,"end":35659,"length":24,"parent_index":4500},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":4621,"node_type":16,"src":{"id":4622,"line":999,"column":14,"start":35642,"end":35648,"length":7,"parent_index":4617},"name":"amounts","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4502,"is_pure":false},{"id":4623,"node_type":16,"src":{"id":4624,"line":999,"column":23,"start":35651,"end":35654,"length":4,"parent_index":4617},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4623,"is_pure":false,"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},{"id":4625,"node_type":16,"src":{"id":4626,"line":999,"column":29,"start":35657,"end":35658,"length":2,"parent_index":4617},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4625,"is_pure":false,"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_address","type_string":"address"}]}],"expression":{"id":4619,"node_type":16,"src":{"id":4620,"line":999,"column":8,"start":35636,"end":35640,"length":5,"parent_index":4617},"name":"_swap","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_uint256$_t_address$_t_address$","type_string":"function(uint256,address,address)"}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":4471,"node_type":43,"src":{"id":4472,"line":971,"column":8,"start":34770,"end":34891,"length":122,"parent_index":4469},"parameters":[{"id":4473,"node_type":44,"src":{"id":4474,"line":971,"column":8,"start":34770,"end":34785,"length":16,"parent_index":4471},"scope":4469,"name":"amountIn","type_name":{"id":4475,"node_type":30,"src":{"id":4476,"line":971,"column":8,"start":34770,"end":34776,"length":7,"parent_index":4473},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":4477,"node_type":44,"src":{"id":4478,"line":972,"column":8,"start":34796,"end":34815,"length":20,"parent_index":4471},"scope":4469,"name":"amountOutMin","type_name":{"id":4479,"node_type":30,"src":{"id":4480,"line":972,"column":8,"start":34796,"end":34802,"length":7,"parent_index":4477},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":4481,"node_type":44,"src":{"id":4482,"line":973,"column":8,"start":34826,"end":34846,"length":21,"parent_index":4471},"scope":4469,"name":"path","type_name":{"id":4483,"node_type":16,"src":{"id":4485,"line":973,"column":8,"start":34826,"end":34832,"length":7,"parent_index":4481},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":4486,"node_type":44,"src":{"id":4487,"line":974,"column":8,"start":34857,"end":34866,"length":10,"parent_index":4471},"scope":4469,"name":"to","type_name":{"id":4488,"node_type":30,"src":{"id":4489,"line":974,"column":8,"start":34857,"end":34863,"length":7,"parent_index":4486},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":4490,"node_type":44,"src":{"id":4491,"line":975,"column":8,"start":34877,"end":34891,"length":15,"parent_index":4471},"scope":4469,"name":"sendTokens","type_name":{"id":4492,"node_type":30,"src":{"id":4493,"line":975,"column":8,"start":34877,"end":34880,"length":4,"parent_index":4490},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bool","type_string":"bool"}]},"return_parameters":{"id":4494,"node_type":43,"src":{"id":4495,"line":976,"column":24,"start":34917,"end":34933,"length":17,"parent_index":4469},"parameters":[{"id":4496,"node_type":44,"src":{"id":4497,"line":976,"column":24,"start":34917,"end":34933,"length":17,"parent_index":4494},"scope":4469,"name":"amountOut","type_name":{"id":4498,"node_type":30,"src":{"id":4499,"line":976,"column":24,"start":34917,"end":34923,"length":7,"parent_index":4496},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":4454,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$_t_address$_t_address$_t_bool$","type_string":"function(uint256,uint256,address,address,bool)"}},{"id":4628,"name":"_swap","node_type":42,"kind":41,"src":{"id":4629,"line":1003,"column":4,"start":35758,"end":36723,"length":966,"parent_index":4454},"body":{"id":4647,"node_type":46,"kind":0,"src":{"id":4648,"line":1007,"column":23,"start":35882,"end":36723,"length":842,"parent_index":4628},"implemented":true,"statements":[{"id":4649,"node_type":79,"src":{"id":4650,"line":1008,"column":0,"start":35892,"end":36717,"length":826,"parent_index":4647},"initialiser":{"id":4651,"node_type":44,"src":{"id":4652,"line":1008,"column":13,"start":35897,"end":35906,"length":10,"parent_index":4647},"assignments":[4653],"declarations":[{"is_constant":false,"id":4653,"state_mutability":1,"name":"i","node_type":44,"scope":4647,"src":{"id":4654,"line":1008,"column":13,"start":35897,"end":35905,"length":9,"parent_index":4651},"is_state_variable":false,"storage_location":1,"type_name":{"id":4655,"node_type":30,"src":{"id":4656,"line":1008,"column":13,"start":35897,"end":35903,"length":7,"parent_index":4653},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}]},"condition":{"id":4657,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4658,"line":1008,"column":24,"start":35908,"end":35926,"length":19,"parent_index":4649},"operator":9,"left_expression":{"id":4659,"node_type":16,"src":{"id":4660,"line":1008,"column":24,"start":35908,"end":35908,"length":1,"parent_index":4657},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":4661,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4662,"line":1008,"column":28,"start":35912,"end":35926,"length":15,"parent_index":4657},"operator":2,"left_expression":{"id":4663,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4664,"line":1008,"column":28,"start":35912,"end":35922,"length":11,"parent_index":4661},"expression":{"id":4665,"node_type":16,"src":{"id":4666,"line":1008,"column":28,"start":35912,"end":35915,"length":4,"parent_index":4663},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4665,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"right_expression":{"id":4667,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":4668,"line":1008,"column":42,"start":35926,"end":35926,"length":1,"parent_index":4661},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"closure":{"id":4669,"node_type":18,"src":{"id":4670,"line":1008,"column":45,"start":35929,"end":35931,"length":3,"parent_index":4628},"operator":27,"expression":{"id":4671,"node_type":16,"src":{"id":4672,"line":1008,"column":45,"start":35929,"end":35929,"length":1,"parent_index":4669},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"prefix":false,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false},"body":{"id":4673,"node_type":46,"kind":0,"src":{"id":4674,"line":1008,"column":50,"start":35934,"end":36717,"length":784,"parent_index":4649},"implemented":true,"statements":[{"id":4675,"node_type":44,"src":{"id":4676,"line":1009,"column":12,"start":35948,"end":36004,"length":57,"parent_index":4673},"assignments":[],"declarations":[],"initial_value":{"id":4677,"node_type":60,"src":{"id":4678,"line":1009,"column":46,"start":35982,"end":36003,"length":22,"parent_index":4649},"is_constant":false,"is_pure":false,"components":[{"id":4679,"node_type":22,"src":{"id":4680,"line":1009,"column":47,"start":35983,"end":35989,"length":7,"parent_index":4675},"index_expression":{"id":4681,"node_type":16,"src":{"id":4682,"line":1009,"column":47,"start":35983,"end":35986,"length":4,"parent_index":4679},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4101,"is_pure":false},"base_expression":{"id":4683,"node_type":16,"src":{"id":4684,"line":1009,"column":52,"start":35988,"end":35988,"length":1,"parent_index":4679},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"}},{"id":4685,"node_type":22,"src":{"id":4686,"line":1009,"column":56,"start":35992,"end":36002,"length":11,"parent_index":4675},"index_expression":{"id":4687,"node_type":16,"src":{"id":4688,"line":1009,"column":56,"start":35992,"end":35995,"length":4,"parent_index":4685},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4101,"is_pure":false},"base_expression":{"id":4689,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4690,"line":1009,"column":61,"start":35997,"end":36001,"length":5,"parent_index":4685},"operator":1,"left_expression":{"id":4691,"node_type":16,"src":{"id":4692,"line":1009,"column":61,"start":35997,"end":35997,"length":1,"parent_index":4689},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":4693,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":4694,"line":1009,"column":65,"start":36001,"end":36001,"length":1,"parent_index":4689},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_descriptions":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"}}],"type_description":{"type_identifier":"t_tuple_$_t_[_[$_t_address]$_t_uint256]$_$_t_[_[$_t_address]$_t_uint256]$$","type_string":"tuple(index[address:uint256],index[address:uint256])"}}},{"id":4695,"node_type":44,"src":{"id":4696,"line":1010,"column":12,"start":36018,"end":36081,"length":64,"parent_index":4673},"assignments":[],"declarations":[],"initial_value":{"id":4697,"node_type":24,"kind":24,"src":{"id":4698,"line":1010,"column":33,"start":36039,"end":36080,"length":42,"parent_index":4695},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}],"arguments":[{"id":4703,"node_type":16,"src":{"id":4704,"line":1010,"column":61,"start":36067,"end":36071,"length":5,"parent_index":4697},"name":"input","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":4705,"node_type":16,"src":{"id":4706,"line":1010,"column":68,"start":36074,"end":36079,"length":6,"parent_index":4697},"name":"output","type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]}],"expression":{"id":4699,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4700,"line":1010,"column":33,"start":36039,"end":36065,"length":27,"parent_index":4697},"expression":{"id":4701,"node_type":16,"src":{"id":4702,"line":1010,"column":33,"start":36039,"end":36054,"length":16,"parent_index":4699},"name":"UniswapV2Library","type_description":{"type_identifier":"t_contract$_UniswapV2Library_$3448","type_string":"contract UniswapV2Library"},"overloaded_declarations":[],"referenced_declaration":3448,"is_pure":false},"member_name":"sortTokens","argument_types":[],"type_description":{"type_identifier":"t_contract$_UniswapV2Library_$3448","type_string":"contract UniswapV2Library"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$","type_string":"function(function(),function(function()))"}}},{"id":4707,"node_type":44,"src":{"id":4708,"line":1011,"column":12,"start":36095,"end":36129,"length":35,"parent_index":4673},"assignments":[4709],"declarations":[{"is_constant":false,"id":4709,"state_mutability":1,"name":"amountOut","node_type":44,"scope":4673,"src":{"id":4710,"line":1011,"column":12,"start":36095,"end":36111,"length":17,"parent_index":4707},"is_state_variable":false,"storage_location":1,"type_name":{"id":4711,"node_type":30,"src":{"id":4712,"line":1011,"column":12,"start":36095,"end":36101,"length":7,"parent_index":4709},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":4713,"node_type":22,"src":{"id":4714,"line":1011,"column":32,"start":36115,"end":36128,"length":14,"parent_index":4707},"index_expression":{"id":4715,"node_type":16,"src":{"id":4716,"line":1011,"column":32,"start":36115,"end":36121,"length":7,"parent_index":4713},"name":"amounts","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4112,"is_pure":false},"base_expression":{"id":4717,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4718,"line":1011,"column":40,"start":36123,"end":36127,"length":5,"parent_index":4713},"operator":1,"left_expression":{"id":4719,"node_type":16,"src":{"id":4720,"line":1011,"column":40,"start":36123,"end":36123,"length":1,"parent_index":4717},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":4721,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":4722,"line":1011,"column":44,"start":36127,"end":36127,"length":1,"parent_index":4717},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_descriptions":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_uint256]$_t_uint256]$","type_string":"index[uint256:uint256]"}}},{"id":4723,"node_type":44,"src":{"id":4724,"line":1012,"column":12,"start":36143,"end":36285,"length":143,"parent_index":4673},"assignments":[],"declarations":[],"initial_value":{"id":4726,"node_type":97,"src":{"id":4727,"line":1012,"column":55,"start":36186,"end":36284,"length":99,"parent_index":4723},"expressions":[{"id":4728,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4729,"line":1012,"column":55,"start":36186,"end":36200,"length":15,"parent_index":4723},"operator":11,"left_expression":{"id":4730,"node_type":16,"src":{"id":4731,"line":1012,"column":55,"start":36186,"end":36190,"length":5,"parent_index":4728},"name":"input","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":4703,"is_pure":false},"right_expression":{"id":4732,"node_type":16,"src":{"id":4733,"line":1012,"column":64,"start":36195,"end":36200,"length":6,"parent_index":4728},"name":"token0","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":3516,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":4734,"node_type":60,"src":{"id":4735,"line":1013,"column":18,"start":36220,"end":36242,"length":23,"parent_index":4726},"is_constant":false,"is_pure":false,"components":[{"id":4736,"node_type":24,"kind":24,"src":{"id":4737,"line":1013,"column":19,"start":36221,"end":36230,"length":10,"parent_index":4723},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":4742,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":4743,"line":1013,"column":27,"start":36229,"end":36229,"length":1,"parent_index":4736},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":4738,"node_type":16,"src":{"id":4739,"line":1013,"column":19,"start":36221,"end":36227,"length":7,"parent_index":4736},"name":"uint256","type_name":{"id":4740,"node_type":30,"src":{"id":4741,"line":1013,"column":19,"start":36221,"end":36227,"length":7,"parent_index":4738},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}},{"id":4744,"node_type":16,"src":{"id":4745,"line":1013,"column":31,"start":36233,"end":36241,"length":9,"parent_index":4734},"name":"amountOut","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4707,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_function_$_t_rational_0_by_1$_$_t_uint256$","type_string":"tuple(function(int_const 0),uint256)"}},{"id":4746,"node_type":60,"src":{"id":4747,"line":1014,"column":18,"start":36262,"end":36284,"length":23,"parent_index":4726},"is_constant":false,"is_pure":false,"components":[{"id":4748,"node_type":16,"src":{"id":4749,"line":1014,"column":19,"start":36263,"end":36271,"length":9,"parent_index":4746},"name":"amountOut","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4707,"is_pure":false},{"id":4750,"node_type":24,"kind":24,"src":{"id":4751,"line":1014,"column":30,"start":36274,"end":36283,"length":10,"parent_index":4723},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":4756,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":4757,"line":1014,"column":38,"start":36282,"end":36282,"length":1,"parent_index":4750},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":4752,"node_type":16,"src":{"id":4753,"line":1014,"column":30,"start":36274,"end":36280,"length":7,"parent_index":4750},"name":"uint256","type_name":{"id":4754,"node_type":30,"src":{"id":4755,"line":1014,"column":30,"start":36274,"end":36280,"length":7,"parent_index":4752},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}}],"type_description":{"type_identifier":"t_tuple_$_t_uint256_$_t_function_$_t_rational_0_by_1$$","type_string":"tuple(uint256,function(int_const 0))"}}],"type_descriptions":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_tuple_$_t_function_$_t_rational_0_by_1$_$_t_uint256$","type_string":"tuple(function(int_const 0),uint256)"},{"type_identifier":"t_tuple_$_t_uint256_$_t_function_$_t_rational_0_by_1$$","type_string":"tuple(uint256,function(int_const 0))"}],"type_description":null}},{"id":4758,"node_type":44,"src":{"id":4759,"line":1015,"column":12,"start":36299,"end":36538,"length":240,"parent_index":4673},"assignments":[4760],"declarations":[{"is_constant":false,"id":4760,"state_mutability":1,"name":"to","node_type":44,"scope":4673,"src":{"id":4761,"line":1015,"column":12,"start":36299,"end":36308,"length":10,"parent_index":4758},"is_state_variable":false,"storage_location":1,"type_name":{"id":4762,"node_type":30,"src":{"id":4763,"line":1015,"column":12,"start":36299,"end":36305,"length":7,"parent_index":4760},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1}],"initial_value":{"id":4765,"node_type":97,"src":{"id":4766,"line":1015,"column":25,"start":36312,"end":36537,"length":226,"parent_index":4758},"expressions":[{"id":4767,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4768,"line":1015,"column":25,"start":36312,"end":36330,"length":19,"parent_index":4758},"operator":9,"left_expression":{"id":4769,"node_type":16,"src":{"id":4770,"line":1015,"column":25,"start":36312,"end":36312,"length":1,"parent_index":4767},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":4771,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4772,"line":1015,"column":29,"start":36316,"end":36330,"length":15,"parent_index":4767},"operator":2,"left_expression":{"id":4773,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4774,"line":1015,"column":29,"start":36316,"end":36326,"length":11,"parent_index":4758},"expression":{"id":4775,"node_type":16,"src":{"id":4776,"line":1015,"column":29,"start":36316,"end":36319,"length":4,"parent_index":4773},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4101,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"right_expression":{"id":4777,"node_type":17,"kind":49,"value":"2","hex_value":"32","src":{"id":4778,"line":1015,"column":43,"start":36330,"end":36330,"length":1,"parent_index":4771},"type_description":{"type_identifier":"t_rational_2_by_1","type_string":"int_const 2"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_address","type_string":"address"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":4779,"node_type":24,"kind":24,"src":{"id":4780,"line":1016,"column":18,"start":36350,"end":36515,"length":166,"parent_index":4758},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"},{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_function_$$$$_t_[_[$_t_address]$_t_uint256]$$","type_string":"function(function(),function(function()),index[address:uint256])"}],"arguments":[{"id":4785,"node_type":16,"src":{"id":4786,"line":1017,"column":20,"start":36396,"end":36402,"length":7,"parent_index":4779},"name":"factory","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":4787,"node_type":16,"src":{"id":4788,"line":1018,"column":20,"start":36425,"end":36430,"length":6,"parent_index":4779},"name":"output","type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]},{"id":4789,"node_type":22,"src":{"id":4790,"line":1019,"column":20,"start":36453,"end":36463,"length":11,"parent_index":4779},"index_expression":{"id":4791,"node_type":16,"src":{"id":4792,"line":1019,"column":20,"start":36453,"end":36456,"length":4,"parent_index":4789},"name":"path","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4101,"is_pure":false},"base_expression":{"id":4793,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":4794,"line":1019,"column":25,"start":36458,"end":36462,"length":5,"parent_index":4789},"operator":1,"left_expression":{"id":4795,"node_type":16,"src":{"id":4796,"line":1019,"column":25,"start":36458,"end":36458,"length":1,"parent_index":4793},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":4797,"node_type":17,"kind":49,"value":"2","hex_value":"32","src":{"id":4798,"line":1019,"column":29,"start":36462,"end":36462,"length":1,"parent_index":4793},"type_description":{"type_identifier":"t_rational_2_by_1","type_string":"int_const 2"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_descriptions":[{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"}},{"id":4799,"node_type":16,"src":{"id":4800,"line":1020,"column":20,"start":36486,"end":36497,"length":12,"parent_index":4779},"name":"pairCodeHash","type_description":{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_function_$$$$_t_[_[$_t_address]$_t_uint256]$$","type_string":"function(function(),function(function()),index[address:uint256])"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},{"type_identifier":"t_[_[$_t_address]$_t_uint256]$","type_string":"index[address:uint256]"}]}],"expression":{"id":4781,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4782,"line":1016,"column":18,"start":36350,"end":36373,"length":24,"parent_index":4779},"expression":{"id":4783,"node_type":16,"src":{"id":4784,"line":1016,"column":18,"start":36350,"end":36365,"length":16,"parent_index":4781},"name":"UniswapV2Library","type_description":{"type_identifier":"t_contract$_UniswapV2Library_$3448","type_string":"contract UniswapV2Library"},"overloaded_declarations":[],"referenced_declaration":3448,"is_pure":false},"member_name":"pairFor","argument_types":[],"type_description":{"type_identifier":"t_contract$_UniswapV2Library_$3448","type_string":"contract UniswapV2Library"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$_t_function_$_t_function_$_t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$","type_string":"function(function(),function(function()),index[address:uint256],function(function(),function(function()),index[address:uint256]))"}},{"id":4801,"node_type":16,"src":{"id":4802,"line":1022,"column":18,"start":36535,"end":36537,"length":3,"parent_index":4765},"name":"_to","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":1107,"is_pure":false}],"type_descriptions":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$_t_function_$_t_function_$_t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$","type_string":"function(function(),function(function()),index[address:uint256],function(function(),function(function()),index[address:uint256]))"},{"type_identifier":"t_bytes","type_string":"bytes"}],"type_description":null}},{"id":4803,"node_type":24,"kind":24,"src":{"id":4804,"line":1023,"column":12,"start":36552,"end":36706,"length":155,"parent_index":4673},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}],"arguments":[{"id":4825,"node_type":16,"src":{"id":4826,"line":1025,"column":19,"start":36666,"end":36675,"length":10,"parent_index":4803},"name":"amount0Out","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":4827,"node_type":16,"src":{"id":4828,"line":1025,"column":31,"start":36678,"end":36687,"length":10,"parent_index":4803},"name":"amount1Out","type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]},{"id":4829,"node_type":16,"src":{"id":4830,"line":1025,"column":43,"start":36690,"end":36691,"length":2,"parent_index":4803},"name":"to","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":4758,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}]},{"id":4831,"node_type":24,"kind":24,"src":{"id":4832,"line":1025,"column":47,"start":36694,"end":36705,"length":12,"parent_index":4803},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":4837,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":4838,"line":1025,"column":57,"start":36704,"end":36704,"length":1,"parent_index":4831},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":4833,"node_type":25,"src":{"id":4834,"line":1025,"column":47,"start":36694,"end":36702,"length":9,"parent_index":4831},"argument_types":[],"type_name":{"id":4835,"node_type":30,"src":{"id":4836,"line":1025,"column":51,"start":36698,"end":36702,"length":5,"parent_index":4833},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"type_description":{"type_identifier":"t_bytes","type_string":"bytes"}},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0)"}}],"expression":{"id":4805,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4806,"line":1023,"column":12,"start":36552,"end":36664,"length":113,"parent_index":4803},"expression":{"id":4807,"node_type":24,"kind":24,"src":{"id":4808,"line":1023,"column":12,"start":36552,"end":36659,"length":108,"parent_index":4805},"argument_types":[{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$","type_string":"function(function(),function(function()),function(function(),function(function())),function(function(),function(function()),function(function(),function(function()))))"}],"arguments":[{"id":4811,"node_type":24,"kind":24,"src":{"id":4812,"line":1024,"column":16,"start":36584,"end":36645,"length":62,"parent_index":4807},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_function_$$$","type_string":"function(function(),function(function()))"},{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_function_$$$$_t_function_$_t_function_$$$_t_function_$_t_function_$$$$","type_string":"function(function(),function(function()),function(function(),function(function())))"}],"arguments":[{"id":4817,"node_type":16,"src":{"id":4818,"line":1024,"column":41,"start":36609,"end":36615,"length":7,"parent_index":4811},"name":"factory","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":4819,"node_type":16,"src":{"id":4820,"line":1024,"column":50,"start":36618,"end":36622,"length":5,"parent_index":4811},"name":"input","type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]},{"id":4821,"node_type":16,"src":{"id":4822,"line":1024,"column":57,"start":36625,"end":36630,"length":6,"parent_index":4811},"name":"output","type_description":{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_function_$$$","type_string":"function(function(),function(function()))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}]},{"id":4823,"node_type":16,"src":{"id":4824,"line":1024,"column":65,"start":36633,"end":36644,"length":12,"parent_index":4811},"name":"pairCodeHash","type_description":{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_function_$$$$_t_function_$_t_function_$$$_t_function_$_t_function_$$$$","type_string":"function(function(),function(function()),function(function(),function(function())))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_function_$$$","type_string":"function(function(),function(function()))"}]}],"expression":{"id":4813,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":4814,"line":1024,"column":16,"start":36584,"end":36607,"length":24,"parent_index":4811},"expression":{"id":4815,"node_type":16,"src":{"id":4816,"line":1024,"column":16,"start":36584,"end":36599,"length":16,"parent_index":4813},"name":"UniswapV2Library","type_description":{"type_identifier":"t_contract$_UniswapV2Library_$3448","type_string":"contract UniswapV2Library"},"overloaded_declarations":[],"referenced_declaration":3448,"is_pure":false},"member_name":"pairFor","argument_types":[],"type_description":{"type_identifier":"t_contract$_UniswapV2Library_$3448","type_string":"contract UniswapV2Library"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$","type_string":"function(function(),function(function()),function(function(),function(function())),function(function(),function(function()),function(function(),function(function()))))"}}],"expression":{"id":4809,"node_type":16,"src":{"id":4810,"line":1023,"column":12,"start":36552,"end":36565,"length":14,"parent_index":4807},"name":"IUniswapV2Pair","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$","type_string":"function(function(function(),function(function()),function(function(),function(function())),function(function(),function(function()),function(function(),function(function())))))"}},"member_name":"swap","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$","type_string":"function(function(function(),function(function()),function(function(),function(function())),function(function(),function(function()),function(function(),function(function())))))"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_rational_0_by_1$","type_string":"function(function(),function(function()),address,function(int_const 0))"}}]}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":true,"modifiers":[],"overrides":[],"parameters":{"id":4630,"node_type":43,"src":{"id":4631,"line":1004,"column":8,"start":35782,"end":35857,"length":76,"parent_index":4628},"parameters":[{"id":4632,"node_type":44,"src":{"id":4633,"line":1004,"column":8,"start":35782,"end":35805,"length":24,"parent_index":4630},"scope":4628,"name":"amounts","type_name":{"id":4634,"node_type":16,"src":{"id":4636,"line":1004,"column":8,"start":35782,"end":35788,"length":7,"parent_index":4632},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":4637,"node_type":44,"src":{"id":4638,"line":1005,"column":8,"start":35816,"end":35836,"length":21,"parent_index":4630},"scope":4628,"name":"path","type_name":{"id":4639,"node_type":16,"src":{"id":4641,"line":1005,"column":8,"start":35816,"end":35822,"length":7,"parent_index":4637},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":4642,"node_type":44,"src":{"id":4643,"line":1006,"column":8,"start":35847,"end":35857,"length":11,"parent_index":4630},"scope":4628,"name":"_to","type_name":{"id":4644,"node_type":30,"src":{"id":4645,"line":1006,"column":8,"start":35847,"end":35853,"length":7,"parent_index":4642},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_address","type_string":"address"}]},"return_parameters":{"id":4646,"node_type":43,"src":{"id":4629,"line":1003,"column":4,"start":35758,"end":36723,"length":966,"parent_index":4628},"parameters":[],"parameter_types":[]},"scope":4454,"type_description":{"type_identifier":"t_function_$_t_uint256$_t_address$_t_address$","type_string":"function(uint256,address,address)"}}],"linearized_base_contracts":[1354,4454,4451,4452,4453],"base_contracts":[{"id":4455,"node_type":62,"src":{"id":4456,"line":967,"column":40,"start":34672,"end":34685,"length":14,"parent_index":4454},"base_name":{"id":4457,"node_type":52,"src":{"id":4458,"line":967,"column":40,"start":34672,"end":34685,"length":14,"parent_index":4454},"name":"ImmutableState","referenced_declaration":1354}}],"contract_dependencies":[1354,4451,4452,4453]}],"src":{"id":4405,"line":967,"column":0,"start":34632,"end":36725,"length":2094,"parent_index":263}},{"id":4839,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":4839,"name":"ITridentRouter","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ITridentRouter.sol"},{"id":4404,"name":"IPool","absolute_path":"IPool.sol"},{"id":4404,"name":"IBentoBoxMinimal","absolute_path":"IBentoBoxMinimal.sol"},{"id":4404,"name":"IERC20","absolute_path":"IERC20.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ITridentRouter.sol","name":"ITridentRouter","node_type":1,"nodes":[{"id":4873,"node_type":10,"src":{"id":4874,"line":1032,"column":0,"start":36774,"end":36796,"length":23,"parent_index":4839},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":4891,"node_type":29,"src":{"id":0,"line":1034,"column":0,"start":36799,"end":36819,"length":21,"parent_index":4839},"absolute_path":"IPool.sol","file":"./IPool.sol","scope":4839,"unit_alias":"","source_unit":4404},{"id":4892,"node_type":29,"src":{"id":0,"line":1035,"column":0,"start":36821,"end":36852,"length":32,"parent_index":4839},"absolute_path":"IBentoBoxMinimal.sol","file":"./IBentoBoxMinimal.sol","scope":4839,"unit_alias":"","source_unit":4404},{"id":4893,"node_type":29,"src":{"id":0,"line":1036,"column":0,"start":36854,"end":36875,"length":22,"parent_index":4839},"absolute_path":"IERC20.sol","file":"./IERC20.sol","scope":4839,"unit_alias":"","source_unit":4404},{"id":4911,"name":"ITridentRouter","node_type":35,"src":{"id":0,"line":1039,"column":0,"start":36921,"end":38010,"length":1090,"parent_index":4839},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":4913,"node_type":67,"src":{"id":4914,"line":1040,"column":4,"start":36952,"end":37012,"length":61,"parent_index":4839},"name":"Path","canonical_name":"ITridentRouter.Path","type_description":{"type_identifier":"t_struct$_ITridentRouter_Path_$4913","type_string":"struct ITridentRouter.Path"},"members":[{"id":4915,"node_type":44,"src":{"id":4916,"line":1041,"column":8,"start":36974,"end":36986,"length":13,"parent_index":4913},"scope":4911,"name":"pool","type_name":{"id":4917,"node_type":30,"src":{"id":4918,"line":1041,"column":8,"start":36974,"end":36980,"length":7,"parent_index":4915},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":4919,"node_type":44,"src":{"id":4920,"line":1042,"column":8,"start":36996,"end":37006,"length":11,"parent_index":4913},"scope":4911,"name":"data","type_name":{"id":4921,"node_type":30,"src":{"id":4922,"line":1042,"column":8,"start":36996,"end":37000,"length":5,"parent_index":4919},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":4924,"node_type":67,"src":{"id":4925,"line":1045,"column":4,"start":37019,"end":37182,"length":164,"parent_index":4839},"name":"ExactInputSingleParams","canonical_name":"ITridentRouter.ExactInputSingleParams","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputSingleParams_$4924","type_string":"struct ITridentRouter.ExactInputSingleParams"},"members":[{"id":4926,"node_type":44,"src":{"id":4927,"line":1046,"column":8,"start":37059,"end":37075,"length":17,"parent_index":4924},"scope":4911,"name":"amountIn","type_name":{"id":4928,"node_type":30,"src":{"id":4929,"line":1046,"column":8,"start":37059,"end":37065,"length":7,"parent_index":4926},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":4930,"node_type":44,"src":{"id":4931,"line":1047,"column":8,"start":37085,"end":37109,"length":25,"parent_index":4924},"scope":4911,"name":"amountOutMinimum","type_name":{"id":4932,"node_type":30,"src":{"id":4933,"line":1047,"column":8,"start":37085,"end":37091,"length":7,"parent_index":4930},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":4934,"node_type":44,"src":{"id":4935,"line":1048,"column":8,"start":37119,"end":37131,"length":13,"parent_index":4924},"scope":4911,"name":"pool","type_name":{"id":4936,"node_type":30,"src":{"id":4937,"line":1048,"column":8,"start":37119,"end":37125,"length":7,"parent_index":4934},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":4938,"node_type":44,"src":{"id":4939,"line":1049,"column":8,"start":37141,"end":37156,"length":16,"parent_index":4924},"scope":4911,"name":"tokenIn","type_name":{"id":4940,"node_type":30,"src":{"id":4941,"line":1049,"column":8,"start":37141,"end":37147,"length":7,"parent_index":4938},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":4942,"node_type":44,"src":{"id":4943,"line":1050,"column":8,"start":37166,"end":37176,"length":11,"parent_index":4924},"scope":4911,"name":"data","type_name":{"id":4944,"node_type":30,"src":{"id":4945,"line":1050,"column":8,"start":37166,"end":37170,"length":5,"parent_index":4942},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":4947,"node_type":67,"src":{"id":4948,"line":1053,"column":4,"start":37189,"end":37325,"length":137,"parent_index":4839},"name":"ExactInputParams","canonical_name":"ITridentRouter.ExactInputParams","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"members":[{"id":4949,"node_type":44,"src":{"id":4950,"line":1054,"column":8,"start":37223,"end":37238,"length":16,"parent_index":4947},"scope":4911,"name":"tokenIn","type_name":{"id":4951,"node_type":30,"src":{"id":4952,"line":1054,"column":8,"start":37223,"end":37229,"length":7,"parent_index":4949},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":4953,"node_type":44,"src":{"id":4954,"line":1055,"column":8,"start":37248,"end":37264,"length":17,"parent_index":4947},"scope":4911,"name":"amountIn","type_name":{"id":4955,"node_type":30,"src":{"id":4956,"line":1055,"column":8,"start":37248,"end":37254,"length":7,"parent_index":4953},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":4957,"node_type":44,"src":{"id":4958,"line":1056,"column":8,"start":37274,"end":37298,"length":25,"parent_index":4947},"scope":4911,"name":"amountOutMinimum","type_name":{"id":4959,"node_type":30,"src":{"id":4960,"line":1056,"column":8,"start":37274,"end":37280,"length":7,"parent_index":4957},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":4961,"node_type":44,"src":{"id":4962,"line":1057,"column":8,"start":37308,"end":37319,"length":12,"parent_index":4947},"scope":4911,"name":"path","type_name":{"id":4963,"node_type":69,"src":{"id":4965,"line":1057,"column":8,"start":37308,"end":37311,"length":4,"parent_index":4961},"name":"Path","type_description":{"type_identifier":"t_struct$_ITridentRouter_Path_$4913","type_string":"struct ITridentRouter.Path"},"path_node":{"id":4966,"name":"Path","node_type":52,"referenced_declaration":4913,"src":{"id":4967,"line":1057,"column":8,"start":37308,"end":37311,"length":4,"parent_index":4963}},"referenced_declaration":4913},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":4969,"node_type":67,"src":{"id":4970,"line":1060,"column":4,"start":37332,"end":37424,"length":93,"parent_index":4839},"name":"TokenInput","canonical_name":"ITridentRouter.TokenInput","type_description":{"type_identifier":"t_struct$_ITridentRouter_TokenInput_$4969","type_string":"struct ITridentRouter.TokenInput"},"members":[{"id":4971,"node_type":44,"src":{"id":4972,"line":1061,"column":8,"start":37360,"end":37373,"length":14,"parent_index":4969},"scope":4911,"name":"token","type_name":{"id":4973,"node_type":30,"src":{"id":4974,"line":1061,"column":8,"start":37360,"end":37366,"length":7,"parent_index":4971},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":4975,"node_type":44,"src":{"id":4976,"line":1062,"column":8,"start":37383,"end":37394,"length":12,"parent_index":4969},"scope":4911,"name":"native","type_name":{"id":4977,"node_type":30,"src":{"id":4978,"line":1062,"column":8,"start":37383,"end":37386,"length":4,"parent_index":4975},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":4979,"node_type":44,"src":{"id":4980,"line":1063,"column":8,"start":37404,"end":37418,"length":15,"parent_index":4969},"scope":4911,"name":"amount","type_name":{"id":4981,"node_type":30,"src":{"id":4982,"line":1063,"column":8,"start":37404,"end":37410,"length":7,"parent_index":4979},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":4984,"node_type":67,"src":{"id":4985,"line":1066,"column":4,"start":37431,"end":37568,"length":138,"parent_index":4839},"name":"InitialPath","canonical_name":"ITridentRouter.InitialPath","type_description":{"type_identifier":"t_struct$_ITridentRouter_InitialPath_$4984","type_string":"struct ITridentRouter.InitialPath"},"members":[{"id":4986,"node_type":44,"src":{"id":4987,"line":1067,"column":8,"start":37460,"end":37475,"length":16,"parent_index":4984},"scope":4911,"name":"tokenIn","type_name":{"id":4988,"node_type":30,"src":{"id":4989,"line":1067,"column":8,"start":37460,"end":37466,"length":7,"parent_index":4986},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":4990,"node_type":44,"src":{"id":4991,"line":1068,"column":8,"start":37485,"end":37497,"length":13,"parent_index":4984},"scope":4911,"name":"pool","type_name":{"id":4992,"node_type":30,"src":{"id":4993,"line":1068,"column":8,"start":37485,"end":37491,"length":7,"parent_index":4990},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":4994,"node_type":44,"src":{"id":4995,"line":1069,"column":8,"start":37507,"end":37518,"length":12,"parent_index":4984},"scope":4911,"name":"native","type_name":{"id":4996,"node_type":30,"src":{"id":4997,"line":1069,"column":8,"start":37507,"end":37510,"length":4,"parent_index":4994},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":4998,"node_type":44,"src":{"id":4999,"line":1070,"column":8,"start":37528,"end":37542,"length":15,"parent_index":4984},"scope":4911,"name":"amount","type_name":{"id":5000,"node_type":30,"src":{"id":5001,"line":1070,"column":8,"start":37528,"end":37534,"length":7,"parent_index":4998},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":5002,"node_type":44,"src":{"id":5003,"line":1071,"column":8,"start":37552,"end":37562,"length":11,"parent_index":4984},"scope":4911,"name":"data","type_name":{"id":5004,"node_type":30,"src":{"id":5005,"line":1071,"column":8,"start":37552,"end":37556,"length":5,"parent_index":5002},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":5007,"node_type":67,"src":{"id":5008,"line":1074,"column":4,"start":37575,"end":37746,"length":172,"parent_index":4839},"name":"PercentagePath","canonical_name":"ITridentRouter.PercentagePath","type_description":{"type_identifier":"t_struct$_ITridentRouter_PercentagePath_$5007","type_string":"struct ITridentRouter.PercentagePath"},"members":[{"id":5009,"node_type":44,"src":{"id":5010,"line":1075,"column":8,"start":37607,"end":37622,"length":16,"parent_index":5007},"scope":4911,"name":"tokenIn","type_name":{"id":5011,"node_type":30,"src":{"id":5012,"line":1075,"column":8,"start":37607,"end":37613,"length":7,"parent_index":5009},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":5013,"node_type":44,"src":{"id":5014,"line":1076,"column":8,"start":37632,"end":37644,"length":13,"parent_index":5007},"scope":4911,"name":"pool","type_name":{"id":5015,"node_type":30,"src":{"id":5016,"line":1076,"column":8,"start":37632,"end":37638,"length":7,"parent_index":5013},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":5017,"node_type":44,"src":{"id":5018,"line":1077,"column":8,"start":37654,"end":37678,"length":25,"parent_index":5007},"scope":4911,"name":"balancePercentage","type_name":{"id":5019,"node_type":30,"src":{"id":5020,"line":1077,"column":8,"start":37654,"end":37659,"length":6,"parent_index":5017},"name":"uint64","type_description":{"type_identifier":"t_uint64","type_string":"uint64"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":5021,"node_type":44,"src":{"id":5022,"line":1078,"column":8,"start":37730,"end":37740,"length":11,"parent_index":5007},"scope":4911,"name":"data","type_name":{"id":5023,"node_type":30,"src":{"id":5024,"line":1078,"column":8,"start":37730,"end":37734,"length":5,"parent_index":5021},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":5026,"node_type":67,"src":{"id":5027,"line":1081,"column":4,"start":37753,"end":37869,"length":117,"parent_index":4839},"name":"Output","canonical_name":"ITridentRouter.Output","type_description":{"type_identifier":"t_struct$_ITridentRouter_Output_$5026","type_string":"struct ITridentRouter.Output"},"members":[{"id":5028,"node_type":44,"src":{"id":5029,"line":1082,"column":8,"start":37777,"end":37790,"length":14,"parent_index":5026},"scope":4911,"name":"token","type_name":{"id":5030,"node_type":30,"src":{"id":5031,"line":1082,"column":8,"start":37777,"end":37783,"length":7,"parent_index":5028},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":5032,"node_type":44,"src":{"id":5033,"line":1083,"column":8,"start":37800,"end":37810,"length":11,"parent_index":5026},"scope":4911,"name":"to","type_name":{"id":5034,"node_type":30,"src":{"id":5035,"line":1083,"column":8,"start":37800,"end":37806,"length":7,"parent_index":5032},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":5036,"node_type":44,"src":{"id":5037,"line":1084,"column":8,"start":37820,"end":37836,"length":17,"parent_index":5026},"scope":4911,"name":"unwrapBento","type_name":{"id":5038,"node_type":30,"src":{"id":5039,"line":1084,"column":8,"start":37820,"end":37823,"length":4,"parent_index":5036},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":5040,"node_type":44,"src":{"id":5041,"line":1085,"column":8,"start":37846,"end":37863,"length":18,"parent_index":5026},"scope":4911,"name":"minAmount","type_name":{"id":5042,"node_type":30,"src":{"id":5043,"line":1085,"column":8,"start":37846,"end":37852,"length":7,"parent_index":5040},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":5045,"node_type":67,"src":{"id":5046,"line":1088,"column":4,"start":37876,"end":38008,"length":133,"parent_index":4839},"name":"ComplexPathParams","canonical_name":"ITridentRouter.ComplexPathParams","type_description":{"type_identifier":"t_struct$_ITridentRouter_ComplexPathParams_$5045","type_string":"struct ITridentRouter.ComplexPathParams"},"members":[{"id":5047,"node_type":44,"src":{"id":5048,"line":1089,"column":8,"start":37911,"end":37936,"length":26,"parent_index":5045},"scope":4911,"name":"initialPath","type_name":{"id":5049,"node_type":69,"src":{"id":5051,"line":1089,"column":8,"start":37911,"end":37921,"length":11,"parent_index":5047},"name":"InitialPath","type_description":{"type_identifier":"t_struct$_ITridentRouter_InitialPath_$4984","type_string":"struct ITridentRouter.InitialPath"},"path_node":{"id":5052,"name":"InitialPath","node_type":52,"referenced_declaration":4984,"src":{"id":5053,"line":1089,"column":8,"start":37911,"end":37921,"length":11,"parent_index":5049}},"referenced_declaration":4984},"visibility":1,"state_mutability":1},{"id":5054,"node_type":44,"src":{"id":5055,"line":1090,"column":8,"start":37946,"end":37977,"length":32,"parent_index":5045},"scope":4911,"name":"percentagePath","type_name":{"id":5056,"node_type":69,"src":{"id":5058,"line":1090,"column":8,"start":37946,"end":37959,"length":14,"parent_index":5054},"name":"PercentagePath","type_description":{"type_identifier":"t_struct$_ITridentRouter_PercentagePath_$5007","type_string":"struct ITridentRouter.PercentagePath"},"path_node":{"id":5059,"name":"PercentagePath","node_type":52,"referenced_declaration":5007,"src":{"id":5060,"line":1090,"column":8,"start":37946,"end":37959,"length":14,"parent_index":5056}},"referenced_declaration":5007},"visibility":1,"state_mutability":1},{"id":5061,"node_type":44,"src":{"id":5062,"line":1091,"column":8,"start":37987,"end":38002,"length":16,"parent_index":5045},"scope":4911,"name":"output","type_name":{"id":5063,"node_type":69,"src":{"id":5065,"line":1091,"column":8,"start":37987,"end":37992,"length":6,"parent_index":5061},"name":"Output","type_description":{"type_identifier":"t_struct$_ITridentRouter_Output_$5026","type_string":"struct ITridentRouter.Output"},"path_node":{"id":5066,"name":"Output","node_type":52,"referenced_declaration":5026,"src":{"id":5067,"line":1091,"column":8,"start":37987,"end":37992,"length":6,"parent_index":5063}},"referenced_declaration":5026},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1}],"linearized_base_contracts":[4911,4891,4892,4893],"base_contracts":[],"contract_dependencies":[4891,4892,4893]}],"src":{"id":4840,"line":1039,"column":0,"start":36921,"end":38010,"length":1090,"parent_index":263}},{"id":5068,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":5068,"name":"ITridentSwapAdapter","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ITridentSwapAdapter.sol"},{"id":4839,"name":"ITridentRouter","absolute_path":"ITridentRouter.sol"},{"id":4839,"name":"BentoAdapter","absolute_path":"BentoAdapter.sol"},{"id":4839,"name":"TokenAdapter","absolute_path":"TokenAdapter.sol"},{"id":4839,"name":"ImmutableState","absolute_path":"ImmutableState.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ITridentSwapAdapter.sol","name":"ITridentSwapAdapter","node_type":1,"nodes":[{"id":5104,"node_type":10,"src":{"id":5105,"line":1097,"column":0,"start":38059,"end":38081,"length":23,"parent_index":5068},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":5125,"node_type":29,"src":{"id":0,"line":1099,"column":0,"start":38084,"end":38113,"length":30,"parent_index":5068},"absolute_path":"ITridentRouter.sol","file":"./ITridentRouter.sol","scope":5068,"unit_alias":"","source_unit":4839},{"id":5126,"node_type":29,"src":{"id":0,"line":1100,"column":0,"start":38115,"end":38142,"length":28,"parent_index":5068},"absolute_path":"BentoAdapter.sol","file":"./BentoAdapter.sol","scope":5068,"unit_alias":"","source_unit":4839},{"id":5127,"node_type":29,"src":{"id":0,"line":1101,"column":0,"start":38144,"end":38171,"length":28,"parent_index":5068},"absolute_path":"TokenAdapter.sol","file":"./TokenAdapter.sol","scope":5068,"unit_alias":"","source_unit":4839},{"id":5128,"node_type":29,"src":{"id":0,"line":1102,"column":0,"start":38173,"end":38202,"length":30,"parent_index":5068},"absolute_path":"ImmutableState.sol","file":"./ImmutableState.sol","scope":5068,"unit_alias":"","source_unit":4839},{"id":5142,"name":"ITridentSwapAdapter","node_type":35,"src":{"id":0,"line":1104,"column":0,"start":38205,"end":38236,"length":32,"parent_index":5068},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[],"linearized_base_contracts":[5142,5125,5126,5127,5128],"base_contracts":[],"contract_dependencies":[5125,5126,5127,5128]}],"src":{"id":5069,"line":1104,"column":0,"start":38205,"end":38236,"length":32,"parent_index":263}},{"id":5143,"base_contracts":[{"id":5208,"node_type":62,"src":{"id":5209,"line":1116,"column":4,"start":38470,"end":38483,"length":14,"parent_index":5207},"base_name":{"id":5210,"node_type":52,"src":{"id":5211,"line":1116,"column":4,"start":38470,"end":38483,"length":14,"parent_index":5207},"name":"ITridentRouter","referenced_declaration":4839}},{"id":5212,"node_type":62,"src":{"id":5213,"line":1117,"column":4,"start":38490,"end":38503,"length":14,"parent_index":5207},"base_name":{"id":5214,"node_type":52,"src":{"id":5215,"line":1117,"column":4,"start":38490,"end":38503,"length":14,"parent_index":5207},"name":"ImmutableState","referenced_declaration":1354}},{"id":5216,"node_type":62,"src":{"id":5217,"line":1118,"column":4,"start":38510,"end":38521,"length":12,"parent_index":5207},"base_name":{"id":5218,"node_type":52,"src":{"id":5219,"line":1118,"column":4,"start":38510,"end":38521,"length":12,"parent_index":5207},"name":"BentoAdapter","referenced_declaration":1482}},{"id":5220,"node_type":62,"src":{"id":5221,"line":1119,"column":4,"start":38528,"end":38539,"length":12,"parent_index":5207},"base_name":{"id":5222,"node_type":52,"src":{"id":5223,"line":1119,"column":4,"start":38528,"end":38539,"length":12,"parent_index":5207},"name":"TokenAdapter","referenced_declaration":2401}}],"license":"MIT","exported_symbols":[{"id":5143,"name":"TridentSwapAdapter","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/TridentSwapAdapter.sol"},{"id":5068,"name":"ITridentRouter","absolute_path":"ITridentRouter.sol"},{"id":5068,"name":"BentoAdapter","absolute_path":"BentoAdapter.sol"},{"id":5068,"name":"TokenAdapter","absolute_path":"TokenAdapter.sol"},{"id":5068,"name":"ImmutableState","absolute_path":"ImmutableState.sol"},{"id":5068,"name":"ITridentSwapAdapter","absolute_path":"ITridentSwapAdapter.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/TridentSwapAdapter.sol","name":"TridentSwapAdapter","node_type":1,"nodes":[{"id":5181,"node_type":10,"src":{"id":5182,"line":1108,"column":0,"start":38285,"end":38307,"length":23,"parent_index":5143},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":5202,"node_type":29,"src":{"id":0,"line":1099,"column":0,"start":38084,"end":38113,"length":30,"parent_index":5143},"absolute_path":"ITridentRouter.sol","file":"./ITridentRouter.sol","scope":5143,"unit_alias":"","source_unit":5068},{"id":5203,"node_type":29,"src":{"id":0,"line":1100,"column":0,"start":38115,"end":38142,"length":28,"parent_index":5143},"absolute_path":"BentoAdapter.sol","file":"./BentoAdapter.sol","scope":5143,"unit_alias":"","source_unit":5068},{"id":5204,"node_type":29,"src":{"id":0,"line":1101,"column":0,"start":38144,"end":38171,"length":28,"parent_index":5143},"absolute_path":"TokenAdapter.sol","file":"./TokenAdapter.sol","scope":5143,"unit_alias":"","source_unit":5068},{"id":5205,"node_type":29,"src":{"id":0,"line":1102,"column":0,"start":38173,"end":38202,"length":30,"parent_index":5143},"absolute_path":"ImmutableState.sol","file":"./ImmutableState.sol","scope":5143,"unit_alias":"","source_unit":5068},{"id":5206,"node_type":29,"src":{"id":0,"line":1110,"column":0,"start":38310,"end":38344,"length":35,"parent_index":5143},"absolute_path":"ITridentSwapAdapter.sol","file":"./ITridentSwapAdapter.sol","scope":5143,"unit_alias":"","source_unit":5068},{"id":5207,"name":"TridentSwapAdapter","node_type":35,"src":{"id":0,"line":1115,"column":0,"start":38426,"end":43410,"length":4985,"parent_index":5143},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":5225,"node_type":77,"src":{"id":5226,"line":1122,"column":4,"start":38567,"end":38592,"length":26,"parent_index":5207},"name":"TooLittleReceived","parameters":{"id":5227,"node_type":43,"src":{"id":5226,"line":1122,"column":4,"start":38567,"end":38592,"length":26,"parent_index":5225},"parameters":[],"parameter_types":[]},"type_description":{"type_identifier":"t_error$_TridentSwapAdapter_TooLittleReceived_$5225","type_string":"error TridentSwapAdapter.TooLittleReceived"}},{"id":5229,"name":"_exactInput","node_type":42,"kind":41,"src":{"id":5230,"line":1128,"column":4,"start":38979,"end":40360,"length":1382,"parent_index":5207},"body":{"id":5245,"node_type":46,"kind":0,"src":{"id":5246,"line":1131,"column":4,"start":39089,"end":40360,"length":1272,"parent_index":5229},"implemented":true,"statements":[{"id":5247,"node_type":48,"src":{"id":5248,"line":1132,"column":0,"start":39099,"end":39658,"length":560,"parent_index":5245},"condition":{"id":5249,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":5250,"line":1132,"column":12,"start":39103,"end":39122,"length":20,"parent_index":5247},"operator":11,"left_expression":{"id":5251,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5252,"line":1132,"column":12,"start":39103,"end":39117,"length":15,"parent_index":5249},"expression":{"id":5253,"node_type":16,"src":{"id":5254,"line":1132,"column":12,"start":39103,"end":39108,"length":6,"parent_index":5251},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5253,"is_pure":false},"member_name":"amountIn","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"right_expression":{"id":5255,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":5256,"line":1132,"column":31,"start":39122,"end":39122,"length":1,"parent_index":5249},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":5257,"node_type":46,"kind":0,"src":{"id":5258,"line":1132,"column":34,"start":39125,"end":39658,"length":534,"parent_index":5229},"implemented":true,"statements":[{"id":5259,"node_type":44,"src":{"id":5260,"line":1133,"column":10,"start":39137,"end":39237,"length":101,"parent_index":5257},"assignments":[5261],"declarations":[{"is_constant":false,"id":5261,"state_mutability":1,"name":"tokenBalance","node_type":44,"scope":5257,"src":{"id":5262,"line":1133,"column":10,"start":39137,"end":39156,"length":20,"parent_index":5259},"is_state_variable":false,"storage_location":1,"type_name":{"id":5263,"node_type":30,"src":{"id":5264,"line":1133,"column":10,"start":39137,"end":39143,"length":7,"parent_index":5261},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":5265,"node_type":24,"kind":24,"src":{"id":5266,"line":1133,"column":33,"start":39160,"end":39236,"length":77,"parent_index":5259},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}],"arguments":[{"id":5277,"node_type":24,"kind":24,"src":{"id":5278,"line":1134,"column":16,"start":39210,"end":39222,"length":13,"parent_index":5265},"argument_types":[{"type_identifier":"t_contract$_TridentSwapAdapter_$5143","type_string":"contract TridentSwapAdapter"}],"arguments":[{"id":5283,"node_type":16,"src":{"id":5284,"line":1134,"column":24,"start":39218,"end":39221,"length":4,"parent_index":5277},"name":"this","type_description":{"type_identifier":"t_contract$_TridentSwapAdapter_$5143","type_string":"contract TridentSwapAdapter"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":5279,"node_type":16,"src":{"id":5280,"line":1134,"column":16,"start":39210,"end":39216,"length":7,"parent_index":5277},"name":"address","type_name":{"id":5281,"node_type":30,"src":{"id":5282,"line":1134,"column":16,"start":39210,"end":39216,"length":7,"parent_index":5279},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}],"expression":{"id":5267,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5268,"line":1133,"column":33,"start":39160,"end":39191,"length":32,"parent_index":5265},"expression":{"id":5269,"node_type":24,"kind":24,"src":{"id":5270,"line":1133,"column":33,"start":39160,"end":39181,"length":22,"parent_index":5267},"argument_types":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}],"arguments":[{"id":5273,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5274,"line":1133,"column":40,"start":39167,"end":39180,"length":14,"parent_index":5269},"expression":{"id":5275,"node_type":16,"src":{"id":5276,"line":1133,"column":40,"start":39167,"end":39172,"length":6,"parent_index":5273},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5275,"is_pure":false},"member_name":"tokenIn","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}}],"expression":{"id":5271,"node_type":16,"src":{"id":5272,"line":1133,"column":33,"start":39160,"end":39165,"length":6,"parent_index":5269},"name":"IERC20","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$","type_string":"function(struct ITridentRouter.ExactInputParams)"}},"member_name":"balanceOf","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$","type_string":"function(struct ITridentRouter.ExactInputParams)"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$","type_string":"function(function(address))"}}},{"id":5285,"node_type":24,"kind":24,"src":{"id":5286,"line":1136,"column":12,"start":39251,"end":39384,"length":134,"parent_index":5257},"argument_types":[{"type_identifier":"t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$","type_string":"function(struct ITridentRouter.ExactInputParams)"},{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":5289,"node_type":24,"kind":24,"src":{"id":5290,"line":1137,"column":16,"start":39284,"end":39305,"length":22,"parent_index":5285},"argument_types":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}],"arguments":[{"id":5293,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5294,"line":1137,"column":23,"start":39291,"end":39304,"length":14,"parent_index":5289},"expression":{"id":5295,"node_type":16,"src":{"id":5296,"line":1137,"column":23,"start":39291,"end":39296,"length":6,"parent_index":5293},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5295,"is_pure":false},"member_name":"tokenIn","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}}],"expression":{"id":5291,"node_type":16,"src":{"id":5292,"line":1137,"column":16,"start":39284,"end":39289,"length":6,"parent_index":5289},"name":"IERC20","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$","type_string":"function(struct ITridentRouter.ExactInputParams)"}},{"id":5297,"node_type":24,"kind":24,"src":{"id":5298,"line":1138,"column":16,"start":39324,"end":39340,"length":17,"parent_index":5285},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":5303,"node_type":16,"src":{"id":5304,"line":1138,"column":24,"start":39332,"end":39339,"length":8,"parent_index":5297},"name":"bentoBox","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":5299,"node_type":16,"src":{"id":5300,"line":1138,"column":16,"start":39324,"end":39330,"length":7,"parent_index":5297},"name":"address","type_name":{"id":5301,"node_type":30,"src":{"id":5302,"line":1138,"column":16,"start":39324,"end":39330,"length":7,"parent_index":5299},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},{"id":5305,"node_type":16,"src":{"id":5306,"line":1139,"column":16,"start":39359,"end":39370,"length":12,"parent_index":5285},"name":"tokenBalance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":5259,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$","type_string":"function(struct ITridentRouter.ExactInputParams)"},{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}]}],"expression":{"id":5287,"node_type":16,"src":{"id":5288,"line":1136,"column":12,"start":39251,"end":39265,"length":15,"parent_index":5285},"name":"_transferTokens","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$_t_function_$_t_function_$_t_uint256$","type_string":"function(function(struct ITridentRouter.ExactInputParams),function(function()),uint256)"}},{"id":5307,"node_type":81,"src":{"id":5308,"line":1142,"column":12,"start":39443,"end":39648,"length":206,"parent_index":5257},"expression":{"id":5309,"node_type":27,"src":{"id":5310,"line":1142,"column":12,"start":39443,"end":39647,"length":205,"parent_index":5257},"operator":11,"left_expression":{"id":5311,"node_type":60,"src":{"id":5312,"line":1142,"column":12,"start":39443,"end":39461,"length":19,"parent_index":5309},"is_constant":false,"is_pure":false,"components":[{"id":5313,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5314,"line":1142,"column":15,"start":39446,"end":39460,"length":15,"parent_index":5311},"expression":{"id":5315,"node_type":16,"src":{"id":5316,"line":1142,"column":15,"start":39446,"end":39451,"length":6,"parent_index":5313},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5315,"is_pure":false},"member_name":"amountIn","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}}],"type_description":{"type_identifier":"t_tuple_$_t_struct$_ITridentRouter_ExactInputParams_$4947$","type_string":"tuple(struct ITridentRouter.ExactInputParams)"}},"right_expression":{"id":5317,"node_type":24,"kind":24,"src":{"id":5318,"line":1142,"column":34,"start":39465,"end":39647,"length":183,"parent_index":5309},"argument_types":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"},{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$","type_string":"index[struct ITridentRouter.ExactInputParams:int_const 0]"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"arguments":[{"id":5323,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5324,"line":1143,"column":16,"start":39499,"end":39512,"length":14,"parent_index":5317},"expression":{"id":5325,"node_type":16,"src":{"id":5326,"line":1143,"column":16,"start":39499,"end":39504,"length":6,"parent_index":5323},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5325,"is_pure":false},"member_name":"tokenIn","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},{"id":5327,"node_type":24,"kind":24,"src":{"id":5328,"line":1144,"column":16,"start":39531,"end":39547,"length":17,"parent_index":5317},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":5333,"node_type":16,"src":{"id":5334,"line":1144,"column":24,"start":39539,"end":39546,"length":8,"parent_index":5327},"name":"bentoBox","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":5329,"node_type":16,"src":{"id":5330,"line":1144,"column":16,"start":39531,"end":39537,"length":7,"parent_index":5327},"name":"address","type_name":{"id":5331,"node_type":30,"src":{"id":5332,"line":1144,"column":16,"start":39531,"end":39537,"length":7,"parent_index":5329},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},{"id":5335,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5336,"line":1145,"column":16,"start":39566,"end":39584,"length":19,"parent_index":5317},"expression":{"id":5337,"node_type":22,"src":{"id":5338,"line":1145,"column":16,"start":39566,"end":39579,"length":14,"parent_index":5335},"index_expression":{"id":5339,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5340,"line":1145,"column":16,"start":39566,"end":39576,"length":11,"parent_index":5337},"expression":{"id":5341,"node_type":16,"src":{"id":5342,"line":1145,"column":16,"start":39566,"end":39571,"length":6,"parent_index":5339},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5341,"is_pure":false},"member_name":"path","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5343,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":5344,"line":1145,"column":28,"start":39578,"end":39578,"length":1,"parent_index":5337},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$","type_string":"index[struct ITridentRouter.ExactInputParams:int_const 0]"}},"member_name":"pool","argument_types":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$","type_string":"index[struct ITridentRouter.ExactInputParams:int_const 0]"}},{"id":5345,"node_type":16,"src":{"id":5346,"line":1146,"column":16,"start":39603,"end":39614,"length":12,"parent_index":5317},"name":"tokenBalance","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":5259,"is_pure":false,"argument_types":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"},{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$","type_string":"index[struct ITridentRouter.ExactInputParams:int_const 0]"}]},{"id":5347,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":5348,"line":1147,"column":16,"start":39633,"end":39633,"length":1,"parent_index":5317},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"},{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$","type_string":"index[struct ITridentRouter.ExactInputParams:int_const 0]"},{"type_identifier":"t_uint256","type_string":"uint256"}]}],"expression":{"id":5319,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5320,"line":1142,"column":34,"start":39465,"end":39480,"length":16,"parent_index":5317},"expression":{"id":5321,"node_type":16,"src":{"id":5322,"line":1142,"column":34,"start":39465,"end":39472,"length":8,"parent_index":5319},"name":"bentoBox","type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"overloaded_declarations":[],"referenced_declaration":1378,"is_pure":false},"member_name":"deposit","argument_types":[],"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"}},"type_description":{"type_identifier":"t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$_t_function_$_t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$_t_uint256$_t_rational_0_by_1$","type_string":"function(struct ITridentRouter.ExactInputParams,function(function()),index[struct ITridentRouter.ExactInputParams:int_const 0],uint256,int_const 0)"}},"type_description":{"type_identifier":"t_tuple_$_t_struct$_ITridentRouter_ExactInputParams_$4947$","type_string":"tuple(struct ITridentRouter.ExactInputParams)"}},"type_description":{"type_identifier":"t_tuple_$_t_struct$_ITridentRouter_ExactInputParams_$4947$","type_string":"tuple(struct ITridentRouter.ExactInputParams)"}}]}},{"id":5349,"node_type":44,"src":{"id":5350,"line":1156,"column":8,"start":40012,"end":40042,"length":31,"parent_index":5245},"assignments":[5351],"declarations":[{"is_constant":false,"id":5351,"state_mutability":1,"name":"n","node_type":44,"scope":5245,"src":{"id":5352,"line":1156,"column":8,"start":40012,"end":40020,"length":9,"parent_index":5349},"is_state_variable":false,"storage_location":1,"type_name":{"id":5353,"node_type":30,"src":{"id":5354,"line":1156,"column":8,"start":40012,"end":40018,"length":7,"parent_index":5351},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":5355,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5356,"line":1156,"column":20,"start":40024,"end":40041,"length":18,"parent_index":5349},"expression":{"id":5357,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5358,"line":1156,"column":20,"start":40024,"end":40034,"length":11,"parent_index":5349},"expression":{"id":5359,"node_type":16,"src":{"id":5360,"line":1156,"column":20,"start":40024,"end":40029,"length":6,"parent_index":5357},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5359,"is_pure":false},"member_name":"path","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}}},{"id":5361,"node_type":79,"src":{"id":5362,"line":1157,"column":0,"start":40052,"end":40186,"length":135,"parent_index":5245},"initialiser":{"id":5363,"node_type":44,"src":{"id":5364,"line":1157,"column":13,"start":40057,"end":40070,"length":14,"parent_index":5245},"assignments":[5365],"declarations":[{"is_constant":false,"id":5365,"state_mutability":1,"name":"i","node_type":44,"scope":5245,"src":{"id":5366,"line":1157,"column":13,"start":40057,"end":40065,"length":9,"parent_index":5363},"is_state_variable":false,"storage_location":1,"type_name":{"id":5367,"node_type":30,"src":{"id":5368,"line":1157,"column":13,"start":40057,"end":40063,"length":7,"parent_index":5365},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":5369,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":5370,"line":1157,"column":25,"start":40069,"end":40069,"length":1,"parent_index":5363},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}},"condition":{"id":5371,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":5372,"line":1157,"column":28,"start":40072,"end":40076,"length":5,"parent_index":5361},"operator":9,"left_expression":{"id":5373,"node_type":16,"src":{"id":5374,"line":1157,"column":28,"start":40072,"end":40072,"length":1,"parent_index":5371},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":5375,"node_type":16,"src":{"id":5376,"line":1157,"column":32,"start":40076,"end":40076,"length":1,"parent_index":5371},"name":"n","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":5349,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"closure":{"id":5377,"node_type":27,"src":{"id":5378,"line":1157,"column":35,"start":40079,"end":40095,"length":17,"parent_index":5245},"operator":11,"left_expression":{"id":5379,"node_type":16,"src":{"id":5380,"line":1157,"column":35,"start":40079,"end":40079,"length":1,"parent_index":5377},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":5381,"node_type":24,"kind":24,"src":{"id":5382,"line":1157,"column":39,"start":40083,"end":40095,"length":13,"parent_index":5377},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":5385,"node_type":16,"src":{"id":5386,"line":1157,"column":50,"start":40094,"end":40094,"length":1,"parent_index":5381},"name":"i","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":5383,"node_type":16,"src":{"id":5384,"line":1157,"column":39,"start":40083,"end":40092,"length":10,"parent_index":5381},"name":"_increment","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"body":{"id":5387,"node_type":46,"kind":0,"src":{"id":5388,"line":1157,"column":54,"start":40098,"end":40186,"length":89,"parent_index":5361},"implemented":true,"statements":[{"id":5389,"node_type":81,"src":{"id":5390,"line":1158,"column":12,"start":40112,"end":40176,"length":65,"parent_index":5387},"expression":{"id":5391,"node_type":27,"src":{"id":5392,"line":1158,"column":12,"start":40112,"end":40175,"length":64,"parent_index":5387},"operator":11,"left_expression":{"id":5393,"node_type":16,"src":{"id":5394,"line":1158,"column":12,"start":40112,"end":40120,"length":9,"parent_index":5391},"name":"amountOut","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":913,"is_pure":false},"right_expression":{"id":5395,"node_type":24,"kind":24,"src":{"id":5396,"line":1158,"column":24,"start":40124,"end":40175,"length":52,"parent_index":5391},"argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}],"arguments":[{"id":5413,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5414,"line":1158,"column":56,"start":40156,"end":40174,"length":19,"parent_index":5395},"expression":{"id":5415,"node_type":22,"src":{"id":5416,"line":1158,"column":56,"start":40156,"end":40169,"length":14,"parent_index":5413},"index_expression":{"id":5417,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5418,"line":1158,"column":56,"start":40156,"end":40166,"length":11,"parent_index":5415},"expression":{"id":5419,"node_type":16,"src":{"id":5420,"line":1158,"column":56,"start":40156,"end":40161,"length":6,"parent_index":5417},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"path","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5421,"node_type":16,"src":{"id":5422,"line":1158,"column":68,"start":40168,"end":40168,"length":1,"parent_index":5415},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"data","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}}],"expression":{"id":5397,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5398,"line":1158,"column":24,"start":40124,"end":40154,"length":31,"parent_index":5395},"expression":{"id":5399,"node_type":24,"kind":24,"src":{"id":5400,"line":1158,"column":24,"start":40124,"end":40149,"length":26,"parent_index":5397},"argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}],"arguments":[{"id":5403,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5404,"line":1158,"column":30,"start":40130,"end":40148,"length":19,"parent_index":5399},"expression":{"id":5405,"node_type":22,"src":{"id":5406,"line":1158,"column":30,"start":40130,"end":40143,"length":14,"parent_index":5403},"index_expression":{"id":5407,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5408,"line":1158,"column":30,"start":40130,"end":40140,"length":11,"parent_index":5405},"expression":{"id":5409,"node_type":16,"src":{"id":5410,"line":1158,"column":30,"start":40130,"end":40135,"length":6,"parent_index":5407},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"path","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5411,"node_type":16,"src":{"id":5412,"line":1158,"column":42,"start":40142,"end":40142,"length":1,"parent_index":5405},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"pool","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}}],"expression":{"id":5401,"node_type":16,"src":{"id":5402,"line":1158,"column":24,"start":40124,"end":40128,"length":5,"parent_index":5399},"name":"IPool","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"function(index[struct ITridentRouter.ExactInputParams:uint256])"}},"member_name":"swap","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"function(index[struct ITridentRouter.ExactInputParams:uint256])"}},"type_description":{"type_identifier":"t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"function(index[struct ITridentRouter.ExactInputParams:uint256])"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}]}},{"id":5423,"node_type":48,"src":{"id":5424,"line":1161,"column":0,"start":40287,"end":40354,"length":68,"parent_index":5245},"condition":{"id":5425,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":5426,"line":1161,"column":12,"start":40291,"end":40325,"length":35,"parent_index":5423},"operator":9,"left_expression":{"id":5427,"node_type":16,"src":{"id":5428,"line":1161,"column":12,"start":40291,"end":40299,"length":9,"parent_index":5425},"name":"amountOut","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":913,"is_pure":false},"right_expression":{"id":5429,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5430,"line":1161,"column":24,"start":40303,"end":40325,"length":23,"parent_index":5425},"expression":{"id":5431,"node_type":16,"src":{"id":5432,"line":1161,"column":24,"start":40303,"end":40308,"length":6,"parent_index":5429},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5431,"is_pure":false},"member_name":"amountOutMinimum","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":5433,"node_type":46,"kind":0,"src":{"id":0,"line":0,"column":0,"start":0,"end":0,"length":0,"parent_index":0},"implemented":false,"statements":[]}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":5231,"node_type":43,"src":{"id":5232,"line":1128,"column":25,"start":39000,"end":39029,"length":30,"parent_index":5229},"parameters":[{"id":5233,"node_type":44,"src":{"id":5234,"line":1128,"column":25,"start":39000,"end":39029,"length":30,"parent_index":5231},"scope":5229,"name":"params","type_name":{"id":5235,"node_type":69,"src":{"id":5236,"line":1128,"column":25,"start":39000,"end":39015,"length":16,"parent_index":5233},"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"path_node":{"id":5237,"name":"ExactInputParams","node_type":52,"referenced_declaration":4947,"src":{"id":5238,"line":1128,"column":25,"start":39000,"end":39015,"length":16,"parent_index":5235}},"referenced_declaration":4947},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}]},"return_parameters":{"id":5239,"node_type":43,"src":{"id":5240,"line":1130,"column":17,"start":39066,"end":39082,"length":17,"parent_index":5229},"parameters":[{"id":5241,"node_type":44,"src":{"id":5242,"line":1130,"column":17,"start":39066,"end":39082,"length":17,"parent_index":5239},"scope":5229,"name":"amountOut","type_name":{"id":5243,"node_type":30,"src":{"id":5244,"line":1130,"column":17,"start":39066,"end":39072,"length":7,"parent_index":5241},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":5207,"type_description":{"type_identifier":"t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$","type_string":"function(struct ITridentRouter.ExactInputParams)"}},{"id":5435,"name":"_complexPath","node_type":42,"kind":41,"src":{"id":5436,"line":1170,"column":4,"start":40914,"end":43276,"length":2363,"parent_index":5207},"body":{"id":5446,"node_type":46,"kind":0,"src":{"id":5447,"line":1170,"column":68,"start":40978,"end":43276,"length":2299,"parent_index":5435},"implemented":true,"statements":[{"id":5448,"node_type":44,"src":{"id":5449,"line":1173,"column":8,"start":41147,"end":41184,"length":38,"parent_index":5446},"assignments":[5450],"declarations":[{"is_constant":false,"id":5450,"state_mutability":1,"name":"n","node_type":44,"scope":5446,"src":{"id":5451,"line":1173,"column":8,"start":41147,"end":41155,"length":9,"parent_index":5448},"is_state_variable":false,"storage_location":1,"type_name":{"id":5452,"node_type":30,"src":{"id":5453,"line":1173,"column":8,"start":41147,"end":41153,"length":7,"parent_index":5450},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":5454,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5455,"line":1173,"column":20,"start":41159,"end":41183,"length":25,"parent_index":5448},"expression":{"id":5456,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5457,"line":1173,"column":20,"start":41159,"end":41176,"length":18,"parent_index":5448},"expression":{"id":5458,"node_type":16,"src":{"id":5459,"line":1173,"column":20,"start":41159,"end":41164,"length":6,"parent_index":5456},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ComplexPathParams_$5045","type_string":"struct ITridentRouter.ComplexPathParams"},"overloaded_declarations":[],"referenced_declaration":5458,"is_pure":false},"member_name":"initialPath","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ComplexPathParams_$5045","type_string":"struct ITridentRouter.ComplexPathParams"}},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ComplexPathParams_$5045","type_string":"struct ITridentRouter.ComplexPathParams"}}},{"id":5460,"node_type":79,"src":{"id":5461,"line":1174,"column":0,"start":41194,"end":41543,"length":350,"parent_index":5446},"initialiser":{"id":5462,"node_type":44,"src":{"id":5463,"line":1174,"column":13,"start":41199,"end":41212,"length":14,"parent_index":5446},"assignments":[5464],"declarations":[{"is_constant":false,"id":5464,"state_mutability":1,"name":"i","node_type":44,"scope":5446,"src":{"id":5465,"line":1174,"column":13,"start":41199,"end":41207,"length":9,"parent_index":5462},"is_state_variable":false,"storage_location":1,"type_name":{"id":5466,"node_type":30,"src":{"id":5467,"line":1174,"column":13,"start":41199,"end":41205,"length":7,"parent_index":5464},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":5468,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":5469,"line":1174,"column":25,"start":41211,"end":41211,"length":1,"parent_index":5462},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}},"condition":{"id":5470,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":5471,"line":1174,"column":28,"start":41214,"end":41218,"length":5,"parent_index":5460},"operator":9,"left_expression":{"id":5472,"node_type":16,"src":{"id":5473,"line":1174,"column":28,"start":41214,"end":41214,"length":1,"parent_index":5470},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":5474,"node_type":16,"src":{"id":5475,"line":1174,"column":32,"start":41218,"end":41218,"length":1,"parent_index":5470},"name":"n","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":5448,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"closure":{"id":5476,"node_type":27,"src":{"id":5477,"line":1174,"column":35,"start":41221,"end":41237,"length":17,"parent_index":5446},"operator":11,"left_expression":{"id":5478,"node_type":16,"src":{"id":5479,"line":1174,"column":35,"start":41221,"end":41221,"length":1,"parent_index":5476},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":5480,"node_type":24,"kind":24,"src":{"id":5481,"line":1174,"column":39,"start":41225,"end":41237,"length":13,"parent_index":5476},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":5484,"node_type":16,"src":{"id":5485,"line":1174,"column":50,"start":41236,"end":41236,"length":1,"parent_index":5480},"name":"i","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":5482,"node_type":16,"src":{"id":5483,"line":1174,"column":39,"start":41225,"end":41234,"length":10,"parent_index":5480},"name":"_increment","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"body":{"id":5486,"node_type":46,"kind":0,"src":{"id":5487,"line":1174,"column":54,"start":41240,"end":41543,"length":304,"parent_index":5460},"implemented":true,"statements":[{"id":5488,"node_type":24,"kind":24,"src":{"id":5489,"line":1175,"column":12,"start":41254,"end":41452,"length":199,"parent_index":5486},"argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"},{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}],"arguments":[{"id":5494,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5495,"line":1176,"column":16,"start":41289,"end":41317,"length":29,"parent_index":5488},"expression":{"id":5496,"node_type":22,"src":{"id":5497,"line":1176,"column":16,"start":41289,"end":41309,"length":21,"parent_index":5494},"index_expression":{"id":5498,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5499,"line":1176,"column":16,"start":41289,"end":41306,"length":18,"parent_index":5496},"expression":{"id":5500,"node_type":16,"src":{"id":5501,"line":1176,"column":16,"start":41289,"end":41294,"length":6,"parent_index":5498},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"initialPath","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5502,"node_type":16,"src":{"id":5503,"line":1176,"column":35,"start":41308,"end":41308,"length":1,"parent_index":5496},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"tokenIn","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},{"id":5504,"node_type":24,"kind":24,"src":{"id":5505,"line":1177,"column":16,"start":41336,"end":41348,"length":13,"parent_index":5488},"argument_types":[{"type_identifier":"t_contract$_TridentSwapAdapter_$5143","type_string":"contract TridentSwapAdapter"}],"arguments":[{"id":5510,"node_type":16,"src":{"id":5511,"line":1177,"column":24,"start":41344,"end":41347,"length":4,"parent_index":5504},"name":"this","type_description":{"type_identifier":"t_contract$_TridentSwapAdapter_$5143","type_string":"contract TridentSwapAdapter"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":5506,"node_type":16,"src":{"id":5507,"line":1177,"column":16,"start":41336,"end":41342,"length":7,"parent_index":5504},"name":"address","type_name":{"id":5508,"node_type":30,"src":{"id":5509,"line":1177,"column":16,"start":41336,"end":41342,"length":7,"parent_index":5506},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":5512,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5513,"line":1178,"column":16,"start":41367,"end":41392,"length":26,"parent_index":5488},"expression":{"id":5514,"node_type":22,"src":{"id":5515,"line":1178,"column":16,"start":41367,"end":41387,"length":21,"parent_index":5512},"index_expression":{"id":5516,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5517,"line":1178,"column":16,"start":41367,"end":41384,"length":18,"parent_index":5514},"expression":{"id":5518,"node_type":16,"src":{"id":5519,"line":1178,"column":16,"start":41367,"end":41372,"length":6,"parent_index":5516},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"initialPath","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5520,"node_type":16,"src":{"id":5521,"line":1178,"column":35,"start":41386,"end":41386,"length":1,"parent_index":5514},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"pool","argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},{"id":5522,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5523,"line":1179,"column":16,"start":41411,"end":41438,"length":28,"parent_index":5488},"expression":{"id":5524,"node_type":22,"src":{"id":5525,"line":1179,"column":16,"start":41411,"end":41431,"length":21,"parent_index":5522},"index_expression":{"id":5526,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5527,"line":1179,"column":16,"start":41411,"end":41428,"length":18,"parent_index":5524},"expression":{"id":5528,"node_type":16,"src":{"id":5529,"line":1179,"column":16,"start":41411,"end":41416,"length":6,"parent_index":5526},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"initialPath","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5530,"node_type":16,"src":{"id":5531,"line":1179,"column":35,"start":41430,"end":41430,"length":1,"parent_index":5524},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"amount","argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}}],"expression":{"id":5490,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5491,"line":1175,"column":12,"start":41254,"end":41270,"length":17,"parent_index":5488},"expression":{"id":5492,"node_type":16,"src":{"id":5493,"line":1175,"column":12,"start":41254,"end":41261,"length":8,"parent_index":5490},"name":"bentoBox","type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"overloaded_declarations":[],"referenced_declaration":1378,"is_pure":false},"member_name":"transfer","argument_types":[],"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"}},"type_description":{"type_identifier":"t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],index[struct ITridentRouter.ExactInputParams:uint256])"}},{"id":5532,"node_type":24,"kind":24,"src":{"id":5533,"line":1181,"column":12,"start":41467,"end":41532,"length":66,"parent_index":5486},"argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}],"arguments":[{"id":5550,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5551,"line":1181,"column":51,"start":41506,"end":41531,"length":26,"parent_index":5532},"expression":{"id":5552,"node_type":22,"src":{"id":5553,"line":1181,"column":51,"start":41506,"end":41526,"length":21,"parent_index":5550},"index_expression":{"id":5554,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5555,"line":1181,"column":51,"start":41506,"end":41523,"length":18,"parent_index":5552},"expression":{"id":5556,"node_type":16,"src":{"id":5557,"line":1181,"column":51,"start":41506,"end":41511,"length":6,"parent_index":5554},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"initialPath","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5558,"node_type":16,"src":{"id":5559,"line":1181,"column":70,"start":41525,"end":41525,"length":1,"parent_index":5552},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"data","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}}],"expression":{"id":5534,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5535,"line":1181,"column":12,"start":41467,"end":41504,"length":38,"parent_index":5532},"expression":{"id":5536,"node_type":24,"kind":24,"src":{"id":5537,"line":1181,"column":12,"start":41467,"end":41499,"length":33,"parent_index":5534},"argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}],"arguments":[{"id":5540,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5541,"line":1181,"column":18,"start":41473,"end":41498,"length":26,"parent_index":5536},"expression":{"id":5542,"node_type":22,"src":{"id":5543,"line":1181,"column":18,"start":41473,"end":41493,"length":21,"parent_index":5540},"index_expression":{"id":5544,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5545,"line":1181,"column":18,"start":41473,"end":41490,"length":18,"parent_index":5542},"expression":{"id":5546,"node_type":16,"src":{"id":5547,"line":1181,"column":18,"start":41473,"end":41478,"length":6,"parent_index":5544},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"initialPath","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5548,"node_type":16,"src":{"id":5549,"line":1181,"column":37,"start":41492,"end":41492,"length":1,"parent_index":5542},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"pool","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}}],"expression":{"id":5538,"node_type":16,"src":{"id":5539,"line":1181,"column":12,"start":41467,"end":41471,"length":5,"parent_index":5536},"name":"IPool","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"function(index[struct ITridentRouter.ExactInputParams:uint256])"}},"member_name":"swap","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"function(index[struct ITridentRouter.ExactInputParams:uint256])"}},"type_description":{"type_identifier":"t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"function(index[struct ITridentRouter.ExactInputParams:uint256])"}}]}},{"id":5560,"node_type":81,"src":{"id":5561,"line":1184,"column":8,"start":41622,"end":41654,"length":33,"parent_index":5446},"expression":{"id":5562,"node_type":27,"src":{"id":5563,"line":1184,"column":8,"start":41622,"end":41653,"length":32,"parent_index":5446},"operator":11,"left_expression":{"id":5564,"node_type":16,"src":{"id":5565,"line":1184,"column":8,"start":41622,"end":41622,"length":1,"parent_index":5562},"name":"n","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":5448,"is_pure":false},"right_expression":{"id":5566,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5567,"line":1184,"column":12,"start":41626,"end":41653,"length":28,"parent_index":5562},"expression":{"id":5568,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5569,"line":1184,"column":12,"start":41626,"end":41646,"length":21,"parent_index":5566},"expression":{"id":5570,"node_type":16,"src":{"id":5571,"line":1184,"column":12,"start":41626,"end":41631,"length":6,"parent_index":5568},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ComplexPathParams_$5045","type_string":"struct ITridentRouter.ComplexPathParams"},"overloaded_declarations":[],"referenced_declaration":5570,"is_pure":false},"member_name":"percentagePath","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ComplexPathParams_$5045","type_string":"struct ITridentRouter.ComplexPathParams"}},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ComplexPathParams_$5045","type_string":"struct ITridentRouter.ComplexPathParams"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},{"id":5572,"node_type":79,"src":{"id":5573,"line":1185,"column":0,"start":41664,"end":42324,"length":661,"parent_index":5446},"initialiser":{"id":5574,"node_type":44,"src":{"id":5575,"line":1185,"column":13,"start":41669,"end":41682,"length":14,"parent_index":5446},"assignments":[5576],"declarations":[{"is_constant":false,"id":5576,"state_mutability":1,"name":"i","node_type":44,"scope":5446,"src":{"id":5577,"line":1185,"column":13,"start":41669,"end":41677,"length":9,"parent_index":5574},"is_state_variable":false,"storage_location":1,"type_name":{"id":5578,"node_type":30,"src":{"id":5579,"line":1185,"column":13,"start":41669,"end":41675,"length":7,"parent_index":5576},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":5580,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":5581,"line":1185,"column":25,"start":41681,"end":41681,"length":1,"parent_index":5574},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}},"condition":{"id":5582,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":5583,"line":1185,"column":28,"start":41684,"end":41688,"length":5,"parent_index":5572},"operator":9,"left_expression":{"id":5584,"node_type":16,"src":{"id":5585,"line":1185,"column":28,"start":41684,"end":41684,"length":1,"parent_index":5582},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":5586,"node_type":16,"src":{"id":5587,"line":1185,"column":32,"start":41688,"end":41688,"length":1,"parent_index":5582},"name":"n","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":5448,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"closure":{"id":5588,"node_type":27,"src":{"id":5589,"line":1185,"column":35,"start":41691,"end":41707,"length":17,"parent_index":5446},"operator":11,"left_expression":{"id":5590,"node_type":16,"src":{"id":5591,"line":1185,"column":35,"start":41691,"end":41691,"length":1,"parent_index":5588},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":5592,"node_type":24,"kind":24,"src":{"id":5593,"line":1185,"column":39,"start":41695,"end":41707,"length":13,"parent_index":5588},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":5596,"node_type":16,"src":{"id":5597,"line":1185,"column":50,"start":41706,"end":41706,"length":1,"parent_index":5592},"name":"i","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":5594,"node_type":16,"src":{"id":5595,"line":1185,"column":39,"start":41695,"end":41704,"length":10,"parent_index":5592},"name":"_increment","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"body":{"id":5598,"node_type":46,"kind":0,"src":{"id":5599,"line":1185,"column":54,"start":41710,"end":42324,"length":615,"parent_index":5572},"implemented":true,"statements":[{"id":5600,"node_type":44,"src":{"id":5601,"line":1186,"column":12,"start":41724,"end":41861,"length":138,"parent_index":5598},"assignments":[5602],"declarations":[{"is_constant":false,"id":5602,"state_mutability":1,"name":"balanceShares","node_type":44,"scope":5598,"src":{"id":5603,"line":1186,"column":12,"start":41724,"end":41744,"length":21,"parent_index":5600},"is_state_variable":false,"storage_location":1,"type_name":{"id":5604,"node_type":30,"src":{"id":5605,"line":1186,"column":12,"start":41724,"end":41730,"length":7,"parent_index":5602},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":5606,"node_type":24,"kind":24,"src":{"id":5607,"line":1186,"column":36,"start":41748,"end":41860,"length":113,"parent_index":5600},"argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}],"arguments":[{"id":5612,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5613,"line":1187,"column":16,"start":41784,"end":41815,"length":32,"parent_index":5606},"expression":{"id":5614,"node_type":22,"src":{"id":5615,"line":1187,"column":16,"start":41784,"end":41807,"length":24,"parent_index":5612},"index_expression":{"id":5616,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5617,"line":1187,"column":16,"start":41784,"end":41804,"length":21,"parent_index":5614},"expression":{"id":5618,"node_type":16,"src":{"id":5619,"line":1187,"column":16,"start":41784,"end":41789,"length":6,"parent_index":5616},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"percentagePath","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5620,"node_type":16,"src":{"id":5621,"line":1187,"column":38,"start":41806,"end":41806,"length":1,"parent_index":5614},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"tokenIn","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},{"id":5622,"node_type":24,"kind":24,"src":{"id":5623,"line":1188,"column":16,"start":41834,"end":41846,"length":13,"parent_index":5606},"argument_types":[{"type_identifier":"t_contract$_TridentSwapAdapter_$5143","type_string":"contract TridentSwapAdapter"}],"arguments":[{"id":5628,"node_type":16,"src":{"id":5629,"line":1188,"column":24,"start":41842,"end":41845,"length":4,"parent_index":5622},"name":"this","type_description":{"type_identifier":"t_contract$_TridentSwapAdapter_$5143","type_string":"contract TridentSwapAdapter"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":5624,"node_type":16,"src":{"id":5625,"line":1188,"column":16,"start":41834,"end":41840,"length":7,"parent_index":5622},"name":"address","type_name":{"id":5626,"node_type":30,"src":{"id":5627,"line":1188,"column":16,"start":41834,"end":41840,"length":7,"parent_index":5624},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}],"expression":{"id":5608,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5609,"line":1186,"column":36,"start":41748,"end":41765,"length":18,"parent_index":5606},"expression":{"id":5610,"node_type":16,"src":{"id":5611,"line":1186,"column":36,"start":41748,"end":41755,"length":8,"parent_index":5608},"name":"bentoBox","type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"overloaded_declarations":[],"referenced_declaration":1378,"is_pure":false},"member_name":"balanceOf","argument_types":[],"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"}},"type_description":{"type_identifier":"t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$","type_string":"function(index[struct ITridentRouter.ExactInputParams:uint256],function(address))"}}},{"id":5630,"node_type":44,"src":{"id":5631,"line":1190,"column":12,"start":41875,"end":41993,"length":119,"parent_index":5598},"assignments":[5632],"declarations":[{"is_constant":false,"id":5632,"state_mutability":1,"name":"transferShares","node_type":44,"scope":5598,"src":{"id":5633,"line":1190,"column":12,"start":41875,"end":41896,"length":22,"parent_index":5630},"is_state_variable":false,"storage_location":1,"type_name":{"id":5634,"node_type":30,"src":{"id":5635,"line":1190,"column":12,"start":41875,"end":41881,"length":7,"parent_index":5632},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":5636,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":5637,"line":1190,"column":37,"start":41900,"end":41992,"length":93,"parent_index":5630},"operator":4,"left_expression":{"id":5638,"node_type":60,"src":{"id":5639,"line":1190,"column":37,"start":41900,"end":41975,"length":76,"parent_index":5636},"is_constant":false,"is_pure":false,"components":[{"id":5640,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":5641,"line":1190,"column":38,"start":41901,"end":41974,"length":74,"parent_index":5630},"operator":3,"left_expression":{"id":5642,"node_type":16,"src":{"id":5643,"line":1190,"column":38,"start":41901,"end":41913,"length":13,"parent_index":5640},"name":"balanceShares","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":5600,"is_pure":false},"right_expression":{"id":5644,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5645,"line":1191,"column":16,"start":41933,"end":41974,"length":42,"parent_index":5630},"expression":{"id":5646,"node_type":22,"src":{"id":5647,"line":1191,"column":16,"start":41933,"end":41956,"length":24,"parent_index":5630},"index_expression":{"id":5648,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5649,"line":1191,"column":16,"start":41933,"end":41953,"length":21,"parent_index":5630},"expression":{"id":5650,"node_type":16,"src":{"id":5651,"line":1191,"column":16,"start":41933,"end":41938,"length":6,"parent_index":5648},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"percentagePath","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5652,"node_type":16,"src":{"id":5653,"line":1191,"column":38,"start":41955,"end":41955,"length":1,"parent_index":5646},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"balancePercentage","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}],"type_description":{"type_identifier":"t_tuple_$_t_uint256$","type_string":"tuple(uint256)"}},"right_expression":{"id":5655,"node_type":95,"src":{"id":5656,"line":1191,"column":62,"start":41979,"end":41992,"length":14,"parent_index":5630},"left_expression":{"id":5657,"node_type":24,"kind":24,"src":{"id":5658,"line":1191,"column":62,"start":41979,"end":41989,"length":11,"parent_index":5630},"argument_types":[{"type_identifier":"t_rational_10_by_1","type_string":"int_const 10"}],"arguments":[{"id":5663,"node_type":17,"kind":49,"value":"10","hex_value":"3130","src":{"id":5664,"line":1191,"column":70,"start":41987,"end":41988,"length":2,"parent_index":5657},"type_description":{"type_identifier":"t_rational_10_by_1","type_string":"int_const 10"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":5659,"node_type":16,"src":{"id":5660,"line":1191,"column":62,"start":41979,"end":41985,"length":7,"parent_index":5657},"name":"uint256","type_name":{"id":5661,"node_type":30,"src":{"id":5662,"line":1191,"column":62,"start":41979,"end":41985,"length":7,"parent_index":5659},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"type_description":{"type_identifier":"t_function_$_t_rational_10_by_1$","type_string":"function(int_const 10)"}},"right_expression":{"id":5665,"node_type":17,"kind":49,"value":"8","hex_value":"38","src":{"id":5666,"line":1191,"column":75,"start":41992,"end":41992,"length":1,"parent_index":5655},"type_description":{"type_identifier":"t_rational_8_by_1","type_string":"int_const 8"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_descriptions":[{"type_identifier":"t_function_$_t_rational_10_by_1$","type_string":"function(int_const 10)"},{"type_identifier":"t_rational_8_by_1","type_string":"int_const 8"}]},"type_description":{"type_identifier":"t_tuple_$_t_uint256$","type_string":"tuple(uint256)"}}},{"id":5667,"node_type":24,"kind":24,"src":{"id":5668,"line":1192,"column":12,"start":42007,"end":42197,"length":191,"parent_index":5598},"argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"},{"type_identifier":"t_uint256","type_string":"uint256"}],"arguments":[{"id":5673,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5674,"line":1193,"column":16,"start":42042,"end":42073,"length":32,"parent_index":5667},"expression":{"id":5675,"node_type":22,"src":{"id":5676,"line":1193,"column":16,"start":42042,"end":42065,"length":24,"parent_index":5673},"index_expression":{"id":5677,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5678,"line":1193,"column":16,"start":42042,"end":42062,"length":21,"parent_index":5675},"expression":{"id":5679,"node_type":16,"src":{"id":5680,"line":1193,"column":16,"start":42042,"end":42047,"length":6,"parent_index":5677},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"percentagePath","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5681,"node_type":16,"src":{"id":5682,"line":1193,"column":38,"start":42064,"end":42064,"length":1,"parent_index":5675},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"tokenIn","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},{"id":5683,"node_type":24,"kind":24,"src":{"id":5684,"line":1194,"column":16,"start":42092,"end":42104,"length":13,"parent_index":5667},"argument_types":[{"type_identifier":"t_contract$_TridentSwapAdapter_$5143","type_string":"contract TridentSwapAdapter"}],"arguments":[{"id":5689,"node_type":16,"src":{"id":5690,"line":1194,"column":24,"start":42100,"end":42103,"length":4,"parent_index":5683},"name":"this","type_description":{"type_identifier":"t_contract$_TridentSwapAdapter_$5143","type_string":"contract TridentSwapAdapter"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":5685,"node_type":16,"src":{"id":5686,"line":1194,"column":16,"start":42092,"end":42098,"length":7,"parent_index":5683},"name":"address","type_name":{"id":5687,"node_type":30,"src":{"id":5688,"line":1194,"column":16,"start":42092,"end":42098,"length":7,"parent_index":5685},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":5691,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5692,"line":1195,"column":16,"start":42123,"end":42151,"length":29,"parent_index":5667},"expression":{"id":5693,"node_type":22,"src":{"id":5694,"line":1195,"column":16,"start":42123,"end":42146,"length":24,"parent_index":5691},"index_expression":{"id":5695,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5696,"line":1195,"column":16,"start":42123,"end":42143,"length":21,"parent_index":5693},"expression":{"id":5697,"node_type":16,"src":{"id":5698,"line":1195,"column":16,"start":42123,"end":42128,"length":6,"parent_index":5695},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"percentagePath","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5699,"node_type":16,"src":{"id":5700,"line":1195,"column":38,"start":42145,"end":42145,"length":1,"parent_index":5693},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"pool","argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},{"id":5701,"node_type":16,"src":{"id":5702,"line":1196,"column":16,"start":42170,"end":42183,"length":14,"parent_index":5667},"name":"transferShares","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":5630,"is_pure":false,"argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}]}],"expression":{"id":5669,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5670,"line":1192,"column":12,"start":42007,"end":42023,"length":17,"parent_index":5667},"expression":{"id":5671,"node_type":16,"src":{"id":5672,"line":1192,"column":12,"start":42007,"end":42014,"length":8,"parent_index":5669},"name":"bentoBox","type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"overloaded_declarations":[],"referenced_declaration":1378,"is_pure":false},"member_name":"transfer","argument_types":[],"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"}},"type_description":{"type_identifier":"t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_uint256$","type_string":"function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],uint256)"}},{"id":5703,"node_type":24,"kind":24,"src":{"id":5704,"line":1198,"column":12,"start":42212,"end":42313,"length":102,"parent_index":5598},"argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}],"arguments":[{"id":5721,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5722,"line":1199,"column":16,"start":42271,"end":42299,"length":29,"parent_index":5703},"expression":{"id":5723,"node_type":22,"src":{"id":5724,"line":1199,"column":16,"start":42271,"end":42294,"length":24,"parent_index":5721},"index_expression":{"id":5725,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5726,"line":1199,"column":16,"start":42271,"end":42291,"length":21,"parent_index":5723},"expression":{"id":5727,"node_type":16,"src":{"id":5728,"line":1199,"column":16,"start":42271,"end":42276,"length":6,"parent_index":5725},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"percentagePath","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5729,"node_type":16,"src":{"id":5730,"line":1199,"column":38,"start":42293,"end":42293,"length":1,"parent_index":5723},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"data","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}}],"expression":{"id":5705,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5706,"line":1198,"column":12,"start":42212,"end":42252,"length":41,"parent_index":5703},"expression":{"id":5707,"node_type":24,"kind":24,"src":{"id":5708,"line":1198,"column":12,"start":42212,"end":42247,"length":36,"parent_index":5705},"argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}],"arguments":[{"id":5711,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5712,"line":1198,"column":18,"start":42218,"end":42246,"length":29,"parent_index":5707},"expression":{"id":5713,"node_type":22,"src":{"id":5714,"line":1198,"column":18,"start":42218,"end":42241,"length":24,"parent_index":5711},"index_expression":{"id":5715,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5716,"line":1198,"column":18,"start":42218,"end":42238,"length":21,"parent_index":5713},"expression":{"id":5717,"node_type":16,"src":{"id":5718,"line":1198,"column":18,"start":42218,"end":42223,"length":6,"parent_index":5715},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"percentagePath","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5719,"node_type":16,"src":{"id":5720,"line":1198,"column":40,"start":42240,"end":42240,"length":1,"parent_index":5713},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"pool","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}}],"expression":{"id":5709,"node_type":16,"src":{"id":5710,"line":1198,"column":12,"start":42212,"end":42216,"length":5,"parent_index":5707},"name":"IPool","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"function(index[struct ITridentRouter.ExactInputParams:uint256])"}},"member_name":"swap","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"function(index[struct ITridentRouter.ExactInputParams:uint256])"}},"type_description":{"type_identifier":"t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"function(index[struct ITridentRouter.ExactInputParams:uint256])"}}]}},{"id":5731,"node_type":81,"src":{"id":5732,"line":1203,"column":8,"start":42413,"end":42437,"length":25,"parent_index":5446},"expression":{"id":5733,"node_type":27,"src":{"id":5734,"line":1203,"column":8,"start":42413,"end":42436,"length":24,"parent_index":5446},"operator":11,"left_expression":{"id":5735,"node_type":16,"src":{"id":5736,"line":1203,"column":8,"start":42413,"end":42413,"length":1,"parent_index":5733},"name":"n","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":5448,"is_pure":false},"right_expression":{"id":5737,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5738,"line":1203,"column":12,"start":42417,"end":42436,"length":20,"parent_index":5733},"expression":{"id":5739,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5740,"line":1203,"column":12,"start":42417,"end":42429,"length":13,"parent_index":5737},"expression":{"id":5741,"node_type":16,"src":{"id":5742,"line":1203,"column":12,"start":42417,"end":42422,"length":6,"parent_index":5739},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ComplexPathParams_$5045","type_string":"struct ITridentRouter.ComplexPathParams"},"overloaded_declarations":[],"referenced_declaration":5741,"is_pure":false},"member_name":"output","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ComplexPathParams_$5045","type_string":"struct ITridentRouter.ComplexPathParams"}},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ComplexPathParams_$5045","type_string":"struct ITridentRouter.ComplexPathParams"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},{"id":5743,"node_type":79,"src":{"id":5744,"line":1204,"column":0,"start":42447,"end":43270,"length":824,"parent_index":5446},"initialiser":{"id":5745,"node_type":44,"src":{"id":5746,"line":1204,"column":13,"start":42452,"end":42465,"length":14,"parent_index":5446},"assignments":[5747],"declarations":[{"is_constant":false,"id":5747,"state_mutability":1,"name":"i","node_type":44,"scope":5446,"src":{"id":5748,"line":1204,"column":13,"start":42452,"end":42460,"length":9,"parent_index":5745},"is_state_variable":false,"storage_location":1,"type_name":{"id":5749,"node_type":30,"src":{"id":5750,"line":1204,"column":13,"start":42452,"end":42458,"length":7,"parent_index":5747},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":5751,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":5752,"line":1204,"column":25,"start":42464,"end":42464,"length":1,"parent_index":5745},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}},"condition":{"id":5753,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":5754,"line":1204,"column":28,"start":42467,"end":42471,"length":5,"parent_index":5743},"operator":9,"left_expression":{"id":5755,"node_type":16,"src":{"id":5756,"line":1204,"column":28,"start":42467,"end":42467,"length":1,"parent_index":5753},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":5757,"node_type":16,"src":{"id":5758,"line":1204,"column":32,"start":42471,"end":42471,"length":1,"parent_index":5753},"name":"n","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":5448,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"closure":{"id":5759,"node_type":27,"src":{"id":5760,"line":1204,"column":35,"start":42474,"end":42490,"length":17,"parent_index":5446},"operator":11,"left_expression":{"id":5761,"node_type":16,"src":{"id":5762,"line":1204,"column":35,"start":42474,"end":42474,"length":1,"parent_index":5759},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":5763,"node_type":24,"kind":24,"src":{"id":5764,"line":1204,"column":39,"start":42478,"end":42490,"length":13,"parent_index":5759},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":5767,"node_type":16,"src":{"id":5768,"line":1204,"column":50,"start":42489,"end":42489,"length":1,"parent_index":5763},"name":"i","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":5765,"node_type":16,"src":{"id":5766,"line":1204,"column":39,"start":42478,"end":42487,"length":10,"parent_index":5763},"name":"_increment","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"body":{"id":5769,"node_type":46,"kind":0,"src":{"id":5770,"line":1204,"column":54,"start":42493,"end":43270,"length":778,"parent_index":5743},"implemented":true,"statements":[{"id":5771,"node_type":44,"src":{"id":5772,"line":1205,"column":12,"start":42507,"end":42634,"length":128,"parent_index":5769},"assignments":[5773],"declarations":[{"is_constant":false,"id":5773,"state_mutability":1,"name":"balanceShares","node_type":44,"scope":5769,"src":{"id":5774,"line":1205,"column":12,"start":42507,"end":42527,"length":21,"parent_index":5771},"is_state_variable":false,"storage_location":1,"type_name":{"id":5775,"node_type":30,"src":{"id":5776,"line":1205,"column":12,"start":42507,"end":42513,"length":7,"parent_index":5773},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":5777,"node_type":24,"kind":24,"src":{"id":5778,"line":1205,"column":36,"start":42531,"end":42633,"length":103,"parent_index":5771},"argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}],"arguments":[{"id":5783,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5784,"line":1206,"column":16,"start":42567,"end":42588,"length":22,"parent_index":5777},"expression":{"id":5785,"node_type":22,"src":{"id":5786,"line":1206,"column":16,"start":42567,"end":42582,"length":16,"parent_index":5783},"index_expression":{"id":5787,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5788,"line":1206,"column":16,"start":42567,"end":42579,"length":13,"parent_index":5785},"expression":{"id":5789,"node_type":16,"src":{"id":5790,"line":1206,"column":16,"start":42567,"end":42572,"length":6,"parent_index":5787},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"output","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5791,"node_type":16,"src":{"id":5792,"line":1206,"column":30,"start":42581,"end":42581,"length":1,"parent_index":5785},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"token","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},{"id":5793,"node_type":24,"kind":24,"src":{"id":5794,"line":1207,"column":16,"start":42607,"end":42619,"length":13,"parent_index":5777},"argument_types":[{"type_identifier":"t_contract$_TridentSwapAdapter_$5143","type_string":"contract TridentSwapAdapter"}],"arguments":[{"id":5799,"node_type":16,"src":{"id":5800,"line":1207,"column":24,"start":42615,"end":42618,"length":4,"parent_index":5793},"name":"this","type_description":{"type_identifier":"t_contract$_TridentSwapAdapter_$5143","type_string":"contract TridentSwapAdapter"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":5795,"node_type":16,"src":{"id":5796,"line":1207,"column":16,"start":42607,"end":42613,"length":7,"parent_index":5793},"name":"address","type_name":{"id":5797,"node_type":30,"src":{"id":5798,"line":1207,"column":16,"start":42607,"end":42613,"length":7,"parent_index":5795},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}],"expression":{"id":5779,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5780,"line":1205,"column":36,"start":42531,"end":42548,"length":18,"parent_index":5777},"expression":{"id":5781,"node_type":16,"src":{"id":5782,"line":1205,"column":36,"start":42531,"end":42538,"length":8,"parent_index":5779},"name":"bentoBox","type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"overloaded_declarations":[],"referenced_declaration":1378,"is_pure":false},"member_name":"balanceOf","argument_types":[],"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"}},"type_description":{"type_identifier":"t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$","type_string":"function(index[struct ITridentRouter.ExactInputParams:uint256],function(address))"}}},{"id":5801,"node_type":48,"src":{"id":5802,"line":1209,"column":0,"start":42648,"end":42738,"length":91,"parent_index":5769},"condition":{"id":5803,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":5804,"line":1209,"column":16,"start":42652,"end":42693,"length":42,"parent_index":5801},"operator":9,"left_expression":{"id":5805,"node_type":16,"src":{"id":5806,"line":1209,"column":16,"start":42652,"end":42664,"length":13,"parent_index":5803},"name":"balanceShares","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":5771,"is_pure":false},"right_expression":{"id":5807,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5808,"line":1209,"column":32,"start":42668,"end":42693,"length":26,"parent_index":5803},"expression":{"id":5809,"node_type":22,"src":{"id":5810,"line":1209,"column":32,"start":42668,"end":42683,"length":16,"parent_index":5807},"index_expression":{"id":5811,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5812,"line":1209,"column":32,"start":42668,"end":42680,"length":13,"parent_index":5809},"expression":{"id":5813,"node_type":16,"src":{"id":5814,"line":1209,"column":32,"start":42668,"end":42673,"length":6,"parent_index":5811},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"output","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5815,"node_type":16,"src":{"id":5816,"line":1209,"column":46,"start":42682,"end":42682,"length":1,"parent_index":5809},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"minAmount","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":5817,"node_type":46,"kind":0,"src":{"id":0,"line":0,"column":0,"start":0,"end":0,"length":0,"parent_index":0},"implemented":false,"statements":[]}},{"id":5818,"node_type":48,"src":{"id":5819,"line":1211,"column":0,"start":42752,"end":43260,"length":509,"parent_index":5769},"condition":{"id":5820,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5821,"line":1211,"column":16,"start":42756,"end":42783,"length":28,"parent_index":5818},"expression":{"id":5822,"node_type":22,"src":{"id":5823,"line":1211,"column":16,"start":42756,"end":42771,"length":16,"parent_index":5820},"index_expression":{"id":5824,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5825,"line":1211,"column":16,"start":42756,"end":42768,"length":13,"parent_index":5822},"expression":{"id":5826,"node_type":16,"src":{"id":5827,"line":1211,"column":16,"start":42756,"end":42761,"length":6,"parent_index":5824},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"output","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5828,"node_type":16,"src":{"id":5829,"line":1211,"column":30,"start":42770,"end":42770,"length":1,"parent_index":5822},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"unwrapBento","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"body":{"id":5830,"node_type":46,"kind":0,"src":{"id":5831,"line":1211,"column":46,"start":42786,"end":43031,"length":246,"parent_index":5743},"implemented":true,"statements":[{"id":5832,"node_type":24,"kind":24,"src":{"id":5833,"line":1212,"column":16,"start":42804,"end":43016,"length":213,"parent_index":5830},"argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"},{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},{"type_identifier":"t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$$$_t_function_$_t_address$$$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$$$_t_rational_0_by_1$","type_string":"function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],int_const 0)"}],"arguments":[{"id":5838,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5839,"line":1213,"column":20,"start":42843,"end":42864,"length":22,"parent_index":5832},"expression":{"id":5840,"node_type":22,"src":{"id":5841,"line":1213,"column":20,"start":42843,"end":42858,"length":16,"parent_index":5838},"index_expression":{"id":5842,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5843,"line":1213,"column":20,"start":42843,"end":42855,"length":13,"parent_index":5840},"expression":{"id":5844,"node_type":16,"src":{"id":5845,"line":1213,"column":20,"start":42843,"end":42848,"length":6,"parent_index":5842},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"output","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5846,"node_type":16,"src":{"id":5847,"line":1213,"column":34,"start":42857,"end":42857,"length":1,"parent_index":5840},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"token","argument_types":[],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},{"id":5848,"node_type":24,"kind":24,"src":{"id":5849,"line":1214,"column":20,"start":42887,"end":42899,"length":13,"parent_index":5832},"argument_types":[{"type_identifier":"t_contract$_TridentSwapAdapter_$5143","type_string":"contract TridentSwapAdapter"}],"arguments":[{"id":5854,"node_type":16,"src":{"id":5855,"line":1214,"column":28,"start":42895,"end":42898,"length":4,"parent_index":5848},"name":"this","type_description":{"type_identifier":"t_contract$_TridentSwapAdapter_$5143","type_string":"contract TridentSwapAdapter"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":5850,"node_type":16,"src":{"id":5851,"line":1214,"column":20,"start":42887,"end":42893,"length":7,"parent_index":5848},"name":"address","type_name":{"id":5852,"node_type":30,"src":{"id":5853,"line":1214,"column":20,"start":42887,"end":42893,"length":7,"parent_index":5850},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":5856,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5857,"line":1215,"column":20,"start":42922,"end":42940,"length":19,"parent_index":5832},"expression":{"id":5858,"node_type":22,"src":{"id":5859,"line":1215,"column":20,"start":42922,"end":42937,"length":16,"parent_index":5856},"index_expression":{"id":5860,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5861,"line":1215,"column":20,"start":42922,"end":42934,"length":13,"parent_index":5858},"expression":{"id":5862,"node_type":16,"src":{"id":5863,"line":1215,"column":20,"start":42922,"end":42927,"length":6,"parent_index":5860},"name":"params","type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},"overloaded_declarations":[],"referenced_declaration":5233,"is_pure":false},"member_name":"output","argument_types":[],"type_description":{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"}},"base_expression":{"id":5864,"node_type":16,"src":{"id":5865,"line":1215,"column":34,"start":42936,"end":42936,"length":1,"parent_index":5858},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_struct$_ITridentRouter_ExactInputParams_$4947","type_string":"struct ITridentRouter.ExactInputParams"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},"member_name":"to","argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}],"type_description":{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}},{"id":5866,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":5867,"line":1216,"column":20,"start":42963,"end":42963,"length":1,"parent_index":5832},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true,"argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"}]},{"id":5868,"node_type":16,"src":{"id":5869,"line":1217,"column":20,"start":42986,"end":42998,"length":13,"parent_index":5832},"name":"balanceShares","type_description":{"type_identifier":"t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$$$_t_function_$_t_address$$$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$$$_t_rational_0_by_1$","type_string":"function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],int_const 0)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$","type_string":"index[struct ITridentRouter.ExactInputParams:uint256]"},{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"}]}],"expression":{"id":5834,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":5835,"line":1212,"column":16,"start":42804,"end":42820,"length":17,"parent_index":5832},"expression":{"id":5836,"node_type":16,"src":{"id":5837,"line":1212,"column":16,"start":42804,"end":42811,"length":8,"parent_index":5834},"name":"bentoBox","type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"overloaded_declarations":[],"referenced_declaration":1378,"is_pure":false},"member_name":"withdraw","argument_types":[],"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"}},"type_description":{"type_identifier":"t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_rational_0_by_1$_t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_rational_0_by_1$","type_string":"function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],int_const 0,function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],int_const 0))"}}]}}]}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":5437,"node_type":43,"src":{"id":5438,"line":1170,"column":26,"start":40936,"end":40966,"length":31,"parent_index":5435},"parameters":[{"id":5439,"node_type":44,"src":{"id":5440,"line":1170,"column":26,"start":40936,"end":40966,"length":31,"parent_index":5437},"scope":5435,"name":"params","type_name":{"id":5441,"node_type":69,"src":{"id":5442,"line":1170,"column":26,"start":40936,"end":40952,"length":17,"parent_index":5439},"type_description":{"type_identifier":"t_struct$_ITridentRouter_ComplexPathParams_$5045","type_string":"struct ITridentRouter.ComplexPathParams"},"path_node":{"id":5443,"name":"ComplexPathParams","node_type":52,"referenced_declaration":5045,"src":{"id":5444,"line":1170,"column":26,"start":40936,"end":40952,"length":17,"parent_index":5441}},"referenced_declaration":5045},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_struct$_ITridentRouter_ComplexPathParams_$5045","type_string":"struct ITridentRouter.ComplexPathParams"}]},"return_parameters":{"id":5445,"node_type":43,"src":{"id":5436,"line":1170,"column":4,"start":40914,"end":43276,"length":2363,"parent_index":5435},"parameters":[],"parameter_types":[]},"scope":5207,"type_description":{"type_identifier":"t_function_$_t_struct$_ITridentRouter_ComplexPathParams_$5045$","type_string":"function(struct ITridentRouter.ComplexPathParams)"}},{"id":5871,"name":"_increment","node_type":42,"kind":41,"src":{"id":5872,"line":1230,"column":4,"start":43283,"end":43408,"length":126,"parent_index":5207},"body":{"id":5885,"node_type":46,"kind":0,"src":{"id":5886,"line":1230,"column":67,"start":43346,"end":43408,"length":63,"parent_index":5871},"implemented":true,"statements":[{"id":5887,"node_type":59,"kind":0,"src":{"id":5888,"line":1231,"column":8,"start":43356,"end":43402,"length":47,"parent_index":5207},"implemented":false,"statements":[{"id":5889,"node_type":47,"src":{"id":5890,"line":1232,"column":12,"start":43380,"end":43392,"length":13,"parent_index":5871},"function_return_parameters":5871,"expression":{"id":5891,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":5892,"line":1232,"column":19,"start":43387,"end":43391,"length":5,"parent_index":5887},"operator":1,"left_expression":{"id":5893,"node_type":16,"src":{"id":5894,"line":1232,"column":19,"start":43387,"end":43387,"length":1,"parent_index":5891},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":5893,"is_pure":false},"right_expression":{"id":5895,"node_type":17,"kind":49,"value":"1","hex_value":"31","src":{"id":5896,"line":1232,"column":23,"start":43391,"end":43391,"length":1,"parent_index":5891},"type_description":{"type_identifier":"t_rational_1_by_1","type_string":"int_const 1"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}}}]}]},"implemented":false,"visibility":1,"state_mutability":6,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":5873,"node_type":43,"src":{"id":5874,"line":1230,"column":24,"start":43303,"end":43311,"length":9,"parent_index":5871},"parameters":[{"id":5875,"node_type":44,"src":{"id":5876,"line":1230,"column":24,"start":43303,"end":43311,"length":9,"parent_index":5873},"scope":5871,"name":"i","type_name":{"id":5877,"node_type":30,"src":{"id":5878,"line":1230,"column":24,"start":43303,"end":43309,"length":7,"parent_index":5875},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"return_parameters":{"id":5879,"node_type":43,"src":{"id":5880,"line":1230,"column":58,"start":43337,"end":43343,"length":7,"parent_index":5871},"parameters":[{"id":5881,"node_type":44,"src":{"id":5882,"line":1230,"column":58,"start":43337,"end":43343,"length":7,"parent_index":5879},"scope":5871,"name":"","type_name":{"id":5883,"node_type":30,"src":{"id":5884,"line":1230,"column":58,"start":43337,"end":43343,"length":7,"parent_index":5881},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":5207,"type_description":{"type_identifier":"t_function_$_t_uint256$","type_string":"function(uint256)"}}],"linearized_base_contracts":[4839,1354,1482,2401,5207,5202,5203,5204,5205,5206],"base_contracts":[{"id":5208,"node_type":62,"src":{"id":5209,"line":1116,"column":4,"start":38470,"end":38483,"length":14,"parent_index":5207},"base_name":{"id":5210,"node_type":52,"src":{"id":5211,"line":1116,"column":4,"start":38470,"end":38483,"length":14,"parent_index":5207},"name":"ITridentRouter","referenced_declaration":4839}},{"id":5212,"node_type":62,"src":{"id":5213,"line":1117,"column":4,"start":38490,"end":38503,"length":14,"parent_index":5207},"base_name":{"id":5214,"node_type":52,"src":{"id":5215,"line":1117,"column":4,"start":38490,"end":38503,"length":14,"parent_index":5207},"name":"ImmutableState","referenced_declaration":1354}},{"id":5216,"node_type":62,"src":{"id":5217,"line":1118,"column":4,"start":38510,"end":38521,"length":12,"parent_index":5207},"base_name":{"id":5218,"node_type":52,"src":{"id":5219,"line":1118,"column":4,"start":38510,"end":38521,"length":12,"parent_index":5207},"name":"BentoAdapter","referenced_declaration":1482}},{"id":5220,"node_type":62,"src":{"id":5221,"line":1119,"column":4,"start":38528,"end":38539,"length":12,"parent_index":5207},"base_name":{"id":5222,"node_type":52,"src":{"id":5223,"line":1119,"column":4,"start":38528,"end":38539,"length":12,"parent_index":5207},"name":"TokenAdapter","referenced_declaration":2401}}],"contract_dependencies":[4839,1354,1482,2401,5202,5203,5204,5205,5206]}],"src":{"id":5144,"line":1115,"column":0,"start":38426,"end":43410,"length":4985,"parent_index":263}},{"id":5897,"base_contracts":[{"id":5965,"node_type":62,"src":{"id":5966,"line":1245,"column":37,"start":43639,"end":43652,"length":14,"parent_index":5964},"base_name":{"id":5967,"node_type":52,"src":{"id":5968,"line":1245,"column":37,"start":43639,"end":43652,"length":14,"parent_index":5964},"name":"ImmutableState","referenced_declaration":1354}},{"id":5969,"node_type":62,"src":{"id":5970,"line":1245,"column":53,"start":43655,"end":43671,"length":17,"parent_index":5964},"base_name":{"id":5971,"node_type":52,"src":{"id":5972,"line":1245,"column":53,"start":43655,"end":43671,"length":17,"parent_index":5964},"name":"IStargateReceiver","referenced_declaration":6650}}],"license":"MIT","exported_symbols":[{"id":5897,"name":"StargateAdapter","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/StargateAdapter.sol"},{"id":5143,"name":"IStargateAdapter","absolute_path":"IStargateAdapter.sol"},{"id":5965,"name":"ImmutableState","absolute_path":""},{"id":5969,"name":"IStargateReceiver","absolute_path":""}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/StargateAdapter.sol","name":"StargateAdapter","node_type":1,"nodes":[{"id":5937,"node_type":10,"src":{"id":5938,"line":1239,"column":0,"start":43459,"end":43481,"length":23,"parent_index":5897},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":5963,"node_type":29,"src":{"id":0,"line":1241,"column":0,"start":43484,"end":43515,"length":32,"parent_index":5897},"absolute_path":"IStargateAdapter.sol","file":"./IStargateAdapter.sol","scope":5897,"unit_alias":"","source_unit":5143},{"id":5964,"name":"StargateAdapter","node_type":35,"src":{"id":0,"line":1245,"column":0,"start":43602,"end":49033,"length":5432,"parent_index":5897},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":5974,"node_type":51,"src":{"id":5975,"line":1246,"column":0,"start":43679,"end":43705,"length":27,"parent_index":5964},"type_description":{"type_identifier":"t_function_$","type_string":"function()"},"type_name":{"id":5976,"node_type":69,"src":{"id":5977,"line":1246,"column":24,"start":43699,"end":43704,"length":6,"parent_index":5974},"type_description":{"type_identifier":"t_function_$","type_string":"function()"},"path_node":{"id":5978,"name":"IERC20","node_type":52,"referenced_declaration":2570,"src":{"id":5979,"line":1246,"column":24,"start":43699,"end":43704,"length":6,"parent_index":5976}},"referenced_declaration":2570},"library_name":{"id":5980,"node_type":52,"src":{"id":5981,"line":1246,"column":0,"start":43685,"end":43693,"length":9,"parent_index":5974},"name":"SafeERC20","referenced_declaration":1854}},{"id":5983,"node_type":77,"src":{"id":5984,"line":1249,"column":4,"start":43732,"end":43757,"length":26,"parent_index":5964},"name":"NotStargateRouter","parameters":{"id":5985,"node_type":43,"src":{"id":5984,"line":1249,"column":4,"start":43732,"end":43757,"length":26,"parent_index":5983},"parameters":[],"parameter_types":[]},"type_description":{"type_identifier":"t_error$_StargateAdapter_NotStargateRouter_$5983","type_string":"error StargateAdapter.NotStargateRouter"}},{"id":5987,"node_type":57,"src":{"id":5988,"line":1252,"column":4,"start":43778,"end":43833,"length":56,"parent_index":5964},"parameters":{"id":5989,"node_type":43,"src":{"id":5988,"line":1252,"column":4,"start":43778,"end":43833,"length":56,"parent_index":5987},"parameters":[{"id":5990,"node_type":44,"src":{"id":5991,"line":1252,"column":32,"start":43806,"end":43831,"length":26,"parent_index":5989},"scope":5987,"name":"srcContext","type_name":{"id":5992,"node_type":30,"src":{"id":5993,"line":1252,"column":32,"start":43806,"end":43812,"length":7,"parent_index":5990},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1,"indexed":true}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"}]},"name":"StargateSushiXSwapSrc","anonymous":false},{"id":5995,"node_type":57,"src":{"id":5996,"line":1253,"column":4,"start":43839,"end":43907,"length":69,"parent_index":5964},"parameters":{"id":5997,"node_type":43,"src":{"id":5996,"line":1253,"column":4,"start":43839,"end":43907,"length":69,"parent_index":5995},"parameters":[{"id":5998,"node_type":44,"src":{"id":5999,"line":1253,"column":32,"start":43867,"end":43892,"length":26,"parent_index":5997},"scope":5995,"name":"srcContext","type_name":{"id":6000,"node_type":30,"src":{"id":6001,"line":1253,"column":32,"start":43867,"end":43873,"length":7,"parent_index":5998},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1,"indexed":true},{"id":6002,"node_type":44,"src":{"id":6003,"line":1253,"column":60,"start":43895,"end":43905,"length":11,"parent_index":5997},"scope":5995,"name":"failed","type_name":{"id":6004,"node_type":30,"src":{"id":6005,"line":1253,"column":60,"start":43895,"end":43898,"length":4,"parent_index":6002},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes32","type_string":"bytes32"},{"type_identifier":"t_bool","type_string":"bool"}]},"name":"StargateSushiXSwapDst","anonymous":false},{"id":6007,"node_type":67,"src":{"id":6008,"line":1255,"column":4,"start":43914,"end":44598,"length":685,"parent_index":5897},"name":"StargateTeleportParams","canonical_name":"StargateAdapter.StargateTeleportParams","type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},"members":[{"id":6009,"node_type":44,"src":{"id":6010,"line":1256,"column":8,"start":43954,"end":43971,"length":18,"parent_index":6007},"scope":5964,"name":"dstChainId","type_name":{"id":6011,"node_type":30,"src":{"id":6012,"line":1256,"column":8,"start":43954,"end":43959,"length":6,"parent_index":6009},"name":"uint16","type_description":{"type_identifier":"t_uint16","type_string":"uint16"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":6013,"node_type":44,"src":{"id":6014,"line":1257,"column":8,"start":44006,"end":44019,"length":14,"parent_index":6007},"scope":5964,"name":"token","type_name":{"id":6015,"node_type":30,"src":{"id":6016,"line":1257,"column":8,"start":44006,"end":44012,"length":7,"parent_index":6013},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":6017,"node_type":44,"src":{"id":6018,"line":1258,"column":8,"start":44054,"end":44071,"length":18,"parent_index":6007},"scope":5964,"name":"srcPoolId","type_name":{"id":6019,"node_type":30,"src":{"id":6020,"line":1258,"column":8,"start":44054,"end":44060,"length":7,"parent_index":6017},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":6021,"node_type":44,"src":{"id":6022,"line":1259,"column":8,"start":44105,"end":44122,"length":18,"parent_index":6007},"scope":5964,"name":"dstPoolId","type_name":{"id":6023,"node_type":30,"src":{"id":6024,"line":1259,"column":8,"start":44105,"end":44111,"length":7,"parent_index":6021},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":6025,"node_type":44,"src":{"id":6026,"line":1260,"column":8,"start":44156,"end":44170,"length":15,"parent_index":6007},"scope":5964,"name":"amount","type_name":{"id":6027,"node_type":30,"src":{"id":6028,"line":1260,"column":8,"start":44156,"end":44162,"length":7,"parent_index":6025},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":6029,"node_type":44,"src":{"id":6030,"line":1261,"column":8,"start":44200,"end":44217,"length":18,"parent_index":6007},"scope":5964,"name":"amountMin","type_name":{"id":6031,"node_type":30,"src":{"id":6032,"line":1261,"column":8,"start":44200,"end":44206,"length":7,"parent_index":6029},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":6033,"node_type":44,"src":{"id":6034,"line":1262,"column":8,"start":44255,"end":44273,"length":19,"parent_index":6007},"scope":5964,"name":"dustAmount","type_name":{"id":6035,"node_type":30,"src":{"id":6036,"line":1262,"column":8,"start":44255,"end":44261,"length":7,"parent_index":6033},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":6037,"node_type":44,"src":{"id":6038,"line":1263,"column":8,"start":44327,"end":44343,"length":17,"parent_index":6007},"scope":5964,"name":"receiver","type_name":{"id":6039,"node_type":30,"src":{"id":6040,"line":1263,"column":8,"start":44327,"end":44333,"length":7,"parent_index":6037},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":6041,"node_type":44,"src":{"id":6042,"line":1264,"column":8,"start":44380,"end":44390,"length":11,"parent_index":6007},"scope":5964,"name":"to","type_name":{"id":6043,"node_type":30,"src":{"id":6044,"line":1264,"column":8,"start":44380,"end":44386,"length":7,"parent_index":6041},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"visibility":1,"state_mutability":4},{"id":6045,"node_type":44,"src":{"id":6046,"line":1265,"column":8,"start":44468,"end":44479,"length":12,"parent_index":6007},"scope":5964,"name":"gas","type_name":{"id":6047,"node_type":30,"src":{"id":6048,"line":1265,"column":8,"start":44468,"end":44474,"length":7,"parent_index":6045},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1,"state_mutability":1},{"id":6049,"node_type":44,"src":{"id":6050,"line":1266,"column":8,"start":44538,"end":44556,"length":19,"parent_index":6007},"scope":5964,"name":"srcContext","type_name":{"id":6051,"node_type":30,"src":{"id":6052,"line":1266,"column":8,"start":44538,"end":44544,"length":7,"parent_index":6049},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"visibility":1,"state_mutability":1}],"visibility":3,"storage_location":1},{"id":6054,"name":"approveToStargateRouter","node_type":42,"kind":41,"src":{"id":6055,"line":1271,"column":4,"start":44697,"end":44830,"length":134,"parent_index":5964},"body":{"id":6065,"node_type":46,"kind":0,"src":{"id":6066,"line":1271,"column":60,"start":44753,"end":44830,"length":78,"parent_index":6054},"implemented":true,"statements":[{"id":6067,"node_type":24,"kind":24,"src":{"id":6068,"line":1272,"column":8,"start":44763,"end":44823,"length":61,"parent_index":6065},"argument_types":[{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"},{"type_identifier":"","type_string":"type"}],"arguments":[{"id":6073,"node_type":24,"kind":24,"src":{"id":6074,"line":1272,"column":26,"start":44781,"end":44803,"length":23,"parent_index":6067},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":6079,"node_type":16,"src":{"id":6080,"line":1272,"column":34,"start":44789,"end":44802,"length":14,"parent_index":6073},"name":"stargateRouter","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":6075,"node_type":16,"src":{"id":6076,"line":1272,"column":26,"start":44781,"end":44787,"length":7,"parent_index":6073},"name":"address","type_name":{"id":6077,"node_type":30,"src":{"id":6078,"line":1272,"column":26,"start":44781,"end":44787,"length":7,"parent_index":6075},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},{"id":6081,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6082,"line":1272,"column":51,"start":44806,"end":44822,"length":17,"parent_index":6067},"expression":{"id":6083,"node_type":16,"name":"type","src":{"id":6084,"line":1272,"column":51,"start":44806,"end":44818,"length":13,"parent_index":6081},"type_description":{"type_identifier":"","type_string":"type"}},"member_name":"max","argument_types":[{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}],"type_description":{"type_identifier":"","type_string":"type"}}],"expression":{"id":6069,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6070,"line":1272,"column":8,"start":44763,"end":44779,"length":17,"parent_index":6067},"expression":{"id":6071,"node_type":16,"src":{"id":6072,"line":1272,"column":8,"start":44763,"end":44767,"length":5,"parent_index":6069},"name":"token","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":6071,"is_pure":false},"member_name":"safeApprove","argument_types":[],"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_$","type_string":"function(function(function()),type)"}}]},"implemented":true,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":6056,"node_type":43,"src":{"id":6057,"line":1271,"column":37,"start":44730,"end":44741,"length":12,"parent_index":6054},"parameters":[{"id":6058,"node_type":44,"src":{"id":6059,"line":1271,"column":37,"start":44730,"end":44741,"length":12,"parent_index":6056},"scope":6054,"name":"token","type_name":{"id":6060,"node_type":69,"src":{"id":6061,"line":1271,"column":37,"start":44730,"end":44735,"length":6,"parent_index":6058},"type_description":{"type_identifier":"t_function_$","type_string":"function()"},"path_node":{"id":6062,"name":"IERC20","node_type":52,"referenced_declaration":2570,"src":{"id":6063,"line":1271,"column":37,"start":44730,"end":44735,"length":6,"parent_index":6060}},"referenced_declaration":2570},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_function_$","type_string":"function()"}]},"return_parameters":{"id":6064,"node_type":43,"src":{"id":6055,"line":1271,"column":4,"start":44697,"end":44830,"length":134,"parent_index":6054},"parameters":[],"parameter_types":[]},"scope":5964,"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},{"id":6086,"name":"_stargateTeleport","node_type":42,"kind":41,"src":{"id":6087,"line":1282,"column":4,"start":45470,"end":46533,"length":1064,"parent_index":5964},"body":{"id":6112,"node_type":46,"kind":0,"src":{"id":6113,"line":1287,"column":15,"start":45653,"end":46533,"length":881,"parent_index":6086},"implemented":true,"statements":[{"id":6114,"node_type":44,"src":{"id":6115,"line":1288,"column":8,"start":45663,"end":45750,"length":88,"parent_index":6112},"assignments":[6116],"declarations":[{"is_constant":false,"id":6116,"state_mutability":1,"name":"payload","node_type":44,"scope":6112,"src":{"id":6117,"line":1288,"column":8,"start":45663,"end":45682,"length":20,"parent_index":6114},"is_state_variable":false,"storage_location":2,"type_name":{"id":6118,"node_type":30,"src":{"id":6119,"line":1288,"column":8,"start":45663,"end":45667,"length":5,"parent_index":6116},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":6120,"node_type":24,"kind":24,"src":{"id":6121,"line":1288,"column":31,"start":45686,"end":45749,"length":64,"parent_index":6114},"argument_types":[{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_uint8","type_string":"uint8"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}],"arguments":[{"id":6126,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6127,"line":1288,"column":42,"start":45697,"end":45705,"length":9,"parent_index":6120},"expression":{"id":6128,"node_type":16,"src":{"id":6129,"line":1288,"column":42,"start":45697,"end":45702,"length":6,"parent_index":6126},"name":"params","type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},"overloaded_declarations":[],"referenced_declaration":6128,"is_pure":false},"member_name":"to","argument_types":[],"type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}},{"id":6130,"node_type":16,"src":{"id":6131,"line":1288,"column":53,"start":45708,"end":45714,"length":7,"parent_index":6120},"name":"actions","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"overloaded_declarations":[],"referenced_declaration":6130,"is_pure":false,"argument_types":[{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}]},{"id":6132,"node_type":16,"src":{"id":6133,"line":1288,"column":62,"start":45717,"end":45722,"length":6,"parent_index":6120},"name":"values","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":6132,"is_pure":false,"argument_types":[{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_uint8","type_string":"uint8"}]},{"id":6134,"node_type":16,"src":{"id":6135,"line":1288,"column":70,"start":45725,"end":45729,"length":5,"parent_index":6120},"name":"datas","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":6134,"is_pure":false,"argument_types":[{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_uint8","type_string":"uint8"},{"type_identifier":"t_uint256","type_string":"uint256"}]},{"id":6136,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6137,"line":1288,"column":77,"start":45732,"end":45748,"length":17,"parent_index":6120},"expression":{"id":6138,"node_type":16,"src":{"id":6139,"line":1288,"column":77,"start":45732,"end":45737,"length":6,"parent_index":6136},"name":"params","type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},"overloaded_declarations":[],"referenced_declaration":6138,"is_pure":false},"member_name":"srcContext","argument_types":[{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_uint8","type_string":"uint8"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_bytes","type_string":"bytes"}],"type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}}],"expression":{"id":6122,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6123,"line":1288,"column":31,"start":45686,"end":45695,"length":10,"parent_index":6120},"expression":{"id":6124,"node_type":16,"src":{"id":6125,"line":1288,"column":31,"start":45686,"end":45688,"length":3,"parent_index":6122},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"encode","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_uint8$_t_uint256$_t_bytes$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$","type_string":"function(struct StargateAdapter.StargateTeleportParams,uint8,uint256,bytes,struct StargateAdapter.StargateTeleportParams)"}}},{"id":6140,"node_type":24,"kind":24,"src":{"id":6141,"line":1290,"column":8,"start":45761,"end":46425,"length":665,"parent_index":6112},"argument_types":[{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_function_payable$_t_address$","type_string":"function(address) payable"},{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$","type_string":"function(struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,function(struct StargateAdapter.StargateTeleportParams))"},{"type_identifier":"t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$","type_string":"function(struct StargateAdapter.StargateTeleportParams)"},{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":6148,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6149,"line":1291,"column":12,"start":45824,"end":45840,"length":17,"parent_index":6140},"expression":{"id":6150,"node_type":16,"src":{"id":6151,"line":1291,"column":12,"start":45824,"end":45829,"length":6,"parent_index":6148},"name":"params","type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},"overloaded_declarations":[],"referenced_declaration":6150,"is_pure":false},"member_name":"dstChainId","argument_types":[],"type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}},{"id":6152,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6153,"line":1292,"column":12,"start":45855,"end":45870,"length":16,"parent_index":6140},"expression":{"id":6154,"node_type":16,"src":{"id":6155,"line":1292,"column":12,"start":45855,"end":45860,"length":6,"parent_index":6152},"name":"params","type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},"overloaded_declarations":[],"referenced_declaration":6154,"is_pure":false},"member_name":"srcPoolId","argument_types":[{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}],"type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}},{"id":6156,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6157,"line":1293,"column":12,"start":45885,"end":45900,"length":16,"parent_index":6140},"expression":{"id":6158,"node_type":16,"src":{"id":6159,"line":1293,"column":12,"start":45885,"end":45890,"length":6,"parent_index":6156},"name":"params","type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},"overloaded_declarations":[],"referenced_declaration":6158,"is_pure":false},"member_name":"dstPoolId","argument_types":[{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}],"type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}},{"id":6160,"node_type":84,"src":{"id":6161,"line":1294,"column":12,"start":45915,"end":45933,"length":19,"parent_index":6140},"arguments":[{"id":6162,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6163,"line":1294,"column":20,"start":45923,"end":45932,"length":10,"parent_index":6160},"expression":{"id":6164,"node_type":16,"src":{"id":6165,"line":1294,"column":20,"start":45923,"end":45925,"length":3,"parent_index":6162},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}}],"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"type_description":{"type_identifier":"t_function_payable$_t_address$","type_string":"function(address) payable"},"payable":true},{"id":6167,"node_type":97,"src":{"id":6168,"line":1295,"column":12,"start":45966,"end":46079,"length":114,"parent_index":6140},"expressions":[{"id":6169,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":6170,"line":1295,"column":12,"start":45966,"end":45983,"length":18,"parent_index":6167},"operator":12,"left_expression":{"id":6171,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6172,"line":1295,"column":12,"start":45966,"end":45978,"length":13,"parent_index":6169},"expression":{"id":6173,"node_type":16,"src":{"id":6174,"line":1295,"column":12,"start":45966,"end":45971,"length":6,"parent_index":6171},"name":"params","type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},"overloaded_declarations":[],"referenced_declaration":6173,"is_pure":false},"member_name":"amount","argument_types":[],"type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}},"right_expression":{"id":6175,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":6176,"line":1295,"column":29,"start":45983,"end":45983,"length":1,"parent_index":6169},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},{"id":6177,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6178,"line":1296,"column":18,"start":46003,"end":46015,"length":13,"parent_index":6167},"expression":{"id":6179,"node_type":16,"src":{"id":6180,"line":1296,"column":18,"start":46003,"end":46008,"length":6,"parent_index":6177},"name":"params","type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},"overloaded_declarations":[],"referenced_declaration":6179,"is_pure":false},"member_name":"amount","argument_types":[],"type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}},{"id":6181,"node_type":24,"kind":24,"src":{"id":6182,"line":1297,"column":18,"start":46035,"end":46079,"length":45,"parent_index":6167},"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}],"arguments":[{"id":6193,"node_type":24,"kind":24,"src":{"id":6194,"line":1297,"column":49,"start":46066,"end":46078,"length":13,"parent_index":6181},"argument_types":[{"type_identifier":"t_contract$_StargateAdapter_$5897","type_string":"contract StargateAdapter"}],"arguments":[{"id":6199,"node_type":16,"src":{"id":6200,"line":1297,"column":57,"start":46074,"end":46077,"length":4,"parent_index":6193},"name":"this","type_description":{"type_identifier":"t_contract$_StargateAdapter_$5897","type_string":"contract StargateAdapter"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":6195,"node_type":16,"src":{"id":6196,"line":1297,"column":49,"start":46066,"end":46072,"length":7,"parent_index":6193},"name":"address","type_name":{"id":6197,"node_type":30,"src":{"id":6198,"line":1297,"column":49,"start":46066,"end":46072,"length":7,"parent_index":6195},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}],"expression":{"id":6183,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6184,"line":1297,"column":18,"start":46035,"end":46064,"length":30,"parent_index":6181},"expression":{"id":6185,"node_type":24,"kind":24,"src":{"id":6186,"line":1297,"column":18,"start":46035,"end":46054,"length":20,"parent_index":6183},"argument_types":[{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}],"arguments":[{"id":6189,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6190,"line":1297,"column":25,"start":46042,"end":46053,"length":12,"parent_index":6185},"expression":{"id":6191,"node_type":16,"src":{"id":6192,"line":1297,"column":25,"start":46042,"end":46047,"length":6,"parent_index":6189},"name":"params","type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},"overloaded_declarations":[],"referenced_declaration":6191,"is_pure":false},"member_name":"token","argument_types":[],"type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}}],"expression":{"id":6187,"node_type":16,"src":{"id":6188,"line":1297,"column":18,"start":46035,"end":46040,"length":6,"parent_index":6185},"name":"IERC20","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$","type_string":"function(struct StargateAdapter.StargateTeleportParams)"}},"member_name":"balanceOf","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$","type_string":"function(struct StargateAdapter.StargateTeleportParams)"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_address$","type_string":"function(function(address))"}}],"type_descriptions":[{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_function_$_t_function_$_t_address$","type_string":"function(function(address))"}],"type_description":null},{"id":6201,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6202,"line":1298,"column":12,"start":46094,"end":46109,"length":16,"parent_index":6140},"expression":{"id":6203,"node_type":16,"src":{"id":6204,"line":1298,"column":12,"start":46094,"end":46099,"length":6,"parent_index":6201},"name":"params","type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},"overloaded_declarations":[],"referenced_declaration":6203,"is_pure":false},"member_name":"amountMin","argument_types":[{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_function_payable$_t_address$","type_string":"function(address) payable"},{"type_identifier":"t_bool","type_string":"bool"}],"type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}},{"id":6205,"node_type":24,"kind":24,"src":{"id":6206,"line":1299,"column":12,"start":46124,"end":46316,"length":193,"parent_index":6140},"argument_types":[{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$","type_string":"function(struct StargateAdapter.StargateTeleportParams)"}],"arguments":[{"id":6211,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6212,"line":1300,"column":16,"start":46165,"end":46174,"length":10,"parent_index":6205},"expression":{"id":6213,"node_type":16,"src":{"id":6214,"line":1300,"column":16,"start":46165,"end":46170,"length":6,"parent_index":6211},"name":"params","type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},"overloaded_declarations":[],"referenced_declaration":6213,"is_pure":false},"member_name":"gas","argument_types":[],"type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}},{"id":6215,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6216,"line":1301,"column":16,"start":46235,"end":46251,"length":17,"parent_index":6205},"expression":{"id":6217,"node_type":16,"src":{"id":6218,"line":1301,"column":16,"start":46235,"end":46240,"length":6,"parent_index":6215},"name":"params","type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},"overloaded_declarations":[],"referenced_declaration":6217,"is_pure":false},"member_name":"dustAmount","argument_types":[{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}],"type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}},{"id":6219,"node_type":24,"kind":24,"src":{"id":6220,"line":1302,"column":16,"start":46270,"end":46302,"length":33,"parent_index":6205},"argument_types":[{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}],"arguments":[{"id":6225,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6226,"line":1302,"column":33,"start":46287,"end":46301,"length":15,"parent_index":6219},"expression":{"id":6227,"node_type":16,"src":{"id":6228,"line":1302,"column":33,"start":46287,"end":46292,"length":6,"parent_index":6225},"name":"params","type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},"overloaded_declarations":[],"referenced_declaration":6227,"is_pure":false},"member_name":"receiver","argument_types":[],"type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}}],"expression":{"id":6221,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6222,"line":1302,"column":16,"start":46270,"end":46285,"length":16,"parent_index":6219},"expression":{"id":6223,"node_type":16,"src":{"id":6224,"line":1302,"column":16,"start":46270,"end":46272,"length":3,"parent_index":6221},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"encodePacked","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$","type_string":"function(struct StargateAdapter.StargateTeleportParams)"}}],"expression":{"id":6207,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6208,"line":1299,"column":12,"start":46124,"end":46146,"length":23,"parent_index":6205},"expression":{"id":6209,"node_type":16,"src":{"id":6210,"line":1299,"column":12,"start":46124,"end":46138,"length":15,"parent_index":6207},"name":"IStargateRouter","type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"},"overloaded_declarations":[],"referenced_declaration":1012,"is_pure":false},"member_name":"lzTxObj","argument_types":[],"type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"}},"type_description":{"type_identifier":"t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$","type_string":"function(struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,function(struct StargateAdapter.StargateTeleportParams))"}},{"id":6229,"node_type":24,"kind":24,"src":{"id":6230,"line":1304,"column":12,"start":46331,"end":46363,"length":33,"parent_index":6140},"argument_types":[{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}],"arguments":[{"id":6235,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6236,"line":1304,"column":29,"start":46348,"end":46362,"length":15,"parent_index":6229},"expression":{"id":6237,"node_type":16,"src":{"id":6238,"line":1304,"column":29,"start":46348,"end":46353,"length":6,"parent_index":6235},"name":"params","type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},"overloaded_declarations":[],"referenced_declaration":6237,"is_pure":false},"member_name":"receiver","argument_types":[],"type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}}],"expression":{"id":6231,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6232,"line":1304,"column":12,"start":46331,"end":46346,"length":16,"parent_index":6229},"expression":{"id":6233,"node_type":16,"src":{"id":6234,"line":1304,"column":12,"start":46331,"end":46333,"length":3,"parent_index":6231},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"encodePacked","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$","type_string":"function(struct StargateAdapter.StargateTeleportParams)"}},{"id":6239,"node_type":16,"src":{"id":6240,"line":1305,"column":12,"start":46409,"end":46415,"length":7,"parent_index":6140},"name":"payload","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":6114,"is_pure":false,"argument_types":[{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_function_payable$_t_address$","type_string":"function(address) payable"},{"type_identifier":"t_bool","type_string":"bool"},{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$","type_string":"function(struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,function(struct StargateAdapter.StargateTeleportParams))"},{"type_identifier":"t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$","type_string":"function(struct StargateAdapter.StargateTeleportParams)"}]}],"expression":{"id":6142,"node_type":93,"kind":93,"src":{"id":6143,"line":1290,"column":8,"start":45761,"end":45809,"length":49,"parent_index":6140},"expression":{"id":6144,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6145,"line":1290,"column":8,"start":45761,"end":45779,"length":19,"parent_index":6142},"expression":{"id":6146,"node_type":16,"src":{"id":6147,"line":1290,"column":8,"start":45761,"end":45774,"length":14,"parent_index":6144},"name":"stargateRouter","type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"},"overloaded_declarations":[],"referenced_declaration":1385,"is_pure":false},"member_name":"swap","argument_types":[],"type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"}},"type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"}},"type_description":{"type_identifier":"t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_payable$_t_address$_t_bool$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_bytes$","type_string":"function(struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,function(address) payable,bool,struct StargateAdapter.StargateTeleportParams,function(struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,function(struct StargateAdapter.StargateTeleportParams)),function(struct StargateAdapter.StargateTeleportParams),bytes)"}},{"id":6241,"node_type":24,"kind":24,"src":{"id":6242,"line":1308,"column":8,"start":46437,"end":46470,"length":34,"parent_index":6112},"argument_types":[{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0x0001"}],"arguments":[{"id":6247,"node_type":17,"kind":49,"value":"0x0001","hex_value":"307830303031","src":{"id":6248,"line":1308,"column":35,"start":46464,"end":46469,"length":6,"parent_index":6241},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0x0001"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true}],"expression":{"id":6243,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6244,"line":1308,"column":8,"start":46437,"end":46462,"length":26,"parent_index":6241},"expression":{"id":6245,"node_type":16,"src":{"id":6246,"line":1308,"column":8,"start":46437,"end":46450,"length":14,"parent_index":6243},"name":"stargateWidget","type_description":{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"},"overloaded_declarations":[],"referenced_declaration":1392,"is_pure":false},"member_name":"partnerSwap","argument_types":[],"type_description":{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"}},"type_description":{"type_identifier":"t_function_$_t_rational_0_by_1$","type_string":"function(int_const 0x0001)"}},{"id":6249,"node_type":64,"src":{"id":6250,"line":1310,"column":8,"start":46482,"end":46527,"length":46,"parent_index":6086},"arguments":[{"id":6251,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6252,"line":1310,"column":35,"start":46509,"end":46525,"length":17,"parent_index":6112},"expression":{"id":6253,"node_type":16,"src":{"id":6254,"line":1310,"column":35,"start":46509,"end":46514,"length":6,"parent_index":6251},"name":"params","type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},"overloaded_declarations":[],"referenced_declaration":6253,"is_pure":false},"member_name":"srcContext","argument_types":[],"type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"}}],"expression":{"id":6255,"node_type":16,"src":{"id":6256,"line":1310,"column":13,"start":46487,"end":46507,"length":21,"parent_index":6112},"name":"StargateSushiXSwapSrc","type_description":{"type_identifier":"t_event\u0026_StargateAdapter_StargateSushiXSwapSrc_\u00265987","type_string":"event StargateAdapter.StargateSushiXSwapSrc"},"overloaded_declarations":[],"referenced_declaration":5987,"is_pure":false}}]},"implemented":true,"visibility":1,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":6088,"node_type":43,"src":{"id":6089,"line":1283,"column":8,"start":45506,"end":45636,"length":131,"parent_index":6086},"parameters":[{"id":6090,"node_type":44,"src":{"id":6091,"line":1283,"column":8,"start":45506,"end":45541,"length":36,"parent_index":6088},"scope":6086,"name":"params","type_name":{"id":6092,"node_type":69,"src":{"id":6093,"line":1283,"column":8,"start":45506,"end":45527,"length":22,"parent_index":6090},"type_description":{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},"path_node":{"id":6094,"name":"StargateTeleportParams","node_type":52,"referenced_declaration":6007,"src":{"id":6095,"line":1283,"column":8,"start":45506,"end":45527,"length":22,"parent_index":6092}},"referenced_declaration":6007},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6096,"node_type":44,"src":{"id":6097,"line":1284,"column":8,"start":45552,"end":45573,"length":22,"parent_index":6088},"scope":6086,"name":"actions","type_name":{"id":6098,"node_type":16,"src":{"id":6100,"line":1284,"column":8,"start":45552,"end":45556,"length":5,"parent_index":6096},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6101,"node_type":44,"src":{"id":6102,"line":1285,"column":8,"start":45584,"end":45606,"length":23,"parent_index":6088},"scope":6086,"name":"values","type_name":{"id":6103,"node_type":16,"src":{"id":6105,"line":1285,"column":8,"start":45584,"end":45590,"length":7,"parent_index":6101},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6106,"node_type":44,"src":{"id":6107,"line":1286,"column":8,"start":45617,"end":45636,"length":20,"parent_index":6088},"scope":6086,"name":"datas","type_name":{"id":6108,"node_type":16,"src":{"id":6110,"line":1286,"column":8,"start":45617,"end":45621,"length":5,"parent_index":6106},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_struct$_StargateAdapter_StargateTeleportParams_$6007","type_string":"struct StargateAdapter.StargateTeleportParams"},{"type_identifier":"t_uint8","type_string":"uint8"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":6111,"node_type":43,"src":{"id":6087,"line":1282,"column":4,"start":45470,"end":46533,"length":1064,"parent_index":6086},"parameters":[],"parameter_types":[]},"scope":5964,"type_description":{"type_identifier":"t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_uint8$_t_uint256$_t_bytes$","type_string":"function(struct StargateAdapter.StargateTeleportParams,uint8,uint256,bytes)"}},{"id":6258,"name":"getFee","node_type":42,"kind":41,"src":{"id":6259,"line":1321,"column":4,"start":47037,"end":47611,"length":575,"parent_index":5964},"body":{"id":6296,"node_type":46,"kind":0,"src":{"id":6297,"line":1328,"column":51,"start":47270,"end":47611,"length":342,"parent_index":6258},"implemented":true,"statements":[{"id":6298,"node_type":81,"src":{"id":6299,"line":1329,"column":8,"start":47280,"end":47605,"length":326,"parent_index":6296},"expression":{"id":6300,"node_type":27,"src":{"id":6301,"line":1329,"column":8,"start":47280,"end":47604,"length":325,"parent_index":6296},"operator":11,"left_expression":{"id":6302,"node_type":60,"src":{"id":6303,"line":1329,"column":8,"start":47280,"end":47285,"length":6,"parent_index":6300},"is_constant":false,"is_pure":false,"components":[{"id":6304,"node_type":16,"src":{"id":6305,"line":1329,"column":9,"start":47281,"end":47281,"length":1,"parent_index":6302},"name":"a","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":6288,"is_pure":false},{"id":6306,"node_type":16,"src":{"id":6307,"line":1329,"column":12,"start":47284,"end":47284,"length":1,"parent_index":6302},"name":"b","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":6292,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_uint256_$_t_uint256$","type_string":"tuple(uint256,uint256)"}},"right_expression":{"id":6308,"node_type":24,"kind":24,"src":{"id":6309,"line":1329,"column":17,"start":47289,"end":47604,"length":316,"parent_index":6300},"argument_types":[{"type_identifier":"t_uint16","type_string":"uint16"},{"type_identifier":"t_uint8","type_string":"uint8"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"},{"type_identifier":"t_function_$_t_uint256$_t_uint256$_t_function_$_t_address$","type_string":"function(uint256,uint256,function(address))"}],"arguments":[{"id":6314,"node_type":16,"src":{"id":6315,"line":1330,"column":12,"start":47335,"end":47345,"length":11,"parent_index":6308},"name":"_dstChainId","type_description":{"type_identifier":"t_uint16","type_string":"uint16"},"overloaded_declarations":[],"referenced_declaration":6314,"is_pure":false},{"id":6316,"node_type":16,"src":{"id":6317,"line":1331,"column":12,"start":47360,"end":47372,"length":13,"parent_index":6308},"name":"_functionType","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"overloaded_declarations":[],"referenced_declaration":6316,"is_pure":false,"argument_types":[{"type_identifier":"t_uint16","type_string":"uint16"}]},{"id":6318,"node_type":24,"kind":24,"src":{"id":6319,"line":1332,"column":12,"start":47387,"end":47413,"length":27,"parent_index":6308},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":6324,"node_type":16,"src":{"id":6325,"line":1332,"column":29,"start":47404,"end":47412,"length":9,"parent_index":6318},"name":"_receiver","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":6324,"is_pure":false}],"expression":{"id":6320,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6321,"line":1332,"column":12,"start":47387,"end":47402,"length":16,"parent_index":6318},"expression":{"id":6322,"node_type":16,"src":{"id":6323,"line":1332,"column":12,"start":47387,"end":47389,"length":3,"parent_index":6320},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"encodePacked","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":6326,"node_type":24,"kind":24,"src":{"id":6327,"line":1333,"column":12,"start":47428,"end":47447,"length":20,"parent_index":6308},"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"}],"arguments":[{"id":6332,"node_type":16,"src":{"id":6333,"line":1333,"column":23,"start":47439,"end":47446,"length":8,"parent_index":6326},"name":"_payload","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":6332,"is_pure":false}],"expression":{"id":6328,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6329,"line":1333,"column":12,"start":47428,"end":47437,"length":10,"parent_index":6326},"expression":{"id":6330,"node_type":16,"src":{"id":6331,"line":1333,"column":12,"start":47428,"end":47430,"length":3,"parent_index":6328},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"encode","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_bytes$","type_string":"function(bytes)"}},{"id":6334,"node_type":24,"kind":24,"src":{"id":6335,"line":1334,"column":12,"start":47462,"end":47594,"length":133,"parent_index":6308},"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}],"arguments":[{"id":6340,"node_type":16,"src":{"id":6341,"line":1335,"column":16,"start":47503,"end":47506,"length":4,"parent_index":6334},"name":"_gas","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":6340,"is_pure":false},{"id":6342,"node_type":16,"src":{"id":6343,"line":1336,"column":16,"start":47525,"end":47535,"length":11,"parent_index":6334},"name":"_dustAmount","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":6342,"is_pure":false,"argument_types":[{"type_identifier":"t_uint256","type_string":"uint256"}]},{"id":6344,"node_type":24,"kind":24,"src":{"id":6345,"line":1337,"column":16,"start":47554,"end":47580,"length":27,"parent_index":6334},"argument_types":[{"type_identifier":"t_address","type_string":"address"}],"arguments":[{"id":6350,"node_type":16,"src":{"id":6351,"line":1337,"column":33,"start":47571,"end":47579,"length":9,"parent_index":6344},"name":"_receiver","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":6350,"is_pure":false}],"expression":{"id":6346,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6347,"line":1337,"column":16,"start":47554,"end":47569,"length":16,"parent_index":6344},"expression":{"id":6348,"node_type":16,"src":{"id":6349,"line":1337,"column":16,"start":47554,"end":47556,"length":3,"parent_index":6346},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"encodePacked","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}],"expression":{"id":6336,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6337,"line":1334,"column":12,"start":47462,"end":47484,"length":23,"parent_index":6334},"expression":{"id":6338,"node_type":16,"src":{"id":6339,"line":1334,"column":12,"start":47462,"end":47476,"length":15,"parent_index":6336},"name":"IStargateRouter","type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"},"overloaded_declarations":[],"referenced_declaration":1012,"is_pure":false},"member_name":"lzTxObj","argument_types":[],"type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"}},"type_description":{"type_identifier":"t_function_$_t_uint256$_t_uint256$_t_function_$_t_address$","type_string":"function(uint256,uint256,function(address))"}}],"expression":{"id":6310,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6311,"line":1329,"column":17,"start":47289,"end":47320,"length":32,"parent_index":6308},"expression":{"id":6312,"node_type":16,"src":{"id":6313,"line":1329,"column":17,"start":47289,"end":47302,"length":14,"parent_index":6310},"name":"stargateRouter","type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"},"overloaded_declarations":[],"referenced_declaration":1385,"is_pure":false},"member_name":"quoteLayerZeroFee","argument_types":[],"type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"}},"type_description":{"type_identifier":"t_function_$_t_uint16$_t_uint8$_t_function_$_t_address$_t_function_$_t_bytes$_t_function_$_t_uint256$_t_uint256$_t_function_$_t_address$","type_string":"function(uint16,uint8,function(address),function(bytes),function(uint256,uint256,function(address)))"}},"type_description":{"type_identifier":"t_tuple_$_t_uint256_$_t_uint256$","type_string":"tuple(uint256,uint256)"}},"type_description":{"type_identifier":"t_tuple_$_t_uint256_$_t_uint256$","type_string":"tuple(uint256,uint256)"}}]},"implemented":true,"visibility":4,"state_mutability":5,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":6260,"node_type":43,"src":{"id":6261,"line":1322,"column":8,"start":47062,"end":47217,"length":156,"parent_index":6258},"parameters":[{"id":6262,"node_type":44,"src":{"id":6263,"line":1322,"column":8,"start":47062,"end":47079,"length":18,"parent_index":6260},"scope":6258,"name":"_dstChainId","type_name":{"id":6264,"node_type":30,"src":{"id":6265,"line":1322,"column":8,"start":47062,"end":47067,"length":6,"parent_index":6262},"name":"uint16","type_description":{"type_identifier":"t_uint16","type_string":"uint16"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6266,"node_type":44,"src":{"id":6267,"line":1323,"column":8,"start":47090,"end":47108,"length":19,"parent_index":6260},"scope":6258,"name":"_functionType","type_name":{"id":6268,"node_type":30,"src":{"id":6269,"line":1323,"column":8,"start":47090,"end":47094,"length":5,"parent_index":6266},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6270,"node_type":44,"src":{"id":6271,"line":1324,"column":8,"start":47119,"end":47135,"length":17,"parent_index":6260},"scope":6258,"name":"_receiver","type_name":{"id":6272,"node_type":30,"src":{"id":6273,"line":1324,"column":8,"start":47119,"end":47125,"length":7,"parent_index":6270},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":6274,"node_type":44,"src":{"id":6275,"line":1325,"column":8,"start":47146,"end":47157,"length":12,"parent_index":6260},"scope":6258,"name":"_gas","type_name":{"id":6276,"node_type":30,"src":{"id":6277,"line":1325,"column":8,"start":47146,"end":47152,"length":7,"parent_index":6274},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6278,"node_type":44,"src":{"id":6279,"line":1326,"column":8,"start":47168,"end":47186,"length":19,"parent_index":6260},"scope":6258,"name":"_dustAmount","type_name":{"id":6280,"node_type":30,"src":{"id":6281,"line":1326,"column":8,"start":47168,"end":47174,"length":7,"parent_index":6278},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6282,"node_type":44,"src":{"id":6283,"line":1327,"column":8,"start":47197,"end":47217,"length":21,"parent_index":6260},"scope":6258,"name":"_payload","type_name":{"id":6284,"node_type":30,"src":{"id":6285,"line":1327,"column":8,"start":47197,"end":47201,"length":5,"parent_index":6282},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint16","type_string":"uint16"},{"type_identifier":"t_uint8","type_string":"uint8"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":6286,"node_type":43,"src":{"id":6287,"line":1328,"column":29,"start":47248,"end":47267,"length":20,"parent_index":6258},"parameters":[{"id":6288,"node_type":44,"src":{"id":6289,"line":1328,"column":29,"start":47248,"end":47256,"length":9,"parent_index":6286},"scope":6258,"name":"a","type_name":{"id":6290,"node_type":30,"src":{"id":6291,"line":1328,"column":29,"start":47248,"end":47254,"length":7,"parent_index":6288},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6292,"node_type":44,"src":{"id":6293,"line":1328,"column":40,"start":47259,"end":47267,"length":9,"parent_index":6286},"scope":6258,"name":"b","type_name":{"id":6294,"node_type":30,"src":{"id":6295,"line":1328,"column":40,"start":47259,"end":47265,"length":7,"parent_index":6292},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_uint256","type_string":"uint256"}]},"scope":5964,"type_description":{"type_identifier":"t_function_$_t_uint16$_t_uint8$_t_address$_t_uint256$_t_uint256$_t_bytes$","type_string":"function(uint16,uint8,address,uint256,uint256,bytes)"}},{"id":6353,"name":"sgReceive","node_type":42,"kind":41,"src":{"id":6354,"line":1346,"column":4,"start":47813,"end":49031,"length":1219,"parent_index":5964},"body":{"id":6384,"node_type":46,"kind":0,"src":{"id":6385,"line":1353,"column":24,"start":47991,"end":49031,"length":1041,"parent_index":6353},"implemented":true,"statements":[{"id":6386,"node_type":48,"src":{"id":6387,"line":1354,"column":0,"start":48001,"end":48070,"length":70,"parent_index":6384},"condition":{"id":6388,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":6389,"line":1354,"column":12,"start":48005,"end":48041,"length":37,"parent_index":6386},"operator":12,"left_expression":{"id":6390,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6391,"line":1354,"column":12,"start":48005,"end":48014,"length":10,"parent_index":6388},"expression":{"id":6392,"node_type":16,"src":{"id":6393,"line":1354,"column":12,"start":48005,"end":48007,"length":3,"parent_index":6390},"name":"msg","type_description":{"type_identifier":"t_magic_message","type_string":"msg"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"sender","argument_types":[],"type_description":{"type_identifier":"t_address","type_string":"address"}},"right_expression":{"id":6394,"node_type":24,"kind":24,"src":{"id":6395,"line":1354,"column":26,"start":48019,"end":48041,"length":23,"parent_index":6388},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":6400,"node_type":16,"src":{"id":6401,"line":1354,"column":34,"start":48027,"end":48040,"length":14,"parent_index":6394},"name":"stargateRouter","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":6396,"node_type":16,"src":{"id":6397,"line":1354,"column":26,"start":48019,"end":48025,"length":7,"parent_index":6394},"name":"address","type_name":{"id":6398,"node_type":30,"src":{"id":6399,"line":1354,"column":26,"start":48019,"end":48025,"length":7,"parent_index":6396},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":6402,"node_type":46,"kind":0,"src":{"id":0,"line":0,"column":0,"start":0,"end":0,"length":0,"parent_index":0},"implemented":false,"statements":[]}},{"id":6403,"node_type":44,"src":{"id":6404,"line":1356,"column":8,"start":48081,"end":48325,"length":245,"parent_index":6384},"assignments":[],"declarations":[],"initial_value":{"id":6405,"node_type":24,"kind":24,"src":{"id":6406,"line":1362,"column":12,"start":48257,"end":48324,"length":68,"parent_index":6403},"argument_types":[{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_tuple_$_t_address_$_t_[_[$_t_uint8]$_$_t_[_[$_t_uint256]$_$_t_[_[$_t_bytes]$_$_t_bytes32$","type_string":"tuple(address,index[uint8],index[uint256],index[bytes],bytes32)"}],"arguments":[{"id":6411,"node_type":16,"src":{"id":6412,"line":1362,"column":23,"start":48268,"end":48274,"length":7,"parent_index":6405},"name":"payload","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":6411,"is_pure":false},{"id":6413,"node_type":60,"src":{"id":6414,"line":1362,"column":32,"start":48277,"end":48323,"length":47,"parent_index":6405},"is_constant":false,"is_pure":false,"components":[{"id":6415,"node_type":16,"src":{"id":6416,"line":1362,"column":33,"start":48278,"end":48284,"length":7,"parent_index":6413},"name":"address","type_name":{"id":6417,"node_type":30,"src":{"id":6418,"line":1362,"column":33,"start":48278,"end":48284,"length":7,"parent_index":6415},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":6419,"node_type":22,"src":{"id":6420,"line":1362,"column":42,"start":48287,"end":48293,"length":7,"parent_index":6413},"index_expression":{"id":6421,"node_type":16,"src":{"id":6422,"line":1362,"column":42,"start":48287,"end":48291,"length":5,"parent_index":6419},"name":"uint8","type_name":{"id":6423,"node_type":30,"src":{"id":6424,"line":1362,"column":42,"start":48287,"end":48291,"length":5,"parent_index":6421},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"base_expression":null,"type_descriptions":[{"type_identifier":"t_uint8","type_string":"uint8"}],"type_description":{"type_identifier":"t_[_[$_t_uint8]$","type_string":"index[uint8]"}},{"id":6425,"node_type":22,"src":{"id":6426,"line":1362,"column":51,"start":48296,"end":48304,"length":9,"parent_index":6413},"index_expression":{"id":6427,"node_type":16,"src":{"id":6428,"line":1362,"column":51,"start":48296,"end":48302,"length":7,"parent_index":6425},"name":"uint256","type_name":{"id":6429,"node_type":30,"src":{"id":6430,"line":1362,"column":51,"start":48296,"end":48302,"length":7,"parent_index":6427},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"base_expression":null,"type_descriptions":[{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_uint256]$","type_string":"index[uint256]"}},{"id":6431,"node_type":22,"src":{"id":6432,"line":1362,"column":62,"start":48307,"end":48313,"length":7,"parent_index":6413},"index_expression":{"id":6433,"node_type":16,"src":{"id":6434,"line":1362,"column":62,"start":48307,"end":48311,"length":5,"parent_index":6431},"name":"bytes","type_name":{"id":6435,"node_type":30,"src":{"id":6436,"line":1362,"column":62,"start":48307,"end":48311,"length":5,"parent_index":6433},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"base_expression":null,"type_descriptions":[{"type_identifier":"t_bytes","type_string":"bytes"}],"type_description":{"type_identifier":"t_[_[$_t_bytes]$","type_string":"index[bytes]"}},{"id":6437,"node_type":16,"src":{"id":6438,"line":1362,"column":71,"start":48316,"end":48322,"length":7,"parent_index":6413},"name":"bytes32","type_name":{"id":6439,"node_type":30,"src":{"id":6440,"line":1362,"column":71,"start":48316,"end":48322,"length":7,"parent_index":6437},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_address_$_t_[_[$_t_uint8]$_$_t_[_[$_t_uint256]$_$_t_[_[$_t_bytes]$_$_t_bytes32$","type_string":"tuple(address,index[uint8],index[uint256],index[bytes],bytes32)"}}],"expression":{"id":6407,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6408,"line":1362,"column":12,"start":48257,"end":48266,"length":10,"parent_index":6405},"expression":{"id":6409,"node_type":16,"src":{"id":6410,"line":1362,"column":12,"start":48257,"end":48259,"length":3,"parent_index":6407},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"decode","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_bytes$_t_tuple_$_t_address_$_t_[_[$_t_uint8]$_$_t_[_[$_t_uint256]$_$_t_[_[$_t_bytes]$_$_t_bytes32$","type_string":"function(bytes,tuple(address,index[uint8],index[uint256],index[bytes],bytes32))"}}},{"id":6441,"node_type":44,"src":{"id":6442,"line":1365,"column":8,"start":48366,"end":48400,"length":35,"parent_index":6384},"assignments":[6443],"declarations":[{"is_constant":false,"id":6443,"state_mutability":1,"name":"limit","node_type":44,"scope":6384,"src":{"id":6444,"line":1365,"column":8,"start":48366,"end":48378,"length":13,"parent_index":6441},"is_state_variable":false,"storage_location":1,"type_name":{"id":6445,"node_type":30,"src":{"id":6446,"line":1365,"column":8,"start":48366,"end":48372,"length":7,"parent_index":6443},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":6447,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":6448,"line":1365,"column":24,"start":48382,"end":48399,"length":18,"parent_index":6441},"operator":2,"left_expression":{"id":6449,"node_type":24,"kind":24,"src":{"id":6450,"line":1365,"column":24,"start":48382,"end":48390,"length":9,"parent_index":6441},"argument_types":[],"arguments":[],"expression":{"id":6451,"node_type":16,"src":{"id":6452,"line":1365,"column":24,"start":48382,"end":48388,"length":7,"parent_index":6449},"name":"gasleft","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}},"right_expression":{"id":6453,"node_type":17,"kind":49,"value":"200000","hex_value":"323030303030","src":{"id":6454,"line":1365,"column":36,"start":48394,"end":48399,"length":6,"parent_index":6447},"type_description":{"type_identifier":"t_rational_200000_by_1","type_string":"int_const 200000"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}},{"id":6455,"node_type":44,"src":{"id":6456,"line":1366,"column":8,"start":48410,"end":48421,"length":12,"parent_index":6384},"assignments":[6457],"declarations":[{"is_constant":false,"id":6457,"state_mutability":1,"name":"failed","node_type":44,"scope":6384,"src":{"id":6458,"line":1366,"column":8,"start":48410,"end":48420,"length":11,"parent_index":6455},"is_state_variable":false,"storage_location":1,"type_name":{"id":6459,"node_type":30,"src":{"id":6460,"line":1366,"column":8,"start":48410,"end":48413,"length":4,"parent_index":6457},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"visibility":1}]},{"id":6461,"node_type":85,"src":{"id":6462,"line":1368,"column":0,"start":48513,"end":48792,"length":280,"parent_index":6384},"body":{"id":6489,"node_type":46,"kind":0,"src":{"id":6490,"line":1374,"column":8,"start":48676,"end":48677,"length":2,"parent_index":6461},"implemented":true,"statements":[]},"kind":86,"expression":{"id":6463,"node_type":24,"kind":24,"src":{"id":6464,"line":1369,"column":12,"start":48529,"end":48666,"length":138,"parent_index":6461},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_function_$$$","type_string":"function(function(),function(function()))"}],"arguments":[{"id":6483,"node_type":16,"src":{"id":6484,"line":1370,"column":16,"start":48599,"end":48605,"length":7,"parent_index":6463},"name":"actions","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":6485,"node_type":16,"src":{"id":6486,"line":1371,"column":16,"start":48624,"end":48629,"length":6,"parent_index":6463},"name":"values","type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]},{"id":6487,"node_type":16,"src":{"id":6488,"line":1372,"column":16,"start":48648,"end":48652,"length":5,"parent_index":6463},"name":"datas","type_description":{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_function_$$$","type_string":"function(function(),function(function()))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}]}],"expression":{"id":6465,"node_type":93,"kind":93,"src":{"id":6466,"line":1369,"column":12,"start":48529,"end":48580,"length":52,"parent_index":6463},"expression":{"id":6467,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6468,"line":1369,"column":12,"start":48529,"end":48568,"length":40,"parent_index":6465},"expression":{"id":6469,"node_type":24,"kind":24,"src":{"id":6470,"line":1369,"column":12,"start":48529,"end":48563,"length":35,"parent_index":6467},"argument_types":[{"type_identifier":"t_function_payable$_t_function_$_t_address$$","type_string":"function(function(address)) payable"}],"arguments":[{"id":6473,"node_type":84,"src":{"id":6474,"line":1369,"column":24,"start":48541,"end":48562,"length":22,"parent_index":6469},"arguments":[{"id":6475,"node_type":24,"kind":24,"src":{"id":6476,"line":1369,"column":32,"start":48549,"end":48561,"length":13,"parent_index":6473},"argument_types":[{"type_identifier":"t_contract$_StargateAdapter_$5897","type_string":"contract StargateAdapter"}],"arguments":[{"id":6481,"node_type":16,"src":{"id":6482,"line":1369,"column":40,"start":48557,"end":48560,"length":4,"parent_index":6475},"name":"this","type_description":{"type_identifier":"t_contract$_StargateAdapter_$5897","type_string":"contract StargateAdapter"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":6477,"node_type":16,"src":{"id":6478,"line":1369,"column":32,"start":48549,"end":48555,"length":7,"parent_index":6475},"name":"address","type_name":{"id":6479,"node_type":30,"src":{"id":6480,"line":1369,"column":32,"start":48549,"end":48555,"length":7,"parent_index":6477},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}}],"argument_types":[{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}],"type_description":{"type_identifier":"t_function_payable$_t_function_$_t_address$$","type_string":"function(function(address)) payable"},"payable":true}],"expression":{"id":6471,"node_type":16,"src":{"id":6472,"line":1369,"column":12,"start":48529,"end":48539,"length":11,"parent_index":6469},"name":"ISushiXSwap","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_payable$_t_function_$_t_address$","type_string":"function(function(function(address)) payable)"}},"member_name":"cook","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_payable$_t_function_$_t_address$","type_string":"function(function(function(address)) payable)"}},"type_description":{"type_identifier":"t_function_$_t_function_payable$_t_function_$_t_address$","type_string":"function(function(function(address)) payable)"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$","type_string":"function(function(),function(function()),function(function(),function(function())))"}},"clauses":[{"id":0,"node_type":87,"kind":88,"src":{"id":6491,"line":1374,"column":0,"start":48679,"end":48792,"length":114,"parent_index":6461},"body":{"id":6498,"node_type":46,"kind":0,"src":{"id":6499,"line":1374,"column":32,"start":48700,"end":48792,"length":93,"parent_index":0},"implemented":true,"statements":[{"id":6500,"node_type":24,"kind":24,"src":{"id":6501,"line":1375,"column":12,"start":48714,"end":48754,"length":41,"parent_index":6498},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"}],"arguments":[{"id":6510,"node_type":16,"src":{"id":6511,"line":1375,"column":40,"start":48742,"end":48743,"length":2,"parent_index":6500},"name":"to","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":6512,"node_type":16,"src":{"id":6513,"line":1375,"column":44,"start":48746,"end":48753,"length":8,"parent_index":6500},"name":"amountLD","type_description":{"type_identifier":"t_function_$_t_function_$$","type_string":"function(function())"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}]}],"expression":{"id":6502,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6503,"line":1375,"column":12,"start":48714,"end":48740,"length":27,"parent_index":6500},"expression":{"id":6504,"node_type":24,"kind":24,"src":{"id":6505,"line":1375,"column":12,"start":48714,"end":48727,"length":14,"parent_index":6502},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":6508,"node_type":16,"src":{"id":6509,"line":1375,"column":19,"start":48721,"end":48726,"length":6,"parent_index":6504},"name":"_token","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":6506,"node_type":16,"src":{"id":6507,"line":1375,"column":12,"start":48714,"end":48719,"length":6,"parent_index":6504},"name":"IERC20","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"member_name":"safeTransfer","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_function_$","type_string":"function(function(),function(function()))"}},{"id":6514,"node_type":81,"src":{"id":6515,"line":1376,"column":12,"start":48769,"end":48782,"length":14,"parent_index":6498},"expression":{"id":6516,"node_type":27,"src":{"id":6517,"line":1376,"column":12,"start":48769,"end":48781,"length":13,"parent_index":6498},"operator":11,"left_expression":{"id":6518,"node_type":16,"src":{"id":6519,"line":1376,"column":12,"start":48769,"end":48774,"length":6,"parent_index":6516},"name":"failed","type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":6002,"is_pure":false},"right_expression":{"id":6520,"node_type":17,"kind":61,"value":"true","hex_value":"74727565","src":{"id":6521,"line":1376,"column":21,"start":48778,"end":48781,"length":4,"parent_index":6516},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"type_description":{"type_identifier":"t_bool","type_string":"bool"}}]},"parameters":{"id":6492,"node_type":43,"src":{"id":6493,"line":1374,"column":18,"start":48686,"end":48697,"length":12,"parent_index":0},"parameters":[{"id":6494,"node_type":44,"src":{"id":6495,"line":1374,"column":18,"start":48686,"end":48697,"length":12,"parent_index":6492},"name":"","type_name":{"id":6496,"node_type":30,"src":{"id":6497,"line":1374,"column":18,"start":48686,"end":48690,"length":5,"parent_index":6494},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_bytes","type_string":"bytes"}]}}]},{"id":6522,"node_type":48,"src":{"id":6523,"line":1380,"column":0,"start":48881,"end":48967,"length":87,"parent_index":6384},"condition":{"id":6524,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":6525,"line":1380,"column":12,"start":48885,"end":48909,"length":25,"parent_index":6522},"operator":7,"left_expression":{"id":6526,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":6527,"line":1380,"column":12,"start":48885,"end":48905,"length":21,"parent_index":6524},"expression":{"id":6528,"node_type":24,"kind":24,"src":{"id":6529,"line":1380,"column":12,"start":48885,"end":48897,"length":13,"parent_index":6526},"argument_types":[{"type_identifier":"t_contract$_StargateAdapter_$5897","type_string":"contract StargateAdapter"}],"arguments":[{"id":6534,"node_type":16,"src":{"id":6535,"line":1380,"column":20,"start":48893,"end":48896,"length":4,"parent_index":6528},"name":"this","type_description":{"type_identifier":"t_contract$_StargateAdapter_$5897","type_string":"contract StargateAdapter"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":6530,"node_type":16,"src":{"id":6531,"line":1380,"column":12,"start":48885,"end":48891,"length":7,"parent_index":6528},"name":"address","type_name":{"id":6532,"node_type":30,"src":{"id":6533,"line":1380,"column":12,"start":48885,"end":48891,"length":7,"parent_index":6530},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"member_name":"balance","argument_types":[],"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},"right_expression":{"id":6536,"node_type":17,"kind":49,"value":"0","hex_value":"30","src":{"id":6537,"line":1380,"column":36,"start":48909,"end":48909,"length":1,"parent_index":6524},"type_description":{"type_identifier":"t_rational_0_by_1","type_string":"int_const 0"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":true},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":6538,"node_type":46,"kind":0,"src":{"id":0,"line":0,"column":0,"start":0,"end":0,"length":0,"parent_index":0},"implemented":false,"statements":[]}},{"id":6539,"node_type":64,"src":{"id":6540,"line":1383,"column":8,"start":48978,"end":49024,"length":47,"parent_index":6353},"arguments":[{"id":6541,"node_type":16,"src":{"id":6542,"line":1383,"column":35,"start":49005,"end":49014,"length":10,"parent_index":6384},"name":"srcContext","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"overloaded_declarations":[],"referenced_declaration":5990,"is_pure":false},{"id":6543,"node_type":16,"src":{"id":6544,"line":1383,"column":47,"start":49017,"end":49022,"length":6,"parent_index":6384},"name":"failed","type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":6455,"is_pure":false}],"expression":{"id":6545,"node_type":16,"src":{"id":6546,"line":1383,"column":13,"start":48983,"end":49003,"length":21,"parent_index":6384},"name":"StargateSushiXSwapDst","type_description":{"type_identifier":"t_event\u0026_StargateAdapter_StargateSushiXSwapDst_\u00265995","type_string":"event StargateAdapter.StargateSushiXSwapDst"},"overloaded_declarations":[],"referenced_declaration":5995,"is_pure":false}}]},"implemented":true,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[{"id":6355,"node_type":63,"name":"sgReceive","src":{"id":6356,"line":1353,"column":15,"start":47982,"end":47989,"length":8,"parent_index":6353},"referenced_declaration":6353,"type_descriptions":{"type_identifier":"t_function_$_t_uint16$_t_bytes$_t_uint256$_t_address$_t_uint256$_t_bytes$","type_string":"function(uint16,bytes,uint256,address,uint256,bytes)"}}],"parameters":{"id":6357,"node_type":43,"src":{"id":6358,"line":1347,"column":8,"start":47841,"end":47965,"length":125,"parent_index":6353},"parameters":[{"id":6359,"node_type":44,"src":{"id":6360,"line":1347,"column":8,"start":47841,"end":47846,"length":6,"parent_index":6357},"scope":6353,"name":"","type_name":{"id":6361,"node_type":30,"src":{"id":6362,"line":1347,"column":8,"start":47841,"end":47846,"length":6,"parent_index":6359},"name":"uint16","type_description":{"type_identifier":"t_uint16","type_string":"uint16"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6363,"node_type":44,"src":{"id":6364,"line":1348,"column":8,"start":47857,"end":47868,"length":12,"parent_index":6357},"scope":6353,"name":"","type_name":{"id":6365,"node_type":30,"src":{"id":6366,"line":1348,"column":8,"start":47857,"end":47861,"length":5,"parent_index":6363},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6367,"node_type":44,"src":{"id":6368,"line":1349,"column":8,"start":47879,"end":47885,"length":7,"parent_index":6357},"scope":6353,"name":"","type_name":{"id":6369,"node_type":30,"src":{"id":6370,"line":1349,"column":8,"start":47879,"end":47885,"length":7,"parent_index":6367},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6371,"node_type":44,"src":{"id":6372,"line":1350,"column":8,"start":47896,"end":47909,"length":14,"parent_index":6357},"scope":6353,"name":"_token","type_name":{"id":6373,"node_type":30,"src":{"id":6374,"line":1350,"column":8,"start":47896,"end":47902,"length":7,"parent_index":6371},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":6375,"node_type":44,"src":{"id":6376,"line":1351,"column":8,"start":47920,"end":47935,"length":16,"parent_index":6357},"scope":6353,"name":"amountLD","type_name":{"id":6377,"node_type":30,"src":{"id":6378,"line":1351,"column":8,"start":47920,"end":47926,"length":7,"parent_index":6375},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6379,"node_type":44,"src":{"id":6380,"line":1352,"column":8,"start":47946,"end":47965,"length":20,"parent_index":6357},"scope":6353,"name":"payload","type_name":{"id":6381,"node_type":30,"src":{"id":6382,"line":1352,"column":8,"start":47946,"end":47950,"length":5,"parent_index":6379},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint16","type_string":"uint16"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":6383,"node_type":43,"src":{"id":6354,"line":1346,"column":4,"start":47813,"end":49031,"length":1219,"parent_index":6353},"parameters":[],"parameter_types":[]},"scope":5964,"type_description":{"type_identifier":"t_function_$_t_uint16$_t_bytes$_t_uint256$_t_address$_t_uint256$_t_bytes$","type_string":"function(uint16,bytes,uint256,address,uint256,bytes)"}}],"linearized_base_contracts":[1354,5964,5963],"base_contracts":[{"id":5965,"node_type":62,"src":{"id":5966,"line":1245,"column":37,"start":43639,"end":43652,"length":14,"parent_index":5964},"base_name":{"id":5967,"node_type":52,"src":{"id":5968,"line":1245,"column":37,"start":43639,"end":43652,"length":14,"parent_index":5964},"name":"ImmutableState","referenced_declaration":1354}},{"id":5969,"node_type":62,"src":{"id":5970,"line":1245,"column":53,"start":43655,"end":43671,"length":17,"parent_index":5964},"base_name":{"id":5971,"node_type":52,"src":{"id":5972,"line":1245,"column":53,"start":43655,"end":43671,"length":17,"parent_index":5964},"name":"IStargateReceiver","referenced_declaration":6650}}],"contract_dependencies":[1354,5963]}],"src":{"id":5898,"line":1245,"column":0,"start":43602,"end":49033,"length":5432,"parent_index":263}},{"id":6547,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":6547,"name":"ISushiXSwap","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ISushiXSwap.sol"},{"id":5897,"name":"BentoAdapter","absolute_path":"BentoAdapter.sol"},{"id":5897,"name":"TokenAdapter","absolute_path":"TokenAdapter.sol"},{"id":5897,"name":"SushiLegacyAdapter","absolute_path":"SushiLegacyAdapter.sol"},{"id":5897,"name":"TridentSwapAdapter","absolute_path":"TridentSwapAdapter.sol"},{"id":5897,"name":"StargateAdapter","absolute_path":"StargateAdapter.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ISushiXSwap.sol","name":"ISushiXSwap","node_type":1,"nodes":[{"id":6589,"node_type":10,"src":{"id":6590,"line":1390,"column":0,"start":49082,"end":49104,"length":23,"parent_index":6547},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":6616,"node_type":29,"src":{"id":0,"line":1392,"column":0,"start":49107,"end":49134,"length":28,"parent_index":6547},"absolute_path":"BentoAdapter.sol","file":"./BentoAdapter.sol","scope":6547,"unit_alias":"","source_unit":5897},{"id":6617,"node_type":29,"src":{"id":0,"line":1393,"column":0,"start":49136,"end":49163,"length":28,"parent_index":6547},"absolute_path":"TokenAdapter.sol","file":"./TokenAdapter.sol","scope":6547,"unit_alias":"","source_unit":5897},{"id":6618,"node_type":29,"src":{"id":0,"line":1394,"column":0,"start":49165,"end":49198,"length":34,"parent_index":6547},"absolute_path":"SushiLegacyAdapter.sol","file":"./SushiLegacyAdapter.sol","scope":6547,"unit_alias":"","source_unit":5897},{"id":6619,"node_type":29,"src":{"id":0,"line":1395,"column":0,"start":49200,"end":49233,"length":34,"parent_index":6547},"absolute_path":"TridentSwapAdapter.sol","file":"./TridentSwapAdapter.sol","scope":6547,"unit_alias":"","source_unit":5897},{"id":6620,"node_type":29,"src":{"id":0,"line":1396,"column":0,"start":49235,"end":49265,"length":31,"parent_index":6547},"absolute_path":"StargateAdapter.sol","file":"./StargateAdapter.sol","scope":6547,"unit_alias":"","source_unit":5897},{"id":6627,"name":"ISushiXSwap","node_type":35,"src":{"id":0,"line":1398,"column":0,"start":49268,"end":49429,"length":162,"parent_index":6547},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":6629,"name":"cook","node_type":42,"kind":41,"src":{"id":6630,"line":1399,"column":4,"start":49296,"end":49427,"length":132,"parent_index":6627},"body":{"id":6649,"node_type":46,"kind":0,"src":{"id":6630,"line":1399,"column":4,"start":49296,"end":49427,"length":132,"parent_index":6629},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":3,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":6631,"node_type":43,"src":{"id":6632,"line":1400,"column":8,"start":49319,"end":49403,"length":85,"parent_index":6629},"parameters":[{"id":6633,"node_type":44,"src":{"id":6634,"line":1400,"column":8,"start":49319,"end":49340,"length":22,"parent_index":6631},"scope":6629,"name":"actions","type_name":{"id":6635,"node_type":16,"src":{"id":6637,"line":1400,"column":8,"start":49319,"end":49323,"length":5,"parent_index":6633},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6638,"node_type":44,"src":{"id":6639,"line":1401,"column":8,"start":49351,"end":49373,"length":23,"parent_index":6631},"scope":6629,"name":"values","type_name":{"id":6640,"node_type":16,"src":{"id":6642,"line":1401,"column":8,"start":49351,"end":49357,"length":7,"parent_index":6638},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6643,"node_type":44,"src":{"id":6644,"line":1402,"column":8,"start":49384,"end":49403,"length":20,"parent_index":6631},"scope":6629,"name":"datas","type_name":{"id":6645,"node_type":16,"src":{"id":6647,"line":1402,"column":8,"start":49384,"end":49388,"length":5,"parent_index":6643},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint8","type_string":"uint8"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":6648,"node_type":43,"src":{"id":6630,"line":1399,"column":4,"start":49296,"end":49427,"length":132,"parent_index":6629},"parameters":[],"parameter_types":[]},"scope":6627,"type_description":{"type_identifier":"t_function_$_t_uint8$_t_uint256$_t_bytes$","type_string":"function(uint8,uint256,bytes)"}}],"linearized_base_contracts":[6627,6616,6617,6618,6619,6620],"base_contracts":[],"contract_dependencies":[6616,6617,6618,6619,6620]}],"src":{"id":6548,"line":1398,"column":0,"start":49268,"end":49429,"length":162,"parent_index":263}},{"id":6650,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":6650,"name":"IStargateReceiver","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateReceiver.sol"},{"id":6547,"name":"BentoAdapter","absolute_path":"BentoAdapter.sol"},{"id":6547,"name":"TokenAdapter","absolute_path":"TokenAdapter.sol"},{"id":6547,"name":"SushiLegacyAdapter","absolute_path":"SushiLegacyAdapter.sol"},{"id":6547,"name":"TridentSwapAdapter","absolute_path":"TridentSwapAdapter.sol"},{"id":6547,"name":"StargateAdapter","absolute_path":"StargateAdapter.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateReceiver.sol","name":"IStargateReceiver","node_type":1,"nodes":[{"id":6694,"node_type":10,"src":{"id":6695,"line":1408,"column":0,"start":49469,"end":49491,"length":23,"parent_index":6650},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":6721,"node_type":29,"src":{"id":0,"line":1392,"column":0,"start":49107,"end":49134,"length":28,"parent_index":6650},"absolute_path":"BentoAdapter.sol","file":"./BentoAdapter.sol","scope":6650,"unit_alias":"","source_unit":6547},{"id":6722,"node_type":29,"src":{"id":0,"line":1393,"column":0,"start":49136,"end":49163,"length":28,"parent_index":6650},"absolute_path":"TokenAdapter.sol","file":"./TokenAdapter.sol","scope":6650,"unit_alias":"","source_unit":6547},{"id":6723,"node_type":29,"src":{"id":0,"line":1394,"column":0,"start":49165,"end":49198,"length":34,"parent_index":6650},"absolute_path":"SushiLegacyAdapter.sol","file":"./SushiLegacyAdapter.sol","scope":6650,"unit_alias":"","source_unit":6547},{"id":6724,"node_type":29,"src":{"id":0,"line":1395,"column":0,"start":49200,"end":49233,"length":34,"parent_index":6650},"absolute_path":"TridentSwapAdapter.sol","file":"./TridentSwapAdapter.sol","scope":6650,"unit_alias":"","source_unit":6547},{"id":6725,"node_type":29,"src":{"id":0,"line":1396,"column":0,"start":49235,"end":49265,"length":31,"parent_index":6650},"absolute_path":"StargateAdapter.sol","file":"./StargateAdapter.sol","scope":6650,"unit_alias":"","source_unit":6547},{"id":6732,"name":"IStargateReceiver","node_type":35,"src":{"id":0,"line":1410,"column":0,"start":49494,"end":49726,"length":233,"parent_index":6650},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[{"id":6734,"name":"sgReceive","node_type":42,"kind":41,"src":{"id":6735,"line":1411,"column":4,"start":49528,"end":49724,"length":197,"parent_index":6732},"body":{"id":6763,"node_type":46,"kind":0,"src":{"id":6735,"line":1411,"column":4,"start":49528,"end":49724,"length":197,"parent_index":6734},"implemented":false,"statements":[]},"implemented":false,"visibility":4,"state_mutability":4,"virtual":false,"modifiers":[],"overrides":[],"parameters":{"id":6736,"node_type":43,"src":{"id":6737,"line":1412,"column":8,"start":49556,"end":49708,"length":153,"parent_index":6734},"parameters":[{"id":6738,"node_type":44,"src":{"id":6739,"line":1412,"column":8,"start":49556,"end":49570,"length":15,"parent_index":6736},"scope":6734,"name":"_chainId","type_name":{"id":6740,"node_type":30,"src":{"id":6741,"line":1412,"column":8,"start":49556,"end":49561,"length":6,"parent_index":6738},"name":"uint16","type_description":{"type_identifier":"t_uint16","type_string":"uint16"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6742,"node_type":44,"src":{"id":6743,"line":1413,"column":8,"start":49581,"end":49604,"length":24,"parent_index":6736},"scope":6734,"name":"_srcAddress","type_name":{"id":6744,"node_type":30,"src":{"id":6745,"line":1413,"column":8,"start":49581,"end":49585,"length":5,"parent_index":6742},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6746,"node_type":44,"src":{"id":6747,"line":1414,"column":8,"start":49615,"end":49628,"length":14,"parent_index":6736},"scope":6734,"name":"_nonce","type_name":{"id":6748,"node_type":30,"src":{"id":6749,"line":1414,"column":8,"start":49615,"end":49621,"length":7,"parent_index":6746},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6750,"node_type":44,"src":{"id":6751,"line":1415,"column":8,"start":49639,"end":49652,"length":14,"parent_index":6736},"scope":6734,"name":"_token","type_name":{"id":6752,"node_type":30,"src":{"id":6753,"line":1415,"column":8,"start":49639,"end":49645,"length":7,"parent_index":6750},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":6754,"node_type":44,"src":{"id":6755,"line":1416,"column":8,"start":49663,"end":49678,"length":16,"parent_index":6736},"scope":6734,"name":"amountLD","type_name":{"id":6756,"node_type":30,"src":{"id":6757,"line":1416,"column":8,"start":49663,"end":49669,"length":7,"parent_index":6754},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6758,"node_type":44,"src":{"id":6759,"line":1417,"column":8,"start":49689,"end":49708,"length":20,"parent_index":6736},"scope":6734,"name":"payload","type_name":{"id":6760,"node_type":30,"src":{"id":6761,"line":1417,"column":8,"start":49689,"end":49693,"length":5,"parent_index":6758},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint16","type_string":"uint16"},{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":6762,"node_type":43,"src":{"id":6735,"line":1411,"column":4,"start":49528,"end":49724,"length":197,"parent_index":6734},"parameters":[],"parameter_types":[]},"scope":6732,"type_description":{"type_identifier":"t_function_$_t_uint16$_t_bytes$_t_uint256$_t_address$_t_uint256$_t_bytes$","type_string":"function(uint16,bytes,uint256,address,uint256,bytes)"}}],"linearized_base_contracts":[6732,6721,6722,6723,6724,6725],"base_contracts":[],"contract_dependencies":[6721,6722,6723,6724,6725]}],"src":{"id":6651,"line":1410,"column":0,"start":49494,"end":49726,"length":233,"parent_index":263}},{"id":6764,"base_contracts":[],"license":"MIT","exported_symbols":[{"id":6764,"name":"IStargateAdapter","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateAdapter.sol"},{"id":6650,"name":"SafeERC20","absolute_path":"SafeERC20.sol"},{"id":6650,"name":"ImmutableState","absolute_path":"ImmutableState.sol"},{"id":6650,"name":"ISushiXSwap","absolute_path":"ISushiXSwap.sol"},{"id":6650,"name":"IStargateReceiver","absolute_path":"IStargateReceiver.sol"},{"id":6650,"name":"IStargateWidget","absolute_path":"IStargateWidget.sol"}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateAdapter.sol","name":"IStargateAdapter","node_type":1,"nodes":[{"id":6810,"node_type":10,"src":{"id":6811,"line":1423,"column":0,"start":49766,"end":49788,"length":23,"parent_index":6764},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":6842,"node_type":29,"src":{"id":0,"line":1425,"column":0,"start":49791,"end":49815,"length":25,"parent_index":6764},"absolute_path":"SafeERC20.sol","file":"./SafeERC20.sol","scope":6764,"unit_alias":"","source_unit":6650},{"id":6843,"node_type":29,"src":{"id":0,"line":1426,"column":0,"start":49817,"end":49846,"length":30,"parent_index":6764},"absolute_path":"ImmutableState.sol","file":"./ImmutableState.sol","scope":6764,"unit_alias":"","source_unit":6650},{"id":6844,"node_type":29,"src":{"id":0,"line":1427,"column":0,"start":49848,"end":49874,"length":27,"parent_index":6764},"absolute_path":"ISushiXSwap.sol","file":"./ISushiXSwap.sol","scope":6764,"unit_alias":"","source_unit":6650},{"id":6845,"node_type":29,"src":{"id":0,"line":1428,"column":0,"start":49876,"end":49908,"length":33,"parent_index":6764},"absolute_path":"IStargateReceiver.sol","file":"./IStargateReceiver.sol","scope":6764,"unit_alias":"","source_unit":6650},{"id":6846,"node_type":29,"src":{"id":0,"line":1429,"column":0,"start":49910,"end":49940,"length":31,"parent_index":6764},"absolute_path":"IStargateWidget.sol","file":"./IStargateWidget.sol","scope":6764,"unit_alias":"","source_unit":6650},{"id":6848,"name":"IStargateAdapter","node_type":35,"src":{"id":0,"line":1431,"column":0,"start":49943,"end":49971,"length":29,"parent_index":6764},"abstract":false,"kind":37,"fully_implemented":true,"nodes":[],"linearized_base_contracts":[6848,6842,6843,6844,6845,6846],"base_contracts":[],"contract_dependencies":[6842,6843,6844,6845,6846]}],"src":{"id":6765,"line":1431,"column":0,"start":49943,"end":49971,"length":29,"parent_index":263}},{"id":6849,"base_contracts":[{"id":6936,"node_type":62,"src":{"id":6937,"line":1443,"column":4,"start":50282,"end":50292,"length":11,"parent_index":6935},"base_name":{"id":6938,"node_type":52,"src":{"id":6939,"line":1443,"column":4,"start":50282,"end":50292,"length":11,"parent_index":6935},"name":"ISushiXSwap","referenced_declaration":6547}},{"id":6940,"node_type":62,"src":{"id":6941,"line":1444,"column":4,"start":50299,"end":50310,"length":12,"parent_index":6935},"base_name":{"id":6942,"node_type":52,"src":{"id":6943,"line":1444,"column":4,"start":50299,"end":50310,"length":12,"parent_index":6935},"name":"BentoAdapter","referenced_declaration":1482}},{"id":6944,"node_type":62,"src":{"id":6945,"line":1445,"column":4,"start":50317,"end":50328,"length":12,"parent_index":6935},"base_name":{"id":6946,"node_type":52,"src":{"id":6947,"line":1445,"column":4,"start":50317,"end":50328,"length":12,"parent_index":6935},"name":"TokenAdapter","referenced_declaration":2401}},{"id":6948,"node_type":62,"src":{"id":6949,"line":1446,"column":4,"start":50335,"end":50352,"length":18,"parent_index":6935},"base_name":{"id":6950,"node_type":52,"src":{"id":6951,"line":1446,"column":4,"start":50335,"end":50352,"length":18,"parent_index":6935},"name":"SushiLegacyAdapter","referenced_declaration":4404}},{"id":6952,"node_type":62,"src":{"id":6953,"line":1447,"column":4,"start":50359,"end":50376,"length":18,"parent_index":6935},"base_name":{"id":6954,"node_type":52,"src":{"id":6955,"line":1447,"column":4,"start":50359,"end":50376,"length":18,"parent_index":6935},"name":"TridentSwapAdapter","referenced_declaration":5143}},{"id":6956,"node_type":62,"src":{"id":6957,"line":1448,"column":4,"start":50383,"end":50397,"length":15,"parent_index":6935},"base_name":{"id":6958,"node_type":52,"src":{"id":6959,"line":1448,"column":4,"start":50383,"end":50397,"length":15,"parent_index":6935},"name":"StargateAdapter","referenced_declaration":5897}}],"license":"MIT","exported_symbols":[{"id":6849,"name":"SushiXSwap","absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/SushiXSwap.sol"},{"id":6764,"name":"SafeERC20","absolute_path":"SafeERC20.sol"},{"id":6764,"name":"ImmutableState","absolute_path":"ImmutableState.sol"},{"id":6764,"name":"ISushiXSwap","absolute_path":"ISushiXSwap.sol"},{"id":6764,"name":"IStargateReceiver","absolute_path":"IStargateReceiver.sol"},{"id":6764,"name":"IStargateWidget","absolute_path":"IStargateWidget.sol"},{"id":6940,"name":"BentoAdapter","absolute_path":""},{"id":6944,"name":"TokenAdapter","absolute_path":""},{"id":6948,"name":"SushiLegacyAdapter","absolute_path":""},{"id":6952,"name":"TridentSwapAdapter","absolute_path":""},{"id":6956,"name":"StargateAdapter","absolute_path":""}],"absolute_path":"/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/SushiXSwap.sol","name":"SushiXSwap","node_type":1,"nodes":[{"id":6897,"node_type":10,"src":{"id":6898,"line":1435,"column":0,"start":50020,"end":50042,"length":23,"parent_index":6849},"literals":["pragma","solidity","0",".","8",".","11",";"],"text":"pragma solidity 0.8.11;"},{"id":6929,"node_type":29,"src":{"id":0,"line":1425,"column":0,"start":49791,"end":49815,"length":25,"parent_index":6849},"absolute_path":"SafeERC20.sol","file":"./SafeERC20.sol","scope":6849,"unit_alias":"","source_unit":6764},{"id":6930,"node_type":29,"src":{"id":0,"line":1426,"column":0,"start":49817,"end":49846,"length":30,"parent_index":6849},"absolute_path":"ImmutableState.sol","file":"./ImmutableState.sol","scope":6849,"unit_alias":"","source_unit":6764},{"id":6931,"node_type":29,"src":{"id":0,"line":1427,"column":0,"start":49848,"end":49874,"length":27,"parent_index":6849},"absolute_path":"ISushiXSwap.sol","file":"./ISushiXSwap.sol","scope":6849,"unit_alias":"","source_unit":6764},{"id":6932,"node_type":29,"src":{"id":0,"line":1428,"column":0,"start":49876,"end":49908,"length":33,"parent_index":6849},"absolute_path":"IStargateReceiver.sol","file":"./IStargateReceiver.sol","scope":6849,"unit_alias":"","source_unit":6764},{"id":6933,"node_type":29,"src":{"id":0,"line":1429,"column":0,"start":49910,"end":49940,"length":31,"parent_index":6849},"absolute_path":"IStargateWidget.sol","file":"./IStargateWidget.sol","scope":6849,"unit_alias":"","source_unit":6764},{"id":6934,"node_type":29,"src":{"id":0,"line":1437,"column":0,"start":50045,"end":50071,"length":27,"parent_index":6849},"absolute_path":"ISushiXSwap.sol","file":"./ISushiXSwap.sol","scope":6849,"unit_alias":"","source_unit":6764},{"id":6935,"name":"SushiXSwap","node_type":35,"src":{"id":0,"line":1442,"column":0,"start":50255,"end":58897,"length":8643,"parent_index":6849},"abstract":false,"kind":36,"fully_implemented":true,"nodes":[{"id":6961,"node_type":42,"src":{"id":6962,"line":1450,"column":4,"start":50405,"end":50759,"length":355,"parent_index":6935},"kind":11,"state_mutability":4,"visibility":1,"implemented":true,"modifiers":[{"id":6992,"name":"ImmutableState","node_type":72,"kind":72,"src":{"id":6993,"line":1456,"column":6,"start":50598,"end":50681,"length":84,"parent_index":6961},"argument_types":[{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes32","type_string":"bytes32"},{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"}],"arguments":[{"id":6996,"node_type":16,"src":{"id":6997,"line":1456,"column":21,"start":50613,"end":50621,"length":9,"parent_index":6992},"name":"_bentoBox","type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"overloaded_declarations":[],"referenced_declaration":6996,"is_pure":false},{"id":6998,"node_type":16,"src":{"id":6999,"line":1456,"column":32,"start":50624,"end":50638,"length":15,"parent_index":6992},"name":"_stargateRouter","type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"},"overloaded_declarations":[],"referenced_declaration":6998,"is_pure":false},{"id":7000,"node_type":16,"src":{"id":7001,"line":1456,"column":49,"start":50641,"end":50648,"length":8,"parent_index":6992},"name":"_factory","type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":7000,"is_pure":false},{"id":7002,"node_type":16,"src":{"id":7003,"line":1456,"column":59,"start":50651,"end":50663,"length":13,"parent_index":6992},"name":"_pairCodeHash","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"overloaded_declarations":[],"referenced_declaration":7002,"is_pure":false},{"id":7004,"node_type":16,"src":{"id":7005,"line":1456,"column":74,"start":50666,"end":50680,"length":15,"parent_index":6992},"name":"_stargateWidget","type_description":{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"},"overloaded_declarations":[],"referenced_declaration":7004,"is_pure":false}],"modifier_name":{"id":6994,"name":"ImmutableState","node_type":0,"src":{"id":6995,"line":1456,"column":6,"start":50598,"end":50611,"length":14,"parent_index":6992}}}],"parameters":{"id":6963,"node_type":43,"src":{"id":6964,"line":1451,"column":8,"start":50426,"end":50590,"length":165,"parent_index":6961},"parameters":[{"id":6965,"node_type":44,"src":{"id":6966,"line":1451,"column":8,"start":50426,"end":50451,"length":26,"parent_index":6963},"scope":6961,"name":"_bentoBox","type_name":{"id":6967,"node_type":69,"src":{"id":6968,"line":1451,"column":8,"start":50426,"end":50441,"length":16,"parent_index":6965},"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"path_node":{"id":6969,"name":"IBentoBoxMinimal","node_type":52,"referenced_declaration":769,"src":{"id":6970,"line":1451,"column":8,"start":50426,"end":50441,"length":16,"parent_index":6967}},"referenced_declaration":769},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6971,"node_type":44,"src":{"id":6972,"line":1452,"column":8,"start":50462,"end":50492,"length":31,"parent_index":6963},"scope":6961,"name":"_stargateRouter","type_name":{"id":6973,"node_type":69,"src":{"id":6974,"line":1452,"column":8,"start":50462,"end":50476,"length":15,"parent_index":6971},"type_description":{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"},"path_node":{"id":6975,"name":"IStargateRouter","node_type":52,"referenced_declaration":1012,"src":{"id":6976,"line":1452,"column":8,"start":50462,"end":50476,"length":15,"parent_index":6973}},"referenced_declaration":1012},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6977,"node_type":44,"src":{"id":6978,"line":1453,"column":8,"start":50503,"end":50518,"length":16,"parent_index":6963},"scope":6961,"name":"_factory","type_name":{"id":6979,"node_type":30,"src":{"id":6980,"line":1453,"column":8,"start":50503,"end":50509,"length":7,"parent_index":6977},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":4},{"id":6981,"node_type":44,"src":{"id":6982,"line":1454,"column":8,"start":50529,"end":50549,"length":21,"parent_index":6963},"scope":6961,"name":"_pairCodeHash","type_name":{"id":6983,"node_type":30,"src":{"id":6984,"line":1454,"column":8,"start":50529,"end":50535,"length":7,"parent_index":6981},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":6985,"node_type":44,"src":{"id":6986,"line":1455,"column":8,"start":50560,"end":50590,"length":31,"parent_index":6963},"scope":6961,"name":"_stargateWidget","type_name":{"id":6987,"node_type":69,"src":{"id":6988,"line":1455,"column":8,"start":50560,"end":50574,"length":15,"parent_index":6985},"type_description":{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"},"path_node":{"id":6989,"name":"IStargateWidget","node_type":52,"referenced_declaration":1155,"src":{"id":6990,"line":1455,"column":8,"start":50560,"end":50574,"length":15,"parent_index":6987}},"referenced_declaration":1155},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},{"type_identifier":"t_contract$_IStargateRouter_$1012","type_string":"contract IStargateRouter"},{"type_identifier":"t_address","type_string":"address"},{"type_identifier":"t_bytes32","type_string":"bytes32"},{"type_identifier":"t_contract$_IStargateWidget_$1155","type_string":"contract IStargateWidget"}]},"return_parameters":{"id":6991,"node_type":43,"src":{"id":6962,"line":1450,"column":4,"start":50405,"end":50759,"length":355,"parent_index":6961},"parameters":[],"parameter_types":[]},"scope":6935,"body":{"id":7006,"node_type":46,"kind":0,"src":{"id":7007,"line":1456,"column":91,"start":50683,"end":50759,"length":77,"parent_index":6961},"implemented":true,"statements":[{"id":7008,"node_type":24,"kind":24,"src":{"id":7009,"line":1458,"column":8,"start":50725,"end":50752,"length":28,"parent_index":7006},"argument_types":[],"arguments":[],"expression":{"id":7010,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":7011,"line":1458,"column":8,"start":50725,"end":50750,"length":26,"parent_index":7008},"expression":{"id":7012,"node_type":16,"src":{"id":7013,"line":1458,"column":8,"start":50725,"end":50733,"length":9,"parent_index":7010},"name":"_bentoBox","type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"overloaded_declarations":[],"referenced_declaration":7012,"is_pure":false},"member_name":"registerProtocol","argument_types":[],"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"}},"type_description":{"type_identifier":"t_function_$","type_string":"function()"}}]}},{"id":7015,"name":"ACTION_MASTER_CONTRACT_APPROVAL","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":7016,"line":1464,"column":4,"start":50860,"end":50919,"length":60,"parent_index":6935},"scope":6935,"type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":7017,"node_type":30,"src":{"id":7018,"line":1464,"column":4,"start":50860,"end":50864,"length":5,"parent_index":7015},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0}},{"id":7020,"name":"ACTION_SRC_DEPOSIT_TO_BENTOBOX","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":7021,"line":1465,"column":4,"start":50925,"end":50983,"length":59,"parent_index":6935},"scope":6935,"type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":7022,"node_type":30,"src":{"id":7023,"line":1465,"column":4,"start":50925,"end":50929,"length":5,"parent_index":7020},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0}},{"id":7025,"name":"ACTION_SRC_TRANSFER_FROM_BENTOBOX","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":7026,"line":1466,"column":4,"start":50989,"end":51050,"length":62,"parent_index":6935},"scope":6935,"type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":7027,"node_type":30,"src":{"id":7028,"line":1466,"column":4,"start":50989,"end":50993,"length":5,"parent_index":7025},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0}},{"id":7030,"name":"ACTION_DST_DEPOSIT_TO_BENTOBOX","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":7031,"line":1467,"column":4,"start":51056,"end":51114,"length":59,"parent_index":6935},"scope":6935,"type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":7032,"node_type":30,"src":{"id":7033,"line":1467,"column":4,"start":51056,"end":51060,"length":5,"parent_index":7030},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0}},{"id":7035,"name":"ACTION_DST_WITHDRAW_TOKEN","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":7036,"line":1468,"column":4,"start":51120,"end":51173,"length":54,"parent_index":6935},"scope":6935,"type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":7037,"node_type":30,"src":{"id":7038,"line":1468,"column":4,"start":51120,"end":51124,"length":5,"parent_index":7035},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0}},{"id":7040,"name":"ACTION_DST_WITHDRAW_OR_TRANSFER_FROM_BENTOBOX","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":7041,"line":1469,"column":4,"start":51179,"end":51252,"length":74,"parent_index":6935},"scope":6935,"type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":7042,"node_type":30,"src":{"id":7043,"line":1469,"column":4,"start":51179,"end":51183,"length":5,"parent_index":7040},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0}},{"id":7045,"name":"ACTION_UNWRAP_AND_TRANSFER","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":7046,"line":1470,"column":4,"start":51258,"end":51312,"length":55,"parent_index":6935},"scope":6935,"type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":7047,"node_type":30,"src":{"id":7048,"line":1470,"column":4,"start":51258,"end":51262,"length":5,"parent_index":7045},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0}},{"id":7050,"name":"ACTION_LEGACY_SWAP","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":7051,"line":1473,"column":4,"start":51342,"end":51388,"length":47,"parent_index":6935},"scope":6935,"type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":7052,"node_type":30,"src":{"id":7053,"line":1473,"column":4,"start":51342,"end":51346,"length":5,"parent_index":7050},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0}},{"id":7055,"name":"ACTION_TRIDENT_SWAP","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":7056,"line":1474,"column":4,"start":51394,"end":51441,"length":48,"parent_index":6935},"scope":6935,"type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":7057,"node_type":30,"src":{"id":7058,"line":1474,"column":4,"start":51394,"end":51398,"length":5,"parent_index":7055},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0}},{"id":7060,"name":"ACTION_TRIDENT_COMPLEX_PATH_SWAP","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":7061,"line":1475,"column":4,"start":51447,"end":51507,"length":61,"parent_index":6935},"scope":6935,"type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":7062,"node_type":30,"src":{"id":7063,"line":1475,"column":4,"start":51447,"end":51451,"length":5,"parent_index":7060},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0}},{"id":7065,"name":"ACTION_STARGATE_TELEPORT","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":7066,"line":1478,"column":4,"start":51539,"end":51592,"length":54,"parent_index":6935},"scope":6935,"type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":7067,"node_type":30,"src":{"id":7068,"line":1478,"column":4,"start":51539,"end":51543,"length":5,"parent_index":7065},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0}},{"id":7070,"name":"ACTION_SRC_TOKEN_TRANSFER","is_constant":true,"is_state_variable":true,"node_type":44,"src":{"id":7071,"line":1480,"column":4,"start":51599,"end":51653,"length":55,"parent_index":6935},"scope":6935,"type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"visibility":1,"storage_location":1,"mutability":1,"type_name":{"id":7072,"node_type":30,"src":{"id":7073,"line":1480,"column":4,"start":51599,"end":51603,"length":5,"parent_index":7070},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0}},{"id":7075,"name":"cook","node_type":42,"kind":41,"src":{"id":7076,"line":1487,"column":4,"start":52146,"end":58799,"length":6654,"parent_index":6935},"body":{"id":7097,"node_type":46,"kind":0,"src":{"id":7098,"line":1491,"column":30,"start":52285,"end":58799,"length":6515,"parent_index":7075},"implemented":true,"statements":[{"id":7099,"node_type":44,"src":{"id":7100,"line":1492,"column":8,"start":52295,"end":52332,"length":38,"parent_index":7097},"assignments":[7101],"declarations":[{"is_constant":false,"id":7101,"state_mutability":1,"name":"actionLength","node_type":44,"scope":7097,"src":{"id":7102,"line":1492,"column":8,"start":52295,"end":52314,"length":20,"parent_index":7099},"is_state_variable":false,"storage_location":1,"type_name":{"id":7103,"node_type":30,"src":{"id":7104,"line":1492,"column":8,"start":52295,"end":52301,"length":7,"parent_index":7101},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":7105,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":7106,"line":1492,"column":31,"start":52318,"end":52331,"length":14,"parent_index":7099},"expression":{"id":7107,"node_type":16,"src":{"id":7108,"line":1492,"column":31,"start":52318,"end":52324,"length":7,"parent_index":7105},"name":"actions","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"overloaded_declarations":[],"referenced_declaration":7107,"is_pure":false},"member_name":"length","argument_types":[],"type_description":{"type_identifier":"t_uint8","type_string":"uint8"}}},{"id":7109,"node_type":79,"src":{"id":7110,"line":1493,"column":0,"start":52342,"end":58793,"length":6452,"parent_index":7097},"initialiser":{"id":7111,"node_type":44,"src":{"id":7112,"line":1493,"column":13,"start":52347,"end":52356,"length":10,"parent_index":7097},"assignments":[7113],"declarations":[{"is_constant":false,"id":7113,"state_mutability":1,"name":"i","node_type":44,"scope":7097,"src":{"id":7114,"line":1493,"column":13,"start":52347,"end":52355,"length":9,"parent_index":7111},"is_state_variable":false,"storage_location":1,"type_name":{"id":7115,"node_type":30,"src":{"id":7116,"line":1493,"column":13,"start":52347,"end":52353,"length":7,"parent_index":7113},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"visibility":1}]},"condition":{"id":7117,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":7118,"line":1493,"column":24,"start":52358,"end":52373,"length":16,"parent_index":7109},"operator":9,"left_expression":{"id":7119,"node_type":16,"src":{"id":7120,"line":1493,"column":24,"start":52358,"end":52358,"length":1,"parent_index":7117},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":7121,"node_type":16,"src":{"id":7122,"line":1493,"column":28,"start":52362,"end":52373,"length":12,"parent_index":7117},"name":"actionLength","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":7099,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"closure":{"id":7123,"node_type":27,"src":{"id":7124,"line":1493,"column":42,"start":52376,"end":52392,"length":17,"parent_index":7097},"operator":11,"left_expression":{"id":7125,"node_type":16,"src":{"id":7126,"line":1493,"column":42,"start":52376,"end":52376,"length":1,"parent_index":7123},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"right_expression":{"id":7127,"node_type":24,"kind":24,"src":{"id":7128,"line":1493,"column":46,"start":52380,"end":52392,"length":13,"parent_index":7123},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"}],"arguments":[{"id":7131,"node_type":16,"src":{"id":7132,"line":1493,"column":57,"start":52391,"end":52391,"length":1,"parent_index":7127},"name":"i","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":7129,"node_type":16,"src":{"id":7130,"line":1493,"column":46,"start":52380,"end":52389,"length":10,"parent_index":7127},"name":"_increment","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"type_description":{"type_identifier":"t_function_$_t_function_$","type_string":"function(function())"}},"type_description":{"type_identifier":"t_uint256","type_string":"uint256"}},"body":{"id":7133,"node_type":46,"kind":0,"src":{"id":7134,"line":1493,"column":61,"start":52395,"end":58793,"length":6399,"parent_index":7109},"implemented":true,"statements":[{"id":7135,"node_type":44,"src":{"id":7136,"line":1494,"column":12,"start":52409,"end":52434,"length":26,"parent_index":7133},"assignments":[7137],"declarations":[{"is_constant":false,"id":7137,"state_mutability":1,"name":"action","node_type":44,"scope":7133,"src":{"id":7138,"line":1494,"column":12,"start":52409,"end":52420,"length":12,"parent_index":7135},"is_state_variable":false,"storage_location":1,"type_name":{"id":7139,"node_type":30,"src":{"id":7140,"line":1494,"column":12,"start":52409,"end":52413,"length":5,"parent_index":7137},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"visibility":1}],"initial_value":{"id":7141,"node_type":22,"src":{"id":7142,"line":1494,"column":27,"start":52424,"end":52433,"length":10,"parent_index":7135},"index_expression":{"id":7143,"node_type":16,"src":{"id":7144,"line":1494,"column":27,"start":52424,"end":52430,"length":7,"parent_index":7141},"name":"actions","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"overloaded_declarations":[],"referenced_declaration":6096,"is_pure":false},"base_expression":{"id":7145,"node_type":16,"src":{"id":7146,"line":1494,"column":35,"start":52432,"end":52432,"length":1,"parent_index":7141},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_uint8","type_string":"uint8"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_uint8]$_t_uint256]$","type_string":"index[uint8:uint256]"}}},{"id":7147,"node_type":48,"src":{"id":7148,"line":1496,"column":0,"start":52501,"end":58783,"length":6283,"parent_index":7133},"condition":{"id":7149,"is_constant":false,"is_pure":false,"node_type":19,"src":{"id":7150,"line":1496,"column":16,"start":52505,"end":52545,"length":41,"parent_index":7147},"operator":11,"left_expression":{"id":7151,"node_type":16,"src":{"id":7152,"line":1496,"column":16,"start":52505,"end":52510,"length":6,"parent_index":7149},"name":"action","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"overloaded_declarations":[],"referenced_declaration":7135,"is_pure":false},"right_expression":{"id":7153,"node_type":16,"src":{"id":7154,"line":1496,"column":26,"start":52515,"end":52545,"length":31,"parent_index":7149},"name":"ACTION_MASTER_CONTRACT_APPROVAL","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"overloaded_declarations":[],"referenced_declaration":7015,"is_pure":false},"type_description":{"type_identifier":"t_bool","type_string":"bool"}},"body":{"id":7155,"node_type":46,"kind":0,"src":{"id":7156,"line":1496,"column":59,"start":52548,"end":53124,"length":577,"parent_index":7109},"implemented":true,"statements":[{"id":7157,"node_type":44,"src":{"id":7158,"line":1497,"column":16,"start":52566,"end":52879,"length":314,"parent_index":7155},"assignments":[],"declarations":[],"initial_value":{"id":7159,"node_type":24,"kind":24,"src":{"id":7160,"line":1503,"column":20,"start":52747,"end":52878,"length":132,"parent_index":7157},"argument_types":[{"type_identifier":"t_[_[$_t_bytes]$_t_uint256]$","type_string":"index[bytes:uint256]"},{"type_identifier":"t_tuple_$_t_address_$_t_bool_$_t_uint8_$_t_bytes32_$_t_bytes32$","type_string":"tuple(address,bool,uint8,bytes32,bytes32)"}],"arguments":[{"id":7165,"node_type":22,"src":{"id":7166,"line":1504,"column":24,"start":52783,"end":52790,"length":8,"parent_index":7159},"index_expression":{"id":7167,"node_type":16,"src":{"id":7168,"line":1504,"column":24,"start":52783,"end":52787,"length":5,"parent_index":7165},"name":"datas","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"overloaded_declarations":[],"referenced_declaration":6106,"is_pure":false},"base_expression":{"id":7169,"node_type":16,"src":{"id":7170,"line":1504,"column":30,"start":52789,"end":52789,"length":1,"parent_index":7165},"name":"i","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"overloaded_declarations":[],"referenced_declaration":4164,"is_pure":false},"type_descriptions":[{"type_identifier":"t_bytes","type_string":"bytes"},{"type_identifier":"t_uint256","type_string":"uint256"}],"type_description":{"type_identifier":"t_[_[$_t_bytes]$_t_uint256]$","type_string":"index[bytes:uint256]"}},{"id":7171,"node_type":60,"src":{"id":7172,"line":1505,"column":24,"start":52817,"end":52856,"length":40,"parent_index":7159},"is_constant":false,"is_pure":false,"components":[{"id":7173,"node_type":16,"src":{"id":7174,"line":1505,"column":25,"start":52818,"end":52824,"length":7,"parent_index":7171},"name":"address","type_name":{"id":7175,"node_type":30,"src":{"id":7176,"line":1505,"column":25,"start":52818,"end":52824,"length":7,"parent_index":7173},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_address","type_string":"address"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":7177,"node_type":16,"src":{"id":7178,"line":1505,"column":34,"start":52827,"end":52830,"length":4,"parent_index":7171},"name":"bool","type_name":{"id":7179,"node_type":30,"src":{"id":7180,"line":1505,"column":34,"start":52827,"end":52830,"length":4,"parent_index":7177},"name":"bool","type_description":{"type_identifier":"t_bool","type_string":"bool"},"referenced_declaration":0},"type_description":{"type_identifier":"t_bool","type_string":"bool"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":7181,"node_type":16,"src":{"id":7182,"line":1505,"column":40,"start":52833,"end":52837,"length":5,"parent_index":7171},"name":"uint8","type_name":{"id":7183,"node_type":30,"src":{"id":7184,"line":1505,"column":40,"start":52833,"end":52837,"length":5,"parent_index":7181},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":7185,"node_type":16,"src":{"id":7186,"line":1505,"column":47,"start":52840,"end":52846,"length":7,"parent_index":7171},"name":"bytes32","type_name":{"id":7187,"node_type":30,"src":{"id":7188,"line":1505,"column":47,"start":52840,"end":52846,"length":7,"parent_index":7185},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":7189,"node_type":16,"src":{"id":7190,"line":1505,"column":56,"start":52849,"end":52855,"length":7,"parent_index":7171},"name":"bytes32","type_name":{"id":7191,"node_type":30,"src":{"id":7192,"line":1505,"column":56,"start":52849,"end":52855,"length":7,"parent_index":7189},"name":"bytes32","type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"referenced_declaration":0},"type_description":{"type_identifier":"t_bytes32","type_string":"bytes32"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"type_description":{"type_identifier":"t_tuple_$_t_address_$_t_bool_$_t_uint8_$_t_bytes32_$_t_bytes32$","type_string":"tuple(address,bool,uint8,bytes32,bytes32)"}}],"expression":{"id":7161,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":7162,"line":1503,"column":20,"start":52747,"end":52756,"length":10,"parent_index":7159},"expression":{"id":7163,"node_type":16,"src":{"id":7164,"line":1503,"column":20,"start":52747,"end":52749,"length":3,"parent_index":7161},"name":"abi","type_description":{"type_identifier":"t_magic_abi","type_string":"abi"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},"member_name":"decode","argument_types":[],"type_description":{"type_identifier":"t_magic_abi","type_string":"abi"}},"type_description":{"type_identifier":"t_function_$_t_[_[$_t_bytes]$_t_uint256]$_t_tuple_$_t_address_$_t_bool_$_t_uint8_$_t_bytes32_$_t_bytes32$","type_string":"function(index[bytes:uint256],tuple(address,bool,uint8,bytes32,bytes32))"}}},{"id":7193,"node_type":24,"kind":24,"src":{"id":7194,"line":1508,"column":16,"start":52898,"end":53109,"length":212,"parent_index":7155},"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_address$$","type_string":"function(function(),function(address))"},{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$","type_string":"function(function(),function(address),function(function(),function(address)))"},{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$","type_string":"function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address))))"},{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$$","type_string":"function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address))),function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address)))))"}],"arguments":[{"id":7199,"node_type":16,"src":{"id":7200,"line":1509,"column":20,"start":52954,"end":52957,"length":4,"parent_index":7193},"name":"user","type_description":{"type_identifier":"t_function_$","type_string":"function()"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false},{"id":7201,"node_type":24,"kind":24,"src":{"id":7202,"line":1510,"column":20,"start":52980,"end":52992,"length":13,"parent_index":7193},"argument_types":[{"type_identifier":"t_contract$_SushiXSwap_$6849","type_string":"contract SushiXSwap"}],"arguments":[{"id":7207,"node_type":16,"src":{"id":7208,"line":1510,"column":28,"start":52988,"end":52991,"length":4,"parent_index":7201},"name":"this","type_description":{"type_identifier":"t_contract$_SushiXSwap_$6849","type_string":"contract SushiXSwap"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false}],"expression":{"id":7203,"node_type":16,"src":{"id":7204,"line":1510,"column":20,"start":52980,"end":52986,"length":7,"parent_index":7201},"name":"address","type_name":{"id":7205,"node_type":30,"src":{"id":7206,"line":1510,"column":20,"start":52980,"end":52986,"length":7,"parent_index":7203},"name":"address","type_description":{"type_identifier":"t_address","type_string":"address"},"state_mutability":4,"referenced_declaration":0},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_address","type_string":"address"}]},"type_description":{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}},{"id":7209,"node_type":16,"src":{"id":7210,"line":1511,"column":20,"start":53015,"end":53022,"length":8,"parent_index":7193},"name":"approved","type_description":{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_address$$","type_string":"function(function(),function(address))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"}]},{"id":7211,"node_type":16,"src":{"id":7212,"line":1512,"column":20,"start":53045,"end":53045,"length":1,"parent_index":7193},"name":"v","type_description":{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$","type_string":"function(function(),function(address),function(function(),function(address)))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_address$$","type_string":"function(function(),function(address))"}]},{"id":7213,"node_type":16,"src":{"id":7214,"line":1513,"column":20,"start":53068,"end":53068,"length":1,"parent_index":7193},"name":"r","type_description":{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$","type_string":"function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address))))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_address$$","type_string":"function(function(),function(address))"},{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$","type_string":"function(function(),function(address),function(function(),function(address)))"}]},{"id":7215,"node_type":16,"src":{"id":7216,"line":1514,"column":20,"start":53091,"end":53091,"length":1,"parent_index":7193},"name":"s","type_description":{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$$","type_string":"function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address))),function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address)))))"},"overloaded_declarations":[],"referenced_declaration":0,"is_pure":false,"argument_types":[{"type_identifier":"t_function_$","type_string":"function()"},{"type_identifier":"t_function_$_t_address$","type_string":"function(address)"},{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_address$$","type_string":"function(function(),function(address))"},{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$","type_string":"function(function(),function(address),function(function(),function(address)))"},{"type_identifier":"t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$","type_string":"function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address))))"}]}],"expression":{"id":7195,"is_constant":false,"is_l_value":false,"is_pure":false,"l_value_requested":false,"node_type":23,"src":{"id":7196,"line":1508,"column":16,"start":52898,"end":52931,"length":34,"parent_index":7193},"expression":{"id":7197,"node_type":16,"src":{"id":7198,"line":1508,"column":16,"start":52898,"end":52905,"length":8,"parent_index":7195},"name":"bentoBox","type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"},"overloaded_declarations":[],"referenced_declaration":1378,"is_pure":false},"member_name":"setMasterContractApproval","argument_types":[],"type_description":{"type_identifier":"t_contract$_IBentoBoxMinimal_$769","type_string":"contract IBentoBoxMinimal"}},"type_description":{"type_identifier":"t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$","type_string":"function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address))),function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address)))),function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address))),function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address))))))"}}]}}]}}]},"implemented":true,"visibility":3,"state_mutability":3,"virtual":false,"modifiers":[],"overrides":[{"id":7077,"node_type":63,"name":"cook","src":{"id":7078,"line":1491,"column":21,"start":52276,"end":52283,"length":8,"parent_index":7075},"referenced_declaration":6629,"type_descriptions":{"type_identifier":"t_function_$_t_uint8$_t_uint256$_t_bytes$","type_string":"function(uint8,uint256,bytes)"}}],"parameters":{"id":7079,"node_type":43,"src":{"id":7080,"line":1488,"column":8,"start":52169,"end":52253,"length":85,"parent_index":7075},"parameters":[{"id":7081,"node_type":44,"src":{"id":7082,"line":1488,"column":8,"start":52169,"end":52190,"length":22,"parent_index":7079},"scope":7075,"name":"actions","type_name":{"id":7083,"node_type":16,"src":{"id":7085,"line":1488,"column":8,"start":52169,"end":52173,"length":5,"parent_index":7081},"name":"uint8","type_description":{"type_identifier":"t_uint8","type_string":"uint8"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":7086,"node_type":44,"src":{"id":7087,"line":1489,"column":8,"start":52201,"end":52223,"length":23,"parent_index":7079},"scope":7075,"name":"values","type_name":{"id":7088,"node_type":16,"src":{"id":7090,"line":1489,"column":8,"start":52201,"end":52207,"length":7,"parent_index":7086},"name":"uint256","type_description":{"type_identifier":"t_uint256","type_string":"uint256"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1},{"id":7091,"node_type":44,"src":{"id":7092,"line":1490,"column":8,"start":52234,"end":52253,"length":20,"parent_index":7079},"scope":7075,"name":"datas","type_name":{"id":7093,"node_type":16,"src":{"id":7095,"line":1490,"column":8,"start":52234,"end":52238,"length":5,"parent_index":7091},"name":"bytes","type_description":{"type_identifier":"t_bytes","type_string":"bytes"},"referenced_declaration":0},"storage_location":2,"visibility":1,"state_mutability":1}],"parameter_types":[{"type_identifier":"t_uint8","type_string":"uint8"},{"type_identifier":"t_uint256","type_string":"uint256"},{"type_identifier":"t_bytes","type_string":"bytes"}]},"return_parameters":{"id":7096,"node_type":43,"src":{"id":7076,"line":1487,"column":4,"start":52146,"end":58799,"length":6654,"parent_index":7075},"parameters":[],"parameter_types":[]},"scope":6935,"type_description":{"type_identifier":"t_function_$_t_uint8$_t_uint256$_t_bytes$","type_string":"function(uint8,uint256,bytes)"}},{"id":7218,"node_type":42,"kind":71,"src":{"id":7219,"line":1670,"column":4,"start":58867,"end":58895,"length":29,"parent_index":6935},"implemented":true,"visibility":1,"state_mutability":4,"modifiers":[],"overrides":[],"parameters":{"id":7220,"node_type":43,"src":{"id":7219,"line":1670,"column":4,"start":58867,"end":58895,"length":29,"parent_index":7218},"parameters":[],"parameter_types":[]},"return_parameters":{"id":7221,"node_type":43,"src":{"id":7219,"line":1670,"column":4,"start":58867,"end":58895,"length":29,"parent_index":7218},"parameters":[],"parameter_types":[]},"body":{"id":7222,"node_type":46,"kind":0,"src":{"id":7223,"line":1670,"column":31,"start":58894,"end":58895,"length":2,"parent_index":7218},"implemented":true,"statements":[]},"virtual":false,"payable":false}],"linearized_base_contracts":[6547,1482,2401,4404,5143,5897,6935,6929,6930,6931,6932,6933,6934],"base_contracts":[{"id":6936,"node_type":62,"src":{"id":6937,"line":1443,"column":4,"start":50282,"end":50292,"length":11,"parent_index":6935},"base_name":{"id":6938,"node_type":52,"src":{"id":6939,"line":1443,"column":4,"start":50282,"end":50292,"length":11,"parent_index":6935},"name":"ISushiXSwap","referenced_declaration":6547}},{"id":6940,"node_type":62,"src":{"id":6941,"line":1444,"column":4,"start":50299,"end":50310,"length":12,"parent_index":6935},"base_name":{"id":6942,"node_type":52,"src":{"id":6943,"line":1444,"column":4,"start":50299,"end":50310,"length":12,"parent_index":6935},"name":"BentoAdapter","referenced_declaration":1482}},{"id":6944,"node_type":62,"src":{"id":6945,"line":1445,"column":4,"start":50317,"end":50328,"length":12,"parent_index":6935},"base_name":{"id":6946,"node_type":52,"src":{"id":6947,"line":1445,"column":4,"start":50317,"end":50328,"length":12,"parent_index":6935},"name":"TokenAdapter","referenced_declaration":2401}},{"id":6948,"node_type":62,"src":{"id":6949,"line":1446,"column":4,"start":50335,"end":50352,"length":18,"parent_index":6935},"base_name":{"id":6950,"node_type":52,"src":{"id":6951,"line":1446,"column":4,"start":50335,"end":50352,"length":18,"parent_index":6935},"name":"SushiLegacyAdapter","referenced_declaration":4404}},{"id":6952,"node_type":62,"src":{"id":6953,"line":1447,"column":4,"start":50359,"end":50376,"length":18,"parent_index":6935},"base_name":{"id":6954,"node_type":52,"src":{"id":6955,"line":1447,"column":4,"start":50359,"end":50376,"length":18,"parent_index":6935},"name":"TridentSwapAdapter","referenced_declaration":5143}},{"id":6956,"node_type":62,"src":{"id":6957,"line":1448,"column":4,"start":50383,"end":50397,"length":15,"parent_index":6935},"base_name":{"id":6958,"node_type":52,"src":{"id":6959,"line":1448,"column":4,"start":50383,"end":50397,"length":15,"parent_index":6935},"name":"StargateAdapter","referenced_declaration":5897}}],"contract_dependencies":[6547,1482,2401,4404,5143,5897,6929,6930,6931,6932,6933,6934]}],"src":{"id":6850,"line":1442,"column":0,"start":50255,"end":58897,"length":8643,"parent_index":263}}],"comments":[{"id":1,"src":{"id":0,"line":1,"column":0,"start":0,"end":30,"length":31,"parent_index":2},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":2,"src":{"id":0,"line":2,"column":0,"start":32,"end":98,"length":67,"parent_index":3},"node_type":31,"text":"// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)"},{"id":3,"src":{"id":0,"line":6,"column":0,"start":126,"end":192,"length":67,"parent_index":4},"node_type":32,"text":"/**\n * @dev Collection of functions related to the address type\n */"},{"id":4,"src":{"id":0,"line":10,"column":4,"start":216,"end":1169,"length":954,"parent_index":5},"node_type":32,"text":"/**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */"},{"id":5,"src":{"id":0,"line":37,"column":8,"start":1251,"end":1323,"length":73,"parent_index":6},"node_type":31,"text":"// This method relies on extcodesize/address.code.length, which returns 0"},{"id":6,"src":{"id":0,"line":38,"column":8,"start":1333,"end":1406,"length":74,"parent_index":7},"node_type":31,"text":"// for contracts in construction, since the code is only stored at the end"},{"id":7,"src":{"id":0,"line":39,"column":8,"start":1416,"end":1447,"length":32,"parent_index":8},"node_type":31,"text":"// of the constructor execution."},{"id":8,"src":{"id":0,"line":44,"column":4,"start":1501,"end":2406,"length":906,"parent_index":9},"node_type":32,"text":"/**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */"},{"id":9,"src":{"id":0,"line":67,"column":4,"start":2730,"end":3460,"length":731,"parent_index":10},"node_type":32,"text":"/**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */"},{"id":10,"src":{"id":0,"line":89,"column":4,"start":3645,"end":3855,"length":211,"parent_index":11},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */"},{"id":11,"src":{"id":0,"line":103,"column":4,"start":4090,"end":4440,"length":351,"parent_index":12},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */"},{"id":12,"src":{"id":0,"line":122,"column":4,"start":4706,"end":4942,"length":237,"parent_index":13},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */"},{"id":13,"src":{"id":0,"line":141,"column":4,"start":5453,"end":5618,"length":166,"parent_index":14},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */"},{"id":14,"src":{"id":0,"line":151,"column":4,"start":5827,"end":5999,"length":173,"parent_index":15},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */"},{"id":15,"src":{"id":0,"line":168,"column":4,"start":6397,"end":6564,"length":168,"parent_index":16},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */"},{"id":16,"src":{"id":0,"line":178,"column":4,"start":6774,"end":6948,"length":175,"parent_index":17},"node_type":32,"text":"/**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */"},{"id":17,"src":{"id":0,"line":195,"column":4,"start":7347,"end":7555,"length":209,"parent_index":18},"node_type":32,"text":"/**\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason using the provided one.\n *\n * _Available since v4.3._\n */"},{"id":18,"src":{"id":0,"line":209,"column":12,"start":7806,"end":7858,"length":53,"parent_index":19},"node_type":31,"text":"// Look for revert reason and bubble it up if present"},{"id":19,"src":{"id":0,"line":211,"column":16,"start":7917,"end":7991,"length":75,"parent_index":20},"node_type":31,"text":"// The easiest way to bubble the revert reason is using memory via assembly"},{"id":20,"src":{"id":0,"line":225,"column":0,"start":8258,"end":8301,"length":44,"parent_index":21},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0-or-later"},{"id":21,"src":{"id":0,"line":229,"column":0,"start":8329,"end":8373,"length":45,"parent_index":22},"node_type":31,"text":"/// @notice Minimal BentoBox vault interface."},{"id":22,"src":{"id":0,"line":230,"column":0,"start":8375,"end":8444,"length":70,"parent_index":23},"node_type":31,"text":"/// @dev `token` is aliased as `address` from `IERC20` for simplicity."},{"id":23,"src":{"id":0,"line":232,"column":4,"start":8479,"end":8537,"length":59,"parent_index":24},"node_type":31,"text":"/// @notice Balance per ERC-20 token per account in shares."},{"id":24,"src":{"id":0,"line":235,"column":4,"start":8618,"end":8688,"length":71,"parent_index":25},"node_type":31,"text":"/// @dev Helper function to represent an `amount` of `token` in shares."},{"id":25,"src":{"id":0,"line":236,"column":4,"start":8694,"end":8727,"length":34,"parent_index":26},"node_type":31,"text":"/// @param token The ERC-20 token."},{"id":26,"src":{"id":0,"line":237,"column":4,"start":8733,"end":8769,"length":37,"parent_index":27},"node_type":31,"text":"/// @param amount The `token` amount."},{"id":27,"src":{"id":0,"line":238,"column":4,"start":8775,"end":8836,"length":62,"parent_index":28},"node_type":31,"text":"/// @param roundUp If the result `share` should be rounded up."},{"id":28,"src":{"id":0,"line":239,"column":4,"start":8842,"end":8898,"length":57,"parent_index":29},"node_type":31,"text":"/// @return share The token amount represented in shares."},{"id":29,"src":{"id":0,"line":246,"column":4,"start":9040,"end":9113,"length":74,"parent_index":30},"node_type":31,"text":"/// @dev Helper function to represent shares back into the `token` amount."},{"id":30,"src":{"id":0,"line":247,"column":4,"start":9119,"end":9152,"length":34,"parent_index":31},"node_type":31,"text":"/// @param token The ERC-20 token."},{"id":31,"src":{"id":0,"line":248,"column":4,"start":9158,"end":9195,"length":38,"parent_index":32},"node_type":31,"text":"/// @param share The amount of shares."},{"id":32,"src":{"id":0,"line":249,"column":4,"start":9201,"end":9254,"length":54,"parent_index":33},"node_type":31,"text":"/// @param roundUp If the result should be rounded up."},{"id":33,"src":{"id":0,"line":250,"column":4,"start":9260,"end":9327,"length":68,"parent_index":34},"node_type":31,"text":"/// @return amount The share amount back into native representation."},{"id":34,"src":{"id":0,"line":257,"column":4,"start":9470,"end":9547,"length":78,"parent_index":35},"node_type":31,"text":"/// @notice Registers this contract so that users can approve it for BentoBox."},{"id":35,"src":{"id":0,"line":260,"column":4,"start":9596,"end":9678,"length":83,"parent_index":36},"node_type":31,"text":"/// @notice Deposit an amount of `token` represented in either `amount` or `share`."},{"id":36,"src":{"id":0,"line":261,"column":4,"start":9684,"end":9729,"length":46,"parent_index":37},"node_type":31,"text":"/// @param token_ The ERC-20 token to deposit."},{"id":37,"src":{"id":0,"line":262,"column":4,"start":9735,"end":9783,"length":49,"parent_index":38},"node_type":31,"text":"/// @param from which account to pull the tokens."},{"id":38,"src":{"id":0,"line":263,"column":4,"start":9789,"end":9835,"length":47,"parent_index":39},"node_type":31,"text":"/// @param to which account to push the tokens."},{"id":39,"src":{"id":0,"line":264,"column":4,"start":9841,"end":9907,"length":67,"parent_index":40},"node_type":31,"text":"/// @param amount Token amount in native representation to deposit."},{"id":40,"src":{"id":0,"line":265,"column":4,"start":9913,"end":10007,"length":95,"parent_index":41},"node_type":31,"text":"/// @param share Token amount represented in shares to deposit. Takes precedence over `amount`."},{"id":41,"src":{"id":0,"line":266,"column":4,"start":10013,"end":10055,"length":43,"parent_index":42},"node_type":31,"text":"/// @return amountOut The amount deposited."},{"id":42,"src":{"id":0,"line":267,"column":4,"start":10061,"end":10124,"length":64,"parent_index":43},"node_type":31,"text":"/// @return shareOut The deposited amount represented in shares."},{"id":43,"src":{"id":0,"line":276,"column":4,"start":10335,"end":10397,"length":63,"parent_index":44},"node_type":31,"text":"/// @notice Withdraws an amount of `token` from a user account."},{"id":44,"src":{"id":0,"line":277,"column":4,"start":10403,"end":10449,"length":47,"parent_index":45},"node_type":31,"text":"/// @param token_ The ERC-20 token to withdraw."},{"id":45,"src":{"id":0,"line":278,"column":4,"start":10455,"end":10500,"length":46,"parent_index":46},"node_type":31,"text":"/// @param from which user to pull the tokens."},{"id":46,"src":{"id":0,"line":279,"column":4,"start":10506,"end":10549,"length":44,"parent_index":47},"node_type":31,"text":"/// @param to which user to push the tokens."},{"id":47,"src":{"id":0,"line":280,"column":4,"start":10555,"end":10638,"length":84,"parent_index":48},"node_type":31,"text":"/// @param amount of tokens. Either one of `amount` or `share` needs to be supplied."},{"id":48,"src":{"id":0,"line":281,"column":4,"start":10644,"end":10715,"length":72,"parent_index":49},"node_type":31,"text":"/// @param share Like above, but `share` takes precedence over `amount`."},{"id":49,"src":{"id":0,"line":290,"column":4,"start":10919,"end":10981,"length":63,"parent_index":50},"node_type":31,"text":"/// @notice Transfer shares from a user account to another one."},{"id":50,"src":{"id":0,"line":291,"column":4,"start":10987,"end":11032,"length":46,"parent_index":51},"node_type":31,"text":"/// @param token The ERC-20 token to transfer."},{"id":51,"src":{"id":0,"line":292,"column":4,"start":11038,"end":11083,"length":46,"parent_index":52},"node_type":31,"text":"/// @param from which user to pull the tokens."},{"id":52,"src":{"id":0,"line":293,"column":4,"start":11089,"end":11132,"length":44,"parent_index":53},"node_type":31,"text":"/// @param to which user to push the tokens."},{"id":53,"src":{"id":0,"line":294,"column":4,"start":11138,"end":11186,"length":49,"parent_index":54},"node_type":31,"text":"/// @param share The amount of `token` in shares."},{"id":54,"src":{"id":0,"line":313,"column":0,"start":11506,"end":11540,"length":35,"parent_index":55},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0"},{"id":55,"src":{"id":0,"line":346,"column":0,"start":12297,"end":12331,"length":35,"parent_index":56},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0"},{"id":56,"src":{"id":0,"line":354,"column":0,"start":12444,"end":12487,"length":44,"parent_index":57},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0-or-later"},{"id":57,"src":{"id":0,"line":374,"column":0,"start":12973,"end":13016,"length":44,"parent_index":58},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0-or-later"},{"id":58,"src":{"id":0,"line":380,"column":0,"start":13077,"end":13101,"length":25,"parent_index":59},"node_type":31,"text":"/// @title ImmutableState"},{"id":59,"src":{"id":0,"line":381,"column":0,"start":13103,"end":13140,"length":38,"parent_index":60},"node_type":31,"text":"/// @notice Stores the immutable state"},{"id":60,"src":{"id":0,"line":383,"column":4,"start":13200,"end":13231,"length":32,"parent_index":61},"node_type":31,"text":"/// @notice BentoBox token vault"},{"id":61,"src":{"id":0,"line":386,"column":4,"start":13295,"end":13349,"length":55,"parent_index":62},"node_type":31,"text":"/// @notice Stargate Router for cross chain interaction"},{"id":62,"src":{"id":0,"line":389,"column":4,"start":13418,"end":13469,"length":52,"parent_index":63},"node_type":31,"text":"/// @notice Stargate Widget for stargate partner fee"},{"id":63,"src":{"id":0,"line":392,"column":4,"start":13538,"end":13577,"length":40,"parent_index":64},"node_type":31,"text":"/// @notice Sushiswap Legacy AMM Factory"},{"id":64,"src":{"id":0,"line":395,"column":4,"start":13631,"end":13675,"length":45,"parent_index":65},"node_type":31,"text":"/// @notice Sushiswap Legacy AMM PairCodeHash"},{"id":65,"src":{"id":0,"line":413,"column":0,"start":14118,"end":14161,"length":44,"parent_index":66},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0-or-later"},{"id":66,"src":{"id":0,"line":420,"column":0,"start":14254,"end":14276,"length":23,"parent_index":67},"node_type":31,"text":"/// @title BentoAdapter"},{"id":67,"src":{"id":0,"line":421,"column":0,"start":14278,"end":14363,"length":86,"parent_index":68},"node_type":31,"text":"/// @notice Adapter which provides all functions of BentoBox require by this contract."},{"id":68,"src":{"id":0,"line":422,"column":0,"start":14365,"end":14465,"length":101,"parent_index":69},"node_type":31,"text":"/// @dev These are generic functions, make sure, only msg.sender, address(this) and address(bentoBox)"},{"id":69,"src":{"id":0,"line":423,"column":0,"start":14467,"end":14555,"length":89,"parent_index":70},"node_type":31,"text":"/// are passed in the from param, or else the attacker can sifu user's funds in bentobox."},{"id":70,"src":{"id":0,"line":425,"column":4,"start":14612,"end":14678,"length":67,"parent_index":71},"node_type":31,"text":"/// @notice Deposits the token from users wallet into the BentoBox."},{"id":71,"src":{"id":0,"line":426,"column":4,"start":14684,"end":14755,"length":72,"parent_index":72},"node_type":31,"text":"/// @dev Make sure, only msg.sender, address(this) and address(bentoBox)"},{"id":72,"src":{"id":0,"line":427,"column":4,"start":14761,"end":14849,"length":89,"parent_index":73},"node_type":31,"text":"/// are passed in the from param, or else the attacker can sifu user's funds in bentobox."},{"id":73,"src":{"id":0,"line":428,"column":4,"start":14855,"end":14886,"length":32,"parent_index":74},"node_type":31,"text":"/// Pass either amount or share."},{"id":74,"src":{"id":0,"line":429,"column":4,"start":14892,"end":14978,"length":87,"parent_index":75},"node_type":31,"text":"/// @param token token to deposit. Use token as address(0) when depositing native token"},{"id":75,"src":{"id":0,"line":430,"column":4,"start":14984,"end":15005,"length":22,"parent_index":76},"node_type":31,"text":"/// @param from sender"},{"id":76,"src":{"id":0,"line":431,"column":4,"start":15011,"end":15032,"length":22,"parent_index":77},"node_type":31,"text":"/// @param to receiver"},{"id":77,"src":{"id":0,"line":432,"column":4,"start":15038,"end":15077,"length":40,"parent_index":78},"node_type":31,"text":"/// @param amount amount to be deposited"},{"id":78,"src":{"id":0,"line":433,"column":4,"start":15083,"end":15120,"length":38,"parent_index":79},"node_type":31,"text":"/// @param share share to be deposited"},{"id":79,"src":{"id":0,"line":434,"column":4,"start":15126,"end":15219,"length":94,"parent_index":80},"node_type":31,"text":"/// @param value native token value to be deposited. Only use when token address is address(0)"},{"id":80,"src":{"id":0,"line":446,"column":4,"start":15488,"end":15583,"length":96,"parent_index":81},"node_type":31,"text":"/// @notice Transfers the token from bentobox user to another or withdraw it to another address."},{"id":81,"src":{"id":0,"line":447,"column":4,"start":15589,"end":15660,"length":72,"parent_index":82},"node_type":31,"text":"/// @dev Make sure, only msg.sender, address(this) and address(bentoBox)"},{"id":82,"src":{"id":0,"line":448,"column":4,"start":15666,"end":15754,"length":89,"parent_index":83},"node_type":31,"text":"/// are passed in the from param, or else the attacker can sifu user's funds in bentobox."},{"id":83,"src":{"id":0,"line":449,"column":4,"start":15760,"end":15791,"length":32,"parent_index":84},"node_type":31,"text":"/// Pass either amount or share."},{"id":84,"src":{"id":0,"line":450,"column":4,"start":15797,"end":15876,"length":80,"parent_index":85},"node_type":31,"text":"/// @param token token to transfer. For native tokens, use wnative token address"},{"id":85,"src":{"id":0,"line":451,"column":4,"start":15882,"end":15903,"length":22,"parent_index":86},"node_type":31,"text":"/// @param from sender"},{"id":86,"src":{"id":0,"line":452,"column":4,"start":15909,"end":15930,"length":22,"parent_index":87},"node_type":31,"text":"/// @param to receiver"},{"id":87,"src":{"id":0,"line":453,"column":4,"start":15936,"end":15971,"length":36,"parent_index":88},"node_type":31,"text":"/// @param amount amount to transfer"},{"id":88,"src":{"id":0,"line":454,"column":4,"start":15977,"end":16010,"length":34,"parent_index":89},"node_type":31,"text":"/// @param share share to transfer"},{"id":89,"src":{"id":0,"line":455,"column":4,"start":16016,"end":16082,"length":67,"parent_index":90},"node_type":31,"text":"/// @param unwrapBento use true for withdraw and false for transfer"},{"id":90,"src":{"id":0,"line":475,"column":0,"start":16563,"end":16593,"length":31,"parent_index":91},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":91,"src":{"id":0,"line":476,"column":0,"start":16595,"end":16650,"length":56,"parent_index":92},"node_type":31,"text":"// OpenZeppelin Contracts v4.4.1 (interfaces/IERC20.sol)"},{"id":92,"src":{"id":0,"line":483,"column":0,"start":16703,"end":16746,"length":44,"parent_index":93},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0-or-later"},{"id":93,"src":{"id":0,"line":487,"column":0,"start":16774,"end":16808,"length":35,"parent_index":94},"node_type":31,"text":"/// @notice Trident pool interface."},{"id":94,"src":{"id":0,"line":489,"column":4,"start":16832,"end":16885,"length":54,"parent_index":95},"node_type":31,"text":"/// @notice Executes a swap from one token to another."},{"id":95,"src":{"id":0,"line":490,"column":4,"start":16891,"end":16954,"length":64,"parent_index":96},"node_type":31,"text":"/// @dev The input tokens must've already been sent to the pool."},{"id":96,"src":{"id":0,"line":491,"column":4,"start":16960,"end":17017,"length":58,"parent_index":97},"node_type":31,"text":"/// @param data ABI-encoded params that the pool requires."},{"id":97,"src":{"id":0,"line":492,"column":4,"start":17023,"end":17104,"length":82,"parent_index":98},"node_type":31,"text":"/// @return finalAmountOut The amount of output tokens that were sent to the user."},{"id":98,"src":{"id":0,"line":497,"column":4,"start":17209,"end":17278,"length":70,"parent_index":99},"node_type":31,"text":"/// @notice Executes a swap from one token to another with a callback."},{"id":99,"src":{"id":0,"line":498,"column":4,"start":17284,"end":17386,"length":103,"parent_index":100},"node_type":31,"text":"/// @dev This function allows borrowing the output tokens and sending the input tokens in the callback."},{"id":100,"src":{"id":0,"line":499,"column":4,"start":17392,"end":17449,"length":58,"parent_index":101},"node_type":31,"text":"/// @param data ABI-encoded params that the pool requires."},{"id":101,"src":{"id":0,"line":500,"column":4,"start":17455,"end":17536,"length":82,"parent_index":102},"node_type":31,"text":"/// @return finalAmountOut The amount of output tokens that were sent to the user."},{"id":102,"src":{"id":0,"line":505,"column":4,"start":17646,"end":17680,"length":35,"parent_index":103},"node_type":31,"text":"/// @notice Mints liquidity tokens."},{"id":103,"src":{"id":0,"line":506,"column":4,"start":17686,"end":17743,"length":58,"parent_index":104},"node_type":31,"text":"/// @param data ABI-encoded params that the pool requires."},{"id":104,"src":{"id":0,"line":507,"column":4,"start":17749,"end":17831,"length":83,"parent_index":105},"node_type":31,"text":"/// @return liquidity The amount of liquidity tokens that were minted for the user."},{"id":105,"src":{"id":0,"line":510,"column":4,"start":17915,"end":17949,"length":35,"parent_index":106},"node_type":31,"text":"/// @notice Burns liquidity tokens."},{"id":106,"src":{"id":0,"line":511,"column":4,"start":17955,"end":18021,"length":67,"parent_index":107},"node_type":31,"text":"/// @dev The input LP tokens must've already been sent to the pool."},{"id":107,"src":{"id":0,"line":512,"column":4,"start":18027,"end":18084,"length":58,"parent_index":108},"node_type":31,"text":"/// @param data ABI-encoded params that the pool requires."},{"id":108,"src":{"id":0,"line":513,"column":4,"start":18090,"end":18181,"length":92,"parent_index":109},"node_type":31,"text":"/// @return withdrawnAmounts The amount of various output tokens that were sent to the user."},{"id":109,"src":{"id":0,"line":518,"column":4,"start":18301,"end":18361,"length":61,"parent_index":110},"node_type":31,"text":"/// @notice Burns liquidity tokens for a single output token."},{"id":110,"src":{"id":0,"line":519,"column":4,"start":18367,"end":18433,"length":67,"parent_index":111},"node_type":31,"text":"/// @dev The input LP tokens must've already been sent to the pool."},{"id":111,"src":{"id":0,"line":520,"column":4,"start":18439,"end":18496,"length":58,"parent_index":112},"node_type":31,"text":"/// @param data ABI-encoded params that the pool requires."},{"id":112,"src":{"id":0,"line":521,"column":4,"start":18502,"end":18578,"length":77,"parent_index":113},"node_type":31,"text":"/// @return amountOut The amount of output tokens that were sent to the user."},{"id":113,"src":{"id":0,"line":526,"column":4,"start":18684,"end":18733,"length":50,"parent_index":114},"node_type":31,"text":"/// @return A unique identifier for the pool type."},{"id":114,"src":{"id":0,"line":529,"column":4,"start":18803,"end":18855,"length":53,"parent_index":115},"node_type":31,"text":"/// @return An array of tokens supported by the pool."},{"id":115,"src":{"id":0,"line":532,"column":4,"start":18929,"end":18990,"length":62,"parent_index":116},"node_type":31,"text":"/// @notice Simulates a trade and returns the expected output."},{"id":116,"src":{"id":0,"line":533,"column":4,"start":18996,"end":19098,"length":103,"parent_index":117},"node_type":31,"text":"/// @dev The pool does not need to include a trade simulator directly in itself - it can use a library."},{"id":117,"src":{"id":0,"line":534,"column":4,"start":19104,"end":19161,"length":58,"parent_index":118},"node_type":31,"text":"/// @param data ABI-encoded params that the pool requires."},{"id":118,"src":{"id":0,"line":535,"column":4,"start":19167,"end":19276,"length":110,"parent_index":119},"node_type":31,"text":"/// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed."},{"id":119,"src":{"id":0,"line":541,"column":4,"start":19402,"end":19463,"length":62,"parent_index":120},"node_type":31,"text":"/// @notice Simulates a trade and returns the expected output."},{"id":120,"src":{"id":0,"line":542,"column":4,"start":19469,"end":19571,"length":103,"parent_index":121},"node_type":31,"text":"/// @dev The pool does not need to include a trade simulator directly in itself - it can use a library."},{"id":121,"src":{"id":0,"line":543,"column":4,"start":19577,"end":19634,"length":58,"parent_index":122},"node_type":31,"text":"/// @param data ABI-encoded params that the pool requires."},{"id":122,"src":{"id":0,"line":544,"column":4,"start":19640,"end":19749,"length":110,"parent_index":123},"node_type":31,"text":"/// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed."},{"id":123,"src":{"id":0,"line":550,"column":4,"start":19873,"end":19921,"length":49,"parent_index":124},"node_type":31,"text":"/// @dev This event must be emitted on all swaps."},{"id":124,"src":{"id":0,"line":559,"column":4,"start":20105,"end":20156,"length":52,"parent_index":125},"node_type":31,"text":"/// @dev This struct frames output tokens for burns."},{"id":125,"src":{"id":0,"line":566,"column":0,"start":20239,"end":20269,"length":31,"parent_index":126},"node_type":33,"text":"// SPDX-License-Identifier: MIT"},{"id":126,"src":{"id":0,"line":567,"column":0,"start":20271,"end":20336,"length":66,"parent_index":127},"node_type":31,"text":"// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol)"},{"id":127,"src":{"id":0,"line":574,"column":0,"start":20412,"end":20868,"length":457,"parent_index":128},"node_type":32,"text":"/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */"},{"id":128,"src":{"id":0,"line":603,"column":4,"start":21384,"end":21632,"length":249,"parent_index":129},"node_type":32,"text":"/**\n * @dev Deprecated. This function has issues similar to the ones found in\n * {IERC20-approve}, and its usage is discouraged.\n *\n * Whenever possible, use {safeIncreaseAllowance} and\n * {safeDecreaseAllowance} instead.\n */"},{"id":129,"src":{"id":0,"line":615,"column":8,"start":21754,"end":21824,"length":71,"parent_index":130},"node_type":31,"text":"// safeApprove should only be called when setting an initial allowance,"},{"id":130,"src":{"id":0,"line":616,"column":8,"start":21834,"end":21898,"length":65,"parent_index":131},"node_type":31,"text":"// or when resetting it to zero. To increase and decrease it, use"},{"id":131,"src":{"id":0,"line":617,"column":8,"start":21908,"end":21961,"length":54,"parent_index":132},"node_type":31,"text":"// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'"},{"id":132,"src":{"id":0,"line":647,"column":4,"start":23055,"end":23426,"length":372,"parent_index":133},"node_type":32,"text":"/**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */"},{"id":133,"src":{"id":0,"line":654,"column":8,"start":23512,"end":23619,"length":108,"parent_index":134},"node_type":31,"text":"// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since"},{"id":134,"src":{"id":0,"line":655,"column":8,"start":23629,"end":23735,"length":107,"parent_index":135},"node_type":31,"text":"// we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that"},{"id":135,"src":{"id":0,"line":656,"column":8,"start":23745,"end":23840,"length":96,"parent_index":136},"node_type":31,"text":"// the target address contains contract code and also asserts for success in the low-level call."},{"id":136,"src":{"id":0,"line":660,"column":12,"start":23997,"end":24022,"length":26,"parent_index":137},"node_type":31,"text":"// Return data is optional"},{"id":137,"src":{"id":0,"line":667,"column":0,"start":24143,"end":24186,"length":44,"parent_index":138},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0-or-later"},{"id":138,"src":{"id":0,"line":679,"column":0,"start":24393,"end":24436,"length":44,"parent_index":139},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0-or-later"},{"id":139,"src":{"id":0,"line":686,"column":0,"start":24513,"end":24535,"length":23,"parent_index":140},"node_type":31,"text":"/// @title TokenAdapter"},{"id":140,"src":{"id":0,"line":687,"column":0,"start":24537,"end":24580,"length":44,"parent_index":141},"node_type":31,"text":"/// @notice Adapter for all token operations"},{"id":141,"src":{"id":0,"line":691,"column":4,"start":24652,"end":24709,"length":58,"parent_index":142},"node_type":31,"text":"/// @notice Function to transfer tokens from address(this)"},{"id":142,"src":{"id":0,"line":692,"column":4,"start":24715,"end":24748,"length":34,"parent_index":143},"node_type":31,"text":"/// @param token token to transfer"},{"id":143,"src":{"id":0,"line":693,"column":4,"start":24754,"end":24775,"length":22,"parent_index":144},"node_type":31,"text":"/// @param to receiver"},{"id":144,"src":{"id":0,"line":694,"column":4,"start":24781,"end":24816,"length":36,"parent_index":145},"node_type":31,"text":"/// @param amount amount to transfer"},{"id":145,"src":{"id":0,"line":707,"column":4,"start":25098,"end":25164,"length":67,"parent_index":146},"node_type":31,"text":"/// @notice Function to transfer tokens from user to the to address"},{"id":146,"src":{"id":0,"line":708,"column":4,"start":25170,"end":25203,"length":34,"parent_index":147},"node_type":31,"text":"/// @param token token to transfer"},{"id":147,"src":{"id":0,"line":709,"column":4,"start":25209,"end":25230,"length":22,"parent_index":148},"node_type":31,"text":"/// @param to receiver"},{"id":148,"src":{"id":0,"line":710,"column":4,"start":25236,"end":25271,"length":36,"parent_index":149},"node_type":31,"text":"/// @param amount amount to transfer"},{"id":149,"src":{"id":0,"line":719,"column":4,"start":25455,"end":25534,"length":80,"parent_index":150},"node_type":31,"text":"/// @notice Unwraps the wrapper native into native and sends it to the receiver."},{"id":150,"src":{"id":0,"line":720,"column":4,"start":25540,"end":25573,"length":34,"parent_index":151},"node_type":31,"text":"/// @param token token to transfer"},{"id":151,"src":{"id":0,"line":721,"column":4,"start":25579,"end":25600,"length":22,"parent_index":152},"node_type":31,"text":"/// @param to receiver"},{"id":152,"src":{"id":0,"line":728,"column":0,"start":25821,"end":25855,"length":35,"parent_index":153},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0"},{"id":153,"src":{"id":0,"line":783,"column":0,"start":28283,"end":28317,"length":35,"parent_index":154},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0"},{"id":154,"src":{"id":0,"line":787,"column":0,"start":28347,"end":28450,"length":104,"parent_index":155},"node_type":31,"text":"// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)"},{"id":155,"src":{"id":0,"line":803,"column":0,"start":28919,"end":28953,"length":35,"parent_index":156},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0"},{"id":156,"src":{"id":0,"line":814,"column":4,"start":29111,"end":29205,"length":95,"parent_index":157},"node_type":31,"text":"// returns sorted token addresses, used to handle return values from pairs sorted in this order"},{"id":157,"src":{"id":0,"line":827,"column":4,"start":29614,"end":29691,"length":78,"parent_index":158},"node_type":31,"text":"// calculates the CREATE2 address for a pair without making any external calls"},{"id":158,"src":{"id":0,"line":843,"column":41,"start":30264,"end":30280,"length":17,"parent_index":159},"node_type":31,"text":"// init code hash"},{"id":159,"src":{"id":0,"line":851,"column":4,"start":30384,"end":30427,"length":44,"parent_index":160},"node_type":31,"text":"// fetches and sorts the reserves for a pair"},{"id":160,"src":{"id":0,"line":867,"column":4,"start":30960,"end":31058,"length":99,"parent_index":161},"node_type":31,"text":"// given some amount of an asset and pair reserves, returns an equivalent amount of the other asset"},{"id":161,"src":{"id":0,"line":881,"column":4,"start":31463,"end":31570,"length":108,"parent_index":162},"node_type":31,"text":"// given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset"},{"id":162,"src":{"id":0,"line":898,"column":4,"start":32177,"end":32283,"length":107,"parent_index":163},"node_type":31,"text":"// given an output amount of an asset and pair reserves, returns a required input amount of the other asset"},{"id":163,"src":{"id":0,"line":914,"column":4,"start":32843,"end":32910,"length":68,"parent_index":164},"node_type":31,"text":"// performs chained getAmountOut calculations on any number of pairs"},{"id":164,"src":{"id":0,"line":935,"column":4,"start":33595,"end":33661,"length":67,"parent_index":165},"node_type":31,"text":"// performs chained getAmountIn calculations on any number of pairs"},{"id":165,"src":{"id":0,"line":957,"column":0,"start":34365,"end":34408,"length":44,"parent_index":166},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0-or-later"},{"id":166,"src":{"id":0,"line":965,"column":0,"start":34527,"end":34555,"length":29,"parent_index":167},"node_type":31,"text":"/// @title SushiLegacyAdapter"},{"id":167,"src":{"id":0,"line":966,"column":0,"start":34557,"end":34630,"length":74,"parent_index":168},"node_type":31,"text":"/// @notice Adapter for functions used to swap using Sushiswap Legacy AMM."},{"id":168,"src":{"id":0,"line":987,"column":8,"start":35232,"end":35295,"length":64,"parent_index":169},"node_type":31,"text":"/// @dev force sends token to the first pair if not already sent"},{"id":169,"src":{"id":0,"line":1002,"column":4,"start":35673,"end":35752,"length":80,"parent_index":170},"node_type":31,"text":"/// @dev requires the initial amount to have already been sent to the first pair"},{"id":170,"src":{"id":0,"line":1030,"column":0,"start":36728,"end":36771,"length":44,"parent_index":171},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0-or-later"},{"id":171,"src":{"id":0,"line":1038,"column":0,"start":36878,"end":36919,"length":42,"parent_index":172},"node_type":31,"text":"/// @notice Trident pool router interface."},{"id":172,"src":{"id":0,"line":1077,"column":34,"start":37680,"end":37720,"length":41,"parent_index":173},"node_type":31,"text":"// Multiplied by 10^6. 100% = 100_000_000"},{"id":173,"src":{"id":0,"line":1095,"column":0,"start":38013,"end":38056,"length":44,"parent_index":174},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0-or-later"},{"id":174,"src":{"id":0,"line":1106,"column":0,"start":38239,"end":38282,"length":44,"parent_index":175},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0-or-later"},{"id":175,"src":{"id":0,"line":1112,"column":0,"start":38347,"end":38375,"length":29,"parent_index":176},"node_type":31,"text":"/// @title TridentSwapAdapter"},{"id":176,"src":{"id":0,"line":1113,"column":0,"start":38377,"end":38423,"length":47,"parent_index":177},"node_type":31,"text":"/// @notice Adapter for all Trident based Swaps"},{"id":177,"src":{"id":0,"line":1121,"column":4,"start":38547,"end":38561,"length":15,"parent_index":178},"node_type":31,"text":"// Custom Error"},{"id":178,"src":{"id":0,"line":1124,"column":4,"start":38599,"end":38678,"length":80,"parent_index":179},"node_type":31,"text":"/// @notice Swaps token A to token B directly. Swaps are done on `bento` tokens."},{"id":179,"src":{"id":0,"line":1125,"column":4,"start":38684,"end":38771,"length":88,"parent_index":180},"node_type":31,"text":"/// @param params This includes the address of token A, pool, amount of token A to swap,"},{"id":180,"src":{"id":0,"line":1126,"column":4,"start":38777,"end":38864,"length":88,"parent_index":181},"node_type":31,"text":"/// minimum amount of token B after the swap and data required by the pool for the swap."},{"id":181,"src":{"id":0,"line":1127,"column":4,"start":38870,"end":38973,"length":104,"parent_index":182},"node_type":31,"text":"/// @dev Ensure that the pool is trusted before calling this function. The pool can steal users' tokens."},{"id":182,"src":{"id":0,"line":1141,"column":12,"start":39399,"end":39429,"length":31,"parent_index":183},"node_type":31,"text":"// Pay the first pool directly."},{"id":183,"src":{"id":0,"line":1151,"column":8,"start":39669,"end":39699,"length":31,"parent_index":184},"node_type":31,"text":"// Call every pool in the path."},{"id":184,"src":{"id":0,"line":1152,"column":8,"start":39709,"end":39777,"length":69,"parent_index":185},"node_type":31,"text":"// Pool `N` should transfer its output tokens to pool `N+1` directly."},{"id":185,"src":{"id":0,"line":1153,"column":8,"start":39787,"end":39849,"length":63,"parent_index":186},"node_type":31,"text":"// The last pool should transfer its output tokens to the user."},{"id":186,"src":{"id":0,"line":1154,"column":8,"start":39859,"end":39946,"length":88,"parent_index":187},"node_type":31,"text":"// If the user wants to unwrap `wETH`, the final destination should be this contract and"},{"id":187,"src":{"id":0,"line":1155,"column":8,"start":39956,"end":40002,"length":47,"parent_index":188},"node_type":31,"text":"// a batch call should be made to `unwrapWETH`."},{"id":188,"src":{"id":0,"line":1160,"column":8,"start":40196,"end":40277,"length":82,"parent_index":189},"node_type":31,"text":"// Ensure that the slippage wasn't too much. This assumes that the pool is honest."},{"id":189,"src":{"id":0,"line":1164,"column":4,"start":40367,"end":40479,"length":113,"parent_index":190},"node_type":31,"text":"/// @notice Swaps multiple input tokens to multiple output tokens using multiple paths, in different percentages."},{"id":190,"src":{"id":0,"line":1165,"column":4,"start":40485,"end":40557,"length":73,"parent_index":191},"node_type":31,"text":"/// For example, you can swap 50 DAI + 100 USDC into 60% ETH and 40% BTC."},{"id":191,"src":{"id":0,"line":1166,"column":4,"start":40563,"end":40625,"length":63,"parent_index":192},"node_type":31,"text":"/// @param params This includes everything needed for the swap."},{"id":192,"src":{"id":0,"line":1167,"column":4,"start":40631,"end":40690,"length":60,"parent_index":193},"node_type":31,"text":"/// Look at the `ComplexPathParams` struct for more details."},{"id":193,"src":{"id":0,"line":1168,"column":4,"start":40696,"end":40798,"length":103,"parent_index":194},"node_type":31,"text":"/// @dev This function is not optimized for single swaps and should only be used in complex cases where"},{"id":194,"src":{"id":0,"line":1169,"column":4,"start":40804,"end":40908,"length":105,"parent_index":195},"node_type":31,"text":"/// the amounts are large enough that minimizing slippage by using multiple paths is worth the extra gas."},{"id":195,"src":{"id":0,"line":1171,"column":8,"start":40988,"end":41060,"length":73,"parent_index":196},"node_type":31,"text":"// Deposit all initial tokens to respective pools and initiate the swaps."},{"id":196,"src":{"id":0,"line":1172,"column":8,"start":41070,"end":41137,"length":68,"parent_index":197},"node_type":31,"text":"// Input tokens come from the user - output goes to following pools."},{"id":197,"src":{"id":0,"line":1183,"column":8,"start":41553,"end":41612,"length":60,"parent_index":198},"node_type":31,"text":"// Do all the middle swaps. Input comes from previous pools."},{"id":198,"src":{"id":0,"line":1202,"column":8,"start":42334,"end":42403,"length":70,"parent_index":199},"node_type":31,"text":"// Ensure enough was received and transfer the ouput to the recipient."},{"id":199,"src":{"id":0,"line":1237,"column":0,"start":43413,"end":43456,"length":44,"parent_index":200},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0-or-later"},{"id":200,"src":{"id":0,"line":1243,"column":0,"start":43518,"end":43543,"length":26,"parent_index":201},"node_type":31,"text":"/// @title StargateAdapter"},{"id":201,"src":{"id":0,"line":1244,"column":0,"start":43545,"end":43600,"length":56,"parent_index":202},"node_type":31,"text":"/// @notice Adapter for function used by Stargate Bridge"},{"id":202,"src":{"id":0,"line":1248,"column":4,"start":43712,"end":43726,"length":15,"parent_index":203},"node_type":31,"text":"// Custom Error"},{"id":203,"src":{"id":0,"line":1251,"column":4,"start":43764,"end":43772,"length":9,"parent_index":204},"node_type":31,"text":"// events"},{"id":204,"src":{"id":0,"line":1256,"column":27,"start":43973,"end":43996,"length":24,"parent_index":205},"node_type":31,"text":"// stargate dst chain id"},{"id":205,"src":{"id":0,"line":1257,"column":23,"start":44021,"end":44044,"length":24,"parent_index":206},"node_type":31,"text":"// token getting bridged"},{"id":206,"src":{"id":0,"line":1258,"column":27,"start":44073,"end":44095,"length":23,"parent_index":207},"node_type":31,"text":"// stargate src pool id"},{"id":207,"src":{"id":0,"line":1259,"column":27,"start":44124,"end":44146,"length":23,"parent_index":208},"node_type":31,"text":"// stargate dst pool id"},{"id":208,"src":{"id":0,"line":1260,"column":24,"start":44172,"end":44190,"length":19,"parent_index":209},"node_type":31,"text":"// amount to bridge"},{"id":209,"src":{"id":0,"line":1261,"column":27,"start":44219,"end":44245,"length":27,"parent_index":210},"node_type":31,"text":"// amount to bridge minimum"},{"id":210,"src":{"id":0,"line":1262,"column":28,"start":44275,"end":44317,"length":43,"parent_index":211},"node_type":31,"text":"// native token to be received on dst chain"},{"id":211,"src":{"id":0,"line":1263,"column":26,"start":44345,"end":44370,"length":26,"parent_index":212},"node_type":31,"text":"// sushiXswap on dst chain"},{"id":212,"src":{"id":0,"line":1264,"column":20,"start":44392,"end":44458,"length":67,"parent_index":213},"node_type":31,"text":"// receiver bridge token incase of transaction reverts on dst chain"},{"id":213,"src":{"id":0,"line":1265,"column":21,"start":44481,"end":44528,"length":48,"parent_index":214},"node_type":31,"text":"// extra gas to be sent for dst chain operations"},{"id":214,"src":{"id":0,"line":1266,"column":28,"start":44558,"end":44592,"length":35,"parent_index":215},"node_type":31,"text":"// random bytes32 as source context"},{"id":215,"src":{"id":0,"line":1269,"column":4,"start":44605,"end":44653,"length":49,"parent_index":216},"node_type":31,"text":"/// @notice Approves token to the Stargate Router"},{"id":216,"src":{"id":0,"line":1270,"column":4,"start":44659,"end":44691,"length":33,"parent_index":217},"node_type":31,"text":"/// @param token token to approve"},{"id":217,"src":{"id":0,"line":1275,"column":4,"start":44837,"end":44900,"length":64,"parent_index":218},"node_type":31,"text":"/// @notice Bridges the token to dst chain using Stargate Router"},{"id":218,"src":{"id":0,"line":1276,"column":4,"start":44906,"end":44995,"length":90,"parent_index":219},"node_type":31,"text":"/// @dev It is hardcoded to use all the contract balance. Only call this as the last step."},{"id":219,"src":{"id":0,"line":1277,"column":4,"start":45001,"end":45057,"length":57,"parent_index":220},"node_type":31,"text":"/// The refund address for extra fees sent it msg.sender."},{"id":220,"src":{"id":0,"line":1278,"column":4,"start":45063,"end":45152,"length":90,"parent_index":221},"node_type":31,"text":"/// @param params required by the Stargate, can be found at StargateTeleportParams struct."},{"id":221,"src":{"id":0,"line":1279,"column":4,"start":45158,"end":45250,"length":93,"parent_index":222},"node_type":31,"text":"/// @param actions An array with a sequence of actions to execute (see ACTION_ declarations)."},{"id":222,"src":{"id":0,"line":1280,"column":4,"start":45256,"end":45354,"length":99,"parent_index":223},"node_type":31,"text":"/// @param values A one-to-one mapped array to `actions`. Native token amount to send along action."},{"id":223,"src":{"id":0,"line":1281,"column":4,"start":45360,"end":45464,"length":105,"parent_index":224},"node_type":31,"text":"/// @param datas A one-to-one mapped array to `actions`. Contains abi encoded data of function arguments."},{"id":224,"src":{"id":0,"line":1294,"column":33,"start":45936,"end":45952,"length":17,"parent_index":225},"node_type":31,"text":"// refund address"},{"id":225,"src":{"id":0,"line":1300,"column":28,"start":46177,"end":46217,"length":41,"parent_index":226},"node_type":31,"text":"// extra gas to be sent for dst execution"},{"id":226,"src":{"id":0,"line":1304,"column":47,"start":46366,"end":46395,"length":30,"parent_index":227},"node_type":31,"text":"// sushiXswap on the dst chain"},{"id":227,"src":{"id":0,"line":1313,"column":4,"start":46540,"end":46603,"length":64,"parent_index":228},"node_type":31,"text":"/// @notice Get the fees to be paid in native token for the swap"},{"id":228,"src":{"id":0,"line":1314,"column":4,"start":46609,"end":46651,"length":43,"parent_index":229},"node_type":31,"text":"/// @param _dstChainId stargate dst chainId"},{"id":229,"src":{"id":0,"line":1315,"column":4,"start":46657,"end":46715,"length":59,"parent_index":230},"node_type":31,"text":"/// @param _functionType stargate Function type 1 for swap."},{"id":230,"src":{"id":0,"line":1316,"column":4,"start":46721,"end":46806,"length":86,"parent_index":231},"node_type":31,"text":"/// See more at https://stargateprotocol.gitbook.io/stargate/developers/function-types"},{"id":231,"src":{"id":0,"line":1317,"column":4,"start":46812,"end":46859,"length":48,"parent_index":232},"node_type":31,"text":"/// @param _receiver sushiXswap on the dst chain"},{"id":232,"src":{"id":0,"line":1318,"column":4,"start":46865,"end":46900,"length":36,"parent_index":233},"node_type":31,"text":"/// @param _gas extra gas being sent"},{"id":233,"src":{"id":0,"line":1319,"column":4,"start":46906,"end":46971,"length":66,"parent_index":234},"node_type":31,"text":"/// @param _dustAmount dust amount to be received at the dst chain"},{"id":234,"src":{"id":0,"line":1320,"column":4,"start":46977,"end":47031,"length":55,"parent_index":235},"node_type":31,"text":"/// @param _payload payload being sent at the dst chain"},{"id":235,"src":{"id":0,"line":1342,"column":4,"start":47618,"end":47659,"length":42,"parent_index":236},"node_type":31,"text":"/// @notice Receiver function on dst chain"},{"id":236,"src":{"id":0,"line":1343,"column":4,"start":47665,"end":47703,"length":39,"parent_index":237},"node_type":31,"text":"/// @param _token bridge token received"},{"id":237,"src":{"id":0,"line":1344,"column":4,"start":47709,"end":47743,"length":35,"parent_index":238},"node_type":31,"text":"/// @param amountLD amount received"},{"id":238,"src":{"id":0,"line":1345,"column":4,"start":47749,"end":47807,"length":59,"parent_index":239},"node_type":31,"text":"/// @param payload ABI-Encoded data received from src chain"},{"id":239,"src":{"id":0,"line":1364,"column":8,"start":48336,"end":48356,"length":21,"parent_index":240},"node_type":31,"text":"// 100000 -\u003e exit gas"},{"id":240,"src":{"id":0,"line":1367,"column":8,"start":48431,"end":48503,"length":73,"parent_index":241},"node_type":31,"text":"/// @dev incase the actions fail, transfer bridge token to the to address"},{"id":241,"src":{"id":0,"line":1379,"column":8,"start":48803,"end":48871,"length":69,"parent_index":242},"node_type":31,"text":"/// @dev transfer any native token received as dust to the to address"},{"id":242,"src":{"id":0,"line":1388,"column":0,"start":49036,"end":49079,"length":44,"parent_index":243},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0-or-later"},{"id":243,"src":{"id":0,"line":1406,"column":0,"start":49432,"end":49466,"length":35,"parent_index":244},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0"},{"id":244,"src":{"id":0,"line":1421,"column":0,"start":49729,"end":49763,"length":35,"parent_index":245},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0"},{"id":245,"src":{"id":0,"line":1433,"column":0,"start":49974,"end":50017,"length":44,"parent_index":246},"node_type":33,"text":"// SPDX-License-Identifier: GPL-3.0-or-later"},{"id":246,"src":{"id":0,"line":1439,"column":0,"start":50074,"end":50094,"length":21,"parent_index":247},"node_type":31,"text":"/// @title SushiXSwap"},{"id":247,"src":{"id":0,"line":1440,"column":0,"start":50096,"end":50146,"length":51,"parent_index":248},"node_type":31,"text":"/// @notice Enables cross chain swap for sushiswap."},{"id":248,"src":{"id":0,"line":1441,"column":0,"start":50148,"end":50253,"length":106,"parent_index":249},"node_type":31,"text":"/// @dev Supports both BentoBox and Wallet. Supports both Trident and Legacy AMM. Uses Stargate as bridge."},{"id":249,"src":{"id":0,"line":1457,"column":8,"start":50693,"end":50715,"length":23,"parent_index":250},"node_type":31,"text":"// Register to BentoBox"},{"id":250,"src":{"id":0,"line":1461,"column":4,"start":50766,"end":50819,"length":54,"parent_index":251},"node_type":31,"text":"/// @notice List of ACTIONS supported by the `cook()`."},{"id":251,"src":{"id":0,"line":1463,"column":4,"start":50826,"end":50854,"length":29,"parent_index":252},"node_type":31,"text":"// Bento and Token Operations"},{"id":252,"src":{"id":0,"line":1472,"column":4,"start":51319,"end":51336,"length":18,"parent_index":253},"node_type":31,"text":"// Swap Operations"},{"id":253,"src":{"id":0,"line":1477,"column":4,"start":51514,"end":51533,"length":20,"parent_index":254},"node_type":31,"text":"// Bridge Operations"},{"id":254,"src":{"id":0,"line":1482,"column":4,"start":51660,"end":51758,"length":99,"parent_index":255},"node_type":31,"text":"/// @notice Executes a set of actions and allows composability (contract calls) to other contracts."},{"id":255,"src":{"id":0,"line":1483,"column":4,"start":51764,"end":51856,"length":93,"parent_index":256},"node_type":31,"text":"/// @param actions An array with a sequence of actions to execute (see ACTION_ declarations)."},{"id":256,"src":{"id":0,"line":1484,"column":4,"start":51862,"end":51960,"length":99,"parent_index":257},"node_type":31,"text":"/// @param values A one-to-one mapped array to `actions`. Native token amount to send along action."},{"id":257,"src":{"id":0,"line":1485,"column":4,"start":51966,"end":52070,"length":105,"parent_index":258},"node_type":31,"text":"/// @param datas A one-to-one mapped array to `actions`. Contains abi encoded data of function arguments."},{"id":258,"src":{"id":0,"line":1486,"column":4,"start":52076,"end":52140,"length":65,"parent_index":259},"node_type":31,"text":"/// @dev The function gets invoked both at the src and dst chain."},{"id":259,"src":{"id":0,"line":1495,"column":12,"start":52448,"end":52487,"length":40,"parent_index":260},"node_type":31,"text":"// update for total amounts in contract?"},{"id":260,"src":{"id":0,"line":1559,"column":20,"start":54854,"end":54922,"length":69,"parent_index":261},"node_type":31,"text":"// Stargate Router doesn't support value? Should we update it anyway?"},{"id":261,"src":{"id":0,"line":1560,"column":20,"start":54944,"end":54980,"length":37,"parent_index":262},"node_type":31,"text":"// values[i] = address(this).balance;"},{"id":262,"src":{"id":0,"line":1669,"column":4,"start":58806,"end":58861,"length":56,"parent_index":263},"node_type":31,"text":"/// @notice Allows the contract to receive Native tokens"}]} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/SushiXSwap.solgo.ast.proto.json b/data/tests/contracts/sushixswap/SushiXSwap.solgo.ast.proto.json new file mode 100644 index 00000000..51bcbed7 --- /dev/null +++ b/data/tests/contracts/sushixswap/SushiXSwap.solgo.ast.proto.json @@ -0,0 +1,64715 @@ +{ + "id": 263, + "entry_source_unit": 6849, + "node_type": 80, + "source_units": [ + { + "id": 264, + "license": "MIT", + "name": "Address", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/Address.sol", + "exported_symbols": [ + { + "id": 264, + "name": "Address", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/Address.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "266", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "1", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "123", + "id": "267", + "length": "23", + "line": "4", + "parentIndex": "264", + "start": "101" + }, + "text": "pragma solidity ^0.8.1;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "268", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "268" + ], + "name": "Address", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "284", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "70", + "end": "1494", + "id": "285", + "length": "254", + "line": "36", + "parentIndex": "270", + "start": "1241" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "288", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "294", + "name": "account", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "294", + "src": { + "column": "15", + "end": "1471", + "id": "295", + "length": "7", + "line": "41", + "parentIndex": "292", + "start": "1465" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "292", + "memberName": "code", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "1476", + "id": "293", + "length": "12", + "line": "41", + "parentIndex": "290", + "start": "1465" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "290", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "1483", + "id": "291", + "length": "19", + "line": "41", + "parentIndex": "288", + "start": "1465" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "296", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "37", + "end": "1487", + "id": "297", + "length": "1", + "line": "41", + "parentIndex": "288", + "start": "1487" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "15", + "end": "1487", + "id": "289", + "length": "23", + "line": "41", + "parentIndex": "284", + "start": "1465" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "functionReturnParameters": "270", + "id": "286", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "1488", + "id": "287", + "length": "31", + "line": "41", + "parentIndex": "270", + "start": "1458" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ] + }, + "id": "270", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "isContract", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "272", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "274", + "name": "account", + "nodeType": "VARIABLE_DECLARATION", + "scope": "274", + "src": { + "column": "24", + "end": "1209", + "id": "275", + "length": "15", + "line": "36", + "parentIndex": "272", + "start": "1195" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "276", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "1201", + "id": "277", + "length": "7", + "line": "36", + "parentIndex": "274", + "start": "1195" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "1209", + "id": "273", + "length": "15", + "line": "36", + "parentIndex": "270", + "start": "1195" + } + }, + "returnParameters": { + "id": "278", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "280", + "nodeType": "VARIABLE_DECLARATION", + "scope": "280", + "src": { + "column": "64", + "end": "1238", + "id": "281", + "length": "4", + "line": "36", + "parentIndex": "278", + "start": "1235" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "282", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "64", + "end": "1238", + "id": "283", + "length": "4", + "line": "36", + "parentIndex": "280", + "start": "1235" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "64", + "end": "1238", + "id": "279", + "length": "4", + "line": "36", + "parentIndex": "270", + "start": "1235" + } + }, + "scope": "268", + "src": { + "column": "4", + "end": "1494", + "id": "271", + "length": "320", + "line": "36", + "parentIndex": "268", + "start": "1175" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "312", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "75", + "end": "2723", + "id": "313", + "length": "241", + "line": "60", + "parentIndex": "299", + "start": "2483" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: insufficient balance\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "318", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$264", + "typeString": "contract Address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "328", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "2512", + "id": "329", + "length": "4", + "line": "61", + "parentIndex": "322", + "start": "2509" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$264", + "typeString": "contract Address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "324", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "2507", + "id": "325", + "length": "7", + "line": "61", + "parentIndex": "322", + "start": "2501" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "326", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "2507", + "id": "327", + "length": "7", + "line": "61", + "parentIndex": "324", + "start": "2501" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "322", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "2513", + "id": "323", + "length": "13", + "line": "61", + "parentIndex": "320", + "start": "2501" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "320", + "memberName": "balance", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "2521", + "id": "321", + "length": "21", + "line": "61", + "parentIndex": "318", + "start": "2501" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "330", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "330", + "src": { + "column": "41", + "end": "2531", + "id": "331", + "length": "6", + "line": "61", + "parentIndex": "318", + "start": "2526" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "2531", + "id": "319", + "length": "31", + "line": "61", + "parentIndex": "314", + "start": "2501" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", + "id": "332", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "49", + "end": "2564", + "id": "333", + "length": "31", + "line": "61", + "parentIndex": "314", + "start": "2534" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: insufficient balance\"" + }, + "value": "Address: insufficient balance" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "316", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "2499", + "id": "317", + "length": "7", + "line": "61", + "parentIndex": "314", + "start": "2493" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "314", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "2565", + "id": "315", + "length": "73", + "line": "61", + "parentIndex": "312", + "start": "2493" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "334", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "344", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "57", + "end": "2627", + "id": "345", + "length": "2", + "line": "63", + "parentIndex": "336", + "start": "2626" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"\"" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCallOption", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "342", + "name": "recipient", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "342", + "src": { + "column": "27", + "end": "2604", + "id": "343", + "length": "9", + "line": "63", + "parentIndex": "340", + "start": "2596" + }, + "typeDescription": { + "typeIdentifier": "t_address_payable", + "typeString": "address" + } + } + }, + "id": "340", + "memberName": "call", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "27", + "end": "2609", + "id": "341", + "length": "14", + "line": "63", + "parentIndex": "338", + "start": "2596" + }, + "typeDescription": { + "typeIdentifier": "t_address_payable", + "typeString": "address" + } + } + }, + "id": "338", + "kind": "FUNCTION_CALL_OPTION", + "nodeType": "FUNCTION_CALL_OPTION", + "src": { + "column": "27", + "end": "2624", + "id": "339", + "length": "29", + "line": "63", + "parentIndex": "336", + "start": "2596" + }, + "typeDescription": { + "typeIdentifier": "t_address_payable", + "typeString": "address" + } + } + }, + "id": "336", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "27", + "end": "2628", + "id": "337", + "length": "33", + "line": "63", + "parentIndex": "334", + "start": "2596" + }, + "typeDescription": { + "typeIdentifier": "t_function__t_string_literal$", + "typeString": "function(string memory)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "2629", + "id": "335", + "length": "53", + "line": "63", + "parentIndex": "312", + "start": "2577" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "350", + "name": "success", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "2653", + "id": "351", + "length": "7", + "line": "64", + "parentIndex": "346", + "start": "2647" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", + "id": "352", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "25", + "end": "2715", + "id": "353", + "length": "60", + "line": "64", + "parentIndex": "346", + "start": "2656" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" + }, + "value": "Address: unable to send value, recipient may have reverted" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "348", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "2645", + "id": "349", + "length": "7", + "line": "64", + "parentIndex": "346", + "start": "2639" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "346", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "2716", + "id": "347", + "length": "78", + "line": "64", + "parentIndex": "312", + "start": "2639" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_string_literal$", + "typeString": "function(function(),string memory)" + } + } + } + ] + }, + "id": "299", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "sendValue", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "301", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "303", + "name": "recipient", + "nodeType": "VARIABLE_DECLARATION", + "scope": "303", + "src": { + "column": "23", + "end": "2455", + "id": "304", + "length": "25", + "line": "60", + "parentIndex": "301", + "start": "2431" + }, + "stateMutability": "PAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address_payable", + "typeString": "address" + }, + "typeName": { + "id": "305", + "name": "addresspayable", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "2445", + "id": "306", + "length": "15", + "line": "60", + "parentIndex": "303", + "start": "2431" + }, + "stateMutability": "PAYABLE", + "typeDescription": { + "typeIdentifier": "t_address_payable", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "307", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "307", + "src": { + "column": "50", + "end": "2471", + "id": "308", + "length": "14", + "line": "60", + "parentIndex": "301", + "start": "2458" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "309", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "2464", + "id": "310", + "length": "7", + "line": "60", + "parentIndex": "307", + "start": "2458" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "2471", + "id": "302", + "length": "41", + "line": "60", + "parentIndex": "299", + "start": "2431" + } + }, + "returnParameters": { + "id": "311", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "2723", + "id": "300", + "length": "312", + "line": "60", + "parentIndex": "299", + "start": "2412" + } + }, + "scope": "268", + "src": { + "column": "4", + "end": "2723", + "id": "300", + "length": "312", + "line": "60", + "parentIndex": "268", + "start": "2412" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address_payable$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "373", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "93", + "end": "3638", + "id": "374", + "length": "84", + "line": "85", + "parentIndex": "355", + "start": "3555" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: low-level call failed\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "381", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "381", + "src": { + "column": "28", + "end": "3590", + "id": "382", + "length": "6", + "line": "86", + "parentIndex": "377", + "start": "3585" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "383", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "383", + "src": { + "column": "36", + "end": "3596", + "id": "384", + "length": "4", + "line": "86", + "parentIndex": "377", + "start": "3593" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", + "id": "385", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "42", + "end": "3630", + "id": "386", + "length": "32", + "line": "86", + "parentIndex": "377", + "start": "3599" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: low-level call failed\"" + }, + "value": "Address: low-level call failed" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "379", + "name": "functionCall", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "3583", + "id": "380", + "length": "12", + "line": "86", + "parentIndex": "377", + "start": "3572" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "377", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "3631", + "id": "378", + "length": "60", + "line": "86", + "parentIndex": "373", + "start": "3572" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "typeString": "function(address,bytes,string memory)" + } + } + }, + "functionReturnParameters": "355", + "id": "375", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "3632", + "id": "376", + "length": "68", + "line": "86", + "parentIndex": "355", + "start": "3565" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "typeString": "function(address,bytes,string memory)" + } + } + } + ] + }, + "id": "355", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "functionCall", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "357", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "359", + "name": "target", + "nodeType": "VARIABLE_DECLARATION", + "scope": "359", + "src": { + "column": "26", + "end": "3501", + "id": "360", + "length": "14", + "line": "85", + "parentIndex": "357", + "start": "3488" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "361", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "26", + "end": "3494", + "id": "362", + "length": "7", + "line": "85", + "parentIndex": "359", + "start": "3488" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "363", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "363", + "src": { + "column": "42", + "end": "3520", + "id": "364", + "length": "17", + "line": "85", + "parentIndex": "357", + "start": "3504" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "365", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "42", + "end": "3508", + "id": "366", + "length": "5", + "line": "85", + "parentIndex": "363", + "start": "3504" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "26", + "end": "3520", + "id": "358", + "length": "33", + "line": "85", + "parentIndex": "355", + "start": "3488" + } + }, + "returnParameters": { + "id": "367", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "369", + "nodeType": "VARIABLE_DECLARATION", + "scope": "369", + "src": { + "column": "79", + "end": "3552", + "id": "370", + "length": "12", + "line": "85", + "parentIndex": "367", + "start": "3541" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "371", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "79", + "end": "3545", + "id": "372", + "length": "5", + "line": "85", + "parentIndex": "369", + "start": "3541" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "79", + "end": "3552", + "id": "368", + "length": "12", + "line": "85", + "parentIndex": "355", + "start": "3541" + } + }, + "scope": "268", + "src": { + "column": "4", + "end": "3638", + "id": "356", + "length": "173", + "line": "85", + "parentIndex": "268", + "start": "3466" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$", + "typeString": "function(address,bytes)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "410", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "38", + "end": "4083", + "id": "411", + "length": "76", + "line": "99", + "parentIndex": "388", + "start": "4008" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_string", + "typeString": "string" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "418", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "418", + "src": { + "column": "37", + "end": "4052", + "id": "419", + "length": "6", + "line": "100", + "parentIndex": "414", + "start": "4047" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "420", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "420", + "src": { + "column": "45", + "end": "4058", + "id": "421", + "length": "4", + "line": "100", + "parentIndex": "414", + "start": "4055" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "hexValue": "30", + "id": "422", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "51", + "end": "4061", + "id": "423", + "length": "1", + "line": "100", + "parentIndex": "414", + "start": "4061" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": "424", + "name": "errorMessage", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "424", + "src": { + "column": "54", + "end": "4075", + "id": "425", + "length": "12", + "line": "100", + "parentIndex": "414", + "start": "4064" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "416", + "name": "functionCallWithValue", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "4045", + "id": "417", + "length": "21", + "line": "100", + "parentIndex": "414", + "start": "4025" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "414", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "4076", + "id": "415", + "length": "52", + "line": "100", + "parentIndex": "410", + "start": "4025" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_rational_0_by_1$_t_string$", + "typeString": "function(address,bytes,int_const 0,string)" + } + } + }, + "functionReturnParameters": "388", + "id": "412", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "4077", + "id": "413", + "length": "60", + "line": "100", + "parentIndex": "388", + "start": "4018" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_rational_0_by_1$_t_string$", + "typeString": "function(address,bytes,int_const 0,string)" + } + } + } + ] + }, + "id": "388", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "functionCall", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "390", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "392", + "name": "target", + "nodeType": "VARIABLE_DECLARATION", + "scope": "392", + "src": { + "column": "8", + "end": "3905", + "id": "393", + "length": "14", + "line": "96", + "parentIndex": "390", + "start": "3892" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "394", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "3898", + "id": "395", + "length": "7", + "line": "96", + "parentIndex": "392", + "start": "3892" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "396", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "396", + "src": { + "column": "8", + "end": "3932", + "id": "397", + "length": "17", + "line": "97", + "parentIndex": "390", + "start": "3916" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "398", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "3920", + "id": "399", + "length": "5", + "line": "97", + "parentIndex": "396", + "start": "3916" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "400", + "name": "errorMessage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "400", + "src": { + "column": "8", + "end": "3968", + "id": "401", + "length": "26", + "line": "98", + "parentIndex": "390", + "start": "3943" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "402", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "3948", + "id": "403", + "length": "6", + "line": "98", + "parentIndex": "400", + "start": "3943" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "3968", + "id": "391", + "length": "77", + "line": "96", + "parentIndex": "388", + "start": "3892" + } + }, + "returnParameters": { + "id": "404", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "406", + "nodeType": "VARIABLE_DECLARATION", + "scope": "406", + "src": { + "column": "24", + "end": "4005", + "id": "407", + "length": "12", + "line": "99", + "parentIndex": "404", + "start": "3994" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "408", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "3998", + "id": "409", + "length": "5", + "line": "99", + "parentIndex": "406", + "start": "3994" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "4005", + "id": "405", + "length": "12", + "line": "99", + "parentIndex": "388", + "start": "3994" + } + }, + "scope": "268", + "src": { + "column": "4", + "end": "4083", + "id": "389", + "length": "223", + "line": "95", + "parentIndex": "268", + "start": "3861" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string$", + "typeString": "function(address,bytes,string)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "449", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "38", + "end": "4699", + "id": "450", + "length": "111", + "line": "118", + "parentIndex": "427", + "start": "4589" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: low-level call with value failed\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "457", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "457", + "src": { + "column": "37", + "end": "4633", + "id": "458", + "length": "6", + "line": "119", + "parentIndex": "453", + "start": "4628" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "459", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "459", + "src": { + "column": "45", + "end": "4639", + "id": "460", + "length": "4", + "line": "119", + "parentIndex": "453", + "start": "4636" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "id": "461", + "name": "value", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "461", + "src": { + "column": "51", + "end": "4646", + "id": "462", + "length": "5", + "line": "119", + "parentIndex": "453", + "start": "4642" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", + "id": "463", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "58", + "end": "4691", + "id": "464", + "length": "43", + "line": "119", + "parentIndex": "453", + "start": "4649" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: low-level call with value failed\"" + }, + "value": "Address: low-level call with value failed" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "455", + "name": "functionCallWithValue", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "4626", + "id": "456", + "length": "21", + "line": "119", + "parentIndex": "453", + "start": "4606" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "453", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "4692", + "id": "454", + "length": "87", + "line": "119", + "parentIndex": "449", + "start": "4606" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_uint256$_t_string_literal$", + "typeString": "function(address,bytes,uint256,string memory)" + } + } + }, + "functionReturnParameters": "427", + "id": "451", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "4693", + "id": "452", + "length": "95", + "line": "119", + "parentIndex": "427", + "start": "4599" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_uint256$_t_string_literal$", + "typeString": "function(address,bytes,uint256,string memory)" + } + } + } + ] + }, + "id": "427", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "functionCallWithValue", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "429", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "431", + "name": "target", + "nodeType": "VARIABLE_DECLARATION", + "scope": "431", + "src": { + "column": "8", + "end": "4499", + "id": "432", + "length": "14", + "line": "115", + "parentIndex": "429", + "start": "4486" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "433", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "4492", + "id": "434", + "length": "7", + "line": "115", + "parentIndex": "431", + "start": "4486" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "435", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "435", + "src": { + "column": "8", + "end": "4526", + "id": "436", + "length": "17", + "line": "116", + "parentIndex": "429", + "start": "4510" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "437", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "4514", + "id": "438", + "length": "5", + "line": "116", + "parentIndex": "435", + "start": "4510" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "439", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "439", + "src": { + "column": "8", + "end": "4549", + "id": "440", + "length": "13", + "line": "117", + "parentIndex": "429", + "start": "4537" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "441", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "4543", + "id": "442", + "length": "7", + "line": "117", + "parentIndex": "439", + "start": "4537" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "4549", + "id": "430", + "length": "64", + "line": "115", + "parentIndex": "427", + "start": "4486" + } + }, + "returnParameters": { + "id": "443", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "445", + "nodeType": "VARIABLE_DECLARATION", + "scope": "445", + "src": { + "column": "24", + "end": "4586", + "id": "446", + "length": "12", + "line": "118", + "parentIndex": "443", + "start": "4575" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "447", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "4579", + "id": "448", + "length": "5", + "line": "118", + "parentIndex": "445", + "start": "4575" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "4586", + "id": "444", + "length": "12", + "line": "118", + "parentIndex": "427", + "start": "4575" + } + }, + "scope": "268", + "src": { + "column": "4", + "end": "4699", + "id": "428", + "length": "254", + "line": "114", + "parentIndex": "268", + "start": "4446" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_uint256$", + "typeString": "function(address,bytes,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "492", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "38", + "end": "5446", + "id": "493", + "length": "320", + "line": "133", + "parentIndex": "466", + "start": "5127" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: insufficient balance for call\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "498", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$264", + "typeString": "contract Address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "508", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "5156", + "id": "509", + "length": "4", + "line": "134", + "parentIndex": "502", + "start": "5153" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_Address_$264", + "typeString": "contract Address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "504", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "5151", + "id": "505", + "length": "7", + "line": "134", + "parentIndex": "502", + "start": "5145" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "506", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "5151", + "id": "507", + "length": "7", + "line": "134", + "parentIndex": "504", + "start": "5145" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "502", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "5157", + "id": "503", + "length": "13", + "line": "134", + "parentIndex": "500", + "start": "5145" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "500", + "memberName": "balance", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "5165", + "id": "501", + "length": "21", + "line": "134", + "parentIndex": "498", + "start": "5145" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "510", + "name": "value", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "510", + "src": { + "column": "41", + "end": "5174", + "id": "511", + "length": "5", + "line": "134", + "parentIndex": "498", + "start": "5170" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "5174", + "id": "499", + "length": "30", + "line": "134", + "parentIndex": "494", + "start": "5145" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", + "id": "512", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "48", + "end": "5216", + "id": "513", + "length": "40", + "line": "134", + "parentIndex": "494", + "start": "5177" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: insufficient balance for call\"" + }, + "value": "Address: insufficient balance for call" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "496", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "5143", + "id": "497", + "length": "7", + "line": "134", + "parentIndex": "494", + "start": "5137" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "494", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "5217", + "id": "495", + "length": "81", + "line": "134", + "parentIndex": "492", + "start": "5137" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: call to non-contract\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "522", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "522", + "src": { + "column": "27", + "end": "5252", + "id": "523", + "length": "6", + "line": "135", + "parentIndex": "518", + "start": "5247" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "520", + "name": "isContract", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "5245", + "id": "521", + "length": "10", + "line": "135", + "parentIndex": "518", + "start": "5236" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "518", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "5253", + "id": "519", + "length": "18", + "line": "135", + "parentIndex": "514", + "start": "5236" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", + "id": "524", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "5286", + "id": "525", + "length": "31", + "line": "135", + "parentIndex": "514", + "start": "5256" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: call to non-contract\"" + }, + "value": "Address: call to non-contract" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "516", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "5234", + "id": "517", + "length": "7", + "line": "135", + "parentIndex": "514", + "start": "5228" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "514", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "5287", + "id": "515", + "length": "60", + "line": "135", + "parentIndex": "492", + "start": "5228" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "typeString": "function(function(address),string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "526", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "536", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "536", + "src": { + "column": "76", + "end": "5370", + "id": "537", + "length": "4", + "line": "137", + "parentIndex": "528", + "start": "5367" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCallOption", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "534", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "534", + "src": { + "column": "50", + "end": "5346", + "id": "535", + "length": "6", + "line": "137", + "parentIndex": "532", + "start": "5341" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "532", + "memberName": "call", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "50", + "end": "5351", + "id": "533", + "length": "11", + "line": "137", + "parentIndex": "530", + "start": "5341" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "530", + "kind": "FUNCTION_CALL_OPTION", + "nodeType": "FUNCTION_CALL_OPTION", + "src": { + "column": "50", + "end": "5365", + "id": "531", + "length": "25", + "line": "137", + "parentIndex": "528", + "start": "5341" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "528", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "50", + "end": "5371", + "id": "529", + "length": "31", + "line": "137", + "parentIndex": "526", + "start": "5341" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "5372", + "id": "527", + "length": "74", + "line": "137", + "parentIndex": "492", + "start": "5299" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + }, + { + "typeIdentifier": "t_string", + "typeString": "string" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "544", + "name": "success", + "nodeType": "IDENTIFIER", + "src": { + "column": "32", + "end": "5412", + "id": "545", + "length": "7", + "line": "138", + "parentIndex": "540", + "start": "5406" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "id": "546", + "name": "returndata", + "nodeType": "IDENTIFIER", + "src": { + "column": "41", + "end": "5424", + "id": "547", + "length": "10", + "line": "138", + "parentIndex": "540", + "start": "5415" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + ], + "id": "548", + "name": "errorMessage", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "548", + "src": { + "column": "53", + "end": "5438", + "id": "549", + "length": "12", + "line": "138", + "parentIndex": "540", + "start": "5427" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "542", + "name": "verifyCallResult", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "5404", + "id": "543", + "length": "16", + "line": "138", + "parentIndex": "540", + "start": "5389" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "540", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "5439", + "id": "541", + "length": "51", + "line": "138", + "parentIndex": "492", + "start": "5389" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "typeString": "function(function(),function(function()),string)" + } + } + }, + "functionReturnParameters": "466", + "id": "538", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "5440", + "id": "539", + "length": "59", + "line": "138", + "parentIndex": "466", + "start": "5382" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "typeString": "function(function(),function(function()),string)" + } + } + } + ] + }, + "id": "466", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "functionCallWithValue", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "468", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "470", + "name": "target", + "nodeType": "VARIABLE_DECLARATION", + "scope": "470", + "src": { + "column": "8", + "end": "5001", + "id": "471", + "length": "14", + "line": "129", + "parentIndex": "468", + "start": "4988" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "472", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "4994", + "id": "473", + "length": "7", + "line": "129", + "parentIndex": "470", + "start": "4988" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "474", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "474", + "src": { + "column": "8", + "end": "5028", + "id": "475", + "length": "17", + "line": "130", + "parentIndex": "468", + "start": "5012" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "476", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "5016", + "id": "477", + "length": "5", + "line": "130", + "parentIndex": "474", + "start": "5012" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "478", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "478", + "src": { + "column": "8", + "end": "5051", + "id": "479", + "length": "13", + "line": "131", + "parentIndex": "468", + "start": "5039" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "480", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "5045", + "id": "481", + "length": "7", + "line": "131", + "parentIndex": "478", + "start": "5039" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "482", + "name": "errorMessage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "482", + "src": { + "column": "8", + "end": "5087", + "id": "483", + "length": "26", + "line": "132", + "parentIndex": "468", + "start": "5062" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "484", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "5067", + "id": "485", + "length": "6", + "line": "132", + "parentIndex": "482", + "start": "5062" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "5087", + "id": "469", + "length": "100", + "line": "129", + "parentIndex": "466", + "start": "4988" + } + }, + "returnParameters": { + "id": "486", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "488", + "nodeType": "VARIABLE_DECLARATION", + "scope": "488", + "src": { + "column": "24", + "end": "5124", + "id": "489", + "length": "12", + "line": "133", + "parentIndex": "486", + "start": "5113" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "490", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "5117", + "id": "491", + "length": "5", + "line": "133", + "parentIndex": "488", + "start": "5113" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "5124", + "id": "487", + "length": "12", + "line": "133", + "parentIndex": "466", + "start": "5113" + } + }, + "scope": "268", + "src": { + "column": "4", + "end": "5446", + "id": "467", + "length": "499", + "line": "128", + "parentIndex": "268", + "start": "4948" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_uint256$_t_string$", + "typeString": "function(address,bytes,uint256,string)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "569", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "104", + "end": "5820", + "id": "570", + "length": "97", + "line": "147", + "parentIndex": "551", + "start": "5724" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: low-level static call failed\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "577", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "577", + "src": { + "column": "34", + "end": "5765", + "id": "578", + "length": "6", + "line": "148", + "parentIndex": "573", + "start": "5760" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "579", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "579", + "src": { + "column": "42", + "end": "5771", + "id": "580", + "length": "4", + "line": "148", + "parentIndex": "573", + "start": "5768" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", + "id": "581", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "48", + "end": "5812", + "id": "582", + "length": "39", + "line": "148", + "parentIndex": "573", + "start": "5774" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: low-level static call failed\"" + }, + "value": "Address: low-level static call failed" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "575", + "name": "functionStaticCall", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "5758", + "id": "576", + "length": "18", + "line": "148", + "parentIndex": "573", + "start": "5741" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "573", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "5813", + "id": "574", + "length": "73", + "line": "148", + "parentIndex": "569", + "start": "5741" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "typeString": "function(address,bytes,string memory)" + } + } + }, + "functionReturnParameters": "551", + "id": "571", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "5814", + "id": "572", + "length": "81", + "line": "148", + "parentIndex": "551", + "start": "5734" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "typeString": "function(address,bytes,string memory)" + } + } + } + ] + }, + "id": "551", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "functionStaticCall", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "553", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "555", + "name": "target", + "nodeType": "VARIABLE_DECLARATION", + "scope": "555", + "src": { + "column": "32", + "end": "5665", + "id": "556", + "length": "14", + "line": "147", + "parentIndex": "553", + "start": "5652" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "557", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "32", + "end": "5658", + "id": "558", + "length": "7", + "line": "147", + "parentIndex": "555", + "start": "5652" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "559", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "559", + "src": { + "column": "48", + "end": "5684", + "id": "560", + "length": "17", + "line": "147", + "parentIndex": "553", + "start": "5668" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "561", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "48", + "end": "5672", + "id": "562", + "length": "5", + "line": "147", + "parentIndex": "559", + "start": "5668" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "32", + "end": "5684", + "id": "554", + "length": "33", + "line": "147", + "parentIndex": "551", + "start": "5652" + } + }, + "returnParameters": { + "id": "563", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "565", + "nodeType": "VARIABLE_DECLARATION", + "scope": "565", + "src": { + "column": "90", + "end": "5721", + "id": "566", + "length": "12", + "line": "147", + "parentIndex": "563", + "start": "5710" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "567", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "90", + "end": "5714", + "id": "568", + "length": "5", + "line": "147", + "parentIndex": "565", + "start": "5710" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "90", + "end": "5721", + "id": "564", + "length": "12", + "line": "147", + "parentIndex": "551", + "start": "5710" + } + }, + "scope": "268", + "src": { + "column": "4", + "end": "5820", + "id": "552", + "length": "197", + "line": "147", + "parentIndex": "268", + "start": "5624" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$", + "typeString": "function(address,bytes)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "606", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "43", + "end": "6390", + "id": "607", + "length": "228", + "line": "161", + "parentIndex": "584", + "start": "6163" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: static call to non-contract\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "616", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "616", + "src": { + "column": "27", + "end": "6197", + "id": "617", + "length": "6", + "line": "162", + "parentIndex": "612", + "start": "6192" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "614", + "name": "isContract", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "6190", + "id": "615", + "length": "10", + "line": "162", + "parentIndex": "612", + "start": "6181" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "612", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "6198", + "id": "613", + "length": "18", + "line": "162", + "parentIndex": "608", + "start": "6181" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374", + "id": "618", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "6238", + "id": "619", + "length": "38", + "line": "162", + "parentIndex": "608", + "start": "6201" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: static call to non-contract\"" + }, + "value": "Address: static call to non-contract" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "610", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "6179", + "id": "611", + "length": "7", + "line": "162", + "parentIndex": "608", + "start": "6173" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "608", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "6239", + "id": "609", + "length": "67", + "line": "162", + "parentIndex": "606", + "start": "6173" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "typeString": "function(function(address),string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "620", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "628", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "628", + "src": { + "column": "68", + "end": "6314", + "id": "629", + "length": "4", + "line": "164", + "parentIndex": "622", + "start": "6311" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "626", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "626", + "src": { + "column": "50", + "end": "6298", + "id": "627", + "length": "6", + "line": "164", + "parentIndex": "624", + "start": "6293" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "624", + "memberName": "staticcall", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "50", + "end": "6309", + "id": "625", + "length": "17", + "line": "164", + "parentIndex": "622", + "start": "6293" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "622", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "50", + "end": "6315", + "id": "623", + "length": "23", + "line": "164", + "parentIndex": "620", + "start": "6293" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "6316", + "id": "621", + "length": "66", + "line": "164", + "parentIndex": "606", + "start": "6251" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + }, + { + "typeIdentifier": "t_string", + "typeString": "string" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "636", + "name": "success", + "nodeType": "IDENTIFIER", + "src": { + "column": "32", + "end": "6356", + "id": "637", + "length": "7", + "line": "165", + "parentIndex": "632", + "start": "6350" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "id": "638", + "name": "returndata", + "nodeType": "IDENTIFIER", + "src": { + "column": "41", + "end": "6368", + "id": "639", + "length": "10", + "line": "165", + "parentIndex": "632", + "start": "6359" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + ], + "id": "640", + "name": "errorMessage", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "640", + "src": { + "column": "53", + "end": "6382", + "id": "641", + "length": "12", + "line": "165", + "parentIndex": "632", + "start": "6371" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "634", + "name": "verifyCallResult", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "6348", + "id": "635", + "length": "16", + "line": "165", + "parentIndex": "632", + "start": "6333" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "632", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "6383", + "id": "633", + "length": "51", + "line": "165", + "parentIndex": "606", + "start": "6333" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "typeString": "function(function(),function(function()),string)" + } + } + }, + "functionReturnParameters": "584", + "id": "630", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "6384", + "id": "631", + "length": "59", + "line": "165", + "parentIndex": "584", + "start": "6326" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "typeString": "function(function(),function(function()),string)" + } + } + } + ] + }, + "id": "584", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "functionStaticCall", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "586", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "588", + "name": "target", + "nodeType": "VARIABLE_DECLARATION", + "scope": "588", + "src": { + "column": "8", + "end": "6055", + "id": "589", + "length": "14", + "line": "158", + "parentIndex": "586", + "start": "6042" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "590", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "6048", + "id": "591", + "length": "7", + "line": "158", + "parentIndex": "588", + "start": "6042" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "592", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "592", + "src": { + "column": "8", + "end": "6082", + "id": "593", + "length": "17", + "line": "159", + "parentIndex": "586", + "start": "6066" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "594", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "6070", + "id": "595", + "length": "5", + "line": "159", + "parentIndex": "592", + "start": "6066" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "596", + "name": "errorMessage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "596", + "src": { + "column": "8", + "end": "6118", + "id": "597", + "length": "26", + "line": "160", + "parentIndex": "586", + "start": "6093" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "598", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "6098", + "id": "599", + "length": "6", + "line": "160", + "parentIndex": "596", + "start": "6093" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "6118", + "id": "587", + "length": "77", + "line": "158", + "parentIndex": "584", + "start": "6042" + } + }, + "returnParameters": { + "id": "600", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "602", + "nodeType": "VARIABLE_DECLARATION", + "scope": "602", + "src": { + "column": "29", + "end": "6160", + "id": "603", + "length": "12", + "line": "161", + "parentIndex": "600", + "start": "6149" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "604", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "6153", + "id": "605", + "length": "5", + "line": "161", + "parentIndex": "602", + "start": "6149" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "6160", + "id": "601", + "length": "12", + "line": "161", + "parentIndex": "584", + "start": "6149" + } + }, + "scope": "268", + "src": { + "column": "4", + "end": "6390", + "id": "585", + "length": "386", + "line": "157", + "parentIndex": "268", + "start": "6005" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string$", + "typeString": "function(address,bytes,string)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "661", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "101", + "end": "6767", + "id": "662", + "length": "101", + "line": "174", + "parentIndex": "643", + "start": "6667" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: low-level delegate call failed\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "669", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "669", + "src": { + "column": "36", + "end": "6710", + "id": "670", + "length": "6", + "line": "175", + "parentIndex": "665", + "start": "6705" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "671", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "671", + "src": { + "column": "44", + "end": "6716", + "id": "672", + "length": "4", + "line": "175", + "parentIndex": "665", + "start": "6713" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", + "id": "673", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "50", + "end": "6759", + "id": "674", + "length": "41", + "line": "175", + "parentIndex": "665", + "start": "6719" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: low-level delegate call failed\"" + }, + "value": "Address: low-level delegate call failed" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "667", + "name": "functionDelegateCall", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "6703", + "id": "668", + "length": "20", + "line": "175", + "parentIndex": "665", + "start": "6684" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "665", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "6760", + "id": "666", + "length": "77", + "line": "175", + "parentIndex": "661", + "start": "6684" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "typeString": "function(address,bytes,string memory)" + } + } + }, + "functionReturnParameters": "643", + "id": "663", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "6761", + "id": "664", + "length": "85", + "line": "175", + "parentIndex": "643", + "start": "6677" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string_literal$", + "typeString": "function(address,bytes,string memory)" + } + } + } + ] + }, + "id": "643", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "functionDelegateCall", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "645", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "647", + "name": "target", + "nodeType": "VARIABLE_DECLARATION", + "scope": "647", + "src": { + "column": "34", + "end": "6613", + "id": "648", + "length": "14", + "line": "174", + "parentIndex": "645", + "start": "6600" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "649", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "34", + "end": "6606", + "id": "650", + "length": "7", + "line": "174", + "parentIndex": "647", + "start": "6600" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "651", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "651", + "src": { + "column": "50", + "end": "6632", + "id": "652", + "length": "17", + "line": "174", + "parentIndex": "645", + "start": "6616" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "653", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "6620", + "id": "654", + "length": "5", + "line": "174", + "parentIndex": "651", + "start": "6616" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "34", + "end": "6632", + "id": "646", + "length": "33", + "line": "174", + "parentIndex": "643", + "start": "6600" + } + }, + "returnParameters": { + "id": "655", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "657", + "nodeType": "VARIABLE_DECLARATION", + "scope": "657", + "src": { + "column": "87", + "end": "6664", + "id": "658", + "length": "12", + "line": "174", + "parentIndex": "655", + "start": "6653" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "659", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "87", + "end": "6657", + "id": "660", + "length": "5", + "line": "174", + "parentIndex": "657", + "start": "6653" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "87", + "end": "6664", + "id": "656", + "length": "12", + "line": "174", + "parentIndex": "643", + "start": "6653" + } + }, + "scope": "268", + "src": { + "column": "4", + "end": "6767", + "id": "644", + "length": "198", + "line": "174", + "parentIndex": "268", + "start": "6570" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$", + "typeString": "function(address,bytes)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "698", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "38", + "end": "7340", + "id": "699", + "length": "232", + "line": "188", + "parentIndex": "676", + "start": "7109" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: delegate call to non-contract\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "708", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "708", + "src": { + "column": "27", + "end": "7143", + "id": "709", + "length": "6", + "line": "189", + "parentIndex": "704", + "start": "7138" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "706", + "name": "isContract", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "7136", + "id": "707", + "length": "10", + "line": "189", + "parentIndex": "704", + "start": "7127" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "704", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "7144", + "id": "705", + "length": "18", + "line": "189", + "parentIndex": "700", + "start": "7127" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374", + "id": "710", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "7186", + "id": "711", + "length": "40", + "line": "189", + "parentIndex": "700", + "start": "7147" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"Address: delegate call to non-contract\"" + }, + "value": "Address: delegate call to non-contract" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "702", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "7125", + "id": "703", + "length": "7", + "line": "189", + "parentIndex": "700", + "start": "7119" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "700", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "7187", + "id": "701", + "length": "69", + "line": "189", + "parentIndex": "698", + "start": "7119" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_string_literal$", + "typeString": "function(function(address),string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "712", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "720", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "720", + "src": { + "column": "70", + "end": "7264", + "id": "721", + "length": "4", + "line": "191", + "parentIndex": "714", + "start": "7261" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "718", + "name": "target", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "718", + "src": { + "column": "50", + "end": "7246", + "id": "719", + "length": "6", + "line": "191", + "parentIndex": "716", + "start": "7241" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "716", + "memberName": "delegatecall", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "50", + "end": "7259", + "id": "717", + "length": "19", + "line": "191", + "parentIndex": "714", + "start": "7241" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "714", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "50", + "end": "7265", + "id": "715", + "length": "25", + "line": "191", + "parentIndex": "712", + "start": "7241" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "7266", + "id": "713", + "length": "68", + "line": "191", + "parentIndex": "698", + "start": "7199" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + }, + { + "typeIdentifier": "t_string", + "typeString": "string" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "728", + "name": "success", + "nodeType": "IDENTIFIER", + "src": { + "column": "32", + "end": "7306", + "id": "729", + "length": "7", + "line": "192", + "parentIndex": "724", + "start": "7300" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "id": "730", + "name": "returndata", + "nodeType": "IDENTIFIER", + "src": { + "column": "41", + "end": "7318", + "id": "731", + "length": "10", + "line": "192", + "parentIndex": "724", + "start": "7309" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + ], + "id": "732", + "name": "errorMessage", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "732", + "src": { + "column": "53", + "end": "7332", + "id": "733", + "length": "12", + "line": "192", + "parentIndex": "724", + "start": "7321" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "726", + "name": "verifyCallResult", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "7298", + "id": "727", + "length": "16", + "line": "192", + "parentIndex": "724", + "start": "7283" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "724", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "7333", + "id": "725", + "length": "51", + "line": "192", + "parentIndex": "698", + "start": "7283" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "typeString": "function(function(),function(function()),string)" + } + } + }, + "functionReturnParameters": "676", + "id": "722", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "8", + "end": "7334", + "id": "723", + "length": "59", + "line": "192", + "parentIndex": "676", + "start": "7276" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string$", + "typeString": "function(function(),function(function()),string)" + } + } + } + ] + }, + "id": "676", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "functionDelegateCall", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "678", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "680", + "name": "target", + "nodeType": "VARIABLE_DECLARATION", + "scope": "680", + "src": { + "column": "8", + "end": "7006", + "id": "681", + "length": "14", + "line": "185", + "parentIndex": "678", + "start": "6993" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "682", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "6999", + "id": "683", + "length": "7", + "line": "185", + "parentIndex": "680", + "start": "6993" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "684", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "684", + "src": { + "column": "8", + "end": "7033", + "id": "685", + "length": "17", + "line": "186", + "parentIndex": "678", + "start": "7017" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "686", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "7021", + "id": "687", + "length": "5", + "line": "186", + "parentIndex": "684", + "start": "7017" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "688", + "name": "errorMessage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "688", + "src": { + "column": "8", + "end": "7069", + "id": "689", + "length": "26", + "line": "187", + "parentIndex": "678", + "start": "7044" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "690", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "7049", + "id": "691", + "length": "6", + "line": "187", + "parentIndex": "688", + "start": "7044" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "7069", + "id": "679", + "length": "77", + "line": "185", + "parentIndex": "676", + "start": "6993" + } + }, + "returnParameters": { + "id": "692", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "694", + "nodeType": "VARIABLE_DECLARATION", + "scope": "694", + "src": { + "column": "24", + "end": "7106", + "id": "695", + "length": "12", + "line": "188", + "parentIndex": "692", + "start": "7095" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "696", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "7099", + "id": "697", + "length": "5", + "line": "188", + "parentIndex": "694", + "start": "7095" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "7106", + "id": "693", + "length": "12", + "line": "188", + "parentIndex": "676", + "start": "7095" + } + }, + "scope": "268", + "src": { + "column": "4", + "end": "7340", + "id": "677", + "length": "387", + "line": "184", + "parentIndex": "268", + "start": "6954" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_string$", + "typeString": "function(address,bytes,string)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "757", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "43", + "end": "8252", + "id": "758", + "length": "532", + "line": "205", + "parentIndex": "735", + "start": "7721" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "763", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "21", + "end": "7785", + "id": "764", + "length": "42", + "line": "206", + "parentIndex": "735", + "start": "7744" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "767", + "name": "returndata", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "767", + "src": { + "column": "19", + "end": "7774", + "id": "768", + "length": "10", + "line": "207", + "parentIndex": "763", + "start": "7765" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + "functionReturnParameters": "735", + "id": "765", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "7775", + "id": "766", + "length": "18", + "line": "207", + "parentIndex": "735", + "start": "7758" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "761", + "name": "success", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "761", + "src": { + "column": "12", + "end": "7741", + "id": "762", + "length": "7", + "line": "206", + "parentIndex": "759", + "start": "7735" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "759", + "nodeType": "IF_STATEMENT", + "src": { + "end": "8246", + "id": "760", + "length": "516", + "line": "206", + "parentIndex": "757", + "start": "7731" + } + } + } + ] + }, + "id": "735", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "verifyCallResult", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "737", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "739", + "name": "success", + "nodeType": "VARIABLE_DECLARATION", + "scope": "739", + "src": { + "column": "8", + "end": "7607", + "id": "740", + "length": "12", + "line": "202", + "parentIndex": "737", + "start": "7596" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "741", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "7599", + "id": "742", + "length": "4", + "line": "202", + "parentIndex": "739", + "start": "7596" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "743", + "name": "returndata", + "nodeType": "VARIABLE_DECLARATION", + "scope": "743", + "src": { + "column": "8", + "end": "7640", + "id": "744", + "length": "23", + "line": "203", + "parentIndex": "737", + "start": "7618" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "745", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "7622", + "id": "746", + "length": "5", + "line": "203", + "parentIndex": "743", + "start": "7618" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "747", + "name": "errorMessage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "747", + "src": { + "column": "8", + "end": "7676", + "id": "748", + "length": "26", + "line": "204", + "parentIndex": "737", + "start": "7651" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "749", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "7656", + "id": "750", + "length": "6", + "line": "204", + "parentIndex": "747", + "start": "7651" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "7676", + "id": "738", + "length": "81", + "line": "202", + "parentIndex": "735", + "start": "7596" + } + }, + "returnParameters": { + "id": "751", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "753", + "nodeType": "VARIABLE_DECLARATION", + "scope": "753", + "src": { + "column": "29", + "end": "7718", + "id": "754", + "length": "12", + "line": "205", + "parentIndex": "751", + "start": "7707" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "755", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "7711", + "id": "756", + "length": "5", + "line": "205", + "parentIndex": "753", + "start": "7707" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "7718", + "id": "752", + "length": "12", + "line": "205", + "parentIndex": "735", + "start": "7707" + } + }, + "scope": "268", + "src": { + "column": "4", + "end": "8252", + "id": "736", + "length": "692", + "line": "201", + "parentIndex": "268", + "start": "7561" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_bytes$_t_string$", + "typeString": "function(bool,bytes,string)" + }, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "8254", + "length": "8061", + "line": "9", + "parentIndex": "264", + "start": "194" + } + } + } + ] + }, + "src": { + "id": 265, + "line": 9, + "start": 194, + "end": 8254, + "length": 8061, + "parent_index": 263 + } + }, + { + "id": 769, + "license": "MIT", + "name": "IBentoBoxMinimal", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IBentoBoxMinimal.sol", + "exported_symbols": [ + { + "id": 769, + "name": "IBentoBoxMinimal", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IBentoBoxMinimal.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "773", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "8326", + "id": "774", + "length": "23", + "line": "227", + "parentIndex": "769", + "start": "8304" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "811", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "811" + ], + "name": "IBentoBoxMinimal", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "831", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "8611", + "id": "814", + "length": "69", + "line": "233", + "parentIndex": "813", + "start": "8543" + } + }, + "id": "813", + "kind": "KIND_FUNCTION", + "name": "balanceOf", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "815", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "817", + "nodeType": "VARIABLE_DECLARATION", + "scope": "817", + "src": { + "column": "23", + "end": "8568", + "id": "818", + "length": "7", + "line": "233", + "parentIndex": "815", + "start": "8562" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "819", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "8568", + "id": "820", + "length": "7", + "line": "233", + "parentIndex": "817", + "start": "8562" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "821", + "nodeType": "VARIABLE_DECLARATION", + "scope": "821", + "src": { + "column": "32", + "end": "8577", + "id": "822", + "length": "7", + "line": "233", + "parentIndex": "815", + "start": "8571" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "823", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "32", + "end": "8577", + "id": "824", + "length": "7", + "line": "233", + "parentIndex": "821", + "start": "8571" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "8577", + "id": "816", + "length": "16", + "line": "233", + "parentIndex": "813", + "start": "8562" + } + }, + "returnParameters": { + "id": "825", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "827", + "nodeType": "VARIABLE_DECLARATION", + "scope": "827", + "src": { + "column": "64", + "end": "8609", + "id": "828", + "length": "7", + "line": "233", + "parentIndex": "825", + "start": "8603" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "829", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "64", + "end": "8609", + "id": "830", + "length": "7", + "line": "233", + "parentIndex": "827", + "start": "8603" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "64", + "end": "8609", + "id": "826", + "length": "7", + "line": "233", + "parentIndex": "813", + "start": "8603" + } + }, + "scope": "811", + "src": { + "column": "4", + "end": "8611", + "id": "814", + "length": "69", + "line": "233", + "parentIndex": "811", + "start": "8543" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "855", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "9033", + "id": "834", + "length": "130", + "line": "240", + "parentIndex": "833", + "start": "8904" + } + }, + "id": "833", + "kind": "KIND_FUNCTION", + "name": "toShare", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "835", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "837", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "837", + "src": { + "column": "8", + "end": "8942", + "id": "838", + "length": "13", + "line": "241", + "parentIndex": "835", + "start": "8930" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "839", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "8936", + "id": "840", + "length": "7", + "line": "241", + "parentIndex": "837", + "start": "8930" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "841", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "841", + "src": { + "column": "8", + "end": "8966", + "id": "842", + "length": "14", + "line": "242", + "parentIndex": "835", + "start": "8953" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "843", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "8959", + "id": "844", + "length": "7", + "line": "242", + "parentIndex": "841", + "start": "8953" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "845", + "name": "roundUp", + "nodeType": "VARIABLE_DECLARATION", + "scope": "845", + "src": { + "column": "8", + "end": "8988", + "id": "846", + "length": "12", + "line": "243", + "parentIndex": "835", + "start": "8977" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "847", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "8980", + "id": "848", + "length": "4", + "line": "243", + "parentIndex": "845", + "start": "8977" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "8988", + "id": "836", + "length": "59", + "line": "241", + "parentIndex": "833", + "start": "8930" + } + }, + "returnParameters": { + "id": "849", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "851", + "name": "share", + "nodeType": "VARIABLE_DECLARATION", + "scope": "851", + "src": { + "column": "29", + "end": "9031", + "id": "852", + "length": "13", + "line": "244", + "parentIndex": "849", + "start": "9019" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "853", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "9025", + "id": "854", + "length": "7", + "line": "244", + "parentIndex": "851", + "start": "9019" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "9031", + "id": "850", + "length": "13", + "line": "244", + "parentIndex": "833", + "start": "9019" + } + }, + "scope": "811", + "src": { + "column": "4", + "end": "9033", + "id": "834", + "length": "130", + "line": "240", + "parentIndex": "811", + "start": "8904" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$_t_bool$", + "typeString": "function(address,uint256,bool)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "879", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "9463", + "id": "858", + "length": "131", + "line": "251", + "parentIndex": "857", + "start": "9333" + } + }, + "id": "857", + "kind": "KIND_FUNCTION", + "name": "toAmount", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "859", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "861", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "861", + "src": { + "column": "8", + "end": "9372", + "id": "862", + "length": "13", + "line": "252", + "parentIndex": "859", + "start": "9360" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "863", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "9366", + "id": "864", + "length": "7", + "line": "252", + "parentIndex": "861", + "start": "9360" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "865", + "name": "share", + "nodeType": "VARIABLE_DECLARATION", + "scope": "865", + "src": { + "column": "8", + "end": "9395", + "id": "866", + "length": "13", + "line": "253", + "parentIndex": "859", + "start": "9383" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "867", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "9389", + "id": "868", + "length": "7", + "line": "253", + "parentIndex": "865", + "start": "9383" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "869", + "name": "roundUp", + "nodeType": "VARIABLE_DECLARATION", + "scope": "869", + "src": { + "column": "8", + "end": "9417", + "id": "870", + "length": "12", + "line": "254", + "parentIndex": "859", + "start": "9406" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "871", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "9409", + "id": "872", + "length": "4", + "line": "254", + "parentIndex": "869", + "start": "9406" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "9417", + "id": "860", + "length": "58", + "line": "252", + "parentIndex": "857", + "start": "9360" + } + }, + "returnParameters": { + "id": "873", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "875", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "875", + "src": { + "column": "29", + "end": "9461", + "id": "876", + "length": "14", + "line": "255", + "parentIndex": "873", + "start": "9448" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "877", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "9454", + "id": "878", + "length": "7", + "line": "255", + "parentIndex": "875", + "start": "9448" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "9461", + "id": "874", + "length": "14", + "line": "255", + "parentIndex": "857", + "start": "9448" + } + }, + "scope": "811", + "src": { + "column": "4", + "end": "9463", + "id": "858", + "length": "131", + "line": "251", + "parentIndex": "811", + "start": "9333" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$_t_bool$", + "typeString": "function(address,uint256,bool)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "885", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "9589", + "id": "882", + "length": "37", + "line": "258", + "parentIndex": "881", + "start": "9553" + } + }, + "id": "881", + "kind": "KIND_FUNCTION", + "name": "registerProtocol", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "883", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "9589", + "id": "882", + "length": "37", + "line": "258", + "parentIndex": "881", + "start": "9553" + } + }, + "returnParameters": { + "id": "884", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "9589", + "id": "882", + "length": "37", + "line": "258", + "parentIndex": "881", + "start": "9553" + } + }, + "scope": "811", + "src": { + "column": "4", + "end": "9589", + "id": "882", + "length": "37", + "line": "258", + "parentIndex": "811", + "start": "9553" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "921", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "10328", + "id": "888", + "length": "199", + "line": "268", + "parentIndex": "887", + "start": "10130" + } + }, + "id": "887", + "kind": "KIND_FUNCTION", + "name": "deposit", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "889", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "891", + "name": "token_", + "nodeType": "VARIABLE_DECLARATION", + "scope": "891", + "src": { + "column": "8", + "end": "10169", + "id": "892", + "length": "14", + "line": "269", + "parentIndex": "889", + "start": "10156" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "893", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "10162", + "id": "894", + "length": "7", + "line": "269", + "parentIndex": "891", + "start": "10156" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "895", + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "895", + "src": { + "column": "8", + "end": "10191", + "id": "896", + "length": "12", + "line": "270", + "parentIndex": "889", + "start": "10180" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "897", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "10186", + "id": "898", + "length": "7", + "line": "270", + "parentIndex": "895", + "start": "10180" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "899", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "899", + "src": { + "column": "8", + "end": "10211", + "id": "900", + "length": "10", + "line": "271", + "parentIndex": "889", + "start": "10202" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "901", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "10208", + "id": "902", + "length": "7", + "line": "271", + "parentIndex": "899", + "start": "10202" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "903", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "903", + "src": { + "column": "8", + "end": "10235", + "id": "904", + "length": "14", + "line": "272", + "parentIndex": "889", + "start": "10222" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "905", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "10228", + "id": "906", + "length": "7", + "line": "272", + "parentIndex": "903", + "start": "10222" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "907", + "name": "share", + "nodeType": "VARIABLE_DECLARATION", + "scope": "907", + "src": { + "column": "8", + "end": "10258", + "id": "908", + "length": "13", + "line": "273", + "parentIndex": "889", + "start": "10246" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "909", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "10252", + "id": "910", + "length": "7", + "line": "273", + "parentIndex": "907", + "start": "10246" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "10258", + "id": "890", + "length": "103", + "line": "269", + "parentIndex": "887", + "start": "10156" + } + }, + "returnParameters": { + "id": "911", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "913", + "name": "amountOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "913", + "src": { + "column": "32", + "end": "10308", + "id": "914", + "length": "17", + "line": "274", + "parentIndex": "911", + "start": "10292" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "915", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "32", + "end": "10298", + "id": "916", + "length": "7", + "line": "274", + "parentIndex": "913", + "start": "10292" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "917", + "name": "shareOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "917", + "src": { + "column": "51", + "end": "10326", + "id": "918", + "length": "16", + "line": "274", + "parentIndex": "911", + "start": "10311" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "919", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "51", + "end": "10317", + "id": "920", + "length": "7", + "line": "274", + "parentIndex": "917", + "start": "10311" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "32", + "end": "10326", + "id": "912", + "length": "35", + "line": "274", + "parentIndex": "887", + "start": "10292" + } + }, + "scope": "811", + "src": { + "column": "4", + "end": "10328", + "id": "888", + "length": "199", + "line": "268", + "parentIndex": "811", + "start": "10130" + }, + "stateMutability": "PAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$", + "typeString": "function(address,address,address,uint256,uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "957", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "10912", + "id": "924", + "length": "192", + "line": "282", + "parentIndex": "923", + "start": "10721" + } + }, + "id": "923", + "kind": "KIND_FUNCTION", + "name": "withdraw", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "925", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "927", + "name": "token_", + "nodeType": "VARIABLE_DECLARATION", + "scope": "927", + "src": { + "column": "8", + "end": "10761", + "id": "928", + "length": "14", + "line": "283", + "parentIndex": "925", + "start": "10748" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "929", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "10754", + "id": "930", + "length": "7", + "line": "283", + "parentIndex": "927", + "start": "10748" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "931", + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "931", + "src": { + "column": "8", + "end": "10783", + "id": "932", + "length": "12", + "line": "284", + "parentIndex": "925", + "start": "10772" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "933", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "10778", + "id": "934", + "length": "7", + "line": "284", + "parentIndex": "931", + "start": "10772" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "935", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "935", + "src": { + "column": "8", + "end": "10803", + "id": "936", + "length": "10", + "line": "285", + "parentIndex": "925", + "start": "10794" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "937", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "10800", + "id": "938", + "length": "7", + "line": "285", + "parentIndex": "935", + "start": "10794" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "939", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "939", + "src": { + "column": "8", + "end": "10827", + "id": "940", + "length": "14", + "line": "286", + "parentIndex": "925", + "start": "10814" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "941", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "10820", + "id": "942", + "length": "7", + "line": "286", + "parentIndex": "939", + "start": "10814" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "943", + "name": "share", + "nodeType": "VARIABLE_DECLARATION", + "scope": "943", + "src": { + "column": "8", + "end": "10850", + "id": "944", + "length": "13", + "line": "287", + "parentIndex": "925", + "start": "10838" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "945", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "10844", + "id": "946", + "length": "7", + "line": "287", + "parentIndex": "943", + "start": "10838" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "10850", + "id": "926", + "length": "103", + "line": "283", + "parentIndex": "923", + "start": "10748" + } + }, + "returnParameters": { + "id": "947", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "949", + "name": "amountOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "949", + "src": { + "column": "24", + "end": "10892", + "id": "950", + "length": "17", + "line": "288", + "parentIndex": "947", + "start": "10876" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "951", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "10882", + "id": "952", + "length": "7", + "line": "288", + "parentIndex": "949", + "start": "10876" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "953", + "name": "shareOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "953", + "src": { + "column": "43", + "end": "10910", + "id": "954", + "length": "16", + "line": "288", + "parentIndex": "947", + "start": "10895" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "955", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "43", + "end": "10901", + "id": "956", + "length": "7", + "line": "288", + "parentIndex": "953", + "start": "10895" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "10910", + "id": "948", + "length": "35", + "line": "288", + "parentIndex": "923", + "start": "10876" + } + }, + "scope": "811", + "src": { + "column": "4", + "end": "10912", + "id": "924", + "length": "192", + "line": "282", + "parentIndex": "811", + "start": "10721" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$", + "typeString": "function(address,address,address,uint256,uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "980", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "11312", + "id": "960", + "length": "121", + "line": "295", + "parentIndex": "959", + "start": "11192" + } + }, + "id": "959", + "kind": "KIND_FUNCTION", + "name": "transfer", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "961", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "963", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "963", + "src": { + "column": "8", + "end": "11231", + "id": "964", + "length": "13", + "line": "296", + "parentIndex": "961", + "start": "11219" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "965", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11225", + "id": "966", + "length": "7", + "line": "296", + "parentIndex": "963", + "start": "11219" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "967", + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "967", + "src": { + "column": "8", + "end": "11253", + "id": "968", + "length": "12", + "line": "297", + "parentIndex": "961", + "start": "11242" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "969", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11248", + "id": "970", + "length": "7", + "line": "297", + "parentIndex": "967", + "start": "11242" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "971", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "971", + "src": { + "column": "8", + "end": "11273", + "id": "972", + "length": "10", + "line": "298", + "parentIndex": "961", + "start": "11264" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "973", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11270", + "id": "974", + "length": "7", + "line": "298", + "parentIndex": "971", + "start": "11264" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "975", + "name": "share", + "nodeType": "VARIABLE_DECLARATION", + "scope": "975", + "src": { + "column": "8", + "end": "11296", + "id": "976", + "length": "13", + "line": "299", + "parentIndex": "961", + "start": "11284" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "977", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11290", + "id": "978", + "length": "7", + "line": "299", + "parentIndex": "975", + "start": "11284" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "11296", + "id": "962", + "length": "78", + "line": "296", + "parentIndex": "959", + "start": "11219" + } + }, + "returnParameters": { + "id": "979", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "11312", + "id": "960", + "length": "121", + "line": "295", + "parentIndex": "959", + "start": "11192" + } + }, + "scope": "811", + "src": { + "column": "4", + "end": "11312", + "id": "960", + "length": "121", + "line": "295", + "parentIndex": "811", + "start": "11192" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,address,uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1011", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "11500", + "id": "983", + "length": "182", + "line": "302", + "parentIndex": "982", + "start": "11319" + } + }, + "id": "982", + "kind": "KIND_FUNCTION", + "name": "setMasterContractApproval", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "984", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "986", + "name": "user", + "nodeType": "VARIABLE_DECLARATION", + "scope": "986", + "src": { + "column": "8", + "end": "11374", + "id": "987", + "length": "12", + "line": "303", + "parentIndex": "984", + "start": "11363" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "988", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11369", + "id": "989", + "length": "7", + "line": "303", + "parentIndex": "986", + "start": "11363" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "990", + "name": "masterContract", + "nodeType": "VARIABLE_DECLARATION", + "scope": "990", + "src": { + "column": "8", + "end": "11406", + "id": "991", + "length": "22", + "line": "304", + "parentIndex": "984", + "start": "11385" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "992", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11391", + "id": "993", + "length": "7", + "line": "304", + "parentIndex": "990", + "start": "11385" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "994", + "name": "approved", + "nodeType": "VARIABLE_DECLARATION", + "scope": "994", + "src": { + "column": "8", + "end": "11429", + "id": "995", + "length": "13", + "line": "305", + "parentIndex": "984", + "start": "11417" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "996", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11420", + "id": "997", + "length": "4", + "line": "305", + "parentIndex": "994", + "start": "11417" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "998", + "name": "v", + "nodeType": "VARIABLE_DECLARATION", + "scope": "998", + "src": { + "column": "8", + "end": "11446", + "id": "999", + "length": "7", + "line": "306", + "parentIndex": "984", + "start": "11440" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "1000", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11444", + "id": "1001", + "length": "5", + "line": "306", + "parentIndex": "998", + "start": "11440" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1002", + "name": "r", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1002", + "src": { + "column": "8", + "end": "11465", + "id": "1003", + "length": "9", + "line": "307", + "parentIndex": "984", + "start": "11457" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "1004", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11463", + "id": "1005", + "length": "7", + "line": "307", + "parentIndex": "1002", + "start": "11457" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1006", + "name": "s", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1006", + "src": { + "column": "8", + "end": "11484", + "id": "1007", + "length": "9", + "line": "308", + "parentIndex": "984", + "start": "11476" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "1008", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11482", + "id": "1009", + "length": "7", + "line": "308", + "parentIndex": "1006", + "start": "11476" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "11484", + "id": "985", + "length": "122", + "line": "303", + "parentIndex": "982", + "start": "11363" + } + }, + "returnParameters": { + "id": "1010", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "11500", + "id": "983", + "length": "182", + "line": "302", + "parentIndex": "982", + "start": "11319" + } + }, + "scope": "811", + "src": { + "column": "4", + "end": "11500", + "id": "983", + "length": "182", + "line": "302", + "parentIndex": "811", + "start": "11319" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_bool$_t_uint8$_t_bytes32$_t_bytes32$", + "typeString": "function(address,address,bool,uint8,bytes32,bytes32)" + }, + "visibility": "EXTERNAL" + } + } + ], + "src": { + "end": "11502", + "length": "3057", + "line": "231", + "parentIndex": "769", + "start": "8446" + } + } + } + ] + }, + "src": { + "id": 770, + "line": 231, + "start": 8446, + "end": 11502, + "length": 3057, + "parent_index": 263 + } + }, + { + "id": 1012, + "license": "MIT", + "name": "IStargateRouter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateRouter.sol", + "exported_symbols": [ + { + "id": 1012, + "name": "IStargateRouter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateRouter.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "1018", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "11565", + "id": "1019", + "length": "23", + "line": "315", + "parentIndex": "1012", + "start": "11543" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "1056", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "1056" + ], + "name": "IStargateRouter", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", + "value": { + "canonicalName": "IStargateRouter.lzTxObj", + "id": "1058", + "members": [ + { + "id": "1060", + "name": "dstGasForCall", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1060", + "src": { + "column": "8", + "end": "11647", + "id": "1061", + "length": "22", + "line": "320", + "parentIndex": "1058", + "start": "11626" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1062", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11632", + "id": "1063", + "length": "7", + "line": "320", + "parentIndex": "1060", + "start": "11626" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1064", + "name": "dstNativeAmount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1064", + "src": { + "column": "8", + "end": "11680", + "id": "1065", + "length": "24", + "line": "321", + "parentIndex": "1058", + "start": "11657" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1066", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11663", + "id": "1067", + "length": "7", + "line": "321", + "parentIndex": "1064", + "start": "11657" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1068", + "name": "dstNativeAddr", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1068", + "src": { + "column": "8", + "end": "11709", + "id": "1069", + "length": "20", + "line": "322", + "parentIndex": "1058", + "start": "11690" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1070", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11694", + "id": "1071", + "length": "5", + "line": "322", + "parentIndex": "1068", + "start": "11690" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "name": "lzTxObj", + "nodeType": "STRUCT_DEFINITION", + "src": { + "column": "4", + "end": "11715", + "id": "1059", + "length": "115", + "line": "319", + "parentIndex": "1012", + "start": "11601" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_struct$_IStargateRouter_lzTxObj_$1058", + "typeString": "struct IStargateRouter.lzTxObj" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1116", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "12036", + "id": "1074", + "length": "315", + "line": "325", + "parentIndex": "1073", + "start": "11722" + } + }, + "id": "1073", + "kind": "KIND_FUNCTION", + "name": "swap", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1075", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1077", + "name": "_dstChainId", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1077", + "src": { + "column": "8", + "end": "11762", + "id": "1078", + "length": "18", + "line": "326", + "parentIndex": "1075", + "start": "11745" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": "1079", + "name": "uint16", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11750", + "id": "1080", + "length": "6", + "line": "326", + "parentIndex": "1077", + "start": "11745" + }, + "typeDescription": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1081", + "name": "_srcPoolId", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1081", + "src": { + "column": "8", + "end": "11790", + "id": "1082", + "length": "18", + "line": "327", + "parentIndex": "1075", + "start": "11773" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1083", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11779", + "id": "1084", + "length": "7", + "line": "327", + "parentIndex": "1081", + "start": "11773" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1085", + "name": "_dstPoolId", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1085", + "src": { + "column": "8", + "end": "11818", + "id": "1086", + "length": "18", + "line": "328", + "parentIndex": "1075", + "start": "11801" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1087", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11807", + "id": "1088", + "length": "7", + "line": "328", + "parentIndex": "1085", + "start": "11801" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1089", + "name": "_refundAddress", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1089", + "src": { + "column": "8", + "end": "11858", + "id": "1090", + "length": "30", + "line": "329", + "parentIndex": "1075", + "start": "11829" + }, + "stateMutability": "PAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address_payable", + "typeString": "address" + }, + "typeName": { + "id": "1091", + "name": "addresspayable", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11843", + "id": "1092", + "length": "15", + "line": "329", + "parentIndex": "1089", + "start": "11829" + }, + "stateMutability": "PAYABLE", + "typeDescription": { + "typeIdentifier": "t_address_payable", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1093", + "name": "_amountLD", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1093", + "src": { + "column": "8", + "end": "11885", + "id": "1094", + "length": "17", + "line": "330", + "parentIndex": "1075", + "start": "11869" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1095", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11875", + "id": "1096", + "length": "7", + "line": "330", + "parentIndex": "1093", + "start": "11869" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1097", + "name": "_minAmountLD", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1097", + "src": { + "column": "8", + "end": "11915", + "id": "1098", + "length": "20", + "line": "331", + "parentIndex": "1075", + "start": "11896" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1099", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11902", + "id": "1100", + "length": "7", + "line": "331", + "parentIndex": "1097", + "start": "11896" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1101", + "name": "_lzTxParams", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1101", + "src": { + "column": "8", + "end": "11951", + "id": "1102", + "length": "26", + "line": "332", + "parentIndex": "1075", + "start": "11926" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_struct$_IStargateRouter_lzTxObj_$1058", + "typeString": "struct IStargateRouter.lzTxObj" + }, + "typeName": { + "id": "1103", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1105", + "name": "lzTxObj", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1058", + "src": { + "column": "8", + "end": "11932", + "id": "1106", + "length": "7", + "line": "332", + "parentIndex": "1103", + "start": "11926" + } + }, + "referencedDeclaration": "1058", + "src": { + "column": "8", + "end": "11932", + "id": "1104", + "length": "7", + "line": "332", + "parentIndex": "1101", + "start": "11926" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_IStargateRouter_lzTxObj_$1058", + "typeString": "struct IStargateRouter.lzTxObj" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1107", + "name": "_to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1107", + "src": { + "column": "8", + "end": "11979", + "id": "1108", + "length": "18", + "line": "333", + "parentIndex": "1075", + "start": "11962" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1109", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11966", + "id": "1110", + "length": "5", + "line": "333", + "parentIndex": "1107", + "start": "11962" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1111", + "name": "_payload", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1111", + "src": { + "column": "8", + "end": "12012", + "id": "1112", + "length": "23", + "line": "334", + "parentIndex": "1075", + "start": "11990" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1113", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "11994", + "id": "1114", + "length": "5", + "line": "334", + "parentIndex": "1111", + "start": "11990" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "12012", + "id": "1076", + "length": "268", + "line": "326", + "parentIndex": "1073", + "start": "11745" + } + }, + "returnParameters": { + "id": "1115", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "12036", + "id": "1074", + "length": "315", + "line": "325", + "parentIndex": "1073", + "start": "11722" + } + }, + "scope": "1056", + "src": { + "column": "4", + "end": "12036", + "id": "1074", + "length": "315", + "line": "325", + "parentIndex": "1056", + "start": "11722" + }, + "stateMutability": "PAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint16$_t_uint256$_t_uint256$_t_address_payable$_t_uint256$_t_uint256$_t_struct$_IStargateRouter_lzTxObj_$1058$_t_bytes$_t_bytes$", + "typeString": "function(uint16,uint256,uint256,address,uint256,uint256,struct IStargateRouter.lzTxObj,bytes,bytes)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1154", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "12292", + "id": "1119", + "length": "250", + "line": "337", + "parentIndex": "1118", + "start": "12043" + } + }, + "id": "1118", + "kind": "KIND_FUNCTION", + "name": "quoteLayerZeroFee", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1120", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1122", + "name": "_dstChainId", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1122", + "src": { + "column": "8", + "end": "12096", + "id": "1123", + "length": "18", + "line": "338", + "parentIndex": "1120", + "start": "12079" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": "1124", + "name": "uint16", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "12084", + "id": "1125", + "length": "6", + "line": "338", + "parentIndex": "1122", + "start": "12079" + }, + "typeDescription": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1126", + "name": "_functionType", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1126", + "src": { + "column": "8", + "end": "12125", + "id": "1127", + "length": "19", + "line": "339", + "parentIndex": "1120", + "start": "12107" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "1128", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "12111", + "id": "1129", + "length": "5", + "line": "339", + "parentIndex": "1126", + "start": "12107" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1130", + "name": "_toAddress", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1130", + "src": { + "column": "8", + "end": "12160", + "id": "1131", + "length": "25", + "line": "340", + "parentIndex": "1120", + "start": "12136" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1132", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "12140", + "id": "1133", + "length": "5", + "line": "340", + "parentIndex": "1130", + "start": "12136" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1134", + "name": "_transferAndCallPayload", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1134", + "src": { + "column": "8", + "end": "12208", + "id": "1135", + "length": "38", + "line": "341", + "parentIndex": "1120", + "start": "12171" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1136", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "12175", + "id": "1137", + "length": "5", + "line": "341", + "parentIndex": "1134", + "start": "12171" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1138", + "name": "_lzTxParams", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1138", + "src": { + "column": "8", + "end": "12244", + "id": "1139", + "length": "26", + "line": "342", + "parentIndex": "1120", + "start": "12219" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_struct$_IStargateRouter_lzTxObj_$1058", + "typeString": "struct IStargateRouter.lzTxObj" + }, + "typeName": { + "id": "1140", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1142", + "name": "lzTxObj", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1058", + "src": { + "column": "8", + "end": "12225", + "id": "1143", + "length": "7", + "line": "342", + "parentIndex": "1140", + "start": "12219" + } + }, + "referencedDeclaration": "1058", + "src": { + "column": "8", + "end": "12225", + "id": "1141", + "length": "7", + "line": "342", + "parentIndex": "1138", + "start": "12219" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_IStargateRouter_lzTxObj_$1058", + "typeString": "struct IStargateRouter.lzTxObj" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "12244", + "id": "1121", + "length": "166", + "line": "338", + "parentIndex": "1118", + "start": "12079" + } + }, + "returnParameters": { + "id": "1144", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1146", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1146", + "src": { + "column": "29", + "end": "12281", + "id": "1147", + "length": "7", + "line": "343", + "parentIndex": "1144", + "start": "12275" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1148", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "12281", + "id": "1149", + "length": "7", + "line": "343", + "parentIndex": "1146", + "start": "12275" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1150", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1150", + "src": { + "column": "38", + "end": "12290", + "id": "1151", + "length": "7", + "line": "343", + "parentIndex": "1144", + "start": "12284" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1152", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "38", + "end": "12290", + "id": "1153", + "length": "7", + "line": "343", + "parentIndex": "1150", + "start": "12284" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "12290", + "id": "1145", + "length": "16", + "line": "343", + "parentIndex": "1118", + "start": "12275" + } + }, + "scope": "1056", + "src": { + "column": "4", + "end": "12292", + "id": "1119", + "length": "250", + "line": "337", + "parentIndex": "1056", + "start": "12043" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint16$_t_uint8$_t_bytes$_t_bytes$_t_struct$_IStargateRouter_lzTxObj_$1058$", + "typeString": "function(uint16,uint8,bytes,bytes,struct IStargateRouter.lzTxObj)" + }, + "visibility": "EXTERNAL" + } + } + ], + "src": { + "end": "12294", + "length": "727", + "line": "317", + "parentIndex": "1012", + "start": "11568" + } + } + } + ] + }, + "src": { + "id": 1013, + "line": 317, + "start": 11568, + "end": 12294, + "length": 727, + "parent_index": 263 + } + }, + { + "id": 1155, + "license": "MIT", + "name": "IStargateWidget", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateWidget.sol", + "exported_symbols": [ + { + "id": 1155, + "name": "IStargateWidget", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateWidget.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "1163", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "12356", + "id": "1164", + "length": "23", + "line": "348", + "parentIndex": "1155", + "start": "12334" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "1201", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "1201" + ], + "name": "IStargateWidget", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1212", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "12439", + "id": "1204", + "length": "49", + "line": "351", + "parentIndex": "1203", + "start": "12391" + } + }, + "id": "1203", + "kind": "KIND_FUNCTION", + "name": "partnerSwap", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1205", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1207", + "name": "_partnerId", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1207", + "src": { + "column": "25", + "end": "12428", + "id": "1208", + "length": "17", + "line": "351", + "parentIndex": "1205", + "start": "12412" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + }, + "typeName": { + "id": "1209", + "name": "bytes2", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "25", + "end": "12417", + "id": "1210", + "length": "6", + "line": "351", + "parentIndex": "1207", + "start": "12412" + }, + "typeDescription": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "25", + "end": "12428", + "id": "1206", + "length": "17", + "line": "351", + "parentIndex": "1203", + "start": "12412" + } + }, + "returnParameters": { + "id": "1211", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "12439", + "id": "1204", + "length": "49", + "line": "351", + "parentIndex": "1203", + "start": "12391" + } + }, + "scope": "1201", + "src": { + "column": "4", + "end": "12439", + "id": "1204", + "length": "49", + "line": "351", + "parentIndex": "1201", + "start": "12391" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes2$", + "typeString": "function(bytes2)" + }, + "visibility": "EXTERNAL" + } + } + ], + "src": { + "end": "12441", + "length": "83", + "line": "350", + "parentIndex": "1155", + "start": "12359" + } + } + } + ] + }, + "src": { + "id": 1156, + "line": 350, + "start": 12359, + "end": 12441, + "length": 83, + "parent_index": 263 + } + }, + { + "id": 1213, + "license": "MIT", + "name": "IImmutableState", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IImmutableState.sol", + "exported_symbols": [ + { + "id": 1213, + "name": "IImmutableState", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IImmutableState.sol" + }, + { + "id": 1155, + "name": "IBentoBoxMinimal", + "absolute_path": "IBentoBoxMinimal.sol" + }, + { + "id": 1155, + "name": "IStargateRouter", + "absolute_path": "IStargateRouter.sol" + }, + { + "id": 1155, + "name": "IStargateWidget", + "absolute_path": "IStargateWidget.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "1223", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "12512", + "id": "1224", + "length": "23", + "line": "356", + "parentIndex": "1213", + "start": "12490" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IBentoBoxMinimal.sol", + "file": "./IBentoBoxMinimal.sol", + "id": "1225", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1213", + "sourceUnit": "1155", + "src": { + "end": "12546", + "length": "32", + "line": "358", + "parentIndex": "1213", + "start": "12515" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IStargateRouter.sol", + "file": "./IStargateRouter.sol", + "id": "1226", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1213", + "sourceUnit": "1155", + "src": { + "end": "12578", + "length": "31", + "line": "359", + "parentIndex": "1213", + "start": "12548" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IStargateWidget.sol", + "file": "./IStargateWidget.sol", + "id": "1227", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1213", + "sourceUnit": "1155", + "src": { + "end": "12610", + "length": "31", + "line": "360", + "parentIndex": "1213", + "start": "12580" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "contractDependencies": [ + "1225", + "1226", + "1227" + ], + "fullyImplemented": true, + "id": "1261", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "1261", + "1225", + "1226", + "1227" + ], + "name": "IImmutableState", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1281", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "12705", + "id": "1264", + "length": "61", + "line": "363", + "parentIndex": "1263", + "start": "12645" + } + }, + "id": "1263", + "kind": "KIND_FUNCTION", + "name": "bentoBox", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1265", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1267", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1267", + "src": { + "column": "47", + "end": "12703", + "id": "1268", + "length": "16", + "line": "363", + "parentIndex": "1265", + "start": "12688" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + }, + "typeName": { + "id": "1269", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1271", + "name": "IBentoBoxMinimal", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "769", + "src": { + "column": "47", + "end": "12703", + "id": "1272", + "length": "16", + "line": "363", + "parentIndex": "1269", + "start": "12688" + } + }, + "referencedDeclaration": "769", + "src": { + "column": "47", + "end": "12703", + "id": "1270", + "length": "16", + "line": "363", + "parentIndex": "1267", + "start": "12688" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "47", + "end": "12703", + "id": "1266", + "length": "16", + "line": "363", + "parentIndex": "1263", + "start": "12688" + } + }, + "returnParameters": { + "id": "1273", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1275", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1275", + "src": { + "column": "47", + "end": "12703", + "id": "1276", + "length": "16", + "line": "363", + "parentIndex": "1273", + "start": "12688" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + }, + "typeName": { + "id": "1277", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1279", + "name": "IBentoBoxMinimal", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "769", + "src": { + "column": "47", + "end": "12703", + "id": "1280", + "length": "16", + "line": "363", + "parentIndex": "1277", + "start": "12688" + } + }, + "referencedDeclaration": "769", + "src": { + "column": "47", + "end": "12703", + "id": "1278", + "length": "16", + "line": "363", + "parentIndex": "1275", + "start": "12688" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "47", + "end": "12703", + "id": "1274", + "length": "16", + "line": "363", + "parentIndex": "1263", + "start": "12688" + } + }, + "scope": "1261", + "src": { + "column": "4", + "end": "12705", + "id": "1264", + "length": "61", + "line": "363", + "parentIndex": "1261", + "start": "12645" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_contract$_IBentoBoxMinimal_$769$", + "typeString": "function(contract IBentoBoxMinimal)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1301", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "12777", + "id": "1284", + "length": "66", + "line": "365", + "parentIndex": "1283", + "start": "12712" + } + }, + "id": "1283", + "kind": "KIND_FUNCTION", + "name": "stargateRouter", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1285", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1287", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1287", + "src": { + "column": "53", + "end": "12775", + "id": "1288", + "length": "15", + "line": "365", + "parentIndex": "1285", + "start": "12761" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + }, + "typeName": { + "id": "1289", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1291", + "name": "IStargateRouter", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1012", + "src": { + "column": "53", + "end": "12775", + "id": "1292", + "length": "15", + "line": "365", + "parentIndex": "1289", + "start": "12761" + } + }, + "referencedDeclaration": "1012", + "src": { + "column": "53", + "end": "12775", + "id": "1290", + "length": "15", + "line": "365", + "parentIndex": "1287", + "start": "12761" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "53", + "end": "12775", + "id": "1286", + "length": "15", + "line": "365", + "parentIndex": "1283", + "start": "12761" + } + }, + "returnParameters": { + "id": "1293", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1295", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1295", + "src": { + "column": "53", + "end": "12775", + "id": "1296", + "length": "15", + "line": "365", + "parentIndex": "1293", + "start": "12761" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + }, + "typeName": { + "id": "1297", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1299", + "name": "IStargateRouter", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1012", + "src": { + "column": "53", + "end": "12775", + "id": "1300", + "length": "15", + "line": "365", + "parentIndex": "1297", + "start": "12761" + } + }, + "referencedDeclaration": "1012", + "src": { + "column": "53", + "end": "12775", + "id": "1298", + "length": "15", + "line": "365", + "parentIndex": "1295", + "start": "12761" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "53", + "end": "12775", + "id": "1294", + "length": "15", + "line": "365", + "parentIndex": "1283", + "start": "12761" + } + }, + "scope": "1261", + "src": { + "column": "4", + "end": "12777", + "id": "1284", + "length": "66", + "line": "365", + "parentIndex": "1261", + "start": "12712" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_contract$_IStargateRouter_$1012$", + "typeString": "function(contract IStargateRouter)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1321", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "12849", + "id": "1304", + "length": "66", + "line": "367", + "parentIndex": "1303", + "start": "12784" + } + }, + "id": "1303", + "kind": "KIND_FUNCTION", + "name": "stargateWidget", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1305", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1307", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1307", + "src": { + "column": "53", + "end": "12847", + "id": "1308", + "length": "15", + "line": "367", + "parentIndex": "1305", + "start": "12833" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + }, + "typeName": { + "id": "1309", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1311", + "name": "IStargateWidget", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1155", + "src": { + "column": "53", + "end": "12847", + "id": "1312", + "length": "15", + "line": "367", + "parentIndex": "1309", + "start": "12833" + } + }, + "referencedDeclaration": "1155", + "src": { + "column": "53", + "end": "12847", + "id": "1310", + "length": "15", + "line": "367", + "parentIndex": "1307", + "start": "12833" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "53", + "end": "12847", + "id": "1306", + "length": "15", + "line": "367", + "parentIndex": "1303", + "start": "12833" + } + }, + "returnParameters": { + "id": "1313", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1315", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1315", + "src": { + "column": "53", + "end": "12847", + "id": "1316", + "length": "15", + "line": "367", + "parentIndex": "1313", + "start": "12833" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + }, + "typeName": { + "id": "1317", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1319", + "name": "IStargateWidget", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1155", + "src": { + "column": "53", + "end": "12847", + "id": "1320", + "length": "15", + "line": "367", + "parentIndex": "1317", + "start": "12833" + } + }, + "referencedDeclaration": "1155", + "src": { + "column": "53", + "end": "12847", + "id": "1318", + "length": "15", + "line": "367", + "parentIndex": "1315", + "start": "12833" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "53", + "end": "12847", + "id": "1314", + "length": "15", + "line": "367", + "parentIndex": "1303", + "start": "12833" + } + }, + "scope": "1261", + "src": { + "column": "4", + "end": "12849", + "id": "1304", + "length": "66", + "line": "367", + "parentIndex": "1261", + "start": "12784" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_contract$_IStargateWidget_$1155$", + "typeString": "function(contract IStargateWidget)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1337", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "12906", + "id": "1324", + "length": "51", + "line": "369", + "parentIndex": "1323", + "start": "12856" + } + }, + "id": "1323", + "kind": "KIND_FUNCTION", + "name": "factory", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1325", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1327", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1327", + "src": { + "column": "46", + "end": "12904", + "id": "1328", + "length": "7", + "line": "369", + "parentIndex": "1325", + "start": "12898" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1329", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "46", + "end": "12904", + "id": "1330", + "length": "7", + "line": "369", + "parentIndex": "1327", + "start": "12898" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "46", + "end": "12904", + "id": "1326", + "length": "7", + "line": "369", + "parentIndex": "1323", + "start": "12898" + } + }, + "returnParameters": { + "id": "1331", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1333", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1333", + "src": { + "column": "46", + "end": "12904", + "id": "1334", + "length": "7", + "line": "369", + "parentIndex": "1331", + "start": "12898" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1335", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "46", + "end": "12904", + "id": "1336", + "length": "7", + "line": "369", + "parentIndex": "1333", + "start": "12898" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "46", + "end": "12904", + "id": "1332", + "length": "7", + "line": "369", + "parentIndex": "1323", + "start": "12898" + } + }, + "scope": "1261", + "src": { + "column": "4", + "end": "12906", + "id": "1324", + "length": "51", + "line": "369", + "parentIndex": "1261", + "start": "12856" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1353", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "12968", + "id": "1340", + "length": "56", + "line": "371", + "parentIndex": "1339", + "start": "12913" + } + }, + "id": "1339", + "kind": "KIND_FUNCTION", + "name": "pairCodeHash", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1341", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1343", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1343", + "src": { + "column": "51", + "end": "12966", + "id": "1344", + "length": "7", + "line": "371", + "parentIndex": "1341", + "start": "12960" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "1345", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "51", + "end": "12966", + "id": "1346", + "length": "7", + "line": "371", + "parentIndex": "1343", + "start": "12960" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "51", + "end": "12966", + "id": "1342", + "length": "7", + "line": "371", + "parentIndex": "1339", + "start": "12960" + } + }, + "returnParameters": { + "id": "1347", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1349", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1349", + "src": { + "column": "51", + "end": "12966", + "id": "1350", + "length": "7", + "line": "371", + "parentIndex": "1347", + "start": "12960" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "1351", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "51", + "end": "12966", + "id": "1352", + "length": "7", + "line": "371", + "parentIndex": "1349", + "start": "12960" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "51", + "end": "12966", + "id": "1348", + "length": "7", + "line": "371", + "parentIndex": "1339", + "start": "12960" + } + }, + "scope": "1261", + "src": { + "column": "4", + "end": "12968", + "id": "1340", + "length": "56", + "line": "371", + "parentIndex": "1261", + "start": "12913" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes32$", + "typeString": "function(bytes32)" + }, + "visibility": "EXTERNAL" + } + } + ], + "src": { + "end": "12970", + "length": "358", + "line": "362", + "parentIndex": "1213", + "start": "12613" + } + } + } + ] + }, + "src": { + "id": 1214, + "line": 362, + "start": 12613, + "end": 12970, + "length": 358, + "parent_index": 263 + } + }, + { + "id": 1354, + "license": "MIT", + "name": "ImmutableState", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ImmutableState.sol", + "exported_symbols": [ + { + "id": 1354, + "name": "ImmutableState", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ImmutableState.sol" + }, + { + "id": 1213, + "name": "IImmutableState", + "absolute_path": "IImmutableState.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "1366", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "13041", + "id": "1367", + "length": "23", + "line": "376", + "parentIndex": "1354", + "start": "13019" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IImmutableState.sol", + "file": "./IImmutableState.sol", + "id": "1371", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1354", + "sourceUnit": "1213", + "src": { + "end": "13074", + "length": "31", + "line": "378", + "parentIndex": "1354", + "start": "13044" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "1375", + "name": "IImmutableState", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1213", + "src": { + "column": "36", + "end": "13192", + "id": "1376", + "length": "15", + "line": "382", + "parentIndex": "1372", + "start": "13178" + } + }, + "id": "1373", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "36", + "end": "13192", + "id": "1374", + "length": "15", + "line": "382", + "parentIndex": "1372", + "start": "13178" + } + } + ], + "contractDependencies": [ + "1213", + "1371" + ], + "fullyImplemented": true, + "id": "1372", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "1213", + "1372", + "1371" + ], + "name": "ImmutableState", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "1378", + "isStateVariable": true, + "name": "bentoBox", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1372", + "src": { + "column": "4", + "end": "13288", + "id": "1379", + "length": "52", + "line": "384", + "parentIndex": "1372", + "start": "13237" + }, + "stateMutability": "IMMUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + }, + "typeName": { + "id": "1380", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1382", + "name": "IBentoBoxMinimal", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "769", + "src": { + "column": "4", + "end": "13252", + "id": "1383", + "length": "16", + "line": "384", + "parentIndex": "1380", + "start": "13237" + } + }, + "referencedDeclaration": "769", + "src": { + "column": "4", + "end": "13252", + "id": "1381", + "length": "16", + "line": "384", + "parentIndex": "1378", + "start": "13237" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "1385", + "isStateVariable": true, + "name": "stargateRouter", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1372", + "src": { + "column": "4", + "end": "13411", + "id": "1386", + "length": "57", + "line": "387", + "parentIndex": "1372", + "start": "13355" + }, + "stateMutability": "IMMUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + }, + "typeName": { + "id": "1387", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1389", + "name": "IStargateRouter", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1012", + "src": { + "column": "4", + "end": "13369", + "id": "1390", + "length": "15", + "line": "387", + "parentIndex": "1387", + "start": "13355" + } + }, + "referencedDeclaration": "1012", + "src": { + "column": "4", + "end": "13369", + "id": "1388", + "length": "15", + "line": "387", + "parentIndex": "1385", + "start": "13355" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "1392", + "isStateVariable": true, + "name": "stargateWidget", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1372", + "src": { + "column": "4", + "end": "13531", + "id": "1393", + "length": "57", + "line": "390", + "parentIndex": "1372", + "start": "13475" + }, + "stateMutability": "IMMUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + }, + "typeName": { + "id": "1394", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1396", + "name": "IStargateWidget", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1155", + "src": { + "column": "4", + "end": "13489", + "id": "1397", + "length": "15", + "line": "390", + "parentIndex": "1394", + "start": "13475" + } + }, + "referencedDeclaration": "1155", + "src": { + "column": "4", + "end": "13489", + "id": "1395", + "length": "15", + "line": "390", + "parentIndex": "1392", + "start": "13475" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + } + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "1399", + "isStateVariable": true, + "name": "factory", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1372", + "src": { + "column": "4", + "end": "13624", + "id": "1400", + "length": "42", + "line": "393", + "parentIndex": "1372", + "start": "13583" + }, + "stateMutability": "IMMUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1401", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "13589", + "id": "1402", + "length": "7", + "line": "393", + "parentIndex": "1399", + "start": "13583" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "1404", + "isStateVariable": true, + "name": "pairCodeHash", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1372", + "src": { + "column": "4", + "end": "13727", + "id": "1405", + "length": "47", + "line": "396", + "parentIndex": "1372", + "start": "13681" + }, + "stateMutability": "IMMUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "1406", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "13687", + "id": "1407", + "length": "7", + "line": "396", + "parentIndex": "1404", + "start": "13681" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1440", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "6", + "end": "14113", + "id": "1441", + "length": "187", + "line": "404", + "parentIndex": "1409", + "start": "13927" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1444", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1446", + "name": "bentoBox", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1378", + "src": { + "column": "8", + "end": "13944", + "id": "1447", + "length": "8", + "line": "405", + "parentIndex": "1444", + "start": "13937" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1448", + "name": "_bentoBox", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1448", + "src": { + "column": "19", + "end": "13956", + "id": "1449", + "length": "9", + "line": "405", + "parentIndex": "1444", + "start": "13948" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "src": { + "column": "8", + "end": "13956", + "id": "1445", + "length": "20", + "line": "405", + "parentIndex": "1440", + "start": "13937" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "1442", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "13957", + "id": "1443", + "length": "21", + "line": "405", + "parentIndex": "1440", + "start": "13937" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1452", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1454", + "name": "stargateRouter", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1385", + "src": { + "column": "8", + "end": "13980", + "id": "1455", + "length": "14", + "line": "406", + "parentIndex": "1452", + "start": "13967" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1456", + "name": "_stargateRouter", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1456", + "src": { + "column": "25", + "end": "13998", + "id": "1457", + "length": "15", + "line": "406", + "parentIndex": "1452", + "start": "13984" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + } + }, + "src": { + "column": "8", + "end": "13998", + "id": "1453", + "length": "32", + "line": "406", + "parentIndex": "1440", + "start": "13967" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + } + }, + "id": "1450", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "13999", + "id": "1451", + "length": "33", + "line": "406", + "parentIndex": "1440", + "start": "13967" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1460", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1462", + "name": "stargateWidget", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1392", + "src": { + "column": "8", + "end": "14022", + "id": "1463", + "length": "14", + "line": "407", + "parentIndex": "1460", + "start": "14009" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1464", + "name": "_stargateWidget", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1464", + "src": { + "column": "25", + "end": "14040", + "id": "1465", + "length": "15", + "line": "407", + "parentIndex": "1460", + "start": "14026" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + } + } + }, + "src": { + "column": "8", + "end": "14040", + "id": "1461", + "length": "32", + "line": "407", + "parentIndex": "1440", + "start": "14009" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + } + } + }, + "id": "1458", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "14041", + "id": "1459", + "length": "33", + "line": "407", + "parentIndex": "1440", + "start": "14009" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1468", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1470", + "name": "factory", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1399", + "src": { + "column": "8", + "end": "14057", + "id": "1471", + "length": "7", + "line": "408", + "parentIndex": "1468", + "start": "14051" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1472", + "name": "_factory", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1472", + "src": { + "column": "18", + "end": "14068", + "id": "1473", + "length": "8", + "line": "408", + "parentIndex": "1468", + "start": "14061" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "src": { + "column": "8", + "end": "14068", + "id": "1469", + "length": "18", + "line": "408", + "parentIndex": "1440", + "start": "14051" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1466", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "14069", + "id": "1467", + "length": "19", + "line": "408", + "parentIndex": "1440", + "start": "14051" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "1476", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1478", + "name": "pairCodeHash", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1404", + "src": { + "column": "8", + "end": "14090", + "id": "1479", + "length": "12", + "line": "409", + "parentIndex": "1476", + "start": "14079" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1480", + "name": "_pairCodeHash", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1480", + "src": { + "column": "23", + "end": "14106", + "id": "1481", + "length": "13", + "line": "409", + "parentIndex": "1476", + "start": "14094" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + "src": { + "column": "8", + "end": "14106", + "id": "1477", + "length": "28", + "line": "409", + "parentIndex": "1440", + "start": "14079" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + "id": "1474", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "14107", + "id": "1475", + "length": "29", + "line": "409", + "parentIndex": "1440", + "start": "14079" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + } + ] + }, + "id": "1409", + "implemented": true, + "kind": "CONSTRUCTOR", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1411", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1413", + "name": "_bentoBox", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1413", + "src": { + "column": "8", + "end": "13780", + "id": "1414", + "length": "26", + "line": "399", + "parentIndex": "1411", + "start": "13755" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + }, + "typeName": { + "id": "1415", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1417", + "name": "IBentoBoxMinimal", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "769", + "src": { + "column": "8", + "end": "13770", + "id": "1418", + "length": "16", + "line": "399", + "parentIndex": "1415", + "start": "13755" + } + }, + "referencedDeclaration": "769", + "src": { + "column": "8", + "end": "13770", + "id": "1416", + "length": "16", + "line": "399", + "parentIndex": "1413", + "start": "13755" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1419", + "name": "_stargateRouter", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1419", + "src": { + "column": "8", + "end": "13821", + "id": "1420", + "length": "31", + "line": "400", + "parentIndex": "1411", + "start": "13791" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + }, + "typeName": { + "id": "1421", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1423", + "name": "IStargateRouter", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1012", + "src": { + "column": "8", + "end": "13805", + "id": "1424", + "length": "15", + "line": "400", + "parentIndex": "1421", + "start": "13791" + } + }, + "referencedDeclaration": "1012", + "src": { + "column": "8", + "end": "13805", + "id": "1422", + "length": "15", + "line": "400", + "parentIndex": "1419", + "start": "13791" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1425", + "name": "_factory", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1425", + "src": { + "column": "8", + "end": "13847", + "id": "1426", + "length": "16", + "line": "401", + "parentIndex": "1411", + "start": "13832" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1427", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "13838", + "id": "1428", + "length": "7", + "line": "401", + "parentIndex": "1425", + "start": "13832" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1429", + "name": "_pairCodeHash", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1429", + "src": { + "column": "8", + "end": "13878", + "id": "1430", + "length": "21", + "line": "402", + "parentIndex": "1411", + "start": "13858" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "1431", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "13864", + "id": "1432", + "length": "7", + "line": "402", + "parentIndex": "1429", + "start": "13858" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1433", + "name": "_stargateWidget", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1433", + "src": { + "column": "8", + "end": "13919", + "id": "1434", + "length": "31", + "line": "403", + "parentIndex": "1411", + "start": "13889" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + }, + "typeName": { + "id": "1435", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1437", + "name": "IStargateWidget", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1155", + "src": { + "column": "8", + "end": "13903", + "id": "1438", + "length": "15", + "line": "403", + "parentIndex": "1435", + "start": "13889" + } + }, + "referencedDeclaration": "1155", + "src": { + "column": "8", + "end": "13903", + "id": "1436", + "length": "15", + "line": "403", + "parentIndex": "1433", + "start": "13889" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "13919", + "id": "1412", + "length": "165", + "line": "399", + "parentIndex": "1409", + "start": "13755" + } + }, + "returnParameters": { + "id": "1439", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "14113", + "id": "1410", + "length": "380", + "line": "398", + "parentIndex": "1409", + "start": "13734" + } + }, + "scope": "1372", + "src": { + "column": "4", + "end": "14113", + "id": "1410", + "length": "380", + "line": "398", + "parentIndex": "1372", + "start": "13734" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "$_t_constructor", + "typeString": "constructor" + }, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "14115", + "length": "974", + "line": "382", + "parentIndex": "1354", + "start": "13142" + } + } + } + ] + }, + "src": { + "id": 1355, + "line": 382, + "start": 13142, + "end": 14115, + "length": 974, + "parent_index": 263 + } + }, + { + "id": 1482, + "license": "MIT", + "name": "BentoAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/BentoAdapter.sol", + "exported_symbols": [ + { + "id": 1482, + "name": "BentoAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/BentoAdapter.sol" + }, + { + "id": 1354, + "name": "IBentoBoxMinimal", + "absolute_path": "IBentoBoxMinimal.sol" + }, + { + "id": 1354, + "name": "ImmutableState", + "absolute_path": "ImmutableState.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "1496", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "14186", + "id": "1497", + "length": "23", + "line": "415", + "parentIndex": "1482", + "start": "14164" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IBentoBoxMinimal.sol", + "file": "./IBentoBoxMinimal.sol", + "id": "1502", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1482", + "sourceUnit": "1354", + "src": { + "end": "14220", + "length": "32", + "line": "417", + "parentIndex": "1482", + "start": "14189" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ImmutableState.sol", + "file": "./ImmutableState.sol", + "id": "1503", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1482", + "sourceUnit": "1354", + "src": { + "end": "14251", + "length": "30", + "line": "418", + "parentIndex": "1482", + "start": "14222" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "1507", + "name": "ImmutableState", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1354", + "src": { + "column": "34", + "end": "14604", + "id": "1508", + "length": "14", + "line": "424", + "parentIndex": "1504", + "start": "14591" + } + }, + "id": "1505", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "34", + "end": "14604", + "id": "1506", + "length": "14", + "line": "424", + "parentIndex": "1504", + "start": "14591" + } + } + ], + "contractDependencies": [ + "1354", + "1502", + "1503" + ], + "fullyImplemented": true, + "id": "1504", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "1354", + "1504", + "1502", + "1503" + ], + "name": "BentoAdapter", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1539", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "15", + "end": "15481", + "id": "1540", + "length": "79", + "line": "442", + "parentIndex": "1510", + "start": "15403" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1549", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1549", + "src": { + "column": "39", + "end": "15448", + "id": "1550", + "length": "5", + "line": "443", + "parentIndex": "1541", + "start": "15444" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1551", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1551", + "src": { + "column": "46", + "end": "15454", + "id": "1552", + "length": "4", + "line": "443", + "parentIndex": "1541", + "start": "15451" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1553", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1553", + "src": { + "column": "52", + "end": "15458", + "id": "1554", + "length": "2", + "line": "443", + "parentIndex": "1541", + "start": "15457" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1555", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1555", + "src": { + "column": "56", + "end": "15466", + "id": "1556", + "length": "6", + "line": "443", + "parentIndex": "1541", + "start": "15461" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": "1557", + "name": "share", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1557", + "src": { + "column": "64", + "end": "15473", + "id": "1558", + "length": "5", + "line": "443", + "parentIndex": "1541", + "start": "15469" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCallOption", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1547", + "name": "bentoBox", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1378", + "src": { + "column": "8", + "end": "15420", + "id": "1548", + "length": "8", + "line": "443", + "parentIndex": "1545", + "start": "15413" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "1545", + "memberName": "deposit", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "15428", + "id": "1546", + "length": "16", + "line": "443", + "parentIndex": "1543", + "start": "15413" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "1543", + "kind": "FUNCTION_CALL_OPTION", + "nodeType": "FUNCTION_CALL_OPTION", + "src": { + "column": "8", + "end": "15442", + "id": "1544", + "length": "30", + "line": "443", + "parentIndex": "1541", + "start": "15413" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "1541", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "15474", + "id": "1542", + "length": "62", + "line": "443", + "parentIndex": "1539", + "start": "15413" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$", + "typeString": "function(address,address,address,uint256,uint256)" + } + } + } + ] + }, + "id": "1510", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_depositToBentoBox", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1512", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1514", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1514", + "src": { + "column": "8", + "end": "15274", + "id": "1515", + "length": "13", + "line": "436", + "parentIndex": "1512", + "start": "15262" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1516", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "15268", + "id": "1517", + "length": "7", + "line": "436", + "parentIndex": "1514", + "start": "15262" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1518", + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1518", + "src": { + "column": "8", + "end": "15296", + "id": "1519", + "length": "12", + "line": "437", + "parentIndex": "1512", + "start": "15285" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1520", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "15291", + "id": "1521", + "length": "7", + "line": "437", + "parentIndex": "1518", + "start": "15285" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1522", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1522", + "src": { + "column": "8", + "end": "15316", + "id": "1523", + "length": "10", + "line": "438", + "parentIndex": "1512", + "start": "15307" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1524", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "15313", + "id": "1525", + "length": "7", + "line": "438", + "parentIndex": "1522", + "start": "15307" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1526", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1526", + "src": { + "column": "8", + "end": "15340", + "id": "1527", + "length": "14", + "line": "439", + "parentIndex": "1512", + "start": "15327" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1528", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "15333", + "id": "1529", + "length": "7", + "line": "439", + "parentIndex": "1526", + "start": "15327" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1530", + "name": "share", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1530", + "src": { + "column": "8", + "end": "15363", + "id": "1531", + "length": "13", + "line": "440", + "parentIndex": "1512", + "start": "15351" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1532", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "15357", + "id": "1533", + "length": "7", + "line": "440", + "parentIndex": "1530", + "start": "15351" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1534", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1534", + "src": { + "column": "8", + "end": "15386", + "id": "1535", + "length": "13", + "line": "441", + "parentIndex": "1512", + "start": "15374" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1536", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "15380", + "id": "1537", + "length": "7", + "line": "441", + "parentIndex": "1534", + "start": "15374" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "15386", + "id": "1513", + "length": "125", + "line": "436", + "parentIndex": "1510", + "start": "15262" + } + }, + "returnParameters": { + "id": "1538", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "15481", + "id": "1511", + "length": "257", + "line": "435", + "parentIndex": "1510", + "start": "15225" + } + }, + "scope": "1504", + "src": { + "column": "4", + "end": "15481", + "id": "1511", + "length": "257", + "line": "435", + "parentIndex": "1504", + "start": "15225" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$_t_uint256$", + "typeString": "function(address,address,address,uint256,uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1589", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "15", + "end": "16558", + "id": "1590", + "length": "287", + "line": "463", + "parentIndex": "1560", + "start": "16272" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "1595", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "25", + "end": "16372", + "id": "1596", + "length": "74", + "line": "464", + "parentIndex": "1560", + "start": "16299" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1603", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1603", + "src": { + "column": "30", + "end": "16335", + "id": "1604", + "length": "5", + "line": "465", + "parentIndex": "1597", + "start": "16331" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1605", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1605", + "src": { + "column": "37", + "end": "16341", + "id": "1606", + "length": "4", + "line": "465", + "parentIndex": "1597", + "start": "16338" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1607", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1607", + "src": { + "column": "43", + "end": "16345", + "id": "1608", + "length": "2", + "line": "465", + "parentIndex": "1597", + "start": "16344" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1609", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1609", + "src": { + "column": "47", + "end": "16353", + "id": "1610", + "length": "6", + "line": "465", + "parentIndex": "1597", + "start": "16348" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": "1611", + "name": "share", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1611", + "src": { + "column": "55", + "end": "16360", + "id": "1612", + "length": "5", + "line": "465", + "parentIndex": "1597", + "start": "16356" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1601", + "name": "bentoBox", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1378", + "src": { + "column": "12", + "end": "16320", + "id": "1602", + "length": "8", + "line": "465", + "parentIndex": "1599", + "start": "16313" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "1599", + "memberName": "withdraw", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "16329", + "id": "1600", + "length": "17", + "line": "465", + "parentIndex": "1597", + "start": "16313" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "1597", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "16361", + "id": "1598", + "length": "49", + "line": "465", + "parentIndex": "1595", + "start": "16313" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$", + "typeString": "function(address,address,address,uint256,uint256)" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1593", + "name": "unwrapBento", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1593", + "src": { + "column": "12", + "end": "16296", + "id": "1594", + "length": "11", + "line": "464", + "parentIndex": "1591", + "start": "16286" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "1591", + "nodeType": "IF_STATEMENT", + "src": { + "end": "16552", + "id": "1592", + "length": "271", + "line": "464", + "parentIndex": "1589", + "start": "16282" + } + } + } + ] + }, + "id": "1560", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_transferFromBentoBox", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1562", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1564", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1564", + "src": { + "column": "8", + "end": "16140", + "id": "1565", + "length": "13", + "line": "457", + "parentIndex": "1562", + "start": "16128" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1566", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "16134", + "id": "1567", + "length": "7", + "line": "457", + "parentIndex": "1564", + "start": "16128" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1568", + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1568", + "src": { + "column": "8", + "end": "16162", + "id": "1569", + "length": "12", + "line": "458", + "parentIndex": "1562", + "start": "16151" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1570", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "16157", + "id": "1571", + "length": "7", + "line": "458", + "parentIndex": "1568", + "start": "16151" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1572", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1572", + "src": { + "column": "8", + "end": "16182", + "id": "1573", + "length": "10", + "line": "459", + "parentIndex": "1562", + "start": "16173" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1574", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "16179", + "id": "1575", + "length": "7", + "line": "459", + "parentIndex": "1572", + "start": "16173" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1576", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1576", + "src": { + "column": "8", + "end": "16206", + "id": "1577", + "length": "14", + "line": "460", + "parentIndex": "1562", + "start": "16193" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1578", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "16199", + "id": "1579", + "length": "7", + "line": "460", + "parentIndex": "1576", + "start": "16193" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1580", + "name": "share", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1580", + "src": { + "column": "8", + "end": "16229", + "id": "1581", + "length": "13", + "line": "461", + "parentIndex": "1562", + "start": "16217" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1582", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "16223", + "id": "1583", + "length": "7", + "line": "461", + "parentIndex": "1580", + "start": "16217" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1584", + "name": "unwrapBento", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1584", + "src": { + "column": "8", + "end": "16255", + "id": "1585", + "length": "16", + "line": "462", + "parentIndex": "1562", + "start": "16240" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "1586", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "16243", + "id": "1587", + "length": "4", + "line": "462", + "parentIndex": "1584", + "start": "16240" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "16255", + "id": "1563", + "length": "128", + "line": "457", + "parentIndex": "1560", + "start": "16128" + } + }, + "returnParameters": { + "id": "1588", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "16558", + "id": "1561", + "length": "471", + "line": "456", + "parentIndex": "1560", + "start": "16088" + } + }, + "scope": "1504", + "src": { + "column": "4", + "end": "16558", + "id": "1561", + "length": "471", + "line": "456", + "parentIndex": "1504", + "start": "16088" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$_t_uint256$_t_bool$", + "typeString": "function(address,address,address,uint256,uint256,bool)" + }, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "16560", + "length": "2004", + "line": "424", + "parentIndex": "1482", + "start": "14557" + } + } + } + ] + }, + "src": { + "id": 1483, + "line": 424, + "start": 14557, + "end": 16560, + "length": 2004, + "parent_index": 263 + } + }, + { + "id": 1613, + "license": "MIT", + "name": "IPool", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IPool.sol", + "exported_symbols": [ + { + "id": 1613, + "name": "IPool", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IPool.sol" + }, + { + "id": 1482, + "name": "IERC20", + "absolute_path": "IERC20.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "1631", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "16771", + "id": "1632", + "length": "23", + "line": "485", + "parentIndex": "1613", + "start": "16749" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IERC20.sol", + "file": "./IERC20.sol", + "id": "1639", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1613", + "sourceUnit": "1482", + "src": { + "end": "16699", + "length": "22", + "line": "480", + "parentIndex": "1613", + "start": "16678" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "contractDependencies": [ + "1639" + ], + "fullyImplemented": true, + "id": "1669", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "1669", + "1639" + ], + "name": "IPool", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1685", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "17202", + "id": "1672", + "length": "93", + "line": "493", + "parentIndex": "1671", + "start": "17110" + } + }, + "id": "1671", + "kind": "KIND_FUNCTION", + "name": "swap", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1673", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1675", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1675", + "src": { + "column": "18", + "end": "17142", + "id": "1676", + "length": "19", + "line": "493", + "parentIndex": "1673", + "start": "17124" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1677", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "18", + "end": "17128", + "id": "1678", + "length": "5", + "line": "493", + "parentIndex": "1675", + "start": "17124" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "18", + "end": "17142", + "id": "1674", + "length": "19", + "line": "493", + "parentIndex": "1671", + "start": "17124" + } + }, + "returnParameters": { + "id": "1679", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1681", + "name": "finalAmountOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1681", + "src": { + "column": "17", + "end": "17200", + "id": "1682", + "length": "22", + "line": "495", + "parentIndex": "1679", + "start": "17179" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1683", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "17185", + "id": "1684", + "length": "7", + "line": "495", + "parentIndex": "1681", + "start": "17179" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "17200", + "id": "1680", + "length": "22", + "line": "495", + "parentIndex": "1671", + "start": "17179" + } + }, + "scope": "1669", + "src": { + "column": "4", + "end": "17202", + "id": "1672", + "length": "93", + "line": "493", + "parentIndex": "1669", + "start": "17110" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1701", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "17639", + "id": "1688", + "length": "98", + "line": "501", + "parentIndex": "1687", + "start": "17542" + } + }, + "id": "1687", + "kind": "KIND_FUNCTION", + "name": "flashSwap", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1689", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1691", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1691", + "src": { + "column": "23", + "end": "17579", + "id": "1692", + "length": "19", + "line": "501", + "parentIndex": "1689", + "start": "17561" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1693", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "17565", + "id": "1694", + "length": "5", + "line": "501", + "parentIndex": "1691", + "start": "17561" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "17579", + "id": "1690", + "length": "19", + "line": "501", + "parentIndex": "1687", + "start": "17561" + } + }, + "returnParameters": { + "id": "1695", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1697", + "name": "finalAmountOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1697", + "src": { + "column": "17", + "end": "17637", + "id": "1698", + "length": "22", + "line": "503", + "parentIndex": "1695", + "start": "17616" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1699", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "17622", + "id": "1700", + "length": "7", + "line": "503", + "parentIndex": "1697", + "start": "17616" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "17637", + "id": "1696", + "length": "22", + "line": "503", + "parentIndex": "1687", + "start": "17616" + } + }, + "scope": "1669", + "src": { + "column": "4", + "end": "17639", + "id": "1688", + "length": "98", + "line": "501", + "parentIndex": "1669", + "start": "17542" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1717", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "17908", + "id": "1704", + "length": "72", + "line": "508", + "parentIndex": "1703", + "start": "17837" + } + }, + "id": "1703", + "kind": "KIND_FUNCTION", + "name": "mint", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1705", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1707", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1707", + "src": { + "column": "18", + "end": "17869", + "id": "1708", + "length": "19", + "line": "508", + "parentIndex": "1705", + "start": "17851" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1709", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "18", + "end": "17855", + "id": "1710", + "length": "5", + "line": "508", + "parentIndex": "1707", + "start": "17851" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "18", + "end": "17869", + "id": "1706", + "length": "19", + "line": "508", + "parentIndex": "1703", + "start": "17851" + } + }, + "returnParameters": { + "id": "1711", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1713", + "name": "liquidity", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1713", + "src": { + "column": "57", + "end": "17906", + "id": "1714", + "length": "17", + "line": "508", + "parentIndex": "1711", + "start": "17890" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1715", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "57", + "end": "17896", + "id": "1716", + "length": "7", + "line": "508", + "parentIndex": "1713", + "start": "17890" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "57", + "end": "17906", + "id": "1712", + "length": "17", + "line": "508", + "parentIndex": "1703", + "start": "17890" + } + }, + "scope": "1669", + "src": { + "column": "4", + "end": "17908", + "id": "1704", + "length": "72", + "line": "508", + "parentIndex": "1669", + "start": "17837" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1736", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "18294", + "id": "1720", + "length": "108", + "line": "514", + "parentIndex": "1719", + "start": "18187" + } + }, + "id": "1719", + "kind": "KIND_FUNCTION", + "name": "burn", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1721", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1723", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1723", + "src": { + "column": "18", + "end": "18219", + "id": "1724", + "length": "19", + "line": "514", + "parentIndex": "1721", + "start": "18201" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1725", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "18", + "end": "18205", + "id": "1726", + "length": "5", + "line": "514", + "parentIndex": "1723", + "start": "18201" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "18", + "end": "18219", + "id": "1722", + "length": "19", + "line": "514", + "parentIndex": "1719", + "start": "18201" + } + }, + "returnParameters": { + "id": "1727", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1729", + "name": "withdrawnAmounts", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1729", + "src": { + "column": "17", + "end": "18292", + "id": "1730", + "length": "37", + "line": "516", + "parentIndex": "1727", + "start": "18256" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_struct$_IPool_TokenAmount_$1844", + "typeString": "struct IPool.TokenAmount" + }, + "typeName": { + "id": "1731", + "name": "TokenAmount", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1734", + "name": "TokenAmount", + "nodeType": "IDENTIFIER_PATH", + "src": { + "column": "17", + "end": "18266", + "id": "1735", + "length": "11", + "line": "516", + "parentIndex": "1731", + "start": "18256" + } + }, + "referencedDeclaration": "1844", + "src": { + "column": "17", + "end": "18266", + "id": "1733", + "length": "11", + "line": "516", + "parentIndex": "1729", + "start": "18256" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_IPool_TokenAmount_$1844", + "typeString": "struct IPool.TokenAmount" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "18292", + "id": "1728", + "length": "37", + "line": "516", + "parentIndex": "1719", + "start": "18256" + } + }, + "scope": "1669", + "src": { + "column": "4", + "end": "18294", + "id": "1720", + "length": "108", + "line": "514", + "parentIndex": "1669", + "start": "18187" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1752", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "18677", + "id": "1739", + "length": "94", + "line": "522", + "parentIndex": "1738", + "start": "18584" + } + }, + "id": "1738", + "kind": "KIND_FUNCTION", + "name": "burnSingle", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1740", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1742", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1742", + "src": { + "column": "24", + "end": "18622", + "id": "1743", + "length": "19", + "line": "522", + "parentIndex": "1740", + "start": "18604" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1744", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "18608", + "id": "1745", + "length": "5", + "line": "522", + "parentIndex": "1742", + "start": "18604" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "18622", + "id": "1741", + "length": "19", + "line": "522", + "parentIndex": "1738", + "start": "18604" + } + }, + "returnParameters": { + "id": "1746", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1748", + "name": "amountOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1748", + "src": { + "column": "17", + "end": "18675", + "id": "1749", + "length": "17", + "line": "524", + "parentIndex": "1746", + "start": "18659" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1750", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "18665", + "id": "1751", + "length": "7", + "line": "524", + "parentIndex": "1748", + "start": "18659" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "18675", + "id": "1747", + "length": "17", + "line": "524", + "parentIndex": "1738", + "start": "18659" + } + }, + "scope": "1669", + "src": { + "column": "4", + "end": "18677", + "id": "1739", + "length": "94", + "line": "522", + "parentIndex": "1669", + "start": "18584" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1768", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "18796", + "id": "1755", + "length": "58", + "line": "527", + "parentIndex": "1754", + "start": "18739" + } + }, + "id": "1754", + "kind": "KIND_FUNCTION", + "name": "poolIdentifier", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1756", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1758", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1758", + "src": { + "column": "53", + "end": "18794", + "id": "1759", + "length": "7", + "line": "527", + "parentIndex": "1756", + "start": "18788" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "1760", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "53", + "end": "18794", + "id": "1761", + "length": "7", + "line": "527", + "parentIndex": "1758", + "start": "18788" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "53", + "end": "18794", + "id": "1757", + "length": "7", + "line": "527", + "parentIndex": "1754", + "start": "18788" + } + }, + "returnParameters": { + "id": "1762", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1764", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1764", + "src": { + "column": "53", + "end": "18794", + "id": "1765", + "length": "7", + "line": "527", + "parentIndex": "1762", + "start": "18788" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "1766", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "53", + "end": "18794", + "id": "1767", + "length": "7", + "line": "527", + "parentIndex": "1764", + "start": "18788" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "53", + "end": "18794", + "id": "1763", + "length": "7", + "line": "527", + "parentIndex": "1754", + "start": "18788" + } + }, + "scope": "1669", + "src": { + "column": "4", + "end": "18796", + "id": "1755", + "length": "58", + "line": "527", + "parentIndex": "1669", + "start": "18739" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes32$", + "typeString": "function(bytes32)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1786", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "18922", + "id": "1771", + "length": "62", + "line": "530", + "parentIndex": "1770", + "start": "18861" + } + }, + "id": "1770", + "kind": "KIND_FUNCTION", + "name": "getAssets", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1772", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1774", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1774", + "src": { + "column": "48", + "end": "18920", + "id": "1775", + "length": "16", + "line": "530", + "parentIndex": "1772", + "start": "18905" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1776", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "48", + "end": "18911", + "id": "1778", + "length": "7", + "line": "530", + "parentIndex": "1774", + "start": "18905" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "48", + "end": "18920", + "id": "1773", + "length": "16", + "line": "530", + "parentIndex": "1770", + "start": "18905" + } + }, + "returnParameters": { + "id": "1779", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1781", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1781", + "src": { + "column": "48", + "end": "18920", + "id": "1782", + "length": "16", + "line": "530", + "parentIndex": "1779", + "start": "18905" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1783", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "48", + "end": "18911", + "id": "1785", + "length": "7", + "line": "530", + "parentIndex": "1781", + "start": "18905" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "48", + "end": "18920", + "id": "1780", + "length": "16", + "line": "530", + "parentIndex": "1770", + "start": "18905" + } + }, + "scope": "1669", + "src": { + "column": "4", + "end": "18922", + "id": "1771", + "length": "62", + "line": "530", + "parentIndex": "1669", + "start": "18861" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1802", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "19395", + "id": "1789", + "length": "114", + "line": "536", + "parentIndex": "1788", + "start": "19282" + } + }, + "id": "1788", + "kind": "KIND_FUNCTION", + "name": "getAmountOut", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1790", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1792", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1792", + "src": { + "column": "26", + "end": "19322", + "id": "1793", + "length": "19", + "line": "536", + "parentIndex": "1790", + "start": "19304" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1794", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "26", + "end": "19308", + "id": "1795", + "length": "5", + "line": "536", + "parentIndex": "1792", + "start": "19304" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "26", + "end": "19322", + "id": "1791", + "length": "19", + "line": "536", + "parentIndex": "1788", + "start": "19304" + } + }, + "returnParameters": { + "id": "1796", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1798", + "name": "finalAmountOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1798", + "src": { + "column": "17", + "end": "19393", + "id": "1799", + "length": "22", + "line": "539", + "parentIndex": "1796", + "start": "19372" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1800", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "19378", + "id": "1801", + "length": "7", + "line": "539", + "parentIndex": "1798", + "start": "19372" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "19393", + "id": "1797", + "length": "22", + "line": "539", + "parentIndex": "1788", + "start": "19372" + } + }, + "scope": "1669", + "src": { + "column": "4", + "end": "19395", + "id": "1789", + "length": "114", + "line": "536", + "parentIndex": "1669", + "start": "19282" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1818", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "19866", + "id": "1805", + "length": "112", + "line": "545", + "parentIndex": "1804", + "start": "19755" + } + }, + "id": "1804", + "kind": "KIND_FUNCTION", + "name": "getAmountIn", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1806", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1808", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1808", + "src": { + "column": "25", + "end": "19794", + "id": "1809", + "length": "19", + "line": "545", + "parentIndex": "1806", + "start": "19776" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "1810", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "25", + "end": "19780", + "id": "1811", + "length": "5", + "line": "545", + "parentIndex": "1808", + "start": "19776" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "25", + "end": "19794", + "id": "1807", + "length": "19", + "line": "545", + "parentIndex": "1804", + "start": "19776" + } + }, + "returnParameters": { + "id": "1812", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1814", + "name": "finalAmountIn", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1814", + "src": { + "column": "17", + "end": "19864", + "id": "1815", + "length": "21", + "line": "548", + "parentIndex": "1812", + "start": "19844" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1816", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "19850", + "id": "1817", + "length": "7", + "line": "548", + "parentIndex": "1814", + "start": "19844" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "19864", + "id": "1813", + "length": "21", + "line": "548", + "parentIndex": "1804", + "start": "19844" + } + }, + "scope": "1669", + "src": { + "column": "4", + "end": "19866", + "id": "1805", + "length": "112", + "line": "545", + "parentIndex": "1669", + "start": "19755" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "1820", + "name": "Swap", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "1822", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1823", + "indexed": true, + "name": "recipient", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1823", + "src": { + "column": "8", + "end": "19971", + "id": "1824", + "length": "25", + "line": "552", + "parentIndex": "1822", + "start": "19947" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1825", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "19953", + "id": "1826", + "length": "7", + "line": "552", + "parentIndex": "1823", + "start": "19947" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1827", + "indexed": true, + "name": "tokenIn", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1827", + "src": { + "column": "8", + "end": "20004", + "id": "1828", + "length": "23", + "line": "553", + "parentIndex": "1822", + "start": "19982" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1829", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "19988", + "id": "1830", + "length": "7", + "line": "553", + "parentIndex": "1827", + "start": "19982" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1831", + "indexed": true, + "name": "tokenOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1831", + "src": { + "column": "8", + "end": "20038", + "id": "1832", + "length": "24", + "line": "554", + "parentIndex": "1822", + "start": "20015" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1833", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "20021", + "id": "1834", + "length": "7", + "line": "554", + "parentIndex": "1831", + "start": "20015" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1835", + "name": "amountIn", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1835", + "src": { + "column": "8", + "end": "20064", + "id": "1836", + "length": "16", + "line": "555", + "parentIndex": "1822", + "start": "20049" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1837", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "20055", + "id": "1838", + "length": "7", + "line": "555", + "parentIndex": "1835", + "start": "20049" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1839", + "name": "amountOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1839", + "src": { + "column": "8", + "end": "20091", + "id": "1840", + "length": "17", + "line": "556", + "parentIndex": "1822", + "start": "20075" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1841", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "20081", + "id": "1842", + "length": "7", + "line": "556", + "parentIndex": "1839", + "start": "20075" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "20098", + "id": "1821", + "length": "172", + "line": "551", + "parentIndex": "1820", + "start": "19927" + } + }, + "src": { + "column": "4", + "end": "20098", + "id": "1821", + "length": "172", + "line": "551", + "parentIndex": "1669", + "start": "19927" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IPool_Swap_\u00261820", + "typeString": "event IPool.Swap" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", + "value": { + "canonicalName": "IPool.TokenAmount", + "id": "1844", + "members": [ + { + "id": "1846", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1846", + "src": { + "column": "8", + "end": "20204", + "id": "1847", + "length": "14", + "line": "561", + "parentIndex": "1844", + "start": "20191" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1848", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "20197", + "id": "1849", + "length": "7", + "line": "561", + "parentIndex": "1846", + "start": "20191" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1850", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1850", + "src": { + "column": "8", + "end": "20228", + "id": "1851", + "length": "15", + "line": "562", + "parentIndex": "1844", + "start": "20214" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1852", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "20220", + "id": "1853", + "length": "7", + "line": "562", + "parentIndex": "1850", + "start": "20214" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "name": "TokenAmount", + "nodeType": "STRUCT_DEFINITION", + "src": { + "column": "4", + "end": "20234", + "id": "1845", + "length": "73", + "line": "560", + "parentIndex": "1613", + "start": "20162" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_struct$_IPool_TokenAmount_$1844", + "typeString": "struct IPool.TokenAmount" + }, + "visibility": "PUBLIC" + } + } + ], + "src": { + "end": "20236", + "length": "3427", + "line": "488", + "parentIndex": "1613", + "start": "16810" + } + } + } + ] + }, + "src": { + "id": 1614, + "line": 488, + "start": 16810, + "end": 20236, + "length": 3427, + "parent_index": 263 + } + }, + { + "id": 1854, + "license": "MIT", + "name": "SafeERC20", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/SafeERC20.sol", + "exported_symbols": [ + { + "id": 1854, + "name": "SafeERC20", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/SafeERC20.sol" + }, + { + "id": 1613, + "name": "IERC20", + "absolute_path": "IERC20.sol" + }, + { + "id": 1613, + "name": "Address", + "absolute_path": "Address.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "1874", + "literals": [ + "pragma", + "solidity", + "^", + "0", + ".", + "8", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "20361", + "id": "1875", + "length": "23", + "line": "569", + "parentIndex": "1854", + "start": "20339" + }, + "text": "pragma solidity ^0.8.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IERC20.sol", + "file": "./IERC20.sol", + "id": "1883", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1854", + "sourceUnit": "1613", + "src": { + "end": "20385", + "length": "22", + "line": "571", + "parentIndex": "1854", + "start": "20364" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "Address.sol", + "file": "./Address.sol", + "id": "1884", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "1854", + "sourceUnit": "1613", + "src": { + "end": "20409", + "length": "23", + "line": "572", + "parentIndex": "1854", + "start": "20387" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "1885", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "1885" + ], + "name": "SafeERC20", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Using", + "value": { + "id": "1887", + "libraryName": { + "id": "1891", + "name": "Address", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "264", + "src": { + "end": "20906", + "id": "1892", + "length": "7", + "line": "584", + "parentIndex": "1887", + "start": "20900" + } + }, + "name": "Address", + "nodeType": "USING_FOR_DIRECTIVE", + "src": { + "end": "20919", + "id": "1888", + "length": "26", + "line": "584", + "parentIndex": "1885", + "start": "20894" + }, + "typeName": { + "id": "1889", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "20918", + "id": "1890", + "length": "7", + "line": "584", + "parentIndex": "1887", + "start": "20912" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1913", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "15", + "end": "21130", + "id": "1914", + "length": "103", + "line": "590", + "parentIndex": "1894", + "start": "21028" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1919", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "28", + "end": "21062", + "id": "1920", + "length": "5", + "line": "591", + "parentIndex": "1915", + "start": "21058" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1931", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "58", + "end": "21092", + "id": "1932", + "length": "5", + "line": "591", + "parentIndex": "1929", + "start": "21088" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1929", + "memberName": "transfer", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "58", + "end": "21101", + "id": "1930", + "length": "14", + "line": "591", + "parentIndex": "1927", + "start": "21088" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1927", + "memberName": "selector", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "58", + "end": "21110", + "id": "1928", + "length": "23", + "line": "591", + "parentIndex": "1921", + "start": "21088" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1933", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1933", + "src": { + "column": "83", + "end": "21114", + "id": "1934", + "length": "2", + "line": "591", + "parentIndex": "1921", + "start": "21113" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1935", + "name": "value", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1935", + "src": { + "column": "87", + "end": "21121", + "id": "1936", + "length": "5", + "line": "591", + "parentIndex": "1921", + "start": "21117" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1925", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "35", + "end": "21067", + "id": "1926", + "length": "3", + "line": "591", + "parentIndex": "1923", + "start": "21065" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "1923", + "memberName": "encodeWithSelector", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "35", + "end": "21086", + "id": "1924", + "length": "22", + "line": "591", + "parentIndex": "1921", + "start": "21065" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "1921", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "35", + "end": "21122", + "id": "1922", + "length": "58", + "line": "591", + "parentIndex": "1915", + "start": "21065" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1917", + "name": "_callOptionalReturn", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "21056", + "id": "1918", + "length": "19", + "line": "591", + "parentIndex": "1915", + "start": "21038" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1915", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "21123", + "id": "1916", + "length": "86", + "line": "591", + "parentIndex": "1913", + "start": "21038" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,function(address,address,uint256))" + } + } + } + ] + }, + "id": "1894", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "safeTransfer", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1896", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1898", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1898", + "src": { + "column": "8", + "end": "20968", + "id": "1899", + "length": "12", + "line": "587", + "parentIndex": "1896", + "start": "20957" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "typeName": { + "id": "1900", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1902", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "src": { + "column": "8", + "end": "20962", + "id": "1903", + "length": "6", + "line": "587", + "parentIndex": "1900", + "start": "20957" + } + }, + "referencedDeclaration": "2570", + "src": { + "column": "8", + "end": "20962", + "id": "1901", + "length": "6", + "line": "587", + "parentIndex": "1898", + "start": "20957" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1904", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1904", + "src": { + "column": "8", + "end": "20988", + "id": "1905", + "length": "10", + "line": "588", + "parentIndex": "1896", + "start": "20979" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1906", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "20985", + "id": "1907", + "length": "7", + "line": "588", + "parentIndex": "1904", + "start": "20979" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1908", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1908", + "src": { + "column": "8", + "end": "21011", + "id": "1909", + "length": "13", + "line": "589", + "parentIndex": "1896", + "start": "20999" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1910", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "21005", + "id": "1911", + "length": "7", + "line": "589", + "parentIndex": "1908", + "start": "20999" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "21011", + "id": "1897", + "length": "55", + "line": "587", + "parentIndex": "1894", + "start": "20957" + } + }, + "returnParameters": { + "id": "1912", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "21130", + "id": "1895", + "length": "205", + "line": "586", + "parentIndex": "1894", + "start": "20926" + } + }, + "scope": "1885", + "src": { + "column": "4", + "end": "21130", + "id": "1895", + "length": "205", + "line": "586", + "parentIndex": "1885", + "start": "20926" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_unknown_1894$_t_address$_t_uint256$", + "typeString": "function(unknown_1894,address,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "1961", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "15", + "end": "21377", + "id": "1962", + "length": "113", + "line": "599", + "parentIndex": "1938", + "start": "21265" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,address,uint256)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1967", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "28", + "end": "21299", + "id": "1968", + "length": "5", + "line": "600", + "parentIndex": "1963", + "start": "21295" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1979", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "58", + "end": "21329", + "id": "1980", + "length": "5", + "line": "600", + "parentIndex": "1977", + "start": "21325" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1977", + "memberName": "transferFrom", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "58", + "end": "21342", + "id": "1978", + "length": "18", + "line": "600", + "parentIndex": "1975", + "start": "21325" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "1975", + "memberName": "selector", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "58", + "end": "21351", + "id": "1976", + "length": "27", + "line": "600", + "parentIndex": "1969", + "start": "21325" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1981", + "name": "from", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1981", + "src": { + "column": "87", + "end": "21357", + "id": "1982", + "length": "4", + "line": "600", + "parentIndex": "1969", + "start": "21354" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1983", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1983", + "src": { + "column": "93", + "end": "21361", + "id": "1984", + "length": "2", + "line": "600", + "parentIndex": "1969", + "start": "21360" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "1985", + "name": "value", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1985", + "src": { + "column": "97", + "end": "21368", + "id": "1986", + "length": "5", + "line": "600", + "parentIndex": "1969", + "start": "21364" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1973", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "35", + "end": "21304", + "id": "1974", + "length": "3", + "line": "600", + "parentIndex": "1971", + "start": "21302" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "1971", + "memberName": "encodeWithSelector", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "35", + "end": "21323", + "id": "1972", + "length": "22", + "line": "600", + "parentIndex": "1969", + "start": "21302" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "1969", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "35", + "end": "21369", + "id": "1970", + "length": "68", + "line": "600", + "parentIndex": "1963", + "start": "21302" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,address,uint256)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "1965", + "name": "_callOptionalReturn", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "21293", + "id": "1966", + "length": "19", + "line": "600", + "parentIndex": "1963", + "start": "21275" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "1963", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "21370", + "id": "1964", + "length": "96", + "line": "600", + "parentIndex": "1961", + "start": "21275" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_function_$_t_address$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,function(address,address,address,uint256))" + } + } + } + ] + }, + "id": "1938", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "safeTransferFrom", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1940", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1942", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1942", + "src": { + "column": "8", + "end": "21183", + "id": "1943", + "length": "12", + "line": "595", + "parentIndex": "1940", + "start": "21172" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "typeName": { + "id": "1944", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1946", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "src": { + "column": "8", + "end": "21177", + "id": "1947", + "length": "6", + "line": "595", + "parentIndex": "1944", + "start": "21172" + } + }, + "referencedDeclaration": "2570", + "src": { + "column": "8", + "end": "21177", + "id": "1945", + "length": "6", + "line": "595", + "parentIndex": "1942", + "start": "21172" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1948", + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1948", + "src": { + "column": "8", + "end": "21205", + "id": "1949", + "length": "12", + "line": "596", + "parentIndex": "1940", + "start": "21194" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1950", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "21200", + "id": "1951", + "length": "7", + "line": "596", + "parentIndex": "1948", + "start": "21194" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1952", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1952", + "src": { + "column": "8", + "end": "21225", + "id": "1953", + "length": "10", + "line": "597", + "parentIndex": "1940", + "start": "21216" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "1954", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "21222", + "id": "1955", + "length": "7", + "line": "597", + "parentIndex": "1952", + "start": "21216" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1956", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1956", + "src": { + "column": "8", + "end": "21248", + "id": "1957", + "length": "13", + "line": "598", + "parentIndex": "1940", + "start": "21236" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "1958", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "21242", + "id": "1959", + "length": "7", + "line": "598", + "parentIndex": "1956", + "start": "21236" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "21248", + "id": "1941", + "length": "77", + "line": "595", + "parentIndex": "1938", + "start": "21172" + } + }, + "returnParameters": { + "id": "1960", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "21377", + "id": "1939", + "length": "241", + "line": "594", + "parentIndex": "1938", + "start": "21137" + } + }, + "scope": "1885", + "src": { + "column": "4", + "end": "21377", + "id": "1939", + "length": "241", + "line": "594", + "parentIndex": "1885", + "start": "21137" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_unknown_1938$_t_address$_t_address$_t_uint256$", + "typeString": "function(unknown_1938,address,address,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2007", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "15", + "end": "22240", + "id": "2008", + "length": "497", + "line": "614", + "parentIndex": "1988", + "start": "21744" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_tuple_$_t_bool$", + "typeString": "tuple(bool)" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "2013", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "2017", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2019", + "name": "value", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2019", + "src": { + "column": "13", + "end": "21997", + "id": "2020", + "length": "5", + "line": "619", + "parentIndex": "2017", + "start": "21993" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "2021", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "22", + "end": "22002", + "id": "2022", + "length": "1", + "line": "619", + "parentIndex": "2017", + "start": "22002" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "13", + "end": "22002", + "id": "2018", + "length": "10", + "line": "619", + "parentIndex": "2015", + "start": "21993" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ], + "id": "2015", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "12", + "end": "22003", + "id": "2016", + "length": "12", + "line": "619", + "parentIndex": "2013", + "start": "21992" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool$", + "typeString": "tuple(bool)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "OR", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "2025", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$1854", + "typeString": "contract SafeERC20" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2039", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "53", + "end": "22036", + "id": "2040", + "length": "4", + "line": "619", + "parentIndex": "2033", + "start": "22033" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_SafeERC20_$1854", + "typeString": "contract SafeERC20" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2035", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "45", + "end": "22031", + "id": "2036", + "length": "7", + "line": "619", + "parentIndex": "2033", + "start": "22025" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "2037", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "45", + "end": "22031", + "id": "2038", + "length": "7", + "line": "619", + "parentIndex": "2035", + "start": "22025" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "2033", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "45", + "end": "22037", + "id": "2034", + "length": "13", + "line": "619", + "parentIndex": "2027", + "start": "22025" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "id": "2041", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2041", + "src": { + "column": "60", + "end": "22046", + "id": "2042", + "length": "7", + "line": "619", + "parentIndex": "2027", + "start": "22040" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2031", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "29", + "end": "22013", + "id": "2032", + "length": "5", + "line": "619", + "parentIndex": "2029", + "start": "22009" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2029", + "memberName": "allowance", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "29", + "end": "22023", + "id": "2030", + "length": "15", + "line": "619", + "parentIndex": "2027", + "start": "22009" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2027", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "29", + "end": "22047", + "id": "2028", + "length": "39", + "line": "619", + "parentIndex": "2025", + "start": "22009" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_address$", + "typeString": "function(function(address),address)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "2043", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "72", + "end": "22052", + "id": "2044", + "length": "1", + "line": "619", + "parentIndex": "2025", + "start": "22052" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "29", + "end": "22052", + "id": "2026", + "length": "44", + "line": "619", + "parentIndex": "2023", + "start": "22009" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ], + "id": "2023", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "28", + "end": "22053", + "id": "2024", + "length": "46", + "line": "619", + "parentIndex": "2013", + "start": "22008" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool$", + "typeString": "tuple(bool)" + } + } + }, + "src": { + "column": "12", + "end": "22053", + "id": "2014", + "length": "62", + "line": "619", + "parentIndex": "2009", + "start": "21992" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool$", + "typeString": "tuple(bool)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_tuple_$_t_bool$", + "typeString": "tuple(bool)" + } + ], + "hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365", + "id": "2045", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "12", + "end": "22123", + "id": "2046", + "length": "56", + "line": "620", + "parentIndex": "2009", + "start": "22068" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"" + }, + "value": "SafeERC20: approve from non-zero to non-zero allowance" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2011", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "21977", + "id": "2012", + "length": "7", + "line": "618", + "parentIndex": "2009", + "start": "21971" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2009", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "22133", + "id": "2010", + "length": "163", + "line": "618", + "parentIndex": "2007", + "start": "21971" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_tuple_$_t_bool$_t_string_literal$", + "typeString": "function(tuple(bool),string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2051", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "28", + "end": "22168", + "id": "2052", + "length": "5", + "line": "622", + "parentIndex": "2047", + "start": "22164" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2063", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "58", + "end": "22198", + "id": "2064", + "length": "5", + "line": "622", + "parentIndex": "2061", + "start": "22194" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2061", + "memberName": "approve", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "58", + "end": "22206", + "id": "2062", + "length": "13", + "line": "622", + "parentIndex": "2059", + "start": "22194" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2059", + "memberName": "selector", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "58", + "end": "22215", + "id": "2060", + "length": "22", + "line": "622", + "parentIndex": "2053", + "start": "22194" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2065", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2065", + "src": { + "column": "82", + "end": "22224", + "id": "2066", + "length": "7", + "line": "622", + "parentIndex": "2053", + "start": "22218" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2067", + "name": "value", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2067", + "src": { + "column": "91", + "end": "22231", + "id": "2068", + "length": "5", + "line": "622", + "parentIndex": "2053", + "start": "22227" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2057", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "35", + "end": "22173", + "id": "2058", + "length": "3", + "line": "622", + "parentIndex": "2055", + "start": "22171" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "2055", + "memberName": "encodeWithSelector", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "35", + "end": "22192", + "id": "2056", + "length": "22", + "line": "622", + "parentIndex": "2053", + "start": "22171" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "2053", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "35", + "end": "22232", + "id": "2054", + "length": "62", + "line": "622", + "parentIndex": "2047", + "start": "22171" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2049", + "name": "_callOptionalReturn", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "22162", + "id": "2050", + "length": "19", + "line": "622", + "parentIndex": "2047", + "start": "22144" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2047", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "22233", + "id": "2048", + "length": "90", + "line": "622", + "parentIndex": "2007", + "start": "22144" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,function(address,address,uint256))" + } + } + } + ] + }, + "id": "1988", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "safeApprove", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "1990", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "1992", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1992", + "src": { + "column": "8", + "end": "21679", + "id": "1993", + "length": "12", + "line": "611", + "parentIndex": "1990", + "start": "21668" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "typeName": { + "id": "1994", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "1996", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "src": { + "column": "8", + "end": "21673", + "id": "1997", + "length": "6", + "line": "611", + "parentIndex": "1994", + "start": "21668" + } + }, + "referencedDeclaration": "2570", + "src": { + "column": "8", + "end": "21673", + "id": "1995", + "length": "6", + "line": "611", + "parentIndex": "1992", + "start": "21668" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "1998", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "1998", + "src": { + "column": "8", + "end": "21704", + "id": "1999", + "length": "15", + "line": "612", + "parentIndex": "1990", + "start": "21690" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2000", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "21696", + "id": "2001", + "length": "7", + "line": "612", + "parentIndex": "1998", + "start": "21690" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2002", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2002", + "src": { + "column": "8", + "end": "21727", + "id": "2003", + "length": "13", + "line": "613", + "parentIndex": "1990", + "start": "21715" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2004", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "21721", + "id": "2005", + "length": "7", + "line": "613", + "parentIndex": "2002", + "start": "21715" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "21727", + "id": "1991", + "length": "60", + "line": "611", + "parentIndex": "1988", + "start": "21668" + } + }, + "returnParameters": { + "id": "2006", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "22240", + "id": "1989", + "length": "603", + "line": "610", + "parentIndex": "1988", + "start": "21638" + } + }, + "scope": "1885", + "src": { + "column": "4", + "end": "22240", + "id": "1989", + "length": "603", + "line": "610", + "parentIndex": "1885", + "start": "21638" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_unknown_1988$_t_address$_t_uint256$", + "typeString": "function(unknown_1988,address,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2089", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "15", + "end": "22556", + "id": "2090", + "length": "194", + "line": "629", + "parentIndex": "2070", + "start": "22363" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "2093" + ], + "declarations": [ + { + "id": "2093", + "mutability": "MUTABLE", + "name": "newAllowance", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2089", + "src": { + "column": "8", + "end": "22392", + "id": "2094", + "length": "20", + "line": "630", + "parentIndex": "2091", + "start": "22373" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2095", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "22379", + "id": "2096", + "length": "7", + "line": "630", + "parentIndex": "2093", + "start": "22373" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "2091", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "2097", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$1854", + "typeString": "contract SafeERC20" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2111", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "55", + "end": "22423", + "id": "2112", + "length": "4", + "line": "630", + "parentIndex": "2105", + "start": "22420" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_SafeERC20_$1854", + "typeString": "contract SafeERC20" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2107", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "47", + "end": "22418", + "id": "2108", + "length": "7", + "line": "630", + "parentIndex": "2105", + "start": "22412" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "2109", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "22418", + "id": "2110", + "length": "7", + "line": "630", + "parentIndex": "2107", + "start": "22412" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "2105", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "47", + "end": "22424", + "id": "2106", + "length": "13", + "line": "630", + "parentIndex": "2099", + "start": "22412" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "id": "2113", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2113", + "src": { + "column": "62", + "end": "22433", + "id": "2114", + "length": "7", + "line": "630", + "parentIndex": "2099", + "start": "22427" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2103", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "31", + "end": "22400", + "id": "2104", + "length": "5", + "line": "630", + "parentIndex": "2101", + "start": "22396" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2101", + "memberName": "allowance", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "31", + "end": "22410", + "id": "2102", + "length": "15", + "line": "630", + "parentIndex": "2099", + "start": "22396" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2099", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "31", + "end": "22434", + "id": "2100", + "length": "39", + "line": "630", + "parentIndex": "2091", + "start": "22396" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_address$", + "typeString": "function(function(address),address)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "ADDITION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2115", + "name": "value", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2115", + "src": { + "column": "73", + "end": "22442", + "id": "2116", + "length": "5", + "line": "630", + "parentIndex": "2097", + "start": "22438" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "31", + "end": "22442", + "id": "2098", + "length": "47", + "line": "630", + "parentIndex": "2091", + "start": "22396" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_address$", + "typeString": "function(function(address),address)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "22443", + "id": "2092", + "length": "71", + "line": "630", + "parentIndex": "2089", + "start": "22373" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2121", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "28", + "end": "22477", + "id": "2122", + "length": "5", + "line": "631", + "parentIndex": "2117", + "start": "22473" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2133", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "58", + "end": "22507", + "id": "2134", + "length": "5", + "line": "631", + "parentIndex": "2131", + "start": "22503" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2131", + "memberName": "approve", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "58", + "end": "22515", + "id": "2132", + "length": "13", + "line": "631", + "parentIndex": "2129", + "start": "22503" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2129", + "memberName": "selector", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "58", + "end": "22524", + "id": "2130", + "length": "22", + "line": "631", + "parentIndex": "2123", + "start": "22503" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2135", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2135", + "src": { + "column": "82", + "end": "22533", + "id": "2136", + "length": "7", + "line": "631", + "parentIndex": "2123", + "start": "22527" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2137", + "name": "newAllowance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2091", + "src": { + "column": "91", + "end": "22547", + "id": "2138", + "length": "12", + "line": "631", + "parentIndex": "2123", + "start": "22536" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2127", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "35", + "end": "22482", + "id": "2128", + "length": "3", + "line": "631", + "parentIndex": "2125", + "start": "22480" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "2125", + "memberName": "encodeWithSelector", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "35", + "end": "22501", + "id": "2126", + "length": "22", + "line": "631", + "parentIndex": "2123", + "start": "22480" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "2123", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "35", + "end": "22548", + "id": "2124", + "length": "69", + "line": "631", + "parentIndex": "2117", + "start": "22480" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2119", + "name": "_callOptionalReturn", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "22471", + "id": "2120", + "length": "19", + "line": "631", + "parentIndex": "2117", + "start": "22453" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2117", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "22549", + "id": "2118", + "length": "97", + "line": "631", + "parentIndex": "2089", + "start": "22453" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,function(address,address,uint256))" + } + } + } + ] + }, + "id": "2070", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "safeIncreaseAllowance", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2072", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2074", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2074", + "src": { + "column": "8", + "end": "22298", + "id": "2075", + "length": "12", + "line": "626", + "parentIndex": "2072", + "start": "22287" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "typeName": { + "id": "2076", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "2078", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "src": { + "column": "8", + "end": "22292", + "id": "2079", + "length": "6", + "line": "626", + "parentIndex": "2076", + "start": "22287" + } + }, + "referencedDeclaration": "2570", + "src": { + "column": "8", + "end": "22292", + "id": "2077", + "length": "6", + "line": "626", + "parentIndex": "2074", + "start": "22287" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2080", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2080", + "src": { + "column": "8", + "end": "22323", + "id": "2081", + "length": "15", + "line": "627", + "parentIndex": "2072", + "start": "22309" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2082", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "22315", + "id": "2083", + "length": "7", + "line": "627", + "parentIndex": "2080", + "start": "22309" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2084", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2084", + "src": { + "column": "8", + "end": "22346", + "id": "2085", + "length": "13", + "line": "628", + "parentIndex": "2072", + "start": "22334" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2086", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "22340", + "id": "2087", + "length": "7", + "line": "628", + "parentIndex": "2084", + "start": "22334" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "22346", + "id": "2073", + "length": "60", + "line": "626", + "parentIndex": "2070", + "start": "22287" + } + }, + "returnParameters": { + "id": "2088", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "22556", + "id": "2071", + "length": "310", + "line": "625", + "parentIndex": "2070", + "start": "22247" + } + }, + "scope": "1885", + "src": { + "column": "4", + "end": "22556", + "id": "2071", + "length": "310", + "line": "625", + "parentIndex": "1885", + "start": "22247" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_unknown_2070$_t_address$_t_uint256$", + "typeString": "function(unknown_2070,address,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2159", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "15", + "end": "23048", + "id": "2160", + "length": "370", + "line": "638", + "parentIndex": "2140", + "start": "22679" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "2161", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "23042", + "id": "2162", + "length": "354", + "line": "639", + "parentIndex": "1885", + "start": "22689" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "2165" + ], + "declarations": [ + { + "id": "2165", + "mutability": "MUTABLE", + "name": "oldAllowance", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2161", + "src": { + "column": "12", + "end": "22732", + "id": "2166", + "length": "20", + "line": "640", + "parentIndex": "2163", + "start": "22713" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2167", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "22719", + "id": "2168", + "length": "7", + "line": "640", + "parentIndex": "2165", + "start": "22713" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "2163", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$1854", + "typeString": "contract SafeERC20" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2181", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "59", + "end": "22763", + "id": "2182", + "length": "4", + "line": "640", + "parentIndex": "2175", + "start": "22760" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_SafeERC20_$1854", + "typeString": "contract SafeERC20" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2177", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "51", + "end": "22758", + "id": "2178", + "length": "7", + "line": "640", + "parentIndex": "2175", + "start": "22752" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "2179", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "51", + "end": "22758", + "id": "2180", + "length": "7", + "line": "640", + "parentIndex": "2177", + "start": "22752" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "2175", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "51", + "end": "22764", + "id": "2176", + "length": "13", + "line": "640", + "parentIndex": "2169", + "start": "22752" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "id": "2183", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2183", + "src": { + "column": "66", + "end": "22773", + "id": "2184", + "length": "7", + "line": "640", + "parentIndex": "2169", + "start": "22767" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2173", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "35", + "end": "22740", + "id": "2174", + "length": "5", + "line": "640", + "parentIndex": "2171", + "start": "22736" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2171", + "memberName": "allowance", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "35", + "end": "22750", + "id": "2172", + "length": "15", + "line": "640", + "parentIndex": "2169", + "start": "22736" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2169", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "35", + "end": "22774", + "id": "2170", + "length": "39", + "line": "640", + "parentIndex": "2163", + "start": "22736" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_address$", + "typeString": "function(function(address),address)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "22775", + "id": "2164", + "length": "63", + "line": "640", + "parentIndex": "2161", + "start": "22713" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"SafeERC20: decreased allowance below zero\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "2189", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2191", + "name": "oldAllowance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2163", + "src": { + "column": "20", + "end": "22808", + "id": "2192", + "length": "12", + "line": "641", + "parentIndex": "2189", + "start": "22797" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2193", + "name": "value", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2193", + "src": { + "column": "36", + "end": "22817", + "id": "2194", + "length": "5", + "line": "641", + "parentIndex": "2189", + "start": "22813" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "20", + "end": "22817", + "id": "2190", + "length": "21", + "line": "641", + "parentIndex": "2185", + "start": "22797" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "id": "2195", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "43", + "end": "22862", + "id": "2196", + "length": "43", + "line": "641", + "parentIndex": "2185", + "start": "22820" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"SafeERC20: decreased allowance below zero\"" + }, + "value": "SafeERC20: decreased allowance below zero" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2187", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "22795", + "id": "2188", + "length": "7", + "line": "641", + "parentIndex": "2185", + "start": "22789" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2185", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "22863", + "id": "2186", + "length": "75", + "line": "641", + "parentIndex": "2161", + "start": "22789" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "2199" + ], + "declarations": [ + { + "id": "2199", + "mutability": "MUTABLE", + "name": "newAllowance", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2161", + "src": { + "column": "12", + "end": "22897", + "id": "2200", + "length": "20", + "line": "642", + "parentIndex": "2197", + "start": "22878" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2201", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "22884", + "id": "2202", + "length": "7", + "line": "642", + "parentIndex": "2199", + "start": "22878" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "2197", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "2203", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2205", + "name": "oldAllowance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2163", + "src": { + "column": "35", + "end": "22912", + "id": "2206", + "length": "12", + "line": "642", + "parentIndex": "2203", + "start": "22901" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2207", + "name": "value", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2207", + "src": { + "column": "50", + "end": "22920", + "id": "2208", + "length": "5", + "line": "642", + "parentIndex": "2203", + "start": "22916" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "35", + "end": "22920", + "id": "2204", + "length": "20", + "line": "642", + "parentIndex": "2197", + "start": "22901" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "22921", + "id": "2198", + "length": "44", + "line": "642", + "parentIndex": "2161", + "start": "22878" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2213", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "32", + "end": "22959", + "id": "2214", + "length": "5", + "line": "643", + "parentIndex": "2209", + "start": "22955" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2225", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "62", + "end": "22989", + "id": "2226", + "length": "5", + "line": "643", + "parentIndex": "2223", + "start": "22985" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2223", + "memberName": "approve", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "62", + "end": "22997", + "id": "2224", + "length": "13", + "line": "643", + "parentIndex": "2221", + "start": "22985" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2221", + "memberName": "selector", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "62", + "end": "23006", + "id": "2222", + "length": "22", + "line": "643", + "parentIndex": "2215", + "start": "22985" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2227", + "name": "spender", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2227", + "src": { + "column": "86", + "end": "23015", + "id": "2228", + "length": "7", + "line": "643", + "parentIndex": "2215", + "start": "23009" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2229", + "name": "newAllowance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2197", + "src": { + "column": "95", + "end": "23029", + "id": "2230", + "length": "12", + "line": "643", + "parentIndex": "2215", + "start": "23018" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2219", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "39", + "end": "22964", + "id": "2220", + "length": "3", + "line": "643", + "parentIndex": "2217", + "start": "22962" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "2217", + "memberName": "encodeWithSelector", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "39", + "end": "22983", + "id": "2218", + "length": "22", + "line": "643", + "parentIndex": "2215", + "start": "22962" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "2215", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "39", + "end": "23030", + "id": "2216", + "length": "69", + "line": "643", + "parentIndex": "2209", + "start": "22962" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2211", + "name": "_callOptionalReturn", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "22953", + "id": "2212", + "length": "19", + "line": "643", + "parentIndex": "2209", + "start": "22935" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2209", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "23031", + "id": "2210", + "length": "97", + "line": "643", + "parentIndex": "2161", + "start": "22935" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,function(address,address,uint256))" + } + } + } + ] + } + } + ] + }, + "id": "2140", + "kind": "KIND_FUNCTION", + "name": "safeDecreaseAllowance", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2142", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2144", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2144", + "src": { + "column": "8", + "end": "22614", + "id": "2145", + "length": "12", + "line": "635", + "parentIndex": "2142", + "start": "22603" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "typeName": { + "id": "2146", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "2148", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "src": { + "column": "8", + "end": "22608", + "id": "2149", + "length": "6", + "line": "635", + "parentIndex": "2146", + "start": "22603" + } + }, + "referencedDeclaration": "2570", + "src": { + "column": "8", + "end": "22608", + "id": "2147", + "length": "6", + "line": "635", + "parentIndex": "2144", + "start": "22603" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2150", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2150", + "src": { + "column": "8", + "end": "22639", + "id": "2151", + "length": "15", + "line": "636", + "parentIndex": "2142", + "start": "22625" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2152", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "22631", + "id": "2153", + "length": "7", + "line": "636", + "parentIndex": "2150", + "start": "22625" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2154", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2154", + "src": { + "column": "8", + "end": "22662", + "id": "2155", + "length": "13", + "line": "637", + "parentIndex": "2142", + "start": "22650" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2156", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "22656", + "id": "2157", + "length": "7", + "line": "637", + "parentIndex": "2154", + "start": "22650" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "22662", + "id": "2143", + "length": "60", + "line": "635", + "parentIndex": "2140", + "start": "22603" + } + }, + "returnParameters": { + "id": "2158", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "23048", + "id": "2141", + "length": "486", + "line": "634", + "parentIndex": "2140", + "start": "22563" + } + }, + "scope": "1885", + "src": { + "column": "4", + "end": "23048", + "id": "2141", + "length": "486", + "line": "634", + "parentIndex": "1885", + "start": "22563" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_unknown_2140$_t_address$_t_uint256$", + "typeString": "function(unknown_2140,address,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2247", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "74", + "end": "24137", + "id": "2248", + "length": "636", + "line": "653", + "parentIndex": "2232", + "start": "23502" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "2251" + ], + "declarations": [ + { + "id": "2251", + "mutability": "MUTABLE", + "name": "returndata", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2247", + "src": { + "column": "8", + "end": "23873", + "id": "2252", + "length": "23", + "line": "658", + "parentIndex": "2249", + "start": "23851" + }, + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "2253", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "23855", + "id": "2254", + "length": "5", + "line": "658", + "parentIndex": "2251", + "start": "23851" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "2249", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"SafeERC20: low-level call failed\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2267", + "name": "data", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2267", + "src": { + "column": "62", + "end": "23908", + "id": "2268", + "length": "4", + "line": "658", + "parentIndex": "2255", + "start": "23905" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "hexValue": "5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564", + "id": "2269", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "68", + "end": "23944", + "id": "2270", + "length": "34", + "line": "658", + "parentIndex": "2255", + "start": "23911" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"SafeERC20: low-level call failed\"" + }, + "value": "SafeERC20: low-level call failed" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2265", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "42", + "end": "23889", + "id": "2266", + "length": "5", + "line": "658", + "parentIndex": "2259", + "start": "23885" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2261", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "34", + "end": "23883", + "id": "2262", + "length": "7", + "line": "658", + "parentIndex": "2259", + "start": "23877" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "2263", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "34", + "end": "23883", + "id": "2264", + "length": "7", + "line": "658", + "parentIndex": "2261", + "start": "23877" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "2259", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "34", + "end": "23890", + "id": "2260", + "length": "14", + "line": "658", + "parentIndex": "2257", + "start": "23877" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "2257", + "memberName": "functionCall", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "34", + "end": "23903", + "id": "2258", + "length": "27", + "line": "658", + "parentIndex": "2255", + "start": "23877" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "2255", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "34", + "end": "23945", + "id": "2256", + "length": "69", + "line": "658", + "parentIndex": "2249", + "start": "23877" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$_t_string_literal$", + "typeString": "function(bytes,string memory)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "23946", + "id": "2250", + "length": "96", + "line": "658", + "parentIndex": "2247", + "start": "23851" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "2281", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "35", + "end": "24131", + "id": "2282", + "length": "149", + "line": "659", + "parentIndex": "2232", + "start": "23983" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function_$_t_tuple_$_t_bool$", + "typeString": "function(function(),tuple(bool))" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_tuple_$_t_bool$", + "typeString": "tuple(bool)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2293", + "name": "returndata", + "nodeType": "IDENTIFIER", + "src": { + "column": "31", + "end": "24064", + "id": "2294", + "length": "10", + "line": "661", + "parentIndex": "2287", + "start": "24055" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2297", + "name": "bool", + "nodeType": "IDENTIFIER", + "src": { + "column": "44", + "end": "24071", + "id": "2298", + "length": "4", + "line": "661", + "parentIndex": "2295", + "start": "24068" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "2299", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "44", + "end": "24071", + "id": "2300", + "length": "4", + "line": "661", + "parentIndex": "2297", + "start": "24068" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + } + ], + "id": "2295", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "43", + "end": "24072", + "id": "2296", + "length": "6", + "line": "661", + "parentIndex": "2287", + "start": "24067" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_bool$", + "typeString": "tuple(bool)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2291", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "24046", + "id": "2292", + "length": "3", + "line": "661", + "parentIndex": "2289", + "start": "24044" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "2289", + "memberName": "decode", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "20", + "end": "24053", + "id": "2290", + "length": "10", + "line": "661", + "parentIndex": "2287", + "start": "24044" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "2287", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "20", + "end": "24073", + "id": "2288", + "length": "30", + "line": "661", + "parentIndex": "2283", + "start": "24044" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_tuple_$_t_bool$", + "typeString": "function(function(),tuple(bool))" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function_$_t_tuple_$_t_bool$", + "typeString": "function(function(),tuple(bool))" + } + ], + "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564", + "id": "2301", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "52", + "end": "24119", + "id": "2302", + "length": "44", + "line": "661", + "parentIndex": "2283", + "start": "24076" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\"" + }, + "value": "SafeERC20: ERC20 operation did not succeed" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2285", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "24042", + "id": "2286", + "length": "7", + "line": "661", + "parentIndex": "2283", + "start": "24036" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2283", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "24120", + "id": "2284", + "length": "85", + "line": "661", + "parentIndex": "2281", + "start": "24036" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_tuple_$_t_bool$_t_string_literal$", + "typeString": "function(function(function(),tuple(bool)),string memory)" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "2273", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2277", + "name": "returndata", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2249", + "src": { + "column": "12", + "end": "23969", + "id": "2278", + "length": "10", + "line": "659", + "parentIndex": "2275", + "start": "23960" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + "id": "2275", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "23976", + "id": "2276", + "length": "17", + "line": "659", + "parentIndex": "2273", + "start": "23960" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "2279", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "32", + "end": "23980", + "id": "2280", + "length": "1", + "line": "659", + "parentIndex": "2273", + "start": "23980" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "12", + "end": "23980", + "id": "2274", + "length": "21", + "line": "659", + "parentIndex": "2271", + "start": "23960" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "2271", + "nodeType": "IF_STATEMENT", + "src": { + "end": "24131", + "id": "2272", + "length": "176", + "line": "659", + "parentIndex": "2247", + "start": "23956" + } + } + } + ] + }, + "id": "2232", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_callOptionalReturn", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2234", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2236", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2236", + "src": { + "column": "33", + "end": "23472", + "id": "2237", + "length": "12", + "line": "653", + "parentIndex": "2234", + "start": "23461" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "typeName": { + "id": "2238", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "2240", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "src": { + "column": "33", + "end": "23466", + "id": "2241", + "length": "6", + "line": "653", + "parentIndex": "2238", + "start": "23461" + } + }, + "referencedDeclaration": "2570", + "src": { + "column": "33", + "end": "23466", + "id": "2239", + "length": "6", + "line": "653", + "parentIndex": "2236", + "start": "23461" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2242", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2242", + "src": { + "column": "47", + "end": "23491", + "id": "2243", + "length": "17", + "line": "653", + "parentIndex": "2234", + "start": "23475" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "2244", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "23479", + "id": "2245", + "length": "5", + "line": "653", + "parentIndex": "2242", + "start": "23475" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "33", + "end": "23491", + "id": "2235", + "length": "31", + "line": "653", + "parentIndex": "2232", + "start": "23461" + } + }, + "returnParameters": { + "id": "2246", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "24137", + "id": "2233", + "length": "706", + "line": "653", + "parentIndex": "2232", + "start": "23432" + } + }, + "scope": "1885", + "src": { + "column": "4", + "end": "24137", + "id": "2233", + "length": "706", + "line": "653", + "parentIndex": "1885", + "start": "23432" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_unknown_2232$_t_bytes$", + "typeString": "function(unknown_2232,bytes)" + }, + "visibility": "PRIVATE" + } + } + ], + "src": { + "end": "24139", + "length": "3270", + "line": "583", + "parentIndex": "1854", + "start": "20870" + } + } + } + ] + }, + "src": { + "id": 1855, + "line": 583, + "start": 20870, + "end": 24139, + "length": 3270, + "parent_index": 263 + } + }, + { + "id": 2303, + "license": "MIT", + "name": "IWETH", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IWETH.sol", + "exported_symbols": [ + { + "id": 2303, + "name": "IWETH", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IWETH.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "2325", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "24211", + "id": "2326", + "length": "23", + "line": "669", + "parentIndex": "2303", + "start": "24189" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "2363", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "2363" + ], + "name": "IWETH", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2369", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "24271", + "id": "2366", + "length": "36", + "line": "672", + "parentIndex": "2365", + "start": "24236" + } + }, + "id": "2365", + "kind": "KIND_FUNCTION", + "name": "deposit", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2367", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "24271", + "id": "2366", + "length": "36", + "line": "672", + "parentIndex": "2365", + "start": "24236" + } + }, + "returnParameters": { + "id": "2368", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "24271", + "id": "2366", + "length": "36", + "line": "672", + "parentIndex": "2365", + "start": "24236" + } + }, + "scope": "2363", + "src": { + "column": "4", + "end": "24271", + "id": "2366", + "length": "36", + "line": "672", + "parentIndex": "2363", + "start": "24236" + }, + "stateMutability": "PAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2389", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "24346", + "id": "2372", + "length": "69", + "line": "674", + "parentIndex": "2371", + "start": "24278" + } + }, + "id": "2371", + "kind": "KIND_FUNCTION", + "name": "transfer", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2373", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2375", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2375", + "src": { + "column": "22", + "end": "24305", + "id": "2376", + "length": "10", + "line": "674", + "parentIndex": "2373", + "start": "24296" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2377", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "24302", + "id": "2378", + "length": "7", + "line": "674", + "parentIndex": "2375", + "start": "24296" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2379", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2379", + "src": { + "column": "34", + "end": "24320", + "id": "2380", + "length": "13", + "line": "674", + "parentIndex": "2373", + "start": "24308" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2381", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "34", + "end": "24314", + "id": "2382", + "length": "7", + "line": "674", + "parentIndex": "2379", + "start": "24308" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "22", + "end": "24320", + "id": "2374", + "length": "25", + "line": "674", + "parentIndex": "2371", + "start": "24296" + } + }, + "returnParameters": { + "id": "2383", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2385", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2385", + "src": { + "column": "67", + "end": "24344", + "id": "2386", + "length": "4", + "line": "674", + "parentIndex": "2383", + "start": "24341" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "2387", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "67", + "end": "24344", + "id": "2388", + "length": "4", + "line": "674", + "parentIndex": "2385", + "start": "24341" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "67", + "end": "24344", + "id": "2384", + "length": "4", + "line": "674", + "parentIndex": "2371", + "start": "24341" + } + }, + "scope": "2363", + "src": { + "column": "4", + "end": "24346", + "id": "2372", + "length": "69", + "line": "674", + "parentIndex": "2363", + "start": "24278" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2400", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "24388", + "id": "2392", + "length": "36", + "line": "676", + "parentIndex": "2391", + "start": "24353" + } + }, + "id": "2391", + "kind": "KIND_FUNCTION", + "name": "withdraw", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2393", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2395", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2395", + "src": { + "column": "22", + "end": "24377", + "id": "2396", + "length": "7", + "line": "676", + "parentIndex": "2393", + "start": "24371" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2397", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "24377", + "id": "2398", + "length": "7", + "line": "676", + "parentIndex": "2395", + "start": "24371" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "22", + "end": "24377", + "id": "2394", + "length": "7", + "line": "676", + "parentIndex": "2391", + "start": "24371" + } + }, + "returnParameters": { + "id": "2399", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "24388", + "id": "2392", + "length": "36", + "line": "676", + "parentIndex": "2391", + "start": "24353" + } + }, + "scope": "2363", + "src": { + "column": "4", + "end": "24388", + "id": "2392", + "length": "36", + "line": "676", + "parentIndex": "2363", + "start": "24353" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "EXTERNAL" + } + } + ], + "src": { + "end": "24390", + "length": "177", + "line": "671", + "parentIndex": "2303", + "start": "24214" + } + } + } + ] + }, + "src": { + "id": 2304, + "line": 671, + "start": 24214, + "end": 24390, + "length": 177, + "parent_index": 263 + } + }, + { + "id": 2401, + "license": "MIT", + "name": "TokenAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/TokenAdapter.sol", + "exported_symbols": [ + { + "id": 2401, + "name": "TokenAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/TokenAdapter.sol" + }, + { + "id": 2303, + "name": "SafeERC20", + "absolute_path": "SafeERC20.sol" + }, + { + "id": 2303, + "name": "IWETH", + "absolute_path": "IWETH.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "2425", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "24461", + "id": "2426", + "length": "23", + "line": "681", + "parentIndex": "2401", + "start": "24439" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "SafeERC20.sol", + "file": "./SafeERC20.sol", + "id": "2436", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "2401", + "sourceUnit": "2303", + "src": { + "end": "24488", + "length": "25", + "line": "683", + "parentIndex": "2401", + "start": "24464" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IWETH.sol", + "file": "./IWETH.sol", + "id": "2437", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "2401", + "sourceUnit": "2303", + "src": { + "end": "24510", + "length": "21", + "line": "684", + "parentIndex": "2401", + "start": "24490" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "contractDependencies": [ + "2436", + "2437" + ], + "fullyImplemented": true, + "id": "2438", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "2438", + "2436", + "2437" + ], + "name": "TokenAdapter", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Using", + "value": { + "id": "2440", + "libraryName": { + "id": "2446", + "name": "SafeERC20", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "2570", + "src": { + "end": "24633", + "id": "2447", + "length": "9", + "line": "689", + "parentIndex": "2440", + "start": "24625" + } + }, + "name": "SafeERC20", + "nodeType": "USING_FOR_DIRECTIVE", + "src": { + "end": "24645", + "id": "2441", + "length": "27", + "line": "689", + "parentIndex": "2438", + "start": "24619" + }, + "typeName": { + "id": "2442", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "2444", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "src": { + "column": "24", + "end": "24644", + "id": "2445", + "length": "6", + "line": "689", + "parentIndex": "2442", + "start": "24639" + } + }, + "referencedDeclaration": "2570", + "src": { + "column": "24", + "end": "24644", + "id": "2443", + "length": "6", + "line": "689", + "parentIndex": "2440", + "start": "24639" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2468", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "15", + "end": "25091", + "id": "2469", + "length": "164", + "line": "699", + "parentIndex": "2449", + "start": "24928" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "2490", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "42", + "end": "25026", + "id": "2491", + "length": "55", + "line": "700", + "parentIndex": "2449", + "start": "24972" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2498", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2498", + "src": { + "column": "31", + "end": "25006", + "id": "2499", + "length": "2", + "line": "701", + "parentIndex": "2492", + "start": "25005" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2500", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2500", + "src": { + "column": "35", + "end": "25014", + "id": "2501", + "length": "6", + "line": "701", + "parentIndex": "2492", + "start": "25009" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2496", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "12", + "end": "24990", + "id": "2497", + "length": "5", + "line": "701", + "parentIndex": "2494", + "start": "24986" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2494", + "memberName": "safeTransfer", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "25003", + "id": "2495", + "length": "18", + "line": "701", + "parentIndex": "2492", + "start": "24986" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2492", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "25015", + "id": "2493", + "length": "30", + "line": "701", + "parentIndex": "2490", + "start": "24986" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "2472", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2480", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "20", + "end": "24954", + "id": "2481", + "length": "5", + "line": "700", + "parentIndex": "2474", + "start": "24950" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2476", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "24948", + "id": "2477", + "length": "7", + "line": "700", + "parentIndex": "2474", + "start": "24942" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "2478", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "24948", + "id": "2479", + "length": "7", + "line": "700", + "parentIndex": "2476", + "start": "24942" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "2474", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "24955", + "id": "2475", + "length": "14", + "line": "700", + "parentIndex": "2472", + "start": "24942" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "2488", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "38", + "end": "24968", + "id": "2489", + "length": "1", + "line": "700", + "parentIndex": "2482", + "start": "24968" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2484", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "30", + "end": "24966", + "id": "2485", + "length": "7", + "line": "700", + "parentIndex": "2482", + "start": "24960" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "2486", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "30", + "end": "24966", + "id": "2487", + "length": "7", + "line": "700", + "parentIndex": "2484", + "start": "24960" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "2482", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "30", + "end": "24969", + "id": "2483", + "length": "10", + "line": "700", + "parentIndex": "2472", + "start": "24960" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "12", + "end": "24969", + "id": "2473", + "length": "28", + "line": "700", + "parentIndex": "2470", + "start": "24942" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "2470", + "nodeType": "IF_STATEMENT", + "src": { + "end": "25085", + "id": "2471", + "length": "148", + "line": "700", + "parentIndex": "2468", + "start": "24938" + } + } + } + ] + }, + "id": "2449", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_transferTokens", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2451", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2453", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2453", + "src": { + "column": "8", + "end": "24867", + "id": "2454", + "length": "12", + "line": "696", + "parentIndex": "2451", + "start": "24856" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "typeName": { + "id": "2455", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "2457", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "src": { + "column": "8", + "end": "24861", + "id": "2458", + "length": "6", + "line": "696", + "parentIndex": "2455", + "start": "24856" + } + }, + "referencedDeclaration": "2570", + "src": { + "column": "8", + "end": "24861", + "id": "2456", + "length": "6", + "line": "696", + "parentIndex": "2453", + "start": "24856" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2459", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2459", + "src": { + "column": "8", + "end": "24887", + "id": "2460", + "length": "10", + "line": "697", + "parentIndex": "2451", + "start": "24878" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2461", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "24884", + "id": "2462", + "length": "7", + "line": "697", + "parentIndex": "2459", + "start": "24878" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2463", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2463", + "src": { + "column": "8", + "end": "24911", + "id": "2464", + "length": "14", + "line": "698", + "parentIndex": "2451", + "start": "24898" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2465", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "24904", + "id": "2466", + "length": "7", + "line": "698", + "parentIndex": "2463", + "start": "24898" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "24911", + "id": "2452", + "length": "56", + "line": "696", + "parentIndex": "2449", + "start": "24856" + } + }, + "returnParameters": { + "id": "2467", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "25091", + "id": "2450", + "length": "270", + "line": "695", + "parentIndex": "2449", + "start": "24822" + } + }, + "scope": "2438", + "src": { + "column": "4", + "end": "25091", + "id": "2450", + "length": "270", + "line": "695", + "parentIndex": "2438", + "start": "24822" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_unknown_2449$_t_address$_t_uint256$", + "typeString": "function(unknown_2449,address,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2522", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "15", + "end": "25448", + "id": "2523", + "length": "63", + "line": "715", + "parentIndex": "2503", + "start": "25386" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2532", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "31", + "end": "25421", + "id": "2533", + "length": "3", + "line": "716", + "parentIndex": "2530", + "start": "25419" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "2530", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "31", + "end": "25428", + "id": "2531", + "length": "10", + "line": "716", + "parentIndex": "2524", + "start": "25419" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2534", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2534", + "src": { + "column": "43", + "end": "25432", + "id": "2535", + "length": "2", + "line": "716", + "parentIndex": "2524", + "start": "25431" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2536", + "name": "amount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2536", + "src": { + "column": "47", + "end": "25440", + "id": "2537", + "length": "6", + "line": "716", + "parentIndex": "2524", + "start": "25435" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2528", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "837", + "src": { + "column": "8", + "end": "25400", + "id": "2529", + "length": "5", + "line": "716", + "parentIndex": "2526", + "start": "25396" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2526", + "memberName": "safeTransferFrom", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "25417", + "id": "2527", + "length": "22", + "line": "716", + "parentIndex": "2524", + "start": "25396" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "2524", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "25441", + "id": "2525", + "length": "46", + "line": "716", + "parentIndex": "2522", + "start": "25396" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + } + } + } + ] + }, + "id": "2503", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_transferFromToken", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2505", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2507", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2507", + "src": { + "column": "8", + "end": "25325", + "id": "2508", + "length": "12", + "line": "712", + "parentIndex": "2505", + "start": "25314" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "typeName": { + "id": "2509", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "2511", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "src": { + "column": "8", + "end": "25319", + "id": "2512", + "length": "6", + "line": "712", + "parentIndex": "2509", + "start": "25314" + } + }, + "referencedDeclaration": "2570", + "src": { + "column": "8", + "end": "25319", + "id": "2510", + "length": "6", + "line": "712", + "parentIndex": "2507", + "start": "25314" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2513", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2513", + "src": { + "column": "8", + "end": "25345", + "id": "2514", + "length": "10", + "line": "713", + "parentIndex": "2505", + "start": "25336" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2515", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "25342", + "id": "2516", + "length": "7", + "line": "713", + "parentIndex": "2513", + "start": "25336" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2517", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2517", + "src": { + "column": "8", + "end": "25369", + "id": "2518", + "length": "14", + "line": "714", + "parentIndex": "2505", + "start": "25356" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2519", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "25362", + "id": "2520", + "length": "7", + "line": "714", + "parentIndex": "2517", + "start": "25356" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "25369", + "id": "2506", + "length": "56", + "line": "712", + "parentIndex": "2503", + "start": "25314" + } + }, + "returnParameters": { + "id": "2521", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "25448", + "id": "2504", + "length": "172", + "line": "711", + "parentIndex": "2503", + "start": "25277" + } + }, + "scope": "2438", + "src": { + "column": "4", + "end": "25448", + "id": "2504", + "length": "172", + "line": "711", + "parentIndex": "2438", + "start": "25277" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_unknown_2503$_t_address$_t_uint256$", + "typeString": "function(unknown_2503,address,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2552", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "65", + "end": "25816", + "id": "2553", + "length": "150", + "line": "722", + "parentIndex": "2539", + "start": "25667" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function_$_t_address$", + "typeString": "function(function(address))" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenAdapter_$2401", + "typeString": "contract TokenAdapter" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2580", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "62", + "end": "25734", + "id": "2581", + "length": "4", + "line": "723", + "parentIndex": "2574", + "start": "25731" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TokenAdapter_$2401", + "typeString": "contract TokenAdapter" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2576", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "54", + "end": "25729", + "id": "2577", + "length": "7", + "line": "723", + "parentIndex": "2574", + "start": "25723" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "2578", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "54", + "end": "25729", + "id": "2579", + "length": "7", + "line": "723", + "parentIndex": "2576", + "start": "25723" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "2574", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "54", + "end": "25735", + "id": "2575", + "length": "13", + "line": "723", + "parentIndex": "2564", + "start": "25723" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2572", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2572", + "src": { + "column": "37", + "end": "25710", + "id": "2573", + "length": "5", + "line": "723", + "parentIndex": "2568", + "start": "25706" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2570", + "name": "IERC20", + "nodeType": "IDENTIFIER", + "src": { + "column": "30", + "end": "25704", + "id": "2571", + "length": "6", + "line": "723", + "parentIndex": "2568", + "start": "25699" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2568", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "30", + "end": "25711", + "id": "2569", + "length": "13", + "line": "723", + "parentIndex": "2566", + "start": "25699" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "2566", + "memberName": "balanceOf", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "30", + "end": "25721", + "id": "2567", + "length": "23", + "line": "723", + "parentIndex": "2564", + "start": "25699" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "2564", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "30", + "end": "25736", + "id": "2565", + "length": "38", + "line": "723", + "parentIndex": "2554", + "start": "25699" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$", + "typeString": "function(function(address))" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2562", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2562", + "src": { + "column": "14", + "end": "25687", + "id": "2563", + "length": "5", + "line": "723", + "parentIndex": "2558", + "start": "25683" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2560", + "name": "IWETH", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "25681", + "id": "2561", + "length": "5", + "line": "723", + "parentIndex": "2558", + "start": "25677" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2558", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "25688", + "id": "2559", + "length": "12", + "line": "723", + "parentIndex": "2556", + "start": "25677" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "2556", + "memberName": "withdraw", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "25697", + "id": "2557", + "length": "21", + "line": "723", + "parentIndex": "2554", + "start": "25677" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "2554", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "25737", + "id": "2555", + "length": "61", + "line": "723", + "parentIndex": "2552", + "start": "25677" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_address$", + "typeString": "function(function(function(address)))" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$", + "typeString": "function(function(int_const 0))" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "2596", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "39", + "end": "25779", + "id": "2597", + "length": "1", + "line": "724", + "parentIndex": "2590", + "start": "25779" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2592", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "31", + "end": "25777", + "id": "2593", + "length": "7", + "line": "724", + "parentIndex": "2590", + "start": "25771" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "2594", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "31", + "end": "25777", + "id": "2595", + "length": "7", + "line": "724", + "parentIndex": "2592", + "start": "25771" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "2590", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "31", + "end": "25780", + "id": "2591", + "length": "10", + "line": "724", + "parentIndex": "2586", + "start": "25771" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2588", + "name": "IERC20", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "25769", + "id": "2589", + "length": "6", + "line": "724", + "parentIndex": "2586", + "start": "25764" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2586", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "25781", + "id": "2587", + "length": "18", + "line": "724", + "parentIndex": "2582", + "start": "25764" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$", + "typeString": "function(function(int_const 0))" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$", + "typeString": "function(function(int_const 0))" + } + ], + "id": "2598", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "2598", + "src": { + "column": "44", + "end": "25785", + "id": "2599", + "length": "2", + "line": "724", + "parentIndex": "2582", + "start": "25784" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$", + "typeString": "function(function(int_const 0))" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenAdapter_$2401", + "typeString": "contract TokenAdapter" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2608", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "56", + "end": "25799", + "id": "2609", + "length": "4", + "line": "724", + "parentIndex": "2602", + "start": "25796" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TokenAdapter_$2401", + "typeString": "contract TokenAdapter" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "2604", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "48", + "end": "25794", + "id": "2605", + "length": "7", + "line": "724", + "parentIndex": "2602", + "start": "25788" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "2606", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "48", + "end": "25794", + "id": "2607", + "length": "7", + "line": "724", + "parentIndex": "2604", + "start": "25788" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "2602", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "48", + "end": "25800", + "id": "2603", + "length": "13", + "line": "724", + "parentIndex": "2600", + "start": "25788" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "2600", + "memberName": "balance", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "48", + "end": "25808", + "id": "2601", + "length": "21", + "line": "724", + "parentIndex": "2582", + "start": "25788" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "2584", + "name": "_transferTokens", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "25762", + "id": "2585", + "length": "15", + "line": "724", + "parentIndex": "2582", + "start": "25748" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "2582", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "25809", + "id": "2583", + "length": "62", + "line": "724", + "parentIndex": "2552", + "start": "25748" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_rational_0_by_1$_t_address$_t_function_$_t_address$", + "typeString": "function(function(function(int_const 0)),address,function(address))" + } + } + } + ] + }, + "id": "2539", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_unwrapTransfer", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2541", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2543", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2543", + "src": { + "column": "29", + "end": "25643", + "id": "2544", + "length": "13", + "line": "722", + "parentIndex": "2541", + "start": "25631" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2545", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "25637", + "id": "2546", + "length": "7", + "line": "722", + "parentIndex": "2543", + "start": "25631" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2547", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2547", + "src": { + "column": "44", + "end": "25655", + "id": "2548", + "length": "10", + "line": "722", + "parentIndex": "2541", + "start": "25646" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2549", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "44", + "end": "25652", + "id": "2550", + "length": "7", + "line": "722", + "parentIndex": "2547", + "start": "25646" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "25655", + "id": "2542", + "length": "25", + "line": "722", + "parentIndex": "2539", + "start": "25631" + } + }, + "returnParameters": { + "id": "2551", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "25816", + "id": "2540", + "length": "211", + "line": "722", + "parentIndex": "2539", + "start": "25606" + } + }, + "scope": "2438", + "src": { + "column": "4", + "end": "25816", + "id": "2540", + "length": "211", + "line": "722", + "parentIndex": "2438", + "start": "25606" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + }, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "25818", + "length": "1237", + "line": "688", + "parentIndex": "2401", + "start": "24582" + } + } + } + ] + }, + "src": { + "id": 2402, + "line": 688, + "start": 24582, + "end": 25818, + "length": 1237, + "parent_index": 263 + } + }, + { + "id": 2610, + "license": "MIT", + "name": "IUniswapV2Pair", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IUniswapV2Pair.sol", + "exported_symbols": [ + { + "id": 2610, + "name": "IUniswapV2Pair", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IUniswapV2Pair.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "2636", + "literals": [ + "pragma", + "solidity", + "\u003e=", + "0", + ".", + "5", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "25881", + "id": "2637", + "length": "24", + "line": "730", + "parentIndex": "2610", + "start": "25858" + }, + "text": "pragma solidity \u003e=0.5.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "2674", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "2674" + ], + "name": "IUniswapV2Pair", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "2676", + "name": "Approval", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "2678", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2679", + "indexed": true, + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2679", + "src": { + "column": "19", + "end": "25950", + "id": "2680", + "length": "21", + "line": "733", + "parentIndex": "2678", + "start": "25930" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2681", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "19", + "end": "25936", + "id": "2682", + "length": "7", + "line": "733", + "parentIndex": "2679", + "start": "25930" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2683", + "indexed": true, + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2683", + "src": { + "column": "42", + "end": "25975", + "id": "2684", + "length": "23", + "line": "733", + "parentIndex": "2678", + "start": "25953" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2685", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "42", + "end": "25959", + "id": "2686", + "length": "7", + "line": "733", + "parentIndex": "2683", + "start": "25953" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2687", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2687", + "src": { + "column": "67", + "end": "25987", + "id": "2688", + "length": "10", + "line": "733", + "parentIndex": "2678", + "start": "25978" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2689", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "67", + "end": "25981", + "id": "2690", + "length": "4", + "line": "733", + "parentIndex": "2687", + "start": "25978" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "25989", + "id": "2677", + "length": "75", + "line": "733", + "parentIndex": "2676", + "start": "25915" + } + }, + "src": { + "column": "4", + "end": "25989", + "id": "2677", + "length": "75", + "line": "733", + "parentIndex": "2674", + "start": "25915" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IUniswapV2Pair_Approval_\u00262676", + "typeString": "event IUniswapV2Pair.Approval" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "2692", + "name": "Transfer", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "2694", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2695", + "indexed": true, + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2695", + "src": { + "column": "19", + "end": "26029", + "id": "2696", + "length": "20", + "line": "734", + "parentIndex": "2694", + "start": "26010" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2697", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "19", + "end": "26016", + "id": "2698", + "length": "7", + "line": "734", + "parentIndex": "2695", + "start": "26010" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2699", + "indexed": true, + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2699", + "src": { + "column": "41", + "end": "26049", + "id": "2700", + "length": "18", + "line": "734", + "parentIndex": "2694", + "start": "26032" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2701", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "41", + "end": "26038", + "id": "2702", + "length": "7", + "line": "734", + "parentIndex": "2699", + "start": "26032" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2703", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2703", + "src": { + "column": "61", + "end": "26061", + "id": "2704", + "length": "10", + "line": "734", + "parentIndex": "2694", + "start": "26052" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2705", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "61", + "end": "26055", + "id": "2706", + "length": "4", + "line": "734", + "parentIndex": "2703", + "start": "26052" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "26063", + "id": "2693", + "length": "69", + "line": "734", + "parentIndex": "2692", + "start": "25995" + } + }, + "src": { + "column": "4", + "end": "26063", + "id": "2693", + "length": "69", + "line": "734", + "parentIndex": "2674", + "start": "25995" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IUniswapV2Pair_Transfer_\u00262692", + "typeString": "event IUniswapV2Pair.Transfer" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2722", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "26123", + "id": "2709", + "length": "54", + "line": "736", + "parentIndex": "2708", + "start": "26070" + } + }, + "id": "2708", + "kind": "KIND_FUNCTION", + "name": "name", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2710", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2712", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2712", + "src": { + "column": "43", + "end": "26121", + "id": "2713", + "length": "13", + "line": "736", + "parentIndex": "2710", + "start": "26109" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "2714", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "43", + "end": "26114", + "id": "2715", + "length": "6", + "line": "736", + "parentIndex": "2712", + "start": "26109" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "43", + "end": "26121", + "id": "2711", + "length": "13", + "line": "736", + "parentIndex": "2708", + "start": "26109" + } + }, + "returnParameters": { + "id": "2716", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2718", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2718", + "src": { + "column": "43", + "end": "26121", + "id": "2719", + "length": "13", + "line": "736", + "parentIndex": "2716", + "start": "26109" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "2720", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "43", + "end": "26114", + "id": "2721", + "length": "6", + "line": "736", + "parentIndex": "2718", + "start": "26109" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "43", + "end": "26121", + "id": "2717", + "length": "13", + "line": "736", + "parentIndex": "2708", + "start": "26109" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "26123", + "id": "2709", + "length": "54", + "line": "736", + "parentIndex": "2674", + "start": "26070" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_string$", + "typeString": "function(string)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2738", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "26184", + "id": "2725", + "length": "56", + "line": "737", + "parentIndex": "2724", + "start": "26129" + } + }, + "id": "2724", + "kind": "KIND_FUNCTION", + "name": "symbol", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2726", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2728", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2728", + "src": { + "column": "45", + "end": "26182", + "id": "2729", + "length": "13", + "line": "737", + "parentIndex": "2726", + "start": "26170" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "2730", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "45", + "end": "26175", + "id": "2731", + "length": "6", + "line": "737", + "parentIndex": "2728", + "start": "26170" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "45", + "end": "26182", + "id": "2727", + "length": "13", + "line": "737", + "parentIndex": "2724", + "start": "26170" + } + }, + "returnParameters": { + "id": "2732", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2734", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2734", + "src": { + "column": "45", + "end": "26182", + "id": "2735", + "length": "13", + "line": "737", + "parentIndex": "2732", + "start": "26170" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + }, + "typeName": { + "id": "2736", + "name": "string", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "45", + "end": "26175", + "id": "2737", + "length": "6", + "line": "737", + "parentIndex": "2734", + "start": "26170" + }, + "typeDescription": { + "typeIdentifier": "t_string", + "typeString": "string" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "45", + "end": "26182", + "id": "2733", + "length": "13", + "line": "737", + "parentIndex": "2724", + "start": "26170" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "26184", + "id": "2725", + "length": "56", + "line": "737", + "parentIndex": "2674", + "start": "26129" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_string$", + "typeString": "function(string)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2754", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "26239", + "id": "2741", + "length": "50", + "line": "738", + "parentIndex": "2740", + "start": "26190" + } + }, + "id": "2740", + "kind": "KIND_FUNCTION", + "name": "decimals", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2742", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2744", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2744", + "src": { + "column": "47", + "end": "26237", + "id": "2745", + "length": "5", + "line": "738", + "parentIndex": "2742", + "start": "26233" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "2746", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "26237", + "id": "2747", + "length": "5", + "line": "738", + "parentIndex": "2744", + "start": "26233" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "47", + "end": "26237", + "id": "2743", + "length": "5", + "line": "738", + "parentIndex": "2740", + "start": "26233" + } + }, + "returnParameters": { + "id": "2748", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2750", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2750", + "src": { + "column": "47", + "end": "26237", + "id": "2751", + "length": "5", + "line": "738", + "parentIndex": "2748", + "start": "26233" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "2752", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "26237", + "id": "2753", + "length": "5", + "line": "738", + "parentIndex": "2750", + "start": "26233" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "47", + "end": "26237", + "id": "2749", + "length": "5", + "line": "738", + "parentIndex": "2740", + "start": "26233" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "26239", + "id": "2741", + "length": "50", + "line": "738", + "parentIndex": "2674", + "start": "26190" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint8$", + "typeString": "function(uint8)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2770", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "26296", + "id": "2757", + "length": "52", + "line": "739", + "parentIndex": "2756", + "start": "26245" + } + }, + "id": "2756", + "kind": "KIND_FUNCTION", + "name": "totalSupply", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2758", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2760", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2760", + "src": { + "column": "50", + "end": "26294", + "id": "2761", + "length": "4", + "line": "739", + "parentIndex": "2758", + "start": "26291" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2762", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "26294", + "id": "2763", + "length": "4", + "line": "739", + "parentIndex": "2760", + "start": "26291" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "50", + "end": "26294", + "id": "2759", + "length": "4", + "line": "739", + "parentIndex": "2756", + "start": "26291" + } + }, + "returnParameters": { + "id": "2764", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2766", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2766", + "src": { + "column": "50", + "end": "26294", + "id": "2767", + "length": "4", + "line": "739", + "parentIndex": "2764", + "start": "26291" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2768", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "26294", + "id": "2769", + "length": "4", + "line": "739", + "parentIndex": "2766", + "start": "26291" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "50", + "end": "26294", + "id": "2765", + "length": "4", + "line": "739", + "parentIndex": "2756", + "start": "26291" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "26296", + "id": "2757", + "length": "52", + "line": "739", + "parentIndex": "2674", + "start": "26245" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2786", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "26364", + "id": "2773", + "length": "63", + "line": "740", + "parentIndex": "2772", + "start": "26302" + } + }, + "id": "2772", + "kind": "KIND_FUNCTION", + "name": "balanceOf", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2774", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2776", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2776", + "src": { + "column": "23", + "end": "26333", + "id": "2777", + "length": "13", + "line": "740", + "parentIndex": "2774", + "start": "26321" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2778", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "26327", + "id": "2779", + "length": "7", + "line": "740", + "parentIndex": "2776", + "start": "26321" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "26333", + "id": "2775", + "length": "13", + "line": "740", + "parentIndex": "2772", + "start": "26321" + } + }, + "returnParameters": { + "id": "2780", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2782", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2782", + "src": { + "column": "61", + "end": "26362", + "id": "2783", + "length": "4", + "line": "740", + "parentIndex": "2780", + "start": "26359" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2784", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "61", + "end": "26362", + "id": "2785", + "length": "4", + "line": "740", + "parentIndex": "2782", + "start": "26359" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "61", + "end": "26362", + "id": "2781", + "length": "4", + "line": "740", + "parentIndex": "2772", + "start": "26359" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "26364", + "id": "2773", + "length": "63", + "line": "740", + "parentIndex": "2674", + "start": "26302" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2806", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "26449", + "id": "2789", + "length": "80", + "line": "741", + "parentIndex": "2788", + "start": "26370" + } + }, + "id": "2788", + "kind": "KIND_FUNCTION", + "name": "allowance", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2790", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2792", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2792", + "src": { + "column": "23", + "end": "26401", + "id": "2793", + "length": "13", + "line": "741", + "parentIndex": "2790", + "start": "26389" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2794", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "23", + "end": "26395", + "id": "2795", + "length": "7", + "line": "741", + "parentIndex": "2792", + "start": "26389" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2796", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2796", + "src": { + "column": "38", + "end": "26418", + "id": "2797", + "length": "15", + "line": "741", + "parentIndex": "2790", + "start": "26404" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2798", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "38", + "end": "26410", + "id": "2799", + "length": "7", + "line": "741", + "parentIndex": "2796", + "start": "26404" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "23", + "end": "26418", + "id": "2791", + "length": "30", + "line": "741", + "parentIndex": "2788", + "start": "26389" + } + }, + "returnParameters": { + "id": "2800", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2802", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2802", + "src": { + "column": "78", + "end": "26447", + "id": "2803", + "length": "4", + "line": "741", + "parentIndex": "2800", + "start": "26444" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2804", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "78", + "end": "26447", + "id": "2805", + "length": "4", + "line": "741", + "parentIndex": "2802", + "start": "26444" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "78", + "end": "26447", + "id": "2801", + "length": "4", + "line": "741", + "parentIndex": "2788", + "start": "26444" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "26449", + "id": "2789", + "length": "80", + "line": "741", + "parentIndex": "2674", + "start": "26370" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2826", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "26525", + "id": "2809", + "length": "70", + "line": "743", + "parentIndex": "2808", + "start": "26456" + } + }, + "id": "2808", + "kind": "KIND_FUNCTION", + "name": "approve", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2810", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2812", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2812", + "src": { + "column": "21", + "end": "26487", + "id": "2813", + "length": "15", + "line": "743", + "parentIndex": "2810", + "start": "26473" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2814", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "21", + "end": "26479", + "id": "2815", + "length": "7", + "line": "743", + "parentIndex": "2812", + "start": "26473" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2816", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2816", + "src": { + "column": "38", + "end": "26499", + "id": "2817", + "length": "10", + "line": "743", + "parentIndex": "2810", + "start": "26490" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2818", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "38", + "end": "26493", + "id": "2819", + "length": "4", + "line": "743", + "parentIndex": "2816", + "start": "26490" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "21", + "end": "26499", + "id": "2811", + "length": "27", + "line": "743", + "parentIndex": "2808", + "start": "26473" + } + }, + "returnParameters": { + "id": "2820", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2822", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2822", + "src": { + "column": "68", + "end": "26523", + "id": "2823", + "length": "4", + "line": "743", + "parentIndex": "2820", + "start": "26520" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "2824", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "68", + "end": "26523", + "id": "2825", + "length": "4", + "line": "743", + "parentIndex": "2822", + "start": "26520" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "68", + "end": "26523", + "id": "2821", + "length": "4", + "line": "743", + "parentIndex": "2808", + "start": "26520" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "26525", + "id": "2809", + "length": "70", + "line": "743", + "parentIndex": "2674", + "start": "26456" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2846", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "26596", + "id": "2829", + "length": "66", + "line": "744", + "parentIndex": "2828", + "start": "26531" + } + }, + "id": "2828", + "kind": "KIND_FUNCTION", + "name": "transfer", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2830", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2832", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2832", + "src": { + "column": "22", + "end": "26558", + "id": "2833", + "length": "10", + "line": "744", + "parentIndex": "2830", + "start": "26549" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2834", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "22", + "end": "26555", + "id": "2835", + "length": "7", + "line": "744", + "parentIndex": "2832", + "start": "26549" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2836", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2836", + "src": { + "column": "34", + "end": "26570", + "id": "2837", + "length": "10", + "line": "744", + "parentIndex": "2830", + "start": "26561" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2838", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "34", + "end": "26564", + "id": "2839", + "length": "4", + "line": "744", + "parentIndex": "2836", + "start": "26561" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "22", + "end": "26570", + "id": "2831", + "length": "22", + "line": "744", + "parentIndex": "2828", + "start": "26549" + } + }, + "returnParameters": { + "id": "2840", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2842", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2842", + "src": { + "column": "64", + "end": "26594", + "id": "2843", + "length": "4", + "line": "744", + "parentIndex": "2840", + "start": "26591" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "2844", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "64", + "end": "26594", + "id": "2845", + "length": "4", + "line": "744", + "parentIndex": "2842", + "start": "26591" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "64", + "end": "26594", + "id": "2841", + "length": "4", + "line": "744", + "parentIndex": "2828", + "start": "26591" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "26596", + "id": "2829", + "length": "66", + "line": "744", + "parentIndex": "2674", + "start": "26531" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$", + "typeString": "function(address,uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2870", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "26685", + "id": "2849", + "length": "84", + "line": "745", + "parentIndex": "2848", + "start": "26602" + } + }, + "id": "2848", + "kind": "KIND_FUNCTION", + "name": "transferFrom", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2850", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2852", + "name": "from", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2852", + "src": { + "column": "26", + "end": "26635", + "id": "2853", + "length": "12", + "line": "745", + "parentIndex": "2850", + "start": "26624" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2854", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "26", + "end": "26630", + "id": "2855", + "length": "7", + "line": "745", + "parentIndex": "2852", + "start": "26624" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2856", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2856", + "src": { + "column": "40", + "end": "26647", + "id": "2857", + "length": "10", + "line": "745", + "parentIndex": "2850", + "start": "26638" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2858", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "40", + "end": "26644", + "id": "2859", + "length": "7", + "line": "745", + "parentIndex": "2856", + "start": "26638" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2860", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2860", + "src": { + "column": "52", + "end": "26659", + "id": "2861", + "length": "10", + "line": "745", + "parentIndex": "2850", + "start": "26650" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2862", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "52", + "end": "26653", + "id": "2863", + "length": "4", + "line": "745", + "parentIndex": "2860", + "start": "26650" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "26", + "end": "26659", + "id": "2851", + "length": "36", + "line": "745", + "parentIndex": "2848", + "start": "26624" + } + }, + "returnParameters": { + "id": "2864", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2866", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2866", + "src": { + "column": "82", + "end": "26683", + "id": "2867", + "length": "4", + "line": "745", + "parentIndex": "2864", + "start": "26680" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "2868", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "82", + "end": "26683", + "id": "2869", + "length": "4", + "line": "745", + "parentIndex": "2866", + "start": "26680" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "82", + "end": "26683", + "id": "2865", + "length": "4", + "line": "745", + "parentIndex": "2848", + "start": "26680" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "26685", + "id": "2849", + "length": "84", + "line": "745", + "parentIndex": "2674", + "start": "26602" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", + "typeString": "function(address,address,uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2886", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "26751", + "id": "2873", + "length": "60", + "line": "747", + "parentIndex": "2872", + "start": "26692" + } + }, + "id": "2872", + "kind": "KIND_FUNCTION", + "name": "DOMAIN_SEPARATOR", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2874", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2876", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2876", + "src": { + "column": "55", + "end": "26749", + "id": "2877", + "length": "7", + "line": "747", + "parentIndex": "2874", + "start": "26743" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "2878", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "55", + "end": "26749", + "id": "2879", + "length": "7", + "line": "747", + "parentIndex": "2876", + "start": "26743" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "55", + "end": "26749", + "id": "2875", + "length": "7", + "line": "747", + "parentIndex": "2872", + "start": "26743" + } + }, + "returnParameters": { + "id": "2880", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2882", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2882", + "src": { + "column": "55", + "end": "26749", + "id": "2883", + "length": "7", + "line": "747", + "parentIndex": "2880", + "start": "26743" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "2884", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "55", + "end": "26749", + "id": "2885", + "length": "7", + "line": "747", + "parentIndex": "2882", + "start": "26743" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "55", + "end": "26749", + "id": "2881", + "length": "7", + "line": "747", + "parentIndex": "2872", + "start": "26743" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "26751", + "id": "2873", + "length": "60", + "line": "747", + "parentIndex": "2674", + "start": "26692" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes32$", + "typeString": "function(bytes32)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2902", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "26815", + "id": "2889", + "length": "59", + "line": "748", + "parentIndex": "2888", + "start": "26757" + } + }, + "id": "2888", + "kind": "KIND_FUNCTION", + "name": "PERMIT_TYPEHASH", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2890", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2892", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2892", + "src": { + "column": "54", + "end": "26813", + "id": "2893", + "length": "7", + "line": "748", + "parentIndex": "2890", + "start": "26807" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "2894", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "54", + "end": "26813", + "id": "2895", + "length": "7", + "line": "748", + "parentIndex": "2892", + "start": "26807" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "54", + "end": "26813", + "id": "2891", + "length": "7", + "line": "748", + "parentIndex": "2888", + "start": "26807" + } + }, + "returnParameters": { + "id": "2896", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2898", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2898", + "src": { + "column": "54", + "end": "26813", + "id": "2899", + "length": "7", + "line": "748", + "parentIndex": "2896", + "start": "26807" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "2900", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "54", + "end": "26813", + "id": "2901", + "length": "7", + "line": "748", + "parentIndex": "2898", + "start": "26807" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "54", + "end": "26813", + "id": "2897", + "length": "7", + "line": "748", + "parentIndex": "2888", + "start": "26807" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "26815", + "id": "2889", + "length": "59", + "line": "748", + "parentIndex": "2674", + "start": "26757" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes32$", + "typeString": "function(bytes32)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2918", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "26880", + "id": "2905", + "length": "60", + "line": "749", + "parentIndex": "2904", + "start": "26821" + } + }, + "id": "2904", + "kind": "KIND_FUNCTION", + "name": "nonces", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2906", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2908", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2908", + "src": { + "column": "20", + "end": "26849", + "id": "2909", + "length": "13", + "line": "749", + "parentIndex": "2906", + "start": "26837" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2910", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "20", + "end": "26843", + "id": "2911", + "length": "7", + "line": "749", + "parentIndex": "2908", + "start": "26837" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "20", + "end": "26849", + "id": "2907", + "length": "13", + "line": "749", + "parentIndex": "2904", + "start": "26837" + } + }, + "returnParameters": { + "id": "2912", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2914", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2914", + "src": { + "column": "58", + "end": "26878", + "id": "2915", + "length": "4", + "line": "749", + "parentIndex": "2912", + "start": "26875" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2916", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "58", + "end": "26878", + "id": "2917", + "length": "4", + "line": "749", + "parentIndex": "2914", + "start": "26875" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "58", + "end": "26878", + "id": "2913", + "length": "4", + "line": "749", + "parentIndex": "2904", + "start": "26875" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "26880", + "id": "2905", + "length": "60", + "line": "749", + "parentIndex": "2674", + "start": "26821" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "2953", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "27001", + "id": "2921", + "length": "115", + "line": "751", + "parentIndex": "2920", + "start": "26887" + } + }, + "id": "2920", + "kind": "KIND_FUNCTION", + "name": "permit", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "2922", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2924", + "name": "owner", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2924", + "src": { + "column": "20", + "end": "26915", + "id": "2925", + "length": "13", + "line": "751", + "parentIndex": "2922", + "start": "26903" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2926", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "20", + "end": "26909", + "id": "2927", + "length": "7", + "line": "751", + "parentIndex": "2924", + "start": "26903" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2928", + "name": "spender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2928", + "src": { + "column": "35", + "end": "26932", + "id": "2929", + "length": "15", + "line": "751", + "parentIndex": "2922", + "start": "26918" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2930", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "35", + "end": "26924", + "id": "2931", + "length": "7", + "line": "751", + "parentIndex": "2928", + "start": "26918" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2932", + "name": "value", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2932", + "src": { + "column": "52", + "end": "26944", + "id": "2933", + "length": "10", + "line": "751", + "parentIndex": "2922", + "start": "26935" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2934", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "52", + "end": "26938", + "id": "2935", + "length": "4", + "line": "751", + "parentIndex": "2932", + "start": "26935" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2936", + "name": "deadline", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2936", + "src": { + "column": "64", + "end": "26959", + "id": "2937", + "length": "13", + "line": "751", + "parentIndex": "2922", + "start": "26947" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2938", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "64", + "end": "26950", + "id": "2939", + "length": "4", + "line": "751", + "parentIndex": "2936", + "start": "26947" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2940", + "name": "v", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2940", + "src": { + "column": "79", + "end": "26968", + "id": "2941", + "length": "7", + "line": "751", + "parentIndex": "2922", + "start": "26962" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "2942", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "79", + "end": "26966", + "id": "2943", + "length": "5", + "line": "751", + "parentIndex": "2940", + "start": "26962" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2944", + "name": "r", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2944", + "src": { + "column": "88", + "end": "26979", + "id": "2945", + "length": "9", + "line": "751", + "parentIndex": "2922", + "start": "26971" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "2946", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "88", + "end": "26977", + "id": "2947", + "length": "7", + "line": "751", + "parentIndex": "2944", + "start": "26971" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2948", + "name": "s", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2948", + "src": { + "column": "99", + "end": "26990", + "id": "2949", + "length": "9", + "line": "751", + "parentIndex": "2922", + "start": "26982" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "2950", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "99", + "end": "26988", + "id": "2951", + "length": "7", + "line": "751", + "parentIndex": "2948", + "start": "26982" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "20", + "end": "26990", + "id": "2923", + "length": "88", + "line": "751", + "parentIndex": "2920", + "start": "26903" + } + }, + "returnParameters": { + "id": "2952", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "27001", + "id": "2921", + "length": "115", + "line": "751", + "parentIndex": "2920", + "start": "26887" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "27001", + "id": "2921", + "length": "115", + "line": "751", + "parentIndex": "2674", + "start": "26887" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$_t_uint256$_t_uint8$_t_bytes32$_t_bytes32$", + "typeString": "function(address,address,uint256,uint256,uint8,bytes32,bytes32)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "2955", + "name": "Mint", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "2957", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2958", + "indexed": true, + "name": "sender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2958", + "src": { + "column": "15", + "end": "27040", + "id": "2959", + "length": "22", + "line": "753", + "parentIndex": "2957", + "start": "27019" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2960", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "15", + "end": "27025", + "id": "2961", + "length": "7", + "line": "753", + "parentIndex": "2958", + "start": "27019" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2962", + "name": "amount0", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2962", + "src": { + "column": "39", + "end": "27054", + "id": "2963", + "length": "12", + "line": "753", + "parentIndex": "2957", + "start": "27043" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2964", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "39", + "end": "27046", + "id": "2965", + "length": "4", + "line": "753", + "parentIndex": "2962", + "start": "27043" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2966", + "name": "amount1", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2966", + "src": { + "column": "53", + "end": "27068", + "id": "2967", + "length": "12", + "line": "753", + "parentIndex": "2957", + "start": "27057" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2968", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "53", + "end": "27060", + "id": "2969", + "length": "4", + "line": "753", + "parentIndex": "2966", + "start": "27057" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "27070", + "id": "2956", + "length": "63", + "line": "753", + "parentIndex": "2955", + "start": "27008" + } + }, + "src": { + "column": "4", + "end": "27070", + "id": "2956", + "length": "63", + "line": "753", + "parentIndex": "2674", + "start": "27008" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IUniswapV2Pair_Mint_\u00262955", + "typeString": "event IUniswapV2Pair.Mint" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "2971", + "name": "Burn", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "2973", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2974", + "indexed": true, + "name": "sender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2974", + "src": { + "column": "15", + "end": "27108", + "id": "2975", + "length": "22", + "line": "754", + "parentIndex": "2973", + "start": "27087" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2976", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "15", + "end": "27093", + "id": "2977", + "length": "7", + "line": "754", + "parentIndex": "2974", + "start": "27087" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2978", + "name": "amount0", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2978", + "src": { + "column": "39", + "end": "27122", + "id": "2979", + "length": "12", + "line": "754", + "parentIndex": "2973", + "start": "27111" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2980", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "39", + "end": "27114", + "id": "2981", + "length": "4", + "line": "754", + "parentIndex": "2978", + "start": "27111" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2982", + "name": "amount1", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2982", + "src": { + "column": "53", + "end": "27136", + "id": "2983", + "length": "12", + "line": "754", + "parentIndex": "2973", + "start": "27125" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "2984", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "53", + "end": "27128", + "id": "2985", + "length": "4", + "line": "754", + "parentIndex": "2982", + "start": "27125" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2986", + "indexed": true, + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2986", + "src": { + "column": "67", + "end": "27156", + "id": "2987", + "length": "18", + "line": "754", + "parentIndex": "2973", + "start": "27139" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2988", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "67", + "end": "27145", + "id": "2989", + "length": "7", + "line": "754", + "parentIndex": "2986", + "start": "27139" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "27158", + "id": "2972", + "length": "83", + "line": "754", + "parentIndex": "2971", + "start": "27076" + } + }, + "src": { + "column": "4", + "end": "27158", + "id": "2972", + "length": "83", + "line": "754", + "parentIndex": "2674", + "start": "27076" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IUniswapV2Pair_Burn_\u00262971", + "typeString": "event IUniswapV2Pair.Burn" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "2991", + "name": "Swap", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "2993", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "2994", + "indexed": true, + "name": "sender", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2994", + "src": { + "column": "8", + "end": "27205", + "id": "2995", + "length": "22", + "line": "756", + "parentIndex": "2993", + "start": "27184" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "2996", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "27190", + "id": "2997", + "length": "7", + "line": "756", + "parentIndex": "2994", + "start": "27184" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "2998", + "name": "amount0In", + "nodeType": "VARIABLE_DECLARATION", + "scope": "2998", + "src": { + "column": "8", + "end": "27229", + "id": "2999", + "length": "14", + "line": "757", + "parentIndex": "2993", + "start": "27216" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3000", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "27219", + "id": "3001", + "length": "4", + "line": "757", + "parentIndex": "2998", + "start": "27216" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3002", + "name": "amount1In", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3002", + "src": { + "column": "8", + "end": "27253", + "id": "3003", + "length": "14", + "line": "758", + "parentIndex": "2993", + "start": "27240" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3004", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "27243", + "id": "3005", + "length": "4", + "line": "758", + "parentIndex": "3002", + "start": "27240" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3006", + "name": "amount0Out", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3006", + "src": { + "column": "8", + "end": "27278", + "id": "3007", + "length": "15", + "line": "759", + "parentIndex": "2993", + "start": "27264" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3008", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "27267", + "id": "3009", + "length": "4", + "line": "759", + "parentIndex": "3006", + "start": "27264" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3010", + "name": "amount1Out", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3010", + "src": { + "column": "8", + "end": "27303", + "id": "3011", + "length": "15", + "line": "760", + "parentIndex": "2993", + "start": "27289" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3012", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "27292", + "id": "3013", + "length": "4", + "line": "760", + "parentIndex": "3010", + "start": "27289" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3014", + "indexed": true, + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3014", + "src": { + "column": "8", + "end": "27331", + "id": "3015", + "length": "18", + "line": "761", + "parentIndex": "2993", + "start": "27314" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3016", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "27320", + "id": "3017", + "length": "7", + "line": "761", + "parentIndex": "3014", + "start": "27314" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "27338", + "id": "2992", + "length": "175", + "line": "755", + "parentIndex": "2991", + "start": "27164" + } + }, + "src": { + "column": "4", + "end": "27338", + "id": "2992", + "length": "175", + "line": "755", + "parentIndex": "2674", + "start": "27164" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IUniswapV2Pair_Swap_\u00262991", + "typeString": "event IUniswapV2Pair.Swap" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "3019", + "name": "Sync", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "3021", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3022", + "name": "reserve0", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3022", + "src": { + "column": "15", + "end": "27370", + "id": "3023", + "length": "16", + "line": "763", + "parentIndex": "3021", + "start": "27355" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": "3024", + "name": "uint112", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "15", + "end": "27361", + "id": "3025", + "length": "7", + "line": "763", + "parentIndex": "3022", + "start": "27355" + }, + "typeDescription": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3026", + "name": "reserve1", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3026", + "src": { + "column": "33", + "end": "27388", + "id": "3027", + "length": "16", + "line": "763", + "parentIndex": "3021", + "start": "27373" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": "3028", + "name": "uint112", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "33", + "end": "27379", + "id": "3029", + "length": "7", + "line": "763", + "parentIndex": "3026", + "start": "27373" + }, + "typeDescription": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "27390", + "id": "3020", + "length": "47", + "line": "763", + "parentIndex": "3019", + "start": "27344" + } + }, + "src": { + "column": "4", + "end": "27390", + "id": "3020", + "length": "47", + "line": "763", + "parentIndex": "2674", + "start": "27344" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_IUniswapV2Pair_Sync_\u00263019", + "typeString": "event IUniswapV2Pair.Sync" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3045", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "27454", + "id": "3032", + "length": "58", + "line": "765", + "parentIndex": "3031", + "start": "27397" + } + }, + "id": "3031", + "kind": "KIND_FUNCTION", + "name": "MINIMUM_LIQUIDITY", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3033", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3035", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3035", + "src": { + "column": "56", + "end": "27452", + "id": "3036", + "length": "4", + "line": "765", + "parentIndex": "3033", + "start": "27449" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3037", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "56", + "end": "27452", + "id": "3038", + "length": "4", + "line": "765", + "parentIndex": "3035", + "start": "27449" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "56", + "end": "27452", + "id": "3034", + "length": "4", + "line": "765", + "parentIndex": "3031", + "start": "27449" + } + }, + "returnParameters": { + "id": "3039", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3041", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3041", + "src": { + "column": "56", + "end": "27452", + "id": "3042", + "length": "4", + "line": "765", + "parentIndex": "3039", + "start": "27449" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3043", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "56", + "end": "27452", + "id": "3044", + "length": "4", + "line": "765", + "parentIndex": "3041", + "start": "27449" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "56", + "end": "27452", + "id": "3040", + "length": "4", + "line": "765", + "parentIndex": "3031", + "start": "27449" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "27454", + "id": "3032", + "length": "58", + "line": "765", + "parentIndex": "2674", + "start": "27397" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3061", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "27510", + "id": "3048", + "length": "51", + "line": "766", + "parentIndex": "3047", + "start": "27460" + } + }, + "id": "3047", + "kind": "KIND_FUNCTION", + "name": "factory", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3049", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3051", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3051", + "src": { + "column": "46", + "end": "27508", + "id": "3052", + "length": "7", + "line": "766", + "parentIndex": "3049", + "start": "27502" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3053", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "46", + "end": "27508", + "id": "3054", + "length": "7", + "line": "766", + "parentIndex": "3051", + "start": "27502" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "46", + "end": "27508", + "id": "3050", + "length": "7", + "line": "766", + "parentIndex": "3047", + "start": "27502" + } + }, + "returnParameters": { + "id": "3055", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3057", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3057", + "src": { + "column": "46", + "end": "27508", + "id": "3058", + "length": "7", + "line": "766", + "parentIndex": "3055", + "start": "27502" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3059", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "46", + "end": "27508", + "id": "3060", + "length": "7", + "line": "766", + "parentIndex": "3057", + "start": "27502" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "46", + "end": "27508", + "id": "3056", + "length": "7", + "line": "766", + "parentIndex": "3047", + "start": "27502" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "27510", + "id": "3048", + "length": "51", + "line": "766", + "parentIndex": "2674", + "start": "27460" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3077", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "27565", + "id": "3064", + "length": "50", + "line": "767", + "parentIndex": "3063", + "start": "27516" + } + }, + "id": "3063", + "kind": "KIND_FUNCTION", + "name": "token0", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3065", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3067", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3067", + "src": { + "column": "45", + "end": "27563", + "id": "3068", + "length": "7", + "line": "767", + "parentIndex": "3065", + "start": "27557" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3069", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "45", + "end": "27563", + "id": "3070", + "length": "7", + "line": "767", + "parentIndex": "3067", + "start": "27557" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "45", + "end": "27563", + "id": "3066", + "length": "7", + "line": "767", + "parentIndex": "3063", + "start": "27557" + } + }, + "returnParameters": { + "id": "3071", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3073", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3073", + "src": { + "column": "45", + "end": "27563", + "id": "3074", + "length": "7", + "line": "767", + "parentIndex": "3071", + "start": "27557" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3075", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "45", + "end": "27563", + "id": "3076", + "length": "7", + "line": "767", + "parentIndex": "3073", + "start": "27557" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "45", + "end": "27563", + "id": "3072", + "length": "7", + "line": "767", + "parentIndex": "3063", + "start": "27557" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "27565", + "id": "3064", + "length": "50", + "line": "767", + "parentIndex": "2674", + "start": "27516" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3093", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "27620", + "id": "3080", + "length": "50", + "line": "768", + "parentIndex": "3079", + "start": "27571" + } + }, + "id": "3079", + "kind": "KIND_FUNCTION", + "name": "token1", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3081", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3083", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3083", + "src": { + "column": "45", + "end": "27618", + "id": "3084", + "length": "7", + "line": "768", + "parentIndex": "3081", + "start": "27612" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3085", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "45", + "end": "27618", + "id": "3086", + "length": "7", + "line": "768", + "parentIndex": "3083", + "start": "27612" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "45", + "end": "27618", + "id": "3082", + "length": "7", + "line": "768", + "parentIndex": "3079", + "start": "27612" + } + }, + "returnParameters": { + "id": "3087", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3089", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3089", + "src": { + "column": "45", + "end": "27618", + "id": "3090", + "length": "7", + "line": "768", + "parentIndex": "3087", + "start": "27612" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3091", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "45", + "end": "27618", + "id": "3092", + "length": "7", + "line": "768", + "parentIndex": "3089", + "start": "27612" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "45", + "end": "27618", + "id": "3088", + "length": "7", + "line": "768", + "parentIndex": "3079", + "start": "27612" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "27620", + "id": "3080", + "length": "50", + "line": "768", + "parentIndex": "2674", + "start": "27571" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3125", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "27734", + "id": "3096", + "length": "109", + "line": "769", + "parentIndex": "3095", + "start": "27626" + } + }, + "id": "3095", + "kind": "KIND_FUNCTION", + "name": "getReserves", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3097", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3099", + "name": "reserve0", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3099", + "src": { + "column": "50", + "end": "27687", + "id": "3100", + "length": "16", + "line": "769", + "parentIndex": "3097", + "start": "27672" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": "3101", + "name": "uint112", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "27678", + "id": "3102", + "length": "7", + "line": "769", + "parentIndex": "3099", + "start": "27672" + }, + "typeDescription": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3103", + "name": "reserve1", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3103", + "src": { + "column": "68", + "end": "27705", + "id": "3104", + "length": "16", + "line": "769", + "parentIndex": "3097", + "start": "27690" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": "3105", + "name": "uint112", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "68", + "end": "27696", + "id": "3106", + "length": "7", + "line": "769", + "parentIndex": "3103", + "start": "27690" + }, + "typeDescription": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3107", + "name": "blockTimestampLast", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3107", + "src": { + "column": "86", + "end": "27732", + "id": "3108", + "length": "25", + "line": "769", + "parentIndex": "3097", + "start": "27708" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": "3109", + "name": "uint32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "86", + "end": "27713", + "id": "3110", + "length": "6", + "line": "769", + "parentIndex": "3107", + "start": "27708" + }, + "typeDescription": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "50", + "end": "27732", + "id": "3098", + "length": "61", + "line": "769", + "parentIndex": "3095", + "start": "27672" + } + }, + "returnParameters": { + "id": "3111", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3113", + "name": "reserve0", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3113", + "src": { + "column": "50", + "end": "27687", + "id": "3114", + "length": "16", + "line": "769", + "parentIndex": "3111", + "start": "27672" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": "3115", + "name": "uint112", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "50", + "end": "27678", + "id": "3116", + "length": "7", + "line": "769", + "parentIndex": "3113", + "start": "27672" + }, + "typeDescription": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3117", + "name": "reserve1", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3117", + "src": { + "column": "68", + "end": "27705", + "id": "3118", + "length": "16", + "line": "769", + "parentIndex": "3111", + "start": "27690" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": "3119", + "name": "uint112", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "68", + "end": "27696", + "id": "3120", + "length": "7", + "line": "769", + "parentIndex": "3117", + "start": "27690" + }, + "typeDescription": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3121", + "name": "blockTimestampLast", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3121", + "src": { + "column": "86", + "end": "27732", + "id": "3122", + "length": "25", + "line": "769", + "parentIndex": "3111", + "start": "27708" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": "3123", + "name": "uint32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "86", + "end": "27713", + "id": "3124", + "length": "6", + "line": "769", + "parentIndex": "3121", + "start": "27708" + }, + "typeDescription": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "50", + "end": "27732", + "id": "3112", + "length": "61", + "line": "769", + "parentIndex": "3095", + "start": "27672" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "27734", + "id": "3096", + "length": "109", + "line": "769", + "parentIndex": "2674", + "start": "27626" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint112$_t_uint112$_t_uint32$", + "typeString": "function(uint112,uint112,uint32)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3141", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "27800", + "id": "3128", + "length": "61", + "line": "770", + "parentIndex": "3127", + "start": "27740" + } + }, + "id": "3127", + "kind": "KIND_FUNCTION", + "name": "price0CumulativeLast", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3129", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3131", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3131", + "src": { + "column": "59", + "end": "27798", + "id": "3132", + "length": "4", + "line": "770", + "parentIndex": "3129", + "start": "27795" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3133", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "59", + "end": "27798", + "id": "3134", + "length": "4", + "line": "770", + "parentIndex": "3131", + "start": "27795" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "59", + "end": "27798", + "id": "3130", + "length": "4", + "line": "770", + "parentIndex": "3127", + "start": "27795" + } + }, + "returnParameters": { + "id": "3135", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3137", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3137", + "src": { + "column": "59", + "end": "27798", + "id": "3138", + "length": "4", + "line": "770", + "parentIndex": "3135", + "start": "27795" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3139", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "59", + "end": "27798", + "id": "3140", + "length": "4", + "line": "770", + "parentIndex": "3137", + "start": "27795" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "59", + "end": "27798", + "id": "3136", + "length": "4", + "line": "770", + "parentIndex": "3127", + "start": "27795" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "27800", + "id": "3128", + "length": "61", + "line": "770", + "parentIndex": "2674", + "start": "27740" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3157", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "27866", + "id": "3144", + "length": "61", + "line": "771", + "parentIndex": "3143", + "start": "27806" + } + }, + "id": "3143", + "kind": "KIND_FUNCTION", + "name": "price1CumulativeLast", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3145", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3147", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3147", + "src": { + "column": "59", + "end": "27864", + "id": "3148", + "length": "4", + "line": "771", + "parentIndex": "3145", + "start": "27861" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3149", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "59", + "end": "27864", + "id": "3150", + "length": "4", + "line": "771", + "parentIndex": "3147", + "start": "27861" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "59", + "end": "27864", + "id": "3146", + "length": "4", + "line": "771", + "parentIndex": "3143", + "start": "27861" + } + }, + "returnParameters": { + "id": "3151", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3153", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3153", + "src": { + "column": "59", + "end": "27864", + "id": "3154", + "length": "4", + "line": "771", + "parentIndex": "3151", + "start": "27861" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3155", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "59", + "end": "27864", + "id": "3156", + "length": "4", + "line": "771", + "parentIndex": "3153", + "start": "27861" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "59", + "end": "27864", + "id": "3152", + "length": "4", + "line": "771", + "parentIndex": "3143", + "start": "27861" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "27866", + "id": "3144", + "length": "61", + "line": "771", + "parentIndex": "2674", + "start": "27806" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3173", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "27917", + "id": "3160", + "length": "46", + "line": "772", + "parentIndex": "3159", + "start": "27872" + } + }, + "id": "3159", + "kind": "KIND_FUNCTION", + "name": "kLast", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3161", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3163", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3163", + "src": { + "column": "44", + "end": "27915", + "id": "3164", + "length": "4", + "line": "772", + "parentIndex": "3161", + "start": "27912" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3165", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "44", + "end": "27915", + "id": "3166", + "length": "4", + "line": "772", + "parentIndex": "3163", + "start": "27912" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "44", + "end": "27915", + "id": "3162", + "length": "4", + "line": "772", + "parentIndex": "3159", + "start": "27912" + } + }, + "returnParameters": { + "id": "3167", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3169", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3169", + "src": { + "column": "44", + "end": "27915", + "id": "3170", + "length": "4", + "line": "772", + "parentIndex": "3167", + "start": "27912" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3171", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "44", + "end": "27915", + "id": "3172", + "length": "4", + "line": "772", + "parentIndex": "3169", + "start": "27912" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "44", + "end": "27915", + "id": "3168", + "length": "4", + "line": "772", + "parentIndex": "3159", + "start": "27912" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "27917", + "id": "3160", + "length": "46", + "line": "772", + "parentIndex": "2674", + "start": "27872" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3189", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "27983", + "id": "3176", + "length": "60", + "line": "774", + "parentIndex": "3175", + "start": "27924" + } + }, + "id": "3175", + "kind": "KIND_FUNCTION", + "name": "mint", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3177", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3179", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3179", + "src": { + "column": "18", + "end": "27947", + "id": "3180", + "length": "10", + "line": "774", + "parentIndex": "3177", + "start": "27938" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3181", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "18", + "end": "27944", + "id": "3182", + "length": "7", + "line": "774", + "parentIndex": "3179", + "start": "27938" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "18", + "end": "27947", + "id": "3178", + "length": "10", + "line": "774", + "parentIndex": "3175", + "start": "27938" + } + }, + "returnParameters": { + "id": "3183", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3185", + "name": "liquidity", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3185", + "src": { + "column": "48", + "end": "27981", + "id": "3186", + "length": "14", + "line": "774", + "parentIndex": "3183", + "start": "27968" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3187", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "48", + "end": "27971", + "id": "3188", + "length": "4", + "line": "774", + "parentIndex": "3185", + "start": "27968" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "48", + "end": "27981", + "id": "3184", + "length": "14", + "line": "774", + "parentIndex": "3175", + "start": "27968" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "27983", + "id": "3176", + "length": "60", + "line": "774", + "parentIndex": "2674", + "start": "27924" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3209", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "28060", + "id": "3192", + "length": "72", + "line": "775", + "parentIndex": "3191", + "start": "27989" + } + }, + "id": "3191", + "kind": "KIND_FUNCTION", + "name": "burn", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3193", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3195", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3195", + "src": { + "column": "18", + "end": "28012", + "id": "3196", + "length": "10", + "line": "775", + "parentIndex": "3193", + "start": "28003" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3197", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "18", + "end": "28009", + "id": "3198", + "length": "7", + "line": "775", + "parentIndex": "3195", + "start": "28003" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "18", + "end": "28012", + "id": "3194", + "length": "10", + "line": "775", + "parentIndex": "3191", + "start": "28003" + } + }, + "returnParameters": { + "id": "3199", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3201", + "name": "amount0", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3201", + "src": { + "column": "48", + "end": "28044", + "id": "3202", + "length": "12", + "line": "775", + "parentIndex": "3199", + "start": "28033" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3203", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "48", + "end": "28036", + "id": "3204", + "length": "4", + "line": "775", + "parentIndex": "3201", + "start": "28033" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3205", + "name": "amount1", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3205", + "src": { + "column": "62", + "end": "28058", + "id": "3206", + "length": "12", + "line": "775", + "parentIndex": "3199", + "start": "28047" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3207", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "28050", + "id": "3208", + "length": "4", + "line": "775", + "parentIndex": "3205", + "start": "28047" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "48", + "end": "28058", + "id": "3200", + "length": "26", + "line": "775", + "parentIndex": "3191", + "start": "28033" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "28060", + "id": "3192", + "length": "72", + "line": "775", + "parentIndex": "2674", + "start": "27989" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3232", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "28155", + "id": "3212", + "length": "90", + "line": "776", + "parentIndex": "3211", + "start": "28066" + } + }, + "id": "3211", + "kind": "KIND_FUNCTION", + "name": "swap", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3213", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3215", + "name": "amount0Out", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3215", + "src": { + "column": "18", + "end": "28094", + "id": "3216", + "length": "15", + "line": "776", + "parentIndex": "3213", + "start": "28080" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3217", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "18", + "end": "28083", + "id": "3218", + "length": "4", + "line": "776", + "parentIndex": "3215", + "start": "28080" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3219", + "name": "amount1Out", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3219", + "src": { + "column": "35", + "end": "28111", + "id": "3220", + "length": "15", + "line": "776", + "parentIndex": "3213", + "start": "28097" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3221", + "name": "uint", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "35", + "end": "28100", + "id": "3222", + "length": "4", + "line": "776", + "parentIndex": "3219", + "start": "28097" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3223", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3223", + "src": { + "column": "52", + "end": "28123", + "id": "3224", + "length": "10", + "line": "776", + "parentIndex": "3213", + "start": "28114" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3225", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "52", + "end": "28120", + "id": "3226", + "length": "7", + "line": "776", + "parentIndex": "3223", + "start": "28114" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3227", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3227", + "src": { + "column": "64", + "end": "28144", + "id": "3228", + "length": "19", + "line": "776", + "parentIndex": "3213", + "start": "28126" + }, + "stateMutability": "MUTABLE", + "storageLocation": "CALLDATA", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "3229", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "64", + "end": "28130", + "id": "3230", + "length": "5", + "line": "776", + "parentIndex": "3227", + "start": "28126" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "18", + "end": "28144", + "id": "3214", + "length": "65", + "line": "776", + "parentIndex": "3211", + "start": "28080" + } + }, + "returnParameters": { + "id": "3231", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "28155", + "id": "3212", + "length": "90", + "line": "776", + "parentIndex": "3211", + "start": "28066" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "28155", + "id": "3212", + "length": "90", + "line": "776", + "parentIndex": "2674", + "start": "28066" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$_t_address$_t_bytes$", + "typeString": "function(uint256,uint256,address,bytes)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3243", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "28195", + "id": "3235", + "length": "35", + "line": "777", + "parentIndex": "3234", + "start": "28161" + } + }, + "id": "3234", + "kind": "KIND_FUNCTION", + "name": "skim", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3236", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3238", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3238", + "src": { + "column": "18", + "end": "28184", + "id": "3239", + "length": "10", + "line": "777", + "parentIndex": "3236", + "start": "28175" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3240", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "18", + "end": "28181", + "id": "3241", + "length": "7", + "line": "777", + "parentIndex": "3238", + "start": "28175" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "18", + "end": "28184", + "id": "3237", + "length": "10", + "line": "777", + "parentIndex": "3234", + "start": "28175" + } + }, + "returnParameters": { + "id": "3242", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "28195", + "id": "3235", + "length": "35", + "line": "777", + "parentIndex": "3234", + "start": "28161" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "28195", + "id": "3235", + "length": "35", + "line": "777", + "parentIndex": "2674", + "start": "28161" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3249", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "28225", + "id": "3246", + "length": "25", + "line": "778", + "parentIndex": "3245", + "start": "28201" + } + }, + "id": "3245", + "kind": "KIND_FUNCTION", + "name": "sync", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3247", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "28225", + "id": "3246", + "length": "25", + "line": "778", + "parentIndex": "3245", + "start": "28201" + } + }, + "returnParameters": { + "id": "3248", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "28225", + "id": "3246", + "length": "25", + "line": "778", + "parentIndex": "3245", + "start": "28201" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "28225", + "id": "3246", + "length": "25", + "line": "778", + "parentIndex": "2674", + "start": "28201" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3264", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "28278", + "id": "3252", + "length": "47", + "line": "780", + "parentIndex": "3251", + "start": "28232" + } + }, + "id": "3251", + "kind": "KIND_FUNCTION", + "name": "initialize", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3253", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3255", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3255", + "src": { + "column": "24", + "end": "28258", + "id": "3256", + "length": "7", + "line": "780", + "parentIndex": "3253", + "start": "28252" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3257", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "28258", + "id": "3258", + "length": "7", + "line": "780", + "parentIndex": "3255", + "start": "28252" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3259", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3259", + "src": { + "column": "33", + "end": "28267", + "id": "3260", + "length": "7", + "line": "780", + "parentIndex": "3253", + "start": "28261" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3261", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "33", + "end": "28267", + "id": "3262", + "length": "7", + "line": "780", + "parentIndex": "3259", + "start": "28261" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "28267", + "id": "3254", + "length": "16", + "line": "780", + "parentIndex": "3251", + "start": "28252" + } + }, + "returnParameters": { + "id": "3263", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "28278", + "id": "3252", + "length": "47", + "line": "780", + "parentIndex": "3251", + "start": "28232" + } + }, + "scope": "2674", + "src": { + "column": "4", + "end": "28278", + "id": "3252", + "length": "47", + "line": "780", + "parentIndex": "2674", + "start": "28232" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + }, + "visibility": "EXTERNAL" + } + } + ], + "src": { + "end": "28280", + "length": "2397", + "line": "732", + "parentIndex": "2610", + "start": "25884" + } + } + } + ] + }, + "src": { + "id": 2611, + "line": 732, + "start": 25884, + "end": 28280, + "length": 2397, + "parent_index": 263 + } + }, + { + "id": 3265, + "license": "MIT", + "name": "SafeMathUniswap", + "exported_symbols": [ + { + "id": 3265, + "name": "SafeMathUniswap" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "3293", + "literals": [ + "pragma", + "solidity", + "\u003e=", + "0", + ".", + "6", + ".", + "12", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "28344", + "id": "3294", + "length": "25", + "line": "785", + "parentIndex": "3265", + "start": "28320" + }, + "text": "pragma solidity \u003e=0.6.12;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "3306", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "3306" + ], + "name": "SafeMathUniswap", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3326", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "73", + "end": "28617", + "id": "3327", + "length": "66", + "line": "790", + "parentIndex": "3308", + "start": "28552" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ds-math-add-overflow\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "3332", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "3336", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3338", + "name": "z", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3322", + "src": { + "column": "17", + "end": "28571", + "id": "3339", + "length": "1", + "line": "791", + "parentIndex": "3336", + "start": "28571" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "3340", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3342", + "name": "x", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3342", + "src": { + "column": "21", + "end": "28575", + "id": "3343", + "length": "1", + "line": "791", + "parentIndex": "3340", + "start": "28575" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "ADDITION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3344", + "name": "y", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3344", + "src": { + "column": "25", + "end": "28579", + "id": "3345", + "length": "1", + "line": "791", + "parentIndex": "3340", + "start": "28579" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "21", + "end": "28579", + "id": "3341", + "length": "5", + "line": "791", + "parentIndex": "3336", + "start": "28575" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "17", + "end": "28579", + "id": "3337", + "length": "9", + "line": "791", + "parentIndex": "3334", + "start": "28571" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "3334", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "16", + "end": "28580", + "id": "3335", + "length": "11", + "line": "791", + "parentIndex": "3332", + "start": "28570" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_uint256$", + "typeString": "tuple(uint256)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3346", + "name": "x", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3346", + "src": { + "column": "31", + "end": "28585", + "id": "3347", + "length": "1", + "line": "791", + "parentIndex": "3332", + "start": "28585" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "28585", + "id": "3333", + "length": "16", + "line": "791", + "parentIndex": "3328", + "start": "28570" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "64732d6d6174682d6164642d6f766572666c6f77", + "id": "3348", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "34", + "end": "28609", + "id": "3349", + "length": "22", + "line": "791", + "parentIndex": "3328", + "start": "28588" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ds-math-add-overflow\"" + }, + "value": "ds-math-add-overflow" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3330", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "28568", + "id": "3331", + "length": "7", + "line": "791", + "parentIndex": "3328", + "start": "28562" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "3328", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "28610", + "id": "3329", + "length": "49", + "line": "791", + "parentIndex": "3326", + "start": "28562" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + } + ] + }, + "id": "3308", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "add", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3310", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3312", + "name": "x", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3312", + "src": { + "column": "17", + "end": "28504", + "id": "3313", + "length": "9", + "line": "790", + "parentIndex": "3310", + "start": "28496" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3314", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "28502", + "id": "3315", + "length": "7", + "line": "790", + "parentIndex": "3312", + "start": "28496" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3316", + "name": "y", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3316", + "src": { + "column": "28", + "end": "28515", + "id": "3317", + "length": "9", + "line": "790", + "parentIndex": "3310", + "start": "28507" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3318", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "28513", + "id": "3319", + "length": "7", + "line": "790", + "parentIndex": "3316", + "start": "28507" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "28515", + "id": "3311", + "length": "20", + "line": "790", + "parentIndex": "3308", + "start": "28496" + } + }, + "returnParameters": { + "id": "3320", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3322", + "name": "z", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3322", + "src": { + "column": "62", + "end": "28549", + "id": "3323", + "length": "9", + "line": "790", + "parentIndex": "3320", + "start": "28541" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3324", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "28547", + "id": "3325", + "length": "7", + "line": "790", + "parentIndex": "3322", + "start": "28541" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "28549", + "id": "3321", + "length": "9", + "line": "790", + "parentIndex": "3308", + "start": "28541" + } + }, + "scope": "3306", + "src": { + "column": "4", + "end": "28617", + "id": "3309", + "length": "135", + "line": "790", + "parentIndex": "3306", + "start": "28483" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3369", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "73", + "end": "28759", + "id": "3370", + "length": "67", + "line": "794", + "parentIndex": "3351", + "start": "28693" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ds-math-sub-underflow\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "3375", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "3379", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3381", + "name": "z", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3322", + "src": { + "column": "17", + "end": "28712", + "id": "3382", + "length": "1", + "line": "795", + "parentIndex": "3379", + "start": "28712" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "3383", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3385", + "name": "x", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3385", + "src": { + "column": "21", + "end": "28716", + "id": "3386", + "length": "1", + "line": "795", + "parentIndex": "3383", + "start": "28716" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3387", + "name": "y", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3387", + "src": { + "column": "25", + "end": "28720", + "id": "3388", + "length": "1", + "line": "795", + "parentIndex": "3383", + "start": "28720" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "21", + "end": "28720", + "id": "3384", + "length": "5", + "line": "795", + "parentIndex": "3379", + "start": "28716" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "17", + "end": "28720", + "id": "3380", + "length": "9", + "line": "795", + "parentIndex": "3377", + "start": "28712" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "3377", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "16", + "end": "28721", + "id": "3378", + "length": "11", + "line": "795", + "parentIndex": "3375", + "start": "28711" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_uint256$", + "typeString": "tuple(uint256)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3389", + "name": "x", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3389", + "src": { + "column": "31", + "end": "28726", + "id": "3390", + "length": "1", + "line": "795", + "parentIndex": "3375", + "start": "28726" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "28726", + "id": "3376", + "length": "16", + "line": "795", + "parentIndex": "3371", + "start": "28711" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "64732d6d6174682d7375622d756e646572666c6f77", + "id": "3391", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "34", + "end": "28751", + "id": "3392", + "length": "23", + "line": "795", + "parentIndex": "3371", + "start": "28729" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ds-math-sub-underflow\"" + }, + "value": "ds-math-sub-underflow" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3373", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "28709", + "id": "3374", + "length": "7", + "line": "795", + "parentIndex": "3371", + "start": "28703" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "3371", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "28752", + "id": "3372", + "length": "50", + "line": "795", + "parentIndex": "3369", + "start": "28703" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + } + ] + }, + "id": "3351", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "sub", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3353", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3355", + "name": "x", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3355", + "src": { + "column": "17", + "end": "28645", + "id": "3356", + "length": "9", + "line": "794", + "parentIndex": "3353", + "start": "28637" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3357", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "28643", + "id": "3358", + "length": "7", + "line": "794", + "parentIndex": "3355", + "start": "28637" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3359", + "name": "y", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3359", + "src": { + "column": "28", + "end": "28656", + "id": "3360", + "length": "9", + "line": "794", + "parentIndex": "3353", + "start": "28648" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3361", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "28654", + "id": "3362", + "length": "7", + "line": "794", + "parentIndex": "3359", + "start": "28648" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "28656", + "id": "3354", + "length": "20", + "line": "794", + "parentIndex": "3351", + "start": "28637" + } + }, + "returnParameters": { + "id": "3363", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3365", + "name": "z", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3365", + "src": { + "column": "62", + "end": "28690", + "id": "3366", + "length": "9", + "line": "794", + "parentIndex": "3363", + "start": "28682" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3367", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "28688", + "id": "3368", + "length": "7", + "line": "794", + "parentIndex": "3365", + "start": "28682" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "28690", + "id": "3364", + "length": "9", + "line": "794", + "parentIndex": "3351", + "start": "28682" + } + }, + "scope": "3306", + "src": { + "column": "4", + "end": "28759", + "id": "3352", + "length": "136", + "line": "794", + "parentIndex": "3306", + "start": "28624" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3412", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "73", + "end": "28914", + "id": "3413", + "length": "80", + "line": "798", + "parentIndex": "3394", + "start": "28835" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ds-math-mul-overflow\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "3418", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "3420", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3422", + "name": "y", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3422", + "src": { + "column": "16", + "end": "28853", + "id": "3423", + "length": "1", + "line": "799", + "parentIndex": "3420", + "start": "28853" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "3424", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "21", + "end": "28858", + "id": "3425", + "length": "1", + "line": "799", + "parentIndex": "3420", + "start": "28858" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "16", + "end": "28858", + "id": "3421", + "length": "6", + "line": "799", + "parentIndex": "3418", + "start": "28853" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "OR", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "3426", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "3428", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "3432", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3434", + "name": "z", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3322", + "src": { + "column": "27", + "end": "28864", + "id": "3435", + "length": "1", + "line": "799", + "parentIndex": "3432", + "start": "28864" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "3436", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3438", + "name": "x", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3438", + "src": { + "column": "31", + "end": "28868", + "id": "3439", + "length": "1", + "line": "799", + "parentIndex": "3436", + "start": "28868" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MULTIPLICATION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3440", + "name": "y", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3440", + "src": { + "column": "35", + "end": "28872", + "id": "3441", + "length": "1", + "line": "799", + "parentIndex": "3436", + "start": "28872" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "31", + "end": "28872", + "id": "3437", + "length": "5", + "line": "799", + "parentIndex": "3432", + "start": "28868" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "27", + "end": "28872", + "id": "3433", + "length": "9", + "line": "799", + "parentIndex": "3430", + "start": "28864" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "3430", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "26", + "end": "28873", + "id": "3431", + "length": "11", + "line": "799", + "parentIndex": "3428", + "start": "28863" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_uint256$", + "typeString": "tuple(uint256)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3442", + "name": "y", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3442", + "src": { + "column": "40", + "end": "28877", + "id": "3443", + "length": "1", + "line": "799", + "parentIndex": "3428", + "start": "28877" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "26", + "end": "28877", + "id": "3429", + "length": "15", + "line": "799", + "parentIndex": "3426", + "start": "28863" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_uint256$", + "typeString": "tuple(uint256)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3444", + "name": "x", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3444", + "src": { + "column": "45", + "end": "28882", + "id": "3445", + "length": "1", + "line": "799", + "parentIndex": "3426", + "start": "28882" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "26", + "end": "28882", + "id": "3427", + "length": "20", + "line": "799", + "parentIndex": "3418", + "start": "28863" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "src": { + "column": "16", + "end": "28882", + "id": "3419", + "length": "30", + "line": "799", + "parentIndex": "3414", + "start": "28853" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "64732d6d6174682d6d756c2d6f766572666c6f77", + "id": "3446", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "48", + "end": "28906", + "id": "3447", + "length": "22", + "line": "799", + "parentIndex": "3414", + "start": "28885" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"ds-math-mul-overflow\"" + }, + "value": "ds-math-mul-overflow" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3416", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "28851", + "id": "3417", + "length": "7", + "line": "799", + "parentIndex": "3414", + "start": "28845" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "3414", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "28907", + "id": "3415", + "length": "63", + "line": "799", + "parentIndex": "3412", + "start": "28845" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + } + ] + }, + "id": "3394", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "mul", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3396", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3398", + "name": "x", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3398", + "src": { + "column": "17", + "end": "28787", + "id": "3399", + "length": "9", + "line": "798", + "parentIndex": "3396", + "start": "28779" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3400", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "28785", + "id": "3401", + "length": "7", + "line": "798", + "parentIndex": "3398", + "start": "28779" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3402", + "name": "y", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3402", + "src": { + "column": "28", + "end": "28798", + "id": "3403", + "length": "9", + "line": "798", + "parentIndex": "3396", + "start": "28790" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3404", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "28", + "end": "28796", + "id": "3405", + "length": "7", + "line": "798", + "parentIndex": "3402", + "start": "28790" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "28798", + "id": "3397", + "length": "20", + "line": "798", + "parentIndex": "3394", + "start": "28779" + } + }, + "returnParameters": { + "id": "3406", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3408", + "name": "z", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3408", + "src": { + "column": "62", + "end": "28832", + "id": "3409", + "length": "9", + "line": "798", + "parentIndex": "3406", + "start": "28824" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3410", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "28830", + "id": "3411", + "length": "7", + "line": "798", + "parentIndex": "3408", + "start": "28824" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "62", + "end": "28832", + "id": "3407", + "length": "9", + "line": "798", + "parentIndex": "3394", + "start": "28824" + } + }, + "scope": "3306", + "src": { + "column": "4", + "end": "28914", + "id": "3395", + "length": "149", + "line": "798", + "parentIndex": "3306", + "start": "28766" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256)" + }, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "28916", + "length": "464", + "line": "789", + "parentIndex": "3265", + "start": "28453" + } + } + } + ] + }, + "src": { + "id": 3266, + "line": 789, + "start": 28453, + "end": 28916, + "length": 464, + "parent_index": 263 + } + }, + { + "id": 3448, + "license": "MIT", + "name": "UniswapV2Library", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/UniswapV2Library.sol", + "exported_symbols": [ + { + "id": 3448, + "name": "UniswapV2Library", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/UniswapV2Library.sol" + }, + { + "id": 3265, + "name": "IUniswapV2Pair", + "absolute_path": "IUniswapV2Pair.sol" + }, + { + "id": 3265, + "name": "SafeMath", + "absolute_path": "SafeMath.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "3478", + "literals": [ + "pragma", + "solidity", + "\u003e=", + "0", + ".", + "5", + ".", + "0", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "28979", + "id": "3479", + "length": "24", + "line": "805", + "parentIndex": "3448", + "start": "28956" + }, + "text": "pragma solidity \u003e=0.5.0;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IUniswapV2Pair.sol", + "file": "./IUniswapV2Pair.sol", + "id": "3491", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "3448", + "sourceUnit": "3265", + "src": { + "end": "29011", + "length": "30", + "line": "807", + "parentIndex": "3448", + "start": "28982" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "SafeMath.sol", + "file": "./SafeMath.sol", + "id": "3492", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "3448", + "sourceUnit": "3265", + "src": { + "end": "29037", + "length": "24", + "line": "809", + "parentIndex": "3448", + "start": "29014" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "fullyImplemented": true, + "id": "3493", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "3493" + ], + "name": "UniswapV2Library", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Using", + "value": { + "id": "3495", + "libraryName": { + "id": "3499", + "name": "SafeMathUniswap", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "3265", + "src": { + "end": "29091", + "id": "3500", + "length": "15", + "line": "812", + "parentIndex": "3495", + "start": "29077" + } + }, + "name": "SafeMathUniswap", + "nodeType": "USING_FOR_DIRECTIVE", + "src": { + "end": "29104", + "id": "3496", + "length": "34", + "line": "812", + "parentIndex": "3493", + "start": "29071" + }, + "typeName": { + "id": "3497", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "30", + "end": "29103", + "id": "3498", + "length": "7", + "line": "812", + "parentIndex": "3495", + "start": "29097" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3524", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "29607", + "id": "3525", + "length": "262", + "line": "819", + "parentIndex": "3502", + "start": "29346" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: IDENTICAL_ADDRESSES\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "3530", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3532", + "name": "tokenA", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3532", + "src": { + "column": "16", + "end": "29369", + "id": "3533", + "length": "6", + "line": "820", + "parentIndex": "3530", + "start": "29364" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3534", + "name": "tokenB", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3534", + "src": { + "column": "26", + "end": "29379", + "id": "3535", + "length": "6", + "line": "820", + "parentIndex": "3530", + "start": "29374" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "src": { + "column": "16", + "end": "29379", + "id": "3531", + "length": "16", + "line": "820", + "parentIndex": "3526", + "start": "29364" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553", + "id": "3536", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "34", + "end": "29420", + "id": "3537", + "length": "39", + "line": "820", + "parentIndex": "3526", + "start": "29382" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: IDENTICAL_ADDRESSES\"" + }, + "value": "UniswapV2Library: IDENTICAL_ADDRESSES" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3528", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "29362", + "id": "3529", + "length": "7", + "line": "820", + "parentIndex": "3526", + "start": "29356" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "3526", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "29421", + "id": "3527", + "length": "66", + "line": "820", + "parentIndex": "3524", + "start": "29356" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "3540", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3544", + "name": "token0", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3516", + "src": { + "column": "9", + "end": "29438", + "id": "3545", + "length": "6", + "line": "821", + "parentIndex": "3542", + "start": "29433" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3546", + "name": "token1", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3520", + "src": { + "column": "17", + "end": "29446", + "id": "3547", + "length": "6", + "line": "821", + "parentIndex": "3542", + "start": "29441" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "id": "3542", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "8", + "end": "29447", + "id": "3543", + "length": "16", + "line": "821", + "parentIndex": "3540", + "start": "29432" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_address_$_t_address$", + "typeString": "tuple(address,address)" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Conditional", + "value": {} + }, + "src": { + "column": "8", + "end": "29527", + "id": "3541", + "length": "96", + "line": "821", + "parentIndex": "3524", + "start": "29432" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_address_$_t_address$", + "typeString": "tuple(address,address)" + } + } + }, + "id": "3538", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "29528", + "id": "3539", + "length": "97", + "line": "821", + "parentIndex": "3524", + "start": "29432" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_address_$_t_address$", + "typeString": "tuple(address,address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: ZERO_ADDRESS\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "3573", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3575", + "name": "token0", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3516", + "src": { + "column": "16", + "end": "29551", + "id": "3576", + "length": "6", + "line": "824", + "parentIndex": "3573", + "start": "29546" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "3583", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "34", + "end": "29564", + "id": "3584", + "length": "1", + "line": "824", + "parentIndex": "3577", + "start": "29564" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "3579", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "26", + "end": "29562", + "id": "3580", + "length": "7", + "line": "824", + "parentIndex": "3577", + "start": "29556" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "3581", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "26", + "end": "29562", + "id": "3582", + "length": "7", + "line": "824", + "parentIndex": "3579", + "start": "29556" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "3577", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "26", + "end": "29565", + "id": "3578", + "length": "10", + "line": "824", + "parentIndex": "3573", + "start": "29556" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + }, + "src": { + "column": "16", + "end": "29565", + "id": "3574", + "length": "20", + "line": "824", + "parentIndex": "3569", + "start": "29546" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "556e697377617056324c6962726172793a205a45524f5f41444452455353", + "id": "3585", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "38", + "end": "29599", + "id": "3586", + "length": "32", + "line": "824", + "parentIndex": "3569", + "start": "29568" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: ZERO_ADDRESS\"" + }, + "value": "UniswapV2Library: ZERO_ADDRESS" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3571", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "29544", + "id": "3572", + "length": "7", + "line": "824", + "parentIndex": "3569", + "start": "29538" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "3569", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "29600", + "id": "3570", + "length": "63", + "line": "824", + "parentIndex": "3524", + "start": "29538" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + } + ] + }, + "id": "3502", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "sortTokens", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3504", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3506", + "name": "tokenA", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3506", + "src": { + "column": "24", + "end": "29244", + "id": "3507", + "length": "14", + "line": "815", + "parentIndex": "3504", + "start": "29231" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3508", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "29237", + "id": "3509", + "length": "7", + "line": "815", + "parentIndex": "3506", + "start": "29231" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3510", + "name": "tokenB", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3510", + "src": { + "column": "40", + "end": "29260", + "id": "3511", + "length": "14", + "line": "815", + "parentIndex": "3504", + "start": "29247" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3512", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "40", + "end": "29253", + "id": "3513", + "length": "7", + "line": "815", + "parentIndex": "3510", + "start": "29247" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "29260", + "id": "3505", + "length": "30", + "line": "815", + "parentIndex": "3502", + "start": "29231" + } + }, + "returnParameters": { + "id": "3514", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3516", + "name": "token0", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3516", + "src": { + "column": "17", + "end": "29323", + "id": "3517", + "length": "14", + "line": "818", + "parentIndex": "3514", + "start": "29310" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3518", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "29316", + "id": "3519", + "length": "7", + "line": "818", + "parentIndex": "3516", + "start": "29310" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3520", + "name": "token1", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3520", + "src": { + "column": "33", + "end": "29339", + "id": "3521", + "length": "14", + "line": "818", + "parentIndex": "3514", + "start": "29326" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3522", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "33", + "end": "29332", + "id": "3523", + "length": "7", + "line": "818", + "parentIndex": "3520", + "start": "29326" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "29339", + "id": "3515", + "length": "30", + "line": "818", + "parentIndex": "3502", + "start": "29310" + } + }, + "scope": "3493", + "src": { + "column": "4", + "end": "29607", + "id": "3503", + "length": "397", + "line": "815", + "parentIndex": "3493", + "start": "29211" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3614", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "43", + "end": "30377", + "id": "3615", + "length": "518", + "line": "833", + "parentIndex": "3588", + "start": "29860" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "3616", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3622", + "name": "tokenA", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3622", + "src": { + "column": "54", + "end": "29921", + "id": "3623", + "length": "6", + "line": "834", + "parentIndex": "3618", + "start": "29916" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "3624", + "name": "tokenB", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3624", + "src": { + "column": "62", + "end": "29929", + "id": "3625", + "length": "6", + "line": "834", + "parentIndex": "3618", + "start": "29924" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3620", + "name": "sortTokens", + "nodeType": "IDENTIFIER", + "src": { + "column": "43", + "end": "29914", + "id": "3621", + "length": "10", + "line": "834", + "parentIndex": "3618", + "start": "29905" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "3618", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "43", + "end": "29930", + "id": "3619", + "length": "26", + "line": "834", + "parentIndex": "3616", + "start": "29905" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "29931", + "id": "3617", + "length": "62", + "line": "834", + "parentIndex": "3614", + "start": "29870" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "3628", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3630", + "name": "pair", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3610", + "src": { + "column": "8", + "end": "29944", + "id": "3631", + "length": "4", + "line": "835", + "parentIndex": "3628", + "start": "29941" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "typeString": "function(function(function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32))))" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "typeString": "function(function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32)))" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "typeString": "function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32))" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "typeString": "function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_hex_literal", + "typeString": "literal_hex_string hex\"ff\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$", + "typeString": "function(function(function(),function(function())))" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "6865786666", + "id": "3660", + "isPure": true, + "kind": "HEX_STRING", + "nodeType": "LITERAL", + "src": { + "column": "28", + "end": "30110", + "id": "3661", + "length": "7", + "line": "840", + "parentIndex": "3654", + "start": "30104" + }, + "typeDescription": { + "typeIdentifier": "t_string_hex_literal", + "typeString": "literal_hex_string hex\"ff\"" + }, + "value": "hexff" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_hex_literal", + "typeString": "literal_hex_string hex\"ff\"" + } + ], + "id": "3662", + "name": "factory", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3662", + "src": { + "column": "28", + "end": "30147", + "id": "3663", + "length": "7", + "line": "841", + "parentIndex": "3654", + "start": "30141" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$", + "typeString": "function(function(),function(function()))" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3674", + "name": "token0", + "nodeType": "IDENTIFIER", + "src": { + "column": "55", + "end": "30210", + "id": "3675", + "length": "6", + "line": "842", + "parentIndex": "3668", + "start": "30205" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "id": "3676", + "name": "token1", + "nodeType": "IDENTIFIER", + "src": { + "column": "63", + "end": "30218", + "id": "3677", + "length": "6", + "line": "842", + "parentIndex": "3668", + "start": "30213" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3672", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "38", + "end": "30190", + "id": "3673", + "length": "3", + "line": "842", + "parentIndex": "3670", + "start": "30188" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "3670", + "memberName": "encodePacked", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "38", + "end": "30203", + "id": "3671", + "length": "16", + "line": "842", + "parentIndex": "3668", + "start": "30188" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "3668", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "38", + "end": "30219", + "id": "3669", + "length": "32", + "line": "842", + "parentIndex": "3664", + "start": "30188" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$", + "typeString": "function(function(),function(function()))" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3666", + "name": "keccak256", + "nodeType": "IDENTIFIER", + "src": { + "column": "28", + "end": "30186", + "id": "3667", + "length": "9", + "line": "842", + "parentIndex": "3664", + "start": "30178" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "3664", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "28", + "end": "30220", + "id": "3665", + "length": "43", + "line": "842", + "parentIndex": "3654", + "start": "30178" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$", + "typeString": "function(function(function(),function(function())))" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_hex_literal", + "typeString": "literal_hex_string hex\"ff\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$", + "typeString": "function(function(function(),function(function())))" + } + ], + "id": "3678", + "name": "pairCodeHash", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3678", + "src": { + "column": "28", + "end": "30262", + "id": "3679", + "length": "12", + "line": "843", + "parentIndex": "3654", + "start": "30251" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3658", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "30060", + "id": "3659", + "length": "3", + "line": "839", + "parentIndex": "3656", + "start": "30058" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "3656", + "memberName": "encodePacked", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "24", + "end": "30073", + "id": "3657", + "length": "16", + "line": "839", + "parentIndex": "3654", + "start": "30058" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "3654", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "30306", + "id": "3655", + "length": "249", + "line": "839", + "parentIndex": "3650", + "start": "30058" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "typeString": "function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3652", + "name": "keccak256", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "30031", + "id": "3653", + "length": "9", + "line": "838", + "parentIndex": "3650", + "start": "30023" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "3650", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "20", + "end": "30328", + "id": "3651", + "length": "306", + "line": "838", + "parentIndex": "3644", + "start": "30023" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "typeString": "function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32))" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": "3646", + "name": "uint256", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "30000", + "id": "3647", + "length": "7", + "line": "837", + "parentIndex": "3644", + "start": "29994" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "typeName": { + "id": "3648", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "30000", + "id": "3649", + "length": "7", + "line": "837", + "parentIndex": "3646", + "start": "29994" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "id": "3644", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "30346", + "id": "3645", + "length": "353", + "line": "837", + "parentIndex": "3638", + "start": "29994" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "typeString": "function(function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32)))" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": "3640", + "name": "uint160", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "29975", + "id": "3641", + "length": "7", + "line": "836", + "parentIndex": "3638", + "start": "29969" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint160$", + "typeString": "function(uint160)" + }, + "typeName": { + "id": "3642", + "name": "uint160", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "29975", + "id": "3643", + "length": "7", + "line": "836", + "parentIndex": "3640", + "start": "29969" + }, + "typeDescription": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + } + }, + "id": "3638", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "30360", + "id": "3639", + "length": "392", + "line": "836", + "parentIndex": "3632", + "start": "29969" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "typeString": "function(function(function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32))))" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "3634", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "15", + "end": "29954", + "id": "3635", + "length": "7", + "line": "835", + "parentIndex": "3632", + "start": "29948" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "3636", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "15", + "end": "29954", + "id": "3637", + "length": "7", + "line": "835", + "parentIndex": "3634", + "start": "29948" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "3632", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "15", + "end": "30370", + "id": "3633", + "length": "423", + "line": "835", + "parentIndex": "3628", + "start": "29948" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "typeString": "function(function(function(function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32)))))" + } + } + }, + "src": { + "column": "8", + "end": "30370", + "id": "3629", + "length": "430", + "line": "835", + "parentIndex": "3614", + "start": "29941" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "3626", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "30371", + "id": "3627", + "length": "431", + "line": "835", + "parentIndex": "3614", + "start": "29941" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ] + }, + "id": "3588", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "pairFor", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3590", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3592", + "name": "factory", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3592", + "src": { + "column": "8", + "end": "29737", + "id": "3593", + "length": "15", + "line": "829", + "parentIndex": "3590", + "start": "29723" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3594", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "29729", + "id": "3595", + "length": "7", + "line": "829", + "parentIndex": "3592", + "start": "29723" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3596", + "name": "tokenA", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3596", + "src": { + "column": "8", + "end": "29761", + "id": "3597", + "length": "14", + "line": "830", + "parentIndex": "3590", + "start": "29748" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3598", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "29754", + "id": "3599", + "length": "7", + "line": "830", + "parentIndex": "3596", + "start": "29748" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3600", + "name": "tokenB", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3600", + "src": { + "column": "8", + "end": "29785", + "id": "3601", + "length": "14", + "line": "831", + "parentIndex": "3590", + "start": "29772" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3602", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "29778", + "id": "3603", + "length": "7", + "line": "831", + "parentIndex": "3600", + "start": "29772" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3604", + "name": "pairCodeHash", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3604", + "src": { + "column": "8", + "end": "29815", + "id": "3605", + "length": "20", + "line": "832", + "parentIndex": "3590", + "start": "29796" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "3606", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "29802", + "id": "3607", + "length": "7", + "line": "832", + "parentIndex": "3604", + "start": "29796" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "29815", + "id": "3591", + "length": "93", + "line": "829", + "parentIndex": "3588", + "start": "29723" + } + }, + "returnParameters": { + "id": "3608", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3610", + "name": "pair", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3610", + "src": { + "column": "29", + "end": "29857", + "id": "3611", + "length": "12", + "line": "833", + "parentIndex": "3608", + "start": "29846" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3612", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "29852", + "id": "3613", + "length": "7", + "line": "833", + "parentIndex": "3610", + "start": "29846" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "29857", + "id": "3609", + "length": "12", + "line": "833", + "parentIndex": "3588", + "start": "29846" + } + }, + "scope": "3493", + "src": { + "column": "4", + "end": "30377", + "id": "3589", + "length": "681", + "line": "828", + "parentIndex": "3493", + "start": "29697" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_address$_t_bytes32$", + "typeString": "function(address,address,address,bytes32)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3711", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "65", + "end": "30953", + "id": "3712", + "length": "332", + "line": "857", + "parentIndex": "3681", + "start": "30622" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "3713", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3719", + "name": "tokenA", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3719", + "src": { + "column": "40", + "end": "30669", + "id": "3720", + "length": "6", + "line": "858", + "parentIndex": "3715", + "start": "30664" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "3721", + "name": "tokenB", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3721", + "src": { + "column": "48", + "end": "30677", + "id": "3722", + "length": "6", + "line": "858", + "parentIndex": "3715", + "start": "30672" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3717", + "name": "sortTokens", + "nodeType": "IDENTIFIER", + "src": { + "column": "29", + "end": "30662", + "id": "3718", + "length": "10", + "line": "858", + "parentIndex": "3715", + "start": "30653" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "3715", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "29", + "end": "30678", + "id": "3716", + "length": "26", + "line": "858", + "parentIndex": "3713", + "start": "30653" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$", + "typeString": "function(address,address)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "30679", + "id": "3714", + "length": "48", + "line": "858", + "parentIndex": "3711", + "start": "30632" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "3723", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_address$_t_bytes32$", + "typeString": "function(address,address,address,bytes32)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3737", + "name": "factory", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3737", + "src": { + "column": "20", + "end": "30772", + "id": "3738", + "length": "7", + "line": "860", + "parentIndex": "3733", + "start": "30766" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "3739", + "name": "tokenA", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3739", + "src": { + "column": "29", + "end": "30780", + "id": "3740", + "length": "6", + "line": "860", + "parentIndex": "3733", + "start": "30775" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "3741", + "name": "tokenB", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3741", + "src": { + "column": "37", + "end": "30788", + "id": "3742", + "length": "6", + "line": "860", + "parentIndex": "3733", + "start": "30783" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "3743", + "name": "pairCodeHash", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3743", + "src": { + "column": "45", + "end": "30802", + "id": "3744", + "length": "12", + "line": "860", + "parentIndex": "3733", + "start": "30791" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3735", + "name": "pairFor", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "30764", + "id": "3736", + "length": "7", + "line": "860", + "parentIndex": "3733", + "start": "30758" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "3733", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "30803", + "id": "3734", + "length": "46", + "line": "860", + "parentIndex": "3729", + "start": "30758" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_address$_t_bytes32$", + "typeString": "function(address,address,address,bytes32)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3731", + "name": "IUniswapV2Pair", + "nodeType": "IDENTIFIER", + "src": { + "column": "49", + "end": "30743", + "id": "3732", + "length": "14", + "line": "859", + "parentIndex": "3729", + "start": "30730" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "3729", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "49", + "end": "30813", + "id": "3730", + "length": "84", + "line": "859", + "parentIndex": "3727", + "start": "30730" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_address$_t_address$_t_bytes32$", + "typeString": "function(function(address,address,address,bytes32))" + } + } + }, + "id": "3727", + "memberName": "getReserves", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "49", + "end": "30825", + "id": "3728", + "length": "96", + "line": "859", + "parentIndex": "3725", + "start": "30730" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_address$_t_address$_t_bytes32$", + "typeString": "function(function(address,address,address,bytes32))" + } + } + }, + "id": "3725", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "49", + "end": "30827", + "id": "3726", + "length": "98", + "line": "859", + "parentIndex": "3723", + "start": "30730" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "30828", + "id": "3724", + "length": "140", + "line": "859", + "parentIndex": "3711", + "start": "30689" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "3747", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3751", + "name": "reserveA", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3703", + "src": { + "column": "9", + "end": "30846", + "id": "3752", + "length": "8", + "line": "862", + "parentIndex": "3749", + "start": "30839" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3753", + "name": "reserveB", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3707", + "src": { + "column": "19", + "end": "30856", + "id": "3754", + "length": "8", + "line": "862", + "parentIndex": "3749", + "start": "30849" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "3749", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "8", + "end": "30857", + "id": "3750", + "length": "20", + "line": "862", + "parentIndex": "3747", + "start": "30838" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_uint256_$_t_uint256$", + "typeString": "tuple(uint256,uint256)" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Conditional", + "value": {} + }, + "src": { + "column": "8", + "end": "30946", + "id": "3748", + "length": "109", + "line": "862", + "parentIndex": "3711", + "start": "30838" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_uint256_$_t_uint256$", + "typeString": "tuple(uint256,uint256)" + } + } + }, + "id": "3745", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "30947", + "id": "3746", + "length": "110", + "line": "862", + "parentIndex": "3711", + "start": "30838" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_uint256_$_t_uint256$", + "typeString": "tuple(uint256,uint256)" + } + } + } + ] + }, + "id": "3681", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "getReserves", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3683", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3685", + "name": "factory", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3685", + "src": { + "column": "8", + "end": "30477", + "id": "3686", + "length": "15", + "line": "853", + "parentIndex": "3683", + "start": "30463" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3687", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "30469", + "id": "3688", + "length": "7", + "line": "853", + "parentIndex": "3685", + "start": "30463" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3689", + "name": "tokenA", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3689", + "src": { + "column": "8", + "end": "30501", + "id": "3690", + "length": "14", + "line": "854", + "parentIndex": "3683", + "start": "30488" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3691", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "30494", + "id": "3692", + "length": "7", + "line": "854", + "parentIndex": "3689", + "start": "30488" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3693", + "name": "tokenB", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3693", + "src": { + "column": "8", + "end": "30525", + "id": "3694", + "length": "14", + "line": "855", + "parentIndex": "3683", + "start": "30512" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "3695", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "30518", + "id": "3696", + "length": "7", + "line": "855", + "parentIndex": "3693", + "start": "30512" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3697", + "name": "pairCodeHash", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3697", + "src": { + "column": "8", + "end": "30555", + "id": "3698", + "length": "20", + "line": "856", + "parentIndex": "3683", + "start": "30536" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "3699", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "30542", + "id": "3700", + "length": "7", + "line": "856", + "parentIndex": "3697", + "start": "30536" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "30555", + "id": "3684", + "length": "93", + "line": "853", + "parentIndex": "3681", + "start": "30463" + } + }, + "returnParameters": { + "id": "3701", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3703", + "name": "reserveA", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3703", + "src": { + "column": "29", + "end": "30601", + "id": "3704", + "length": "16", + "line": "857", + "parentIndex": "3701", + "start": "30586" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3705", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "30592", + "id": "3706", + "length": "7", + "line": "857", + "parentIndex": "3703", + "start": "30586" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3707", + "name": "reserveB", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3707", + "src": { + "column": "47", + "end": "30619", + "id": "3708", + "length": "16", + "line": "857", + "parentIndex": "3701", + "start": "30604" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3709", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "30610", + "id": "3710", + "length": "7", + "line": "857", + "parentIndex": "3707", + "start": "30604" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "30619", + "id": "3702", + "length": "34", + "line": "857", + "parentIndex": "3681", + "start": "30586" + } + }, + "scope": "3493", + "src": { + "column": "4", + "end": "30953", + "id": "3682", + "length": "521", + "line": "852", + "parentIndex": "3493", + "start": "30433" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_address$_t_address$_t_bytes32$", + "typeString": "function(address,address,address,bytes32)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3799", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "46", + "end": "31456", + "id": "3800", + "length": "255", + "line": "872", + "parentIndex": "3777", + "start": "31202" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_AMOUNT\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "3805", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3807", + "name": "amountA", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3807", + "src": { + "column": "16", + "end": "31226", + "id": "3808", + "length": "7", + "line": "873", + "parentIndex": "3805", + "start": "31220" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "3809", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "26", + "end": "31230", + "id": "3810", + "length": "1", + "line": "873", + "parentIndex": "3805", + "start": "31230" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "16", + "end": "31230", + "id": "3806", + "length": "11", + "line": "873", + "parentIndex": "3801", + "start": "31220" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54", + "id": "3811", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "29", + "end": "31271", + "id": "3812", + "length": "39", + "line": "873", + "parentIndex": "3801", + "start": "31233" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_AMOUNT\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_AMOUNT" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3803", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "31218", + "id": "3804", + "length": "7", + "line": "873", + "parentIndex": "3801", + "start": "31212" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "3801", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "31272", + "id": "3802", + "length": "61", + "line": "873", + "parentIndex": "3799", + "start": "31212" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.AndOperation", + "value": {} + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459", + "id": "3832", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "12", + "end": "31387", + "id": "3833", + "length": "42", + "line": "876", + "parentIndex": "3813", + "start": "31346" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_LIQUIDITY" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3815", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "31289", + "id": "3816", + "length": "7", + "line": "874", + "parentIndex": "3813", + "start": "31283" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "3813", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "31397", + "id": "3814", + "length": "115", + "line": "874", + "parentIndex": "3799", + "start": "31283" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "3836", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3838", + "name": "amountB", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3795", + "src": { + "column": "8", + "end": "31414", + "id": "3839", + "length": "7", + "line": "878", + "parentIndex": "3836", + "start": "31408" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "3840", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3848", + "name": "reserveB", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3848", + "src": { + "column": "30", + "end": "31437", + "id": "3849", + "length": "8", + "line": "878", + "parentIndex": "3842", + "start": "31430" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3846", + "name": "amountA", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3846", + "src": { + "column": "18", + "end": "31424", + "id": "3847", + "length": "7", + "line": "878", + "parentIndex": "3844", + "start": "31418" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "3844", + "memberName": "mul", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "18", + "end": "31428", + "id": "3845", + "length": "11", + "line": "878", + "parentIndex": "3842", + "start": "31418" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "3842", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "18", + "end": "31438", + "id": "3843", + "length": "21", + "line": "878", + "parentIndex": "3840", + "start": "31418" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3850", + "name": "reserveA", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3850", + "src": { + "column": "42", + "end": "31449", + "id": "3851", + "length": "8", + "line": "878", + "parentIndex": "3840", + "start": "31442" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "18", + "end": "31449", + "id": "3841", + "length": "32", + "line": "878", + "parentIndex": "3836", + "start": "31418" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + } + } + }, + "src": { + "column": "8", + "end": "31449", + "id": "3837", + "length": "42", + "line": "878", + "parentIndex": "3799", + "start": "31408" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "3834", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "31450", + "id": "3835", + "length": "43", + "line": "878", + "parentIndex": "3799", + "start": "31408" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "3777", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "quote", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3779", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3781", + "name": "amountA", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3781", + "src": { + "column": "8", + "end": "31102", + "id": "3782", + "length": "15", + "line": "869", + "parentIndex": "3779", + "start": "31088" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3783", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "31094", + "id": "3784", + "length": "7", + "line": "869", + "parentIndex": "3781", + "start": "31088" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3785", + "name": "reserveA", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3785", + "src": { + "column": "8", + "end": "31128", + "id": "3786", + "length": "16", + "line": "870", + "parentIndex": "3779", + "start": "31113" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3787", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "31119", + "id": "3788", + "length": "7", + "line": "870", + "parentIndex": "3785", + "start": "31113" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3789", + "name": "reserveB", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3789", + "src": { + "column": "8", + "end": "31154", + "id": "3790", + "length": "16", + "line": "871", + "parentIndex": "3779", + "start": "31139" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3791", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "31145", + "id": "3792", + "length": "7", + "line": "871", + "parentIndex": "3789", + "start": "31139" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "31154", + "id": "3780", + "length": "67", + "line": "869", + "parentIndex": "3777", + "start": "31088" + } + }, + "returnParameters": { + "id": "3793", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3795", + "name": "amountB", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3795", + "src": { + "column": "29", + "end": "31199", + "id": "3796", + "length": "15", + "line": "872", + "parentIndex": "3793", + "start": "31185" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3797", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "31191", + "id": "3798", + "length": "7", + "line": "872", + "parentIndex": "3795", + "start": "31185" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "31199", + "id": "3794", + "length": "15", + "line": "872", + "parentIndex": "3777", + "start": "31185" + } + }, + "scope": "3493", + "src": { + "column": "4", + "end": "31456", + "id": "3778", + "length": "393", + "line": "868", + "parentIndex": "3493", + "start": "31064" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3875", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "48", + "end": "32170", + "id": "3876", + "length": "444", + "line": "886", + "parentIndex": "3853", + "start": "31727" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "3881", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3883", + "name": "amountIn", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3883", + "src": { + "column": "16", + "end": "31752", + "id": "3884", + "length": "8", + "line": "887", + "parentIndex": "3881", + "start": "31745" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "3885", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "27", + "end": "31756", + "id": "3886", + "length": "1", + "line": "887", + "parentIndex": "3881", + "start": "31756" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "16", + "end": "31756", + "id": "3882", + "length": "12", + "line": "887", + "parentIndex": "3877", + "start": "31745" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54", + "id": "3887", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "30", + "end": "31803", + "id": "3888", + "length": "45", + "line": "887", + "parentIndex": "3877", + "start": "31759" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3879", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "31743", + "id": "3880", + "length": "7", + "line": "887", + "parentIndex": "3877", + "start": "31737" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "3877", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "31804", + "id": "3878", + "length": "68", + "line": "887", + "parentIndex": "3875", + "start": "31737" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.AndOperation", + "value": {} + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459", + "id": "3908", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "12", + "end": "31922", + "id": "3909", + "length": "42", + "line": "890", + "parentIndex": "3889", + "start": "31881" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_LIQUIDITY" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3891", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "31821", + "id": "3892", + "length": "7", + "line": "888", + "parentIndex": "3889", + "start": "31815" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "3889", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "31932", + "id": "3890", + "length": "118", + "line": "888", + "parentIndex": "3875", + "start": "31815" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "3912" + ], + "declarations": [ + { + "id": "3912", + "mutability": "MUTABLE", + "name": "amountInWithFee", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3875", + "src": { + "column": "8", + "end": "31965", + "id": "3913", + "length": "23", + "line": "892", + "parentIndex": "3910", + "start": "31943" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3914", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "31949", + "id": "3915", + "length": "7", + "line": "892", + "parentIndex": "3912", + "start": "31943" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "3910", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_997_by_1", + "typeString": "int_const 997" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "393937", + "id": "3922", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "47", + "end": "31984", + "id": "3923", + "length": "3", + "line": "892", + "parentIndex": "3916", + "start": "31982" + }, + "typeDescription": { + "typeIdentifier": "t_rational_997_by_1", + "typeString": "int_const 997" + }, + "value": "997" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3920", + "name": "amountIn", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3920", + "src": { + "column": "34", + "end": "31976", + "id": "3921", + "length": "8", + "line": "892", + "parentIndex": "3918", + "start": "31969" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "3918", + "memberName": "mul", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "34", + "end": "31980", + "id": "3919", + "length": "12", + "line": "892", + "parentIndex": "3916", + "start": "31969" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "3916", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "34", + "end": "31985", + "id": "3917", + "length": "17", + "line": "892", + "parentIndex": "3910", + "start": "31969" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_997_by_1$", + "typeString": "function(int_const 997)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "31986", + "id": "3911", + "length": "44", + "line": "892", + "parentIndex": "3875", + "start": "31943" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "3926" + ], + "declarations": [ + { + "id": "3926", + "mutability": "MUTABLE", + "name": "numerator", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3875", + "src": { + "column": "8", + "end": "32012", + "id": "3927", + "length": "17", + "line": "893", + "parentIndex": "3924", + "start": "31996" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3928", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "32002", + "id": "3929", + "length": "7", + "line": "893", + "parentIndex": "3926", + "start": "31996" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "3924", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3936", + "name": "reserveOut", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3936", + "src": { + "column": "48", + "end": "32045", + "id": "3937", + "length": "10", + "line": "893", + "parentIndex": "3930", + "start": "32036" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3934", + "name": "amountInWithFee", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3910", + "src": { + "column": "28", + "end": "32030", + "id": "3935", + "length": "15", + "line": "893", + "parentIndex": "3932", + "start": "32016" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "3932", + "memberName": "mul", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "28", + "end": "32034", + "id": "3933", + "length": "19", + "line": "893", + "parentIndex": "3930", + "start": "32016" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "3930", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "28", + "end": "32046", + "id": "3931", + "length": "31", + "line": "893", + "parentIndex": "3924", + "start": "32016" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "32047", + "id": "3925", + "length": "52", + "line": "893", + "parentIndex": "3875", + "start": "31996" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "3940" + ], + "declarations": [ + { + "id": "3940", + "mutability": "MUTABLE", + "name": "denominator", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3875", + "src": { + "column": "8", + "end": "32075", + "id": "3941", + "length": "19", + "line": "894", + "parentIndex": "3938", + "start": "32057" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3942", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "32063", + "id": "3943", + "length": "7", + "line": "894", + "parentIndex": "3940", + "start": "32057" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "3938", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3956", + "name": "amountInWithFee", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3910", + "src": { + "column": "54", + "end": "32117", + "id": "3957", + "length": "15", + "line": "894", + "parentIndex": "3944", + "start": "32103" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31303030", + "id": "3954", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "44", + "end": "32096", + "id": "3955", + "length": "4", + "line": "894", + "parentIndex": "3948", + "start": "32093" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3952", + "name": "reserveIn", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3952", + "src": { + "column": "30", + "end": "32087", + "id": "3953", + "length": "9", + "line": "894", + "parentIndex": "3950", + "start": "32079" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "3950", + "memberName": "mul", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "30", + "end": "32091", + "id": "3951", + "length": "13", + "line": "894", + "parentIndex": "3948", + "start": "32079" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "3948", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "30", + "end": "32097", + "id": "3949", + "length": "19", + "line": "894", + "parentIndex": "3946", + "start": "32079" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_1000_by_1$", + "typeString": "function(int_const 1000)" + } + } + }, + "id": "3946", + "memberName": "add", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "30", + "end": "32101", + "id": "3947", + "length": "23", + "line": "894", + "parentIndex": "3944", + "start": "32079" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_1000_by_1$", + "typeString": "function(int_const 1000)" + } + } + }, + "id": "3944", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "30", + "end": "32118", + "id": "3945", + "length": "40", + "line": "894", + "parentIndex": "3938", + "start": "32079" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "32119", + "id": "3939", + "length": "63", + "line": "894", + "parentIndex": "3875", + "start": "32057" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "3960", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3962", + "name": "amountOut", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "913", + "src": { + "column": "8", + "end": "32137", + "id": "3963", + "length": "9", + "line": "895", + "parentIndex": "3960", + "start": "32129" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "3964", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3966", + "name": "numerator", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3924", + "src": { + "column": "20", + "end": "32149", + "id": "3967", + "length": "9", + "line": "895", + "parentIndex": "3964", + "start": "32141" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3968", + "name": "denominator", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3938", + "src": { + "column": "32", + "end": "32163", + "id": "3969", + "length": "11", + "line": "895", + "parentIndex": "3964", + "start": "32153" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "20", + "end": "32163", + "id": "3965", + "length": "23", + "line": "895", + "parentIndex": "3960", + "start": "32141" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "8", + "end": "32163", + "id": "3961", + "length": "35", + "line": "895", + "parentIndex": "3875", + "start": "32129" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "3958", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "32164", + "id": "3959", + "length": "36", + "line": "895", + "parentIndex": "3875", + "start": "32129" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "3853", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "getAmountOut", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3855", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3857", + "name": "amountIn", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3857", + "src": { + "column": "8", + "end": "31622", + "id": "3858", + "length": "16", + "line": "883", + "parentIndex": "3855", + "start": "31607" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3859", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "31613", + "id": "3860", + "length": "7", + "line": "883", + "parentIndex": "3857", + "start": "31607" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3861", + "name": "reserveIn", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3861", + "src": { + "column": "8", + "end": "31649", + "id": "3862", + "length": "17", + "line": "884", + "parentIndex": "3855", + "start": "31633" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3863", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "31639", + "id": "3864", + "length": "7", + "line": "884", + "parentIndex": "3861", + "start": "31633" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3865", + "name": "reserveOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3865", + "src": { + "column": "8", + "end": "31677", + "id": "3866", + "length": "18", + "line": "885", + "parentIndex": "3855", + "start": "31660" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3867", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "31666", + "id": "3868", + "length": "7", + "line": "885", + "parentIndex": "3865", + "start": "31660" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "31677", + "id": "3856", + "length": "71", + "line": "883", + "parentIndex": "3853", + "start": "31607" + } + }, + "returnParameters": { + "id": "3869", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3871", + "name": "amountOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3871", + "src": { + "column": "29", + "end": "31724", + "id": "3872", + "length": "17", + "line": "886", + "parentIndex": "3869", + "start": "31708" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3873", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "31714", + "id": "3874", + "length": "7", + "line": "886", + "parentIndex": "3871", + "start": "31708" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "31724", + "id": "3870", + "length": "17", + "line": "886", + "parentIndex": "3853", + "start": "31708" + } + }, + "scope": "3493", + "src": { + "column": "4", + "end": "32170", + "id": "3854", + "length": "595", + "line": "882", + "parentIndex": "3493", + "start": "31576" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "3993", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "47", + "end": "32836", + "id": "3994", + "length": "398", + "line": "903", + "parentIndex": "3971", + "start": "32439" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "3999", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4001", + "name": "amountOut", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4001", + "src": { + "column": "16", + "end": "32465", + "id": "4002", + "length": "9", + "line": "904", + "parentIndex": "3999", + "start": "32457" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "4003", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "28", + "end": "32469", + "id": "4004", + "length": "1", + "line": "904", + "parentIndex": "3999", + "start": "32469" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "16", + "end": "32469", + "id": "4000", + "length": "13", + "line": "904", + "parentIndex": "3995", + "start": "32457" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54", + "id": "4005", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "31", + "end": "32517", + "id": "4006", + "length": "46", + "line": "904", + "parentIndex": "3995", + "start": "32472" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "3997", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "32455", + "id": "3998", + "length": "7", + "line": "904", + "parentIndex": "3995", + "start": "32449" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "3995", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "32518", + "id": "3996", + "length": "70", + "line": "904", + "parentIndex": "3993", + "start": "32449" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.AndOperation", + "value": {} + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459", + "id": "4026", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "12", + "end": "32636", + "id": "4027", + "length": "42", + "line": "907", + "parentIndex": "4007", + "start": "32595" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + }, + "value": "UniswapV2Library: INSUFFICIENT_LIQUIDITY" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4009", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "32535", + "id": "4010", + "length": "7", + "line": "905", + "parentIndex": "4007", + "start": "32529" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "4007", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "32646", + "id": "4008", + "length": "118", + "line": "905", + "parentIndex": "3993", + "start": "32529" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "4030" + ], + "declarations": [ + { + "id": "4030", + "mutability": "MUTABLE", + "name": "numerator", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3993", + "src": { + "column": "8", + "end": "32673", + "id": "4031", + "length": "17", + "line": "909", + "parentIndex": "4028", + "start": "32657" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4032", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "32663", + "id": "4033", + "length": "7", + "line": "909", + "parentIndex": "4030", + "start": "32657" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "4028", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31303030", + "id": "4046", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "57", + "end": "32709", + "id": "4047", + "length": "4", + "line": "909", + "parentIndex": "4034", + "start": "32706" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4044", + "name": "amountOut", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4044", + "src": { + "column": "42", + "end": "32699", + "id": "4045", + "length": "9", + "line": "909", + "parentIndex": "4038", + "start": "32691" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4042", + "name": "reserveIn", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4042", + "src": { + "column": "28", + "end": "32685", + "id": "4043", + "length": "9", + "line": "909", + "parentIndex": "4040", + "start": "32677" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4040", + "memberName": "mul", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "28", + "end": "32689", + "id": "4041", + "length": "13", + "line": "909", + "parentIndex": "4038", + "start": "32677" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4038", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "28", + "end": "32700", + "id": "4039", + "length": "24", + "line": "909", + "parentIndex": "4036", + "start": "32677" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + } + } + }, + "id": "4036", + "memberName": "mul", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "28", + "end": "32704", + "id": "4037", + "length": "28", + "line": "909", + "parentIndex": "4034", + "start": "32677" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + } + } + }, + "id": "4034", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "28", + "end": "32710", + "id": "4035", + "length": "34", + "line": "909", + "parentIndex": "4028", + "start": "32677" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_1000_by_1$", + "typeString": "function(int_const 1000)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "32711", + "id": "4029", + "length": "55", + "line": "909", + "parentIndex": "3993", + "start": "32657" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "4050" + ], + "declarations": [ + { + "id": "4050", + "mutability": "MUTABLE", + "name": "denominator", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3993", + "src": { + "column": "8", + "end": "32739", + "id": "4051", + "length": "19", + "line": "910", + "parentIndex": "4048", + "start": "32721" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4052", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "32727", + "id": "4053", + "length": "7", + "line": "910", + "parentIndex": "4050", + "start": "32721" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "4048", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_997_by_1", + "typeString": "int_const 997" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "393937", + "id": "4066", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "60", + "end": "32775", + "id": "4067", + "length": "3", + "line": "910", + "parentIndex": "4054", + "start": "32773" + }, + "typeDescription": { + "typeIdentifier": "t_rational_997_by_1", + "typeString": "int_const 997" + }, + "value": "997" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4064", + "name": "amountOut", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4064", + "src": { + "column": "45", + "end": "32766", + "id": "4065", + "length": "9", + "line": "910", + "parentIndex": "4058", + "start": "32758" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4062", + "name": "reserveOut", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4062", + "src": { + "column": "30", + "end": "32752", + "id": "4063", + "length": "10", + "line": "910", + "parentIndex": "4060", + "start": "32743" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4060", + "memberName": "sub", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "30", + "end": "32756", + "id": "4061", + "length": "14", + "line": "910", + "parentIndex": "4058", + "start": "32743" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4058", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "30", + "end": "32767", + "id": "4059", + "length": "25", + "line": "910", + "parentIndex": "4056", + "start": "32743" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + } + } + }, + "id": "4056", + "memberName": "mul", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "30", + "end": "32771", + "id": "4057", + "length": "29", + "line": "910", + "parentIndex": "4054", + "start": "32743" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + } + } + }, + "id": "4054", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "30", + "end": "32776", + "id": "4055", + "length": "34", + "line": "910", + "parentIndex": "4048", + "start": "32743" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_997_by_1$", + "typeString": "function(int_const 997)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "32777", + "id": "4049", + "length": "57", + "line": "910", + "parentIndex": "3993", + "start": "32721" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "4070", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4072", + "name": "amountIn", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1835", + "src": { + "column": "8", + "end": "32794", + "id": "4073", + "length": "8", + "line": "911", + "parentIndex": "4070", + "start": "32787" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "4086", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "49", + "end": "32828", + "id": "4087", + "length": "1", + "line": "911", + "parentIndex": "4074", + "start": "32828" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4080", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4082", + "name": "numerator", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4028", + "src": { + "column": "20", + "end": "32807", + "id": "4083", + "length": "9", + "line": "911", + "parentIndex": "4080", + "start": "32799" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4084", + "name": "denominator", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4048", + "src": { + "column": "32", + "end": "32821", + "id": "4085", + "length": "11", + "line": "911", + "parentIndex": "4080", + "start": "32811" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "20", + "end": "32821", + "id": "4081", + "length": "23", + "line": "911", + "parentIndex": "4078", + "start": "32799" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "4078", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "19", + "end": "32822", + "id": "4079", + "length": "25", + "line": "911", + "parentIndex": "4076", + "start": "32798" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_uint256$", + "typeString": "tuple(uint256)" + } + } + }, + "id": "4076", + "memberName": "add", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "19", + "end": "32826", + "id": "4077", + "length": "29", + "line": "911", + "parentIndex": "4074", + "start": "32798" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_uint256$", + "typeString": "tuple(uint256)" + } + } + }, + "id": "4074", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "19", + "end": "32829", + "id": "4075", + "length": "32", + "line": "911", + "parentIndex": "4070", + "start": "32798" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_1_by_1$", + "typeString": "function(int_const 1)" + } + } + }, + "src": { + "column": "8", + "end": "32829", + "id": "4071", + "length": "43", + "line": "911", + "parentIndex": "3993", + "start": "32787" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4068", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "32830", + "id": "4069", + "length": "44", + "line": "911", + "parentIndex": "3993", + "start": "32787" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "id": "3971", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "getAmountIn", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "3973", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3975", + "name": "amountOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3975", + "src": { + "column": "8", + "end": "32335", + "id": "3976", + "length": "17", + "line": "900", + "parentIndex": "3973", + "start": "32319" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3977", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "32325", + "id": "3978", + "length": "7", + "line": "900", + "parentIndex": "3975", + "start": "32319" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3979", + "name": "reserveIn", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3979", + "src": { + "column": "8", + "end": "32362", + "id": "3980", + "length": "17", + "line": "901", + "parentIndex": "3973", + "start": "32346" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3981", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "32352", + "id": "3982", + "length": "7", + "line": "901", + "parentIndex": "3979", + "start": "32346" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "3983", + "name": "reserveOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3983", + "src": { + "column": "8", + "end": "32390", + "id": "3984", + "length": "18", + "line": "902", + "parentIndex": "3973", + "start": "32373" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3985", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "32379", + "id": "3986", + "length": "7", + "line": "902", + "parentIndex": "3983", + "start": "32373" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "32390", + "id": "3974", + "length": "72", + "line": "900", + "parentIndex": "3971", + "start": "32319" + } + }, + "returnParameters": { + "id": "3987", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "3989", + "name": "amountIn", + "nodeType": "VARIABLE_DECLARATION", + "scope": "3989", + "src": { + "column": "29", + "end": "32436", + "id": "3990", + "length": "16", + "line": "903", + "parentIndex": "3987", + "start": "32421" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "3991", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "32427", + "id": "3992", + "length": "7", + "line": "903", + "parentIndex": "3989", + "start": "32421" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "32436", + "id": "3988", + "length": "16", + "line": "903", + "parentIndex": "3971", + "start": "32421" + } + }, + "scope": "3493", + "src": { + "column": "4", + "end": "32836", + "id": "3972", + "length": "548", + "line": "899", + "parentIndex": "3493", + "start": "32289" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$_t_uint256$", + "typeString": "function(uint256,uint256,uint256)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "4117", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "55", + "end": "33588", + "id": "4118", + "length": "483", + "line": "920", + "parentIndex": "4089", + "start": "33106" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: INVALID_PATH\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4123", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4127", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4127", + "src": { + "column": "16", + "end": "33127", + "id": "4128", + "length": "4", + "line": "921", + "parentIndex": "4125", + "start": "33124" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "4125", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "33134", + "id": "4126", + "length": "11", + "line": "921", + "parentIndex": "4123", + "start": "33124" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "32", + "id": "4129", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "31", + "end": "33139", + "id": "4130", + "length": "1", + "line": "921", + "parentIndex": "4123", + "start": "33139" + }, + "typeDescription": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + }, + "src": { + "column": "16", + "end": "33139", + "id": "4124", + "length": "16", + "line": "921", + "parentIndex": "4119", + "start": "33124" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "556e697377617056324c6962726172793a20494e56414c49445f50415448", + "id": "4131", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "34", + "end": "33173", + "id": "4132", + "length": "32", + "line": "921", + "parentIndex": "4119", + "start": "33142" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: INVALID_PATH\"" + }, + "value": "UniswapV2Library: INVALID_PATH" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4121", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "33122", + "id": "4122", + "length": "7", + "line": "921", + "parentIndex": "4119", + "start": "33116" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "4119", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "33174", + "id": "4120", + "length": "59", + "line": "921", + "parentIndex": "4117", + "start": "33116" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "4135", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4137", + "name": "amounts", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4112", + "src": { + "column": "8", + "end": "33191", + "id": "4138", + "length": "7", + "line": "922", + "parentIndex": "4135", + "start": "33185" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4148", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4148", + "src": { + "column": "32", + "end": "33212", + "id": "4149", + "length": "4", + "line": "922", + "parentIndex": "4146", + "start": "33209" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "4146", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "32", + "end": "33219", + "id": "4147", + "length": "11", + "line": "922", + "parentIndex": "4139", + "start": "33209" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.NewExpression", + "value": { + "id": "4141", + "nodeType": "NEW_EXPRESSION", + "src": { + "column": "18", + "end": "33207", + "id": "4142", + "length": "13", + "line": "922", + "parentIndex": "4139", + "start": "33195" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4143", + "name": "uint256", + "nodeType": "IDENTIFIER", + "src": { + "column": "22", + "end": "33205", + "id": "4145", + "length": "7", + "line": "922", + "parentIndex": "4141", + "start": "33199" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "id": "4139", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "18", + "end": "33220", + "id": "4140", + "length": "26", + "line": "922", + "parentIndex": "4135", + "start": "33195" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "src": { + "column": "8", + "end": "33220", + "id": "4136", + "length": "36", + "line": "922", + "parentIndex": "4117", + "start": "33185" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4133", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "33221", + "id": "4134", + "length": "37", + "line": "922", + "parentIndex": "4117", + "start": "33185" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "4152", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "4158", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "16", + "end": "33239", + "id": "4159", + "length": "1", + "line": "923", + "parentIndex": "4154", + "start": "33239" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "id": "4154", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4156", + "name": "amounts", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4112", + "src": { + "column": "8", + "end": "33237", + "id": "4157", + "length": "7", + "line": "923", + "parentIndex": "4154", + "start": "33231" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "8", + "end": "33240", + "id": "4155", + "length": "10", + "line": "923", + "parentIndex": "4152", + "start": "33231" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$_t_rational_0_by_1]$", + "typeString": "index[uint256:int_const 0]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ] + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4160", + "name": "amountIn", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4160", + "src": { + "column": "21", + "end": "33251", + "id": "4161", + "length": "8", + "line": "923", + "parentIndex": "4152", + "start": "33244" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "8", + "end": "33251", + "id": "4153", + "length": "21", + "line": "923", + "parentIndex": "4117", + "start": "33231" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$_t_rational_0_by_1]$", + "typeString": "index[uint256:int_const 0]" + } + } + }, + "id": "4150", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "33252", + "id": "4151", + "length": "22", + "line": "923", + "parentIndex": "4117", + "start": "33231" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$_t_rational_0_by_1]$", + "typeString": "index[uint256:int_const 0]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.For", + "value": { + "body": { + "id": "4186", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "50", + "end": "33582", + "id": "4187", + "length": "279", + "line": "924", + "parentIndex": "4162", + "start": "33304" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "4188", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + }, + { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_[_[$_t_address]$_t_uint256]$$$_t_[_[$_t_address]$_t_uint256]$$", + "typeString": "function(function(),index[address:uint256],index[address:uint256])" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4194", + "name": "factory", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "33395", + "id": "4195", + "length": "7", + "line": "926", + "parentIndex": "4190", + "start": "33389" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4200", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "21", + "end": "33419", + "id": "4201", + "length": "1", + "line": "927", + "parentIndex": "4196", + "start": "33419" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4196", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4198", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4101", + "src": { + "column": "16", + "end": "33417", + "id": "4199", + "length": "4", + "line": "927", + "parentIndex": "4196", + "start": "33414" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "16", + "end": "33420", + "id": "4197", + "length": "7", + "line": "927", + "parentIndex": "4190", + "start": "33414" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4206", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4208", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "21", + "end": "33444", + "id": "4209", + "length": "1", + "line": "928", + "parentIndex": "4206", + "start": "33444" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "ADDITION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "4210", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "25", + "end": "33448", + "id": "4211", + "length": "1", + "line": "928", + "parentIndex": "4206", + "start": "33448" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "21", + "end": "33448", + "id": "4207", + "length": "5", + "line": "928", + "parentIndex": "4202", + "start": "33444" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4202", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4204", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4101", + "src": { + "column": "16", + "end": "33442", + "id": "4205", + "length": "4", + "line": "928", + "parentIndex": "4202", + "start": "33439" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "16", + "end": "33449", + "id": "4203", + "length": "11", + "line": "928", + "parentIndex": "4190", + "start": "33439" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + }, + { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + } + ], + "id": "4212", + "name": "pairCodeHash", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "33479", + "id": "4213", + "length": "12", + "line": "929", + "parentIndex": "4190", + "start": "33468" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$$_t_[_[$_t_address]$_t_uint256]$$$_t_[_[$_t_address]$_t_uint256]$$", + "typeString": "function(function(),index[address:uint256],index[address:uint256])" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4192", + "name": "getReserves", + "nodeType": "IDENTIFIER", + "src": { + "column": "54", + "end": "33370", + "id": "4193", + "length": "11", + "line": "925", + "parentIndex": "4190", + "start": "33360" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "4190", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "54", + "end": "33493", + "id": "4191", + "length": "134", + "line": "925", + "parentIndex": "4188", + "start": "33360" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$_t_[_[$_t_address]$_t_uint256]$_t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$_t_[_[$_t_address]$_t_uint256]$", + "typeString": "function(function(),index[address:uint256],index[address:uint256],function(function(),index[address:uint256],index[address:uint256]))" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "33494", + "id": "4189", + "length": "177", + "line": "925", + "parentIndex": "4186", + "start": "33318" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "4216", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4222", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4224", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "20", + "end": "33516", + "id": "4225", + "length": "1", + "line": "931", + "parentIndex": "4222", + "start": "33516" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "ADDITION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "4226", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "24", + "end": "33520", + "id": "4227", + "length": "1", + "line": "931", + "parentIndex": "4222", + "start": "33520" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "20", + "end": "33520", + "id": "4223", + "length": "5", + "line": "931", + "parentIndex": "4218", + "start": "33516" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4218", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4220", + "name": "amounts", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4112", + "src": { + "column": "12", + "end": "33514", + "id": "4221", + "length": "7", + "line": "931", + "parentIndex": "4218", + "start": "33508" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "12", + "end": "33521", + "id": "4219", + "length": "14", + "line": "931", + "parentIndex": "4216", + "start": "33508" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$", + "typeString": "function(index[uint256:uint256])" + }, + { + "typeIdentifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$", + "typeString": "function(index[uint256:uint256],function(index[uint256:uint256]))" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4236", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "50", + "end": "33546", + "id": "4237", + "length": "1", + "line": "931", + "parentIndex": "4232", + "start": "33546" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4232", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4234", + "name": "amounts", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4112", + "src": { + "column": "42", + "end": "33544", + "id": "4235", + "length": "7", + "line": "931", + "parentIndex": "4232", + "start": "33538" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "42", + "end": "33547", + "id": "4233", + "length": "10", + "line": "931", + "parentIndex": "4228", + "start": "33538" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + } + ], + "id": "4238", + "name": "reserveIn", + "nodeType": "IDENTIFIER", + "src": { + "column": "54", + "end": "33558", + "id": "4239", + "length": "9", + "line": "931", + "parentIndex": "4228", + "start": "33550" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$", + "typeString": "function(index[uint256:uint256])" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$", + "typeString": "function(index[uint256:uint256])" + } + ], + "id": "4240", + "name": "reserveOut", + "nodeType": "IDENTIFIER", + "src": { + "column": "65", + "end": "33570", + "id": "4241", + "length": "10", + "line": "931", + "parentIndex": "4228", + "start": "33561" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$", + "typeString": "function(index[uint256:uint256],function(index[uint256:uint256]))" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4230", + "name": "getAmountOut", + "nodeType": "IDENTIFIER", + "src": { + "column": "29", + "end": "33536", + "id": "4231", + "length": "12", + "line": "931", + "parentIndex": "4228", + "start": "33525" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "4228", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "29", + "end": "33571", + "id": "4229", + "length": "47", + "line": "931", + "parentIndex": "4216", + "start": "33525" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "function(index[uint256:uint256],function(index[uint256:uint256]),function(index[uint256:uint256],function(index[uint256:uint256])))" + } + } + }, + "src": { + "column": "12", + "end": "33571", + "id": "4217", + "length": "64", + "line": "931", + "parentIndex": "4186", + "start": "33508" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + } + } + }, + "id": "4214", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "33572", + "id": "4215", + "length": "65", + "line": "931", + "parentIndex": "4186", + "start": "33508" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + } + } + } + ] + }, + "closure": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.UnarySuffix", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4184", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "45", + "end": "33299", + "id": "4185", + "length": "1", + "line": "924", + "parentIndex": "4182", + "start": "33299" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4182", + "nodeType": "UNARY_OPERATION", + "operator": "INCREMENT", + "src": { + "column": "45", + "end": "33301", + "id": "4183", + "length": "3", + "line": "924", + "parentIndex": "4089", + "start": "33299" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4170", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4172", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "24", + "end": "33278", + "id": "4173", + "length": "1", + "line": "924", + "parentIndex": "4170", + "start": "33278" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4174", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4178", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4178", + "src": { + "column": "28", + "end": "33285", + "id": "4179", + "length": "4", + "line": "924", + "parentIndex": "4176", + "start": "33282" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "4176", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "28", + "end": "33292", + "id": "4177", + "length": "11", + "line": "924", + "parentIndex": "4174", + "start": "33282" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "4180", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "42", + "end": "33296", + "id": "4181", + "length": "1", + "line": "924", + "parentIndex": "4174", + "start": "33296" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "28", + "end": "33296", + "id": "4175", + "length": "15", + "line": "924", + "parentIndex": "4170", + "start": "33282" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "src": { + "column": "24", + "end": "33296", + "id": "4171", + "length": "19", + "line": "924", + "parentIndex": "4162", + "start": "33278" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "4162", + "initialiser": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "4166" + ], + "declarations": [ + { + "id": "4166", + "mutability": "MUTABLE", + "name": "i", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4117", + "src": { + "column": "13", + "end": "33275", + "id": "4167", + "length": "9", + "line": "924", + "parentIndex": "4164", + "start": "33267" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4168", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "13", + "end": "33273", + "id": "4169", + "length": "7", + "line": "924", + "parentIndex": "4166", + "start": "33267" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "4164", + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "13", + "end": "33276", + "id": "4165", + "length": "10", + "line": "924", + "parentIndex": "4117", + "start": "33267" + } + } + }, + "nodeType": "FOR_STATEMENT", + "src": { + "end": "33582", + "id": "4163", + "length": "321", + "line": "924", + "parentIndex": "4117", + "start": "33262" + } + } + } + ] + }, + "id": "4089", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "getAmountsOut", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "4091", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "4093", + "name": "factory", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4093", + "src": { + "column": "8", + "end": "32962", + "id": "4094", + "length": "15", + "line": "916", + "parentIndex": "4091", + "start": "32948" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "4095", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "32954", + "id": "4096", + "length": "7", + "line": "916", + "parentIndex": "4093", + "start": "32948" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4097", + "name": "amountIn", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4097", + "src": { + "column": "8", + "end": "32988", + "id": "4098", + "length": "16", + "line": "917", + "parentIndex": "4091", + "start": "32973" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4099", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "32979", + "id": "4100", + "length": "7", + "line": "917", + "parentIndex": "4097", + "start": "32973" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4101", + "name": "path", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4101", + "src": { + "column": "8", + "end": "33019", + "id": "4102", + "length": "21", + "line": "918", + "parentIndex": "4091", + "start": "32999" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "4103", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "33005", + "id": "4105", + "length": "7", + "line": "918", + "parentIndex": "4101", + "start": "32999" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4106", + "name": "pairCodeHash", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4106", + "src": { + "column": "8", + "end": "33049", + "id": "4107", + "length": "20", + "line": "919", + "parentIndex": "4091", + "start": "33030" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "4108", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "33036", + "id": "4109", + "length": "7", + "line": "919", + "parentIndex": "4106", + "start": "33030" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "33049", + "id": "4092", + "length": "102", + "line": "916", + "parentIndex": "4089", + "start": "32948" + } + }, + "returnParameters": { + "id": "4110", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "4112", + "name": "amounts", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4112", + "src": { + "column": "29", + "end": "33103", + "id": "4113", + "length": "24", + "line": "920", + "parentIndex": "4110", + "start": "33080" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4114", + "name": "uint256", + "nodeType": "IDENTIFIER", + "src": { + "column": "29", + "end": "33086", + "id": "4116", + "length": "7", + "line": "920", + "parentIndex": "4112", + "start": "33080" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "33103", + "id": "4111", + "length": "24", + "line": "920", + "parentIndex": "4089", + "start": "33080" + } + }, + "scope": "3493", + "src": { + "column": "4", + "end": "33588", + "id": "4090", + "length": "673", + "line": "915", + "parentIndex": "3493", + "start": "32916" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$_t_address$_t_bytes32$", + "typeString": "function(address,uint256,address,bytes32)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "4271", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "55", + "end": "34360", + "id": "4272", + "length": "504", + "line": "941", + "parentIndex": "4243", + "start": "33857" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: INVALID_PATH\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4277", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4281", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4281", + "src": { + "column": "16", + "end": "33878", + "id": "4282", + "length": "4", + "line": "942", + "parentIndex": "4279", + "start": "33875" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "4279", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "33885", + "id": "4280", + "length": "11", + "line": "942", + "parentIndex": "4277", + "start": "33875" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "32", + "id": "4283", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "31", + "end": "33890", + "id": "4284", + "length": "1", + "line": "942", + "parentIndex": "4277", + "start": "33890" + }, + "typeDescription": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + }, + "src": { + "column": "16", + "end": "33890", + "id": "4278", + "length": "16", + "line": "942", + "parentIndex": "4273", + "start": "33875" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "556e697377617056324c6962726172793a20494e56414c49445f50415448", + "id": "4285", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "34", + "end": "33924", + "id": "4286", + "length": "32", + "line": "942", + "parentIndex": "4273", + "start": "33893" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"UniswapV2Library: INVALID_PATH\"" + }, + "value": "UniswapV2Library: INVALID_PATH" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4275", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "33873", + "id": "4276", + "length": "7", + "line": "942", + "parentIndex": "4273", + "start": "33867" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "4273", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "33925", + "id": "4274", + "length": "59", + "line": "942", + "parentIndex": "4271", + "start": "33867" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "4289", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4291", + "name": "amounts", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4112", + "src": { + "column": "8", + "end": "33942", + "id": "4292", + "length": "7", + "line": "943", + "parentIndex": "4289", + "start": "33936" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4302", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4302", + "src": { + "column": "32", + "end": "33963", + "id": "4303", + "length": "4", + "line": "943", + "parentIndex": "4300", + "start": "33960" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "4300", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "32", + "end": "33970", + "id": "4301", + "length": "11", + "line": "943", + "parentIndex": "4293", + "start": "33960" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.NewExpression", + "value": { + "id": "4295", + "nodeType": "NEW_EXPRESSION", + "src": { + "column": "18", + "end": "33958", + "id": "4296", + "length": "13", + "line": "943", + "parentIndex": "4293", + "start": "33946" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4297", + "name": "uint256", + "nodeType": "IDENTIFIER", + "src": { + "column": "22", + "end": "33956", + "id": "4299", + "length": "7", + "line": "943", + "parentIndex": "4295", + "start": "33950" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "id": "4293", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "18", + "end": "33971", + "id": "4294", + "length": "26", + "line": "943", + "parentIndex": "4289", + "start": "33946" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "src": { + "column": "8", + "end": "33971", + "id": "4290", + "length": "36", + "line": "943", + "parentIndex": "4271", + "start": "33936" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4287", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "33972", + "id": "4288", + "length": "37", + "line": "943", + "parentIndex": "4271", + "start": "33936" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "4306", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4312", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4316", + "name": "amounts", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4112", + "src": { + "column": "16", + "end": "33996", + "id": "4317", + "length": "7", + "line": "944", + "parentIndex": "4314", + "start": "33990" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4314", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "34003", + "id": "4315", + "length": "14", + "line": "944", + "parentIndex": "4312", + "start": "33990" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "4318", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "33", + "end": "34007", + "id": "4319", + "length": "1", + "line": "944", + "parentIndex": "4312", + "start": "34007" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "16", + "end": "34007", + "id": "4313", + "length": "18", + "line": "944", + "parentIndex": "4308", + "start": "33990" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4308", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4310", + "name": "amounts", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4112", + "src": { + "column": "8", + "end": "33988", + "id": "4311", + "length": "7", + "line": "944", + "parentIndex": "4308", + "start": "33982" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "8", + "end": "34008", + "id": "4309", + "length": "27", + "line": "944", + "parentIndex": "4306", + "start": "33982" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4320", + "name": "amountOut", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4320", + "src": { + "column": "38", + "end": "34020", + "id": "4321", + "length": "9", + "line": "944", + "parentIndex": "4306", + "start": "34012" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "8", + "end": "34020", + "id": "4307", + "length": "39", + "line": "944", + "parentIndex": "4271", + "start": "33982" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + } + } + }, + "id": "4304", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "34021", + "id": "4305", + "length": "40", + "line": "944", + "parentIndex": "4271", + "start": "33982" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.For", + "value": { + "body": { + "id": "4348", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "54", + "end": "34354", + "id": "4349", + "length": "278", + "line": "945", + "parentIndex": "4322", + "start": "34077" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "4350", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + }, + { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_[_[$_t_address]$_t_uint256]$$$_t_[_[$_t_address]$_t_uint256]$$", + "typeString": "function(function(),index[address:uint256],index[address:uint256])" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4356", + "name": "factory", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "34168", + "id": "4357", + "length": "7", + "line": "947", + "parentIndex": "4352", + "start": "34162" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4362", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4364", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "21", + "end": "34192", + "id": "4365", + "length": "1", + "line": "948", + "parentIndex": "4362", + "start": "34192" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "4366", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "25", + "end": "34196", + "id": "4367", + "length": "1", + "line": "948", + "parentIndex": "4362", + "start": "34196" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "21", + "end": "34196", + "id": "4363", + "length": "5", + "line": "948", + "parentIndex": "4358", + "start": "34192" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4358", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4360", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4101", + "src": { + "column": "16", + "end": "34190", + "id": "4361", + "length": "4", + "line": "948", + "parentIndex": "4358", + "start": "34187" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "16", + "end": "34197", + "id": "4359", + "length": "11", + "line": "948", + "parentIndex": "4352", + "start": "34187" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4372", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "21", + "end": "34221", + "id": "4373", + "length": "1", + "line": "949", + "parentIndex": "4368", + "start": "34221" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4368", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4370", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4101", + "src": { + "column": "16", + "end": "34219", + "id": "4371", + "length": "4", + "line": "949", + "parentIndex": "4368", + "start": "34216" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "16", + "end": "34222", + "id": "4369", + "length": "7", + "line": "949", + "parentIndex": "4352", + "start": "34216" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + }, + { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + } + ], + "id": "4374", + "name": "pairCodeHash", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "34252", + "id": "4375", + "length": "12", + "line": "950", + "parentIndex": "4352", + "start": "34241" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$$_t_[_[$_t_address]$_t_uint256]$$$_t_[_[$_t_address]$_t_uint256]$$", + "typeString": "function(function(),index[address:uint256],index[address:uint256])" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4354", + "name": "getReserves", + "nodeType": "IDENTIFIER", + "src": { + "column": "54", + "end": "34143", + "id": "4355", + "length": "11", + "line": "946", + "parentIndex": "4352", + "start": "34133" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "4352", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "54", + "end": "34266", + "id": "4353", + "length": "134", + "line": "946", + "parentIndex": "4350", + "start": "34133" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$_t_[_[$_t_address]$_t_uint256]$_t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$_t_[_[$_t_address]$_t_uint256]$", + "typeString": "function(function(),index[address:uint256],index[address:uint256],function(function(),index[address:uint256],index[address:uint256]))" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "34267", + "id": "4351", + "length": "177", + "line": "946", + "parentIndex": "4348", + "start": "34091" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "4378", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4384", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4386", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "20", + "end": "34289", + "id": "4387", + "length": "1", + "line": "952", + "parentIndex": "4384", + "start": "34289" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "4388", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "24", + "end": "34293", + "id": "4389", + "length": "1", + "line": "952", + "parentIndex": "4384", + "start": "34293" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "20", + "end": "34293", + "id": "4385", + "length": "5", + "line": "952", + "parentIndex": "4380", + "start": "34289" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4380", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4382", + "name": "amounts", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4112", + "src": { + "column": "12", + "end": "34287", + "id": "4383", + "length": "7", + "line": "952", + "parentIndex": "4380", + "start": "34281" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "12", + "end": "34294", + "id": "4381", + "length": "14", + "line": "952", + "parentIndex": "4378", + "start": "34281" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$", + "typeString": "function(index[uint256:uint256])" + }, + { + "typeIdentifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$", + "typeString": "function(index[uint256:uint256],function(index[uint256:uint256]))" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4398", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "49", + "end": "34318", + "id": "4399", + "length": "1", + "line": "952", + "parentIndex": "4394", + "start": "34318" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4394", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4396", + "name": "amounts", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4112", + "src": { + "column": "41", + "end": "34316", + "id": "4397", + "length": "7", + "line": "952", + "parentIndex": "4394", + "start": "34310" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "41", + "end": "34319", + "id": "4395", + "length": "10", + "line": "952", + "parentIndex": "4390", + "start": "34310" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + } + ], + "id": "4400", + "name": "reserveIn", + "nodeType": "IDENTIFIER", + "src": { + "column": "53", + "end": "34330", + "id": "4401", + "length": "9", + "line": "952", + "parentIndex": "4390", + "start": "34322" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$", + "typeString": "function(index[uint256:uint256])" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$", + "typeString": "function(index[uint256:uint256])" + } + ], + "id": "4402", + "name": "reserveOut", + "nodeType": "IDENTIFIER", + "src": { + "column": "64", + "end": "34342", + "id": "4403", + "length": "10", + "line": "952", + "parentIndex": "4390", + "start": "34333" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$", + "typeString": "function(index[uint256:uint256],function(index[uint256:uint256]))" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4392", + "name": "getAmountIn", + "nodeType": "IDENTIFIER", + "src": { + "column": "29", + "end": "34308", + "id": "4393", + "length": "11", + "line": "952", + "parentIndex": "4390", + "start": "34298" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "4390", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "29", + "end": "34343", + "id": "4391", + "length": "46", + "line": "952", + "parentIndex": "4378", + "start": "34298" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "function(index[uint256:uint256],function(index[uint256:uint256]),function(index[uint256:uint256],function(index[uint256:uint256])))" + } + } + }, + "src": { + "column": "12", + "end": "34343", + "id": "4379", + "length": "63", + "line": "952", + "parentIndex": "4348", + "start": "34281" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + } + } + }, + "id": "4376", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "34344", + "id": "4377", + "length": "64", + "line": "952", + "parentIndex": "4348", + "start": "34281" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + } + } + } + ] + }, + "closure": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.UnarySuffix", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4346", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "49", + "end": "34072", + "id": "4347", + "length": "1", + "line": "945", + "parentIndex": "4344", + "start": "34072" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4344", + "nodeType": "UNARY_OPERATION", + "operator": "DECREMENT", + "src": { + "column": "49", + "end": "34074", + "id": "4345", + "length": "3", + "line": "945", + "parentIndex": "4243", + "start": "34072" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4338", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4340", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "42", + "end": "34065", + "id": "4341", + "length": "1", + "line": "945", + "parentIndex": "4338", + "start": "34065" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "4342", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "46", + "end": "34069", + "id": "4343", + "length": "1", + "line": "945", + "parentIndex": "4338", + "start": "34069" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "42", + "end": "34069", + "id": "4339", + "length": "5", + "line": "945", + "parentIndex": "4322", + "start": "34065" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "4322", + "initialiser": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "4326" + ], + "declarations": [ + { + "id": "4326", + "mutability": "MUTABLE", + "name": "i", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4271", + "src": { + "column": "13", + "end": "34044", + "id": "4327", + "length": "9", + "line": "945", + "parentIndex": "4324", + "start": "34036" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4328", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "13", + "end": "34042", + "id": "4329", + "length": "7", + "line": "945", + "parentIndex": "4326", + "start": "34036" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "4324", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4330", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4334", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4334", + "src": { + "column": "25", + "end": "34051", + "id": "4335", + "length": "4", + "line": "945", + "parentIndex": "4332", + "start": "34048" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "4332", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "25", + "end": "34058", + "id": "4333", + "length": "11", + "line": "945", + "parentIndex": "4324", + "start": "34048" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "4336", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "39", + "end": "34062", + "id": "4337", + "length": "1", + "line": "945", + "parentIndex": "4330", + "start": "34062" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "25", + "end": "34062", + "id": "4331", + "length": "15", + "line": "945", + "parentIndex": "4324", + "start": "34048" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "13", + "end": "34063", + "id": "4325", + "length": "28", + "line": "945", + "parentIndex": "4271", + "start": "34036" + } + } + }, + "nodeType": "FOR_STATEMENT", + "src": { + "end": "34354", + "id": "4323", + "length": "324", + "line": "945", + "parentIndex": "4271", + "start": "34031" + } + } + } + ] + }, + "id": "4243", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "getAmountsIn", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "4245", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "4247", + "name": "factory", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4247", + "src": { + "column": "8", + "end": "33712", + "id": "4248", + "length": "15", + "line": "937", + "parentIndex": "4245", + "start": "33698" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "4249", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "33704", + "id": "4250", + "length": "7", + "line": "937", + "parentIndex": "4247", + "start": "33698" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4251", + "name": "amountOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4251", + "src": { + "column": "8", + "end": "33739", + "id": "4252", + "length": "17", + "line": "938", + "parentIndex": "4245", + "start": "33723" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4253", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "33729", + "id": "4254", + "length": "7", + "line": "938", + "parentIndex": "4251", + "start": "33723" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4255", + "name": "path", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4255", + "src": { + "column": "8", + "end": "33770", + "id": "4256", + "length": "21", + "line": "939", + "parentIndex": "4245", + "start": "33750" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "4257", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "33756", + "id": "4259", + "length": "7", + "line": "939", + "parentIndex": "4255", + "start": "33750" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4260", + "name": "pairCodeHash", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4260", + "src": { + "column": "8", + "end": "33800", + "id": "4261", + "length": "20", + "line": "940", + "parentIndex": "4245", + "start": "33781" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "4262", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "33787", + "id": "4263", + "length": "7", + "line": "940", + "parentIndex": "4260", + "start": "33781" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "33800", + "id": "4246", + "length": "103", + "line": "937", + "parentIndex": "4243", + "start": "33698" + } + }, + "returnParameters": { + "id": "4264", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "4266", + "name": "amounts", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4266", + "src": { + "column": "29", + "end": "33854", + "id": "4267", + "length": "24", + "line": "941", + "parentIndex": "4264", + "start": "33831" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4268", + "name": "uint256", + "nodeType": "IDENTIFIER", + "src": { + "column": "29", + "end": "33837", + "id": "4270", + "length": "7", + "line": "941", + "parentIndex": "4266", + "start": "33831" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "33854", + "id": "4265", + "length": "24", + "line": "941", + "parentIndex": "4243", + "start": "33831" + } + }, + "scope": "3493", + "src": { + "column": "4", + "end": "34360", + "id": "4244", + "length": "694", + "line": "936", + "parentIndex": "3493", + "start": "33667" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$_t_uint256$_t_address$_t_bytes32$", + "typeString": "function(address,uint256,address,bytes32)" + }, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "34362", + "length": "5323", + "line": "811", + "parentIndex": "3448", + "start": "29040" + } + } + } + ] + }, + "src": { + "id": 3449, + "line": 811, + "start": 29040, + "end": 34362, + "length": 5323, + "parent_index": 263 + } + }, + { + "id": 4404, + "license": "MIT", + "name": "SushiLegacyAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/SushiLegacyAdapter.sol", + "exported_symbols": [ + { + "id": 4404, + "name": "SushiLegacyAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/SushiLegacyAdapter.sol" + }, + { + "id": 3448, + "name": "SafeERC20", + "absolute_path": "SafeERC20.sol" + }, + { + "id": 3448, + "name": "UniswapV2Library", + "absolute_path": "UniswapV2Library.sol" + }, + { + "id": 3448, + "name": "ImmutableState", + "absolute_path": "ImmutableState.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "4436", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "34433", + "id": "4437", + "length": "23", + "line": "959", + "parentIndex": "4404", + "start": "34411" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "SafeERC20.sol", + "file": "./SafeERC20.sol", + "id": "4451", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "4404", + "sourceUnit": "3448", + "src": { + "end": "34460", + "length": "25", + "line": "961", + "parentIndex": "4404", + "start": "34436" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "UniswapV2Library.sol", + "file": "./UniswapV2Library.sol", + "id": "4452", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "4404", + "sourceUnit": "3448", + "src": { + "end": "34493", + "length": "32", + "line": "962", + "parentIndex": "4404", + "start": "34462" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ImmutableState.sol", + "file": "./ImmutableState.sol", + "id": "4453", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "4404", + "sourceUnit": "3448", + "src": { + "end": "34524", + "length": "30", + "line": "963", + "parentIndex": "4404", + "start": "34495" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "4457", + "name": "ImmutableState", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1354", + "src": { + "column": "40", + "end": "34685", + "id": "4458", + "length": "14", + "line": "967", + "parentIndex": "4454", + "start": "34672" + } + }, + "id": "4455", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "40", + "end": "34685", + "id": "4456", + "length": "14", + "line": "967", + "parentIndex": "4454", + "start": "34672" + } + } + ], + "contractDependencies": [ + "1354", + "4451", + "4452", + "4453" + ], + "fullyImplemented": true, + "id": "4454", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "1354", + "4454", + "4451", + "4452", + "4453" + ], + "name": "SushiLegacyAdapter", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Using", + "value": { + "id": "4460", + "libraryName": { + "id": "4466", + "name": "SafeERC20", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1854", + "src": { + "end": "34707", + "id": "4467", + "length": "9", + "line": "968", + "parentIndex": "4460", + "start": "34699" + } + }, + "name": "SafeERC20", + "nodeType": "USING_FOR_DIRECTIVE", + "src": { + "end": "34719", + "id": "4461", + "length": "27", + "line": "968", + "parentIndex": "4454", + "start": "34693" + }, + "typeName": { + "id": "4462", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "4464", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "2570", + "src": { + "column": "24", + "end": "34718", + "id": "4465", + "length": "6", + "line": "968", + "parentIndex": "4462", + "start": "34713" + } + }, + "referencedDeclaration": "2570", + "src": { + "column": "24", + "end": "34718", + "id": "4463", + "length": "6", + "line": "968", + "parentIndex": "4460", + "start": "34713" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "4500", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "43", + "end": "35666", + "id": "4501", + "length": "731", + "line": "976", + "parentIndex": "4469", + "start": "34936" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "4504" + ], + "declarations": [ + { + "id": "4504", + "mutability": "MUTABLE", + "name": "amounts", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4500", + "src": { + "column": "8", + "end": "34969", + "id": "4505", + "length": "24", + "line": "977", + "parentIndex": "4502", + "start": "34946" + }, + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4506", + "name": "uint256", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "34952", + "id": "4508", + "length": "7", + "line": "977", + "parentIndex": "4504", + "start": "34946" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "4502", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_uint256$$_t_address$", + "typeString": "function(function(),uint256,address)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4515", + "name": "factory", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "35023", + "id": "4516", + "length": "7", + "line": "978", + "parentIndex": "4509", + "start": "35017" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "id": "4517", + "name": "amountIn", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4517", + "src": { + "column": "12", + "end": "35045", + "id": "4518", + "length": "8", + "line": "979", + "parentIndex": "4509", + "start": "35038" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": "4519", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4519", + "src": { + "column": "12", + "end": "35063", + "id": "4520", + "length": "4", + "line": "980", + "parentIndex": "4509", + "start": "35060" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "4521", + "name": "pairCodeHash", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "35089", + "id": "4522", + "length": "12", + "line": "981", + "parentIndex": "4509", + "start": "35078" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$$_t_uint256$$_t_address$", + "typeString": "function(function(),uint256,address)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4513", + "name": "UniswapV2Library", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3448", + "src": { + "column": "35", + "end": "34988", + "id": "4514", + "length": "16", + "line": "977", + "parentIndex": "4511", + "start": "34973" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_UniswapV2Library_$3448", + "typeString": "contract UniswapV2Library" + } + } + }, + "id": "4511", + "memberName": "getAmountsOut", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "35", + "end": "35002", + "id": "4512", + "length": "30", + "line": "977", + "parentIndex": "4509", + "start": "34973" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_UniswapV2Library_$3448", + "typeString": "contract UniswapV2Library" + } + } + }, + "id": "4509", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "35", + "end": "35099", + "id": "4510", + "length": "127", + "line": "977", + "parentIndex": "4502", + "start": "34973" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_uint256$_t_address$_t_function_$_t_function_$_t_uint256$_t_address$", + "typeString": "function(function(),uint256,address,function(function(),uint256,address))" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "35100", + "id": "4503", + "length": "155", + "line": "977", + "parentIndex": "4500", + "start": "34946" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "4525", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4527", + "name": "amountOut", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "913", + "src": { + "column": "8", + "end": "35118", + "id": "4528", + "length": "9", + "line": "983", + "parentIndex": "4525", + "start": "35110" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4533", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4537", + "name": "amounts", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4502", + "src": { + "column": "28", + "end": "35136", + "id": "4538", + "length": "7", + "line": "983", + "parentIndex": "4535", + "start": "35130" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4535", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "28", + "end": "35143", + "id": "4536", + "length": "14", + "line": "983", + "parentIndex": "4533", + "start": "35130" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "4539", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "45", + "end": "35147", + "id": "4540", + "length": "1", + "line": "983", + "parentIndex": "4533", + "start": "35147" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "28", + "end": "35147", + "id": "4534", + "length": "18", + "line": "983", + "parentIndex": "4529", + "start": "35130" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4529", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4531", + "name": "amounts", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4502", + "src": { + "column": "20", + "end": "35128", + "id": "4532", + "length": "7", + "line": "983", + "parentIndex": "4529", + "start": "35122" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "20", + "end": "35148", + "id": "4530", + "length": "27", + "line": "983", + "parentIndex": "4525", + "start": "35122" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "src": { + "column": "8", + "end": "35148", + "id": "4526", + "length": "39", + "line": "983", + "parentIndex": "4500", + "start": "35110" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4523", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "35149", + "id": "4524", + "length": "40", + "line": "983", + "parentIndex": "4500", + "start": "35110" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"insufficient-amount-out\"" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4545", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4547", + "name": "amountOut", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "913", + "src": { + "column": "16", + "end": "35176", + "id": "4548", + "length": "9", + "line": "985", + "parentIndex": "4545", + "start": "35168" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN_OR_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4549", + "name": "amountOutMin", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4549", + "src": { + "column": "29", + "end": "35192", + "id": "4550", + "length": "12", + "line": "985", + "parentIndex": "4545", + "start": "35181" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "16", + "end": "35192", + "id": "4546", + "length": "25", + "line": "985", + "parentIndex": "4541", + "start": "35168" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "hexValue": "696e73756666696369656e742d616d6f756e742d6f7574", + "id": "4551", + "isPure": true, + "kind": "STRING", + "nodeType": "LITERAL", + "src": { + "column": "43", + "end": "35219", + "id": "4552", + "length": "25", + "line": "985", + "parentIndex": "4541", + "start": "35195" + }, + "typeDescription": { + "typeIdentifier": "t_string_literal", + "typeString": "literal_string \"insufficient-amount-out\"" + }, + "value": "insufficient-amount-out" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4543", + "name": "require", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "35166", + "id": "4544", + "length": "7", + "line": "985", + "parentIndex": "4541", + "start": "35160" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "4541", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "35220", + "id": "4542", + "length": "61", + "line": "985", + "parentIndex": "4500", + "start": "35160" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bool$_t_string_literal$", + "typeString": "function(bool,string memory)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "4557", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "24", + "end": "35626", + "id": "4558", + "length": "306", + "line": "988", + "parentIndex": "4469", + "start": "35321" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$_t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$", + "typeString": "function(function(),index[address:int_const 0],index[address:int_const 1],function(function(),index[address:int_const 0],index[address:int_const 1]))" + }, + { + "typeIdentifier": "t_function_$_t_function_$_t_address$", + "typeString": "function(function(address))" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_[_[$_t_address]$_t_rational_0_by_1]$", + "typeString": "index[address:int_const 0]" + }, + { + "typeIdentifier": "t_[_[$_t_address]$_t_rational_1_by_1]$", + "typeString": "index[address:int_const 1]" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_[_[$_t_address]$_t_rational_0_by_1]$$$_t_[_[$_t_address]$_t_rational_1_by_1]$$", + "typeString": "function(function(),index[address:int_const 0],index[address:int_const 1])" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4579", + "name": "factory", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "35433", + "id": "4580", + "length": "7", + "line": "991", + "parentIndex": "4573", + "start": "35427" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "4585", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "25", + "end": "35461", + "id": "4586", + "length": "1", + "line": "992", + "parentIndex": "4581", + "start": "35461" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "id": "4581", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4583", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4583", + "src": { + "column": "20", + "end": "35459", + "id": "4584", + "length": "4", + "line": "992", + "parentIndex": "4581", + "start": "35456" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "20", + "end": "35462", + "id": "4582", + "length": "7", + "line": "992", + "parentIndex": "4573", + "start": "35456" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_address]$_t_rational_0_by_1]$", + "typeString": "index[address:int_const 0]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ] + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "4591", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "25", + "end": "35490", + "id": "4592", + "length": "1", + "line": "993", + "parentIndex": "4587", + "start": "35490" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "id": "4587", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4589", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4589", + "src": { + "column": "20", + "end": "35488", + "id": "4590", + "length": "4", + "line": "993", + "parentIndex": "4587", + "start": "35485" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "20", + "end": "35491", + "id": "4588", + "length": "7", + "line": "993", + "parentIndex": "4573", + "start": "35485" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_address]$_t_rational_1_by_1]$", + "typeString": "index[address:int_const 1]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ] + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_[_[$_t_address]$_t_rational_0_by_1]$", + "typeString": "index[address:int_const 0]" + }, + { + "typeIdentifier": "t_[_[$_t_address]$_t_rational_1_by_1]$", + "typeString": "index[address:int_const 1]" + } + ], + "id": "4593", + "name": "pairCodeHash", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "35525", + "id": "4594", + "length": "12", + "line": "994", + "parentIndex": "4573", + "start": "35514" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$$_t_[_[$_t_address]$_t_rational_0_by_1]$$$_t_[_[$_t_address]$_t_rational_1_by_1]$$", + "typeString": "function(function(),index[address:int_const 0],index[address:int_const 1])" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4577", + "name": "UniswapV2Library", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3448", + "src": { + "column": "16", + "end": "35396", + "id": "4578", + "length": "16", + "line": "990", + "parentIndex": "4575", + "start": "35381" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_UniswapV2Library_$3448", + "typeString": "contract UniswapV2Library" + } + } + }, + "id": "4575", + "memberName": "pairFor", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "35404", + "id": "4576", + "length": "24", + "line": "990", + "parentIndex": "4573", + "start": "35381" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_UniswapV2Library_$3448", + "typeString": "contract UniswapV2Library" + } + } + }, + "id": "4573", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "35543", + "id": "4574", + "length": "163", + "line": "990", + "parentIndex": "4559", + "start": "35381" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$_t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$", + "typeString": "function(function(),index[address:int_const 0],index[address:int_const 1],function(function(),index[address:int_const 0],index[address:int_const 1]))" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SushiLegacyAdapter_$4404", + "typeString": "contract SushiLegacyAdapter" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4615", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "50", + "end": "35599", + "id": "4616", + "length": "4", + "line": "996", + "parentIndex": "4609", + "start": "35596" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_SushiLegacyAdapter_$4404", + "typeString": "contract SushiLegacyAdapter" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "4611", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "42", + "end": "35594", + "id": "4612", + "length": "7", + "line": "996", + "parentIndex": "4609", + "start": "35588" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "4613", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "42", + "end": "35594", + "id": "4614", + "length": "7", + "line": "996", + "parentIndex": "4611", + "start": "35588" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "4609", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "42", + "end": "35600", + "id": "4610", + "length": "13", + "line": "996", + "parentIndex": "4595", + "start": "35588" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_address]$_t_rational_0_by_1]$", + "typeString": "index[address:int_const 0]" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "4607", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "28", + "end": "35574", + "id": "4608", + "length": "1", + "line": "996", + "parentIndex": "4603", + "start": "35574" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "id": "4603", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4605", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4605", + "src": { + "column": "23", + "end": "35572", + "id": "4606", + "length": "4", + "line": "996", + "parentIndex": "4603", + "start": "35569" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "23", + "end": "35575", + "id": "4604", + "length": "7", + "line": "996", + "parentIndex": "4599", + "start": "35569" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_address]$_t_rational_0_by_1]$", + "typeString": "index[address:int_const 0]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ] + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4601", + "name": "IERC20", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "35567", + "id": "4602", + "length": "6", + "line": "996", + "parentIndex": "4599", + "start": "35562" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "4599", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "35576", + "id": "4600", + "length": "15", + "line": "996", + "parentIndex": "4597", + "start": "35562" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$", + "typeString": "function(index[address:int_const 0])" + } + } + }, + "id": "4597", + "memberName": "balanceOf", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "35586", + "id": "4598", + "length": "25", + "line": "996", + "parentIndex": "4595", + "start": "35562" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$", + "typeString": "function(index[address:int_const 0])" + } + } + }, + "id": "4595", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "35601", + "id": "4596", + "length": "40", + "line": "996", + "parentIndex": "4559", + "start": "35562" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$", + "typeString": "function(function(address))" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_address]$_t_rational_0_by_1]$", + "typeString": "index[address:int_const 0]" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "4571", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "24", + "end": "35347", + "id": "4572", + "length": "1", + "line": "989", + "parentIndex": "4567", + "start": "35347" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "id": "4567", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4569", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4569", + "src": { + "column": "19", + "end": "35345", + "id": "4570", + "length": "4", + "line": "989", + "parentIndex": "4567", + "start": "35342" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "19", + "end": "35348", + "id": "4568", + "length": "7", + "line": "989", + "parentIndex": "4563", + "start": "35342" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_address]$_t_rational_0_by_1]$", + "typeString": "index[address:int_const 0]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ] + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4565", + "name": "IERC20", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "35340", + "id": "4566", + "length": "6", + "line": "989", + "parentIndex": "4563", + "start": "35335" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "4563", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "35349", + "id": "4564", + "length": "15", + "line": "989", + "parentIndex": "4561", + "start": "35335" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$", + "typeString": "function(index[address:int_const 0])" + } + } + }, + "id": "4561", + "memberName": "safeTransfer", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "35362", + "id": "4562", + "length": "28", + "line": "989", + "parentIndex": "4559", + "start": "35335" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$", + "typeString": "function(index[address:int_const 0])" + } + } + }, + "id": "4559", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "35615", + "id": "4560", + "length": "281", + "line": "989", + "parentIndex": "4557", + "start": "35335" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$_t_function_$_t_function_$_t_[_[$_t_address]$_t_rational_0_by_1]$_t_[_[$_t_address]$_t_rational_1_by_1]$_t_function_$_t_function_$_t_address$", + "typeString": "function(function(function(),index[address:int_const 0],index[address:int_const 1],function(function(),index[address:int_const 0],index[address:int_const 1])),function(function(address)))" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4555", + "name": "sendTokens", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4555", + "src": { + "column": "12", + "end": "35318", + "id": "4556", + "length": "10", + "line": "988", + "parentIndex": "4553", + "start": "35309" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "4553", + "nodeType": "IF_STATEMENT", + "src": { + "end": "35626", + "id": "4554", + "length": "322", + "line": "988", + "parentIndex": "4500", + "start": "35305" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4621", + "name": "amounts", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4502", + "src": { + "column": "14", + "end": "35648", + "id": "4622", + "length": "7", + "line": "999", + "parentIndex": "4617", + "start": "35642" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": "4623", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4623", + "src": { + "column": "23", + "end": "35654", + "id": "4624", + "length": "4", + "line": "999", + "parentIndex": "4617", + "start": "35651" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "4625", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4625", + "src": { + "column": "29", + "end": "35658", + "id": "4626", + "length": "2", + "line": "999", + "parentIndex": "4617", + "start": "35657" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4619", + "name": "_swap", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "35640", + "id": "4620", + "length": "5", + "line": "999", + "parentIndex": "4617", + "start": "35636" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "4617", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "35659", + "id": "4618", + "length": "24", + "line": "999", + "parentIndex": "4500", + "start": "35636" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_address$_t_address$", + "typeString": "function(uint256,address,address)" + } + } + } + ] + }, + "id": "4469", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_swapExactTokensForTokens", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "4471", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "4473", + "name": "amountIn", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4473", + "src": { + "column": "8", + "end": "34785", + "id": "4474", + "length": "16", + "line": "971", + "parentIndex": "4471", + "start": "34770" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4475", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "34776", + "id": "4476", + "length": "7", + "line": "971", + "parentIndex": "4473", + "start": "34770" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4477", + "name": "amountOutMin", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4477", + "src": { + "column": "8", + "end": "34815", + "id": "4478", + "length": "20", + "line": "972", + "parentIndex": "4471", + "start": "34796" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4479", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "34802", + "id": "4480", + "length": "7", + "line": "972", + "parentIndex": "4477", + "start": "34796" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4481", + "name": "path", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4481", + "src": { + "column": "8", + "end": "34846", + "id": "4482", + "length": "21", + "line": "973", + "parentIndex": "4471", + "start": "34826" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "4483", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "34832", + "id": "4485", + "length": "7", + "line": "973", + "parentIndex": "4481", + "start": "34826" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4486", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4486", + "src": { + "column": "8", + "end": "34866", + "id": "4487", + "length": "10", + "line": "974", + "parentIndex": "4471", + "start": "34857" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "4488", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "34863", + "id": "4489", + "length": "7", + "line": "974", + "parentIndex": "4486", + "start": "34857" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4490", + "name": "sendTokens", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4490", + "src": { + "column": "8", + "end": "34891", + "id": "4491", + "length": "15", + "line": "975", + "parentIndex": "4471", + "start": "34877" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "4492", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "34880", + "id": "4493", + "length": "4", + "line": "975", + "parentIndex": "4490", + "start": "34877" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "34891", + "id": "4472", + "length": "122", + "line": "971", + "parentIndex": "4469", + "start": "34770" + } + }, + "returnParameters": { + "id": "4494", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "4496", + "name": "amountOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4496", + "src": { + "column": "24", + "end": "34933", + "id": "4497", + "length": "17", + "line": "976", + "parentIndex": "4494", + "start": "34917" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4498", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "34923", + "id": "4499", + "length": "7", + "line": "976", + "parentIndex": "4496", + "start": "34917" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "34933", + "id": "4495", + "length": "17", + "line": "976", + "parentIndex": "4469", + "start": "34917" + } + }, + "scope": "4454", + "src": { + "column": "4", + "end": "35666", + "id": "4470", + "length": "941", + "line": "970", + "parentIndex": "4454", + "start": "34726" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$_t_address$_t_address$_t_bool$", + "typeString": "function(uint256,uint256,address,address,bool)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "4647", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "23", + "end": "36723", + "id": "4648", + "length": "842", + "line": "1007", + "parentIndex": "4628", + "start": "35882" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.For", + "value": { + "body": { + "id": "4673", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "50", + "end": "36717", + "id": "4674", + "length": "784", + "line": "1008", + "parentIndex": "4649", + "start": "35934" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "4675", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4683", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "52", + "end": "35988", + "id": "4684", + "length": "1", + "line": "1009", + "parentIndex": "4679", + "start": "35988" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4679", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4681", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4101", + "src": { + "column": "47", + "end": "35986", + "id": "4682", + "length": "4", + "line": "1009", + "parentIndex": "4679", + "start": "35983" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "47", + "end": "35989", + "id": "4680", + "length": "7", + "line": "1009", + "parentIndex": "4675", + "start": "35983" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4689", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4691", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "61", + "end": "35997", + "id": "4692", + "length": "1", + "line": "1009", + "parentIndex": "4689", + "start": "35997" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "ADDITION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "4693", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "65", + "end": "36001", + "id": "4694", + "length": "1", + "line": "1009", + "parentIndex": "4689", + "start": "36001" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "61", + "end": "36001", + "id": "4690", + "length": "5", + "line": "1009", + "parentIndex": "4685", + "start": "35997" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4685", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4687", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4101", + "src": { + "column": "56", + "end": "35995", + "id": "4688", + "length": "4", + "line": "1009", + "parentIndex": "4685", + "start": "35992" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "56", + "end": "36002", + "id": "4686", + "length": "11", + "line": "1009", + "parentIndex": "4675", + "start": "35992" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_address]$_t_uint256]$", + "typeString": "index[address:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + } + ], + "id": "4677", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "46", + "end": "36003", + "id": "4678", + "length": "22", + "line": "1009", + "parentIndex": "4649", + "start": "35982" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_[_[$_t_address]$_t_uint256]$_$_t_[_[$_t_address]$_t_uint256]$$", + "typeString": "tuple(index[address:uint256],index[address:uint256])" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "36004", + "id": "4676", + "length": "57", + "line": "1009", + "parentIndex": "4673", + "start": "35948" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "4695", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4703", + "name": "input", + "nodeType": "IDENTIFIER", + "src": { + "column": "61", + "end": "36071", + "id": "4704", + "length": "5", + "line": "1010", + "parentIndex": "4697", + "start": "36067" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "id": "4705", + "name": "output", + "nodeType": "IDENTIFIER", + "src": { + "column": "68", + "end": "36079", + "id": "4706", + "length": "6", + "line": "1010", + "parentIndex": "4697", + "start": "36074" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4701", + "name": "UniswapV2Library", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3448", + "src": { + "column": "33", + "end": "36054", + "id": "4702", + "length": "16", + "line": "1010", + "parentIndex": "4699", + "start": "36039" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_UniswapV2Library_$3448", + "typeString": "contract UniswapV2Library" + } + } + }, + "id": "4699", + "memberName": "sortTokens", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "33", + "end": "36065", + "id": "4700", + "length": "27", + "line": "1010", + "parentIndex": "4697", + "start": "36039" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_UniswapV2Library_$3448", + "typeString": "contract UniswapV2Library" + } + } + }, + "id": "4697", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "33", + "end": "36080", + "id": "4698", + "length": "42", + "line": "1010", + "parentIndex": "4695", + "start": "36039" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$", + "typeString": "function(function(),function(function()))" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "36081", + "id": "4696", + "length": "64", + "line": "1010", + "parentIndex": "4673", + "start": "36018" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "4709" + ], + "declarations": [ + { + "id": "4709", + "mutability": "MUTABLE", + "name": "amountOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4673", + "src": { + "column": "12", + "end": "36111", + "id": "4710", + "length": "17", + "line": "1011", + "parentIndex": "4707", + "start": "36095" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4711", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "36101", + "id": "4712", + "length": "7", + "line": "1011", + "parentIndex": "4709", + "start": "36095" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "4707", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4717", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4719", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "40", + "end": "36123", + "id": "4720", + "length": "1", + "line": "1011", + "parentIndex": "4717", + "start": "36123" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "ADDITION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "4721", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "44", + "end": "36127", + "id": "4722", + "length": "1", + "line": "1011", + "parentIndex": "4717", + "start": "36127" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "40", + "end": "36127", + "id": "4718", + "length": "5", + "line": "1011", + "parentIndex": "4713", + "start": "36123" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4713", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4715", + "name": "amounts", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4112", + "src": { + "column": "32", + "end": "36121", + "id": "4716", + "length": "7", + "line": "1011", + "parentIndex": "4713", + "start": "36115" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "32", + "end": "36128", + "id": "4714", + "length": "14", + "line": "1011", + "parentIndex": "4707", + "start": "36115" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$_t_uint256]$", + "typeString": "index[uint256:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "36129", + "id": "4708", + "length": "35", + "line": "1011", + "parentIndex": "4673", + "start": "36095" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "4723", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Conditional", + "value": {} + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "36285", + "id": "4724", + "length": "143", + "line": "1012", + "parentIndex": "4673", + "start": "36143" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "4760" + ], + "declarations": [ + { + "id": "4760", + "mutability": "MUTABLE", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4673", + "src": { + "column": "12", + "end": "36308", + "id": "4761", + "length": "10", + "line": "1015", + "parentIndex": "4758", + "start": "36299" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "4762", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "36305", + "id": "4763", + "length": "7", + "line": "1015", + "parentIndex": "4760", + "start": "36299" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "4758", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Conditional", + "value": {} + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "36538", + "id": "4759", + "length": "240", + "line": "1015", + "parentIndex": "4673", + "start": "36299" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4825", + "name": "amount0Out", + "nodeType": "IDENTIFIER", + "src": { + "column": "19", + "end": "36675", + "id": "4826", + "length": "10", + "line": "1025", + "parentIndex": "4803", + "start": "36666" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "id": "4827", + "name": "amount1Out", + "nodeType": "IDENTIFIER", + "src": { + "column": "31", + "end": "36687", + "id": "4828", + "length": "10", + "line": "1025", + "parentIndex": "4803", + "start": "36678" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + ], + "id": "4829", + "name": "to", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4758", + "src": { + "column": "43", + "end": "36691", + "id": "4830", + "length": "2", + "line": "1025", + "parentIndex": "4803", + "start": "36690" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "4837", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "57", + "end": "36704", + "id": "4838", + "length": "1", + "line": "1025", + "parentIndex": "4831", + "start": "36704" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.NewExpression", + "value": { + "id": "4833", + "nodeType": "NEW_EXPRESSION", + "src": { + "column": "47", + "end": "36702", + "id": "4834", + "length": "9", + "line": "1025", + "parentIndex": "4831", + "start": "36694" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "4835", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "51", + "end": "36702", + "id": "4836", + "length": "5", + "line": "1025", + "parentIndex": "4833", + "start": "36698" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + }, + "id": "4831", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "47", + "end": "36705", + "id": "4832", + "length": "12", + "line": "1025", + "parentIndex": "4803", + "start": "36694" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$", + "typeString": "function(function(),function(function()),function(function(),function(function())),function(function(),function(function()),function(function(),function(function()))))" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_function_$$$", + "typeString": "function(function(),function(function()))" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_function_$$$$_t_function_$_t_function_$$$_t_function_$_t_function_$$$$", + "typeString": "function(function(),function(function()),function(function(),function(function())))" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4817", + "name": "factory", + "nodeType": "IDENTIFIER", + "src": { + "column": "41", + "end": "36615", + "id": "4818", + "length": "7", + "line": "1024", + "parentIndex": "4811", + "start": "36609" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "id": "4819", + "name": "input", + "nodeType": "IDENTIFIER", + "src": { + "column": "50", + "end": "36622", + "id": "4820", + "length": "5", + "line": "1024", + "parentIndex": "4811", + "start": "36618" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + ], + "id": "4821", + "name": "output", + "nodeType": "IDENTIFIER", + "src": { + "column": "57", + "end": "36630", + "id": "4822", + "length": "6", + "line": "1024", + "parentIndex": "4811", + "start": "36625" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_function_$$$", + "typeString": "function(function(),function(function()))" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_function_$$$", + "typeString": "function(function(),function(function()))" + } + ], + "id": "4823", + "name": "pairCodeHash", + "nodeType": "IDENTIFIER", + "src": { + "column": "65", + "end": "36644", + "id": "4824", + "length": "12", + "line": "1024", + "parentIndex": "4811", + "start": "36633" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_function_$$$$_t_function_$_t_function_$$$_t_function_$_t_function_$$$$", + "typeString": "function(function(),function(function()),function(function(),function(function())))" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4815", + "name": "UniswapV2Library", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "3448", + "src": { + "column": "16", + "end": "36599", + "id": "4816", + "length": "16", + "line": "1024", + "parentIndex": "4813", + "start": "36584" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_UniswapV2Library_$3448", + "typeString": "contract UniswapV2Library" + } + } + }, + "id": "4813", + "memberName": "pairFor", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "36607", + "id": "4814", + "length": "24", + "line": "1024", + "parentIndex": "4811", + "start": "36584" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_UniswapV2Library_$3448", + "typeString": "contract UniswapV2Library" + } + } + }, + "id": "4811", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "36645", + "id": "4812", + "length": "62", + "line": "1024", + "parentIndex": "4807", + "start": "36584" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$", + "typeString": "function(function(),function(function()),function(function(),function(function())),function(function(),function(function()),function(function(),function(function()))))" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4809", + "name": "IUniswapV2Pair", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "36565", + "id": "4810", + "length": "14", + "line": "1023", + "parentIndex": "4807", + "start": "36552" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "4807", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "36659", + "id": "4808", + "length": "108", + "line": "1023", + "parentIndex": "4805", + "start": "36552" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$", + "typeString": "function(function(function(),function(function()),function(function(),function(function())),function(function(),function(function()),function(function(),function(function())))))" + } + } + }, + "id": "4805", + "memberName": "swap", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "36664", + "id": "4806", + "length": "113", + "line": "1023", + "parentIndex": "4803", + "start": "36552" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$", + "typeString": "function(function(function(),function(function()),function(function(),function(function())),function(function(),function(function()),function(function(),function(function())))))" + } + } + }, + "id": "4803", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "36706", + "id": "4804", + "length": "155", + "line": "1023", + "parentIndex": "4673", + "start": "36552" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_rational_0_by_1$", + "typeString": "function(function(),function(function()),address,function(int_const 0))" + } + } + } + ] + }, + "closure": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.UnarySuffix", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4671", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "45", + "end": "35929", + "id": "4672", + "length": "1", + "line": "1008", + "parentIndex": "4669", + "start": "35929" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "4669", + "nodeType": "UNARY_OPERATION", + "operator": "INCREMENT", + "src": { + "column": "45", + "end": "35931", + "id": "4670", + "length": "3", + "line": "1008", + "parentIndex": "4628", + "start": "35929" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4657", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4659", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "24", + "end": "35908", + "id": "4660", + "length": "1", + "line": "1008", + "parentIndex": "4657", + "start": "35908" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "4661", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "4665", + "name": "path", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4665", + "src": { + "column": "28", + "end": "35915", + "id": "4666", + "length": "4", + "line": "1008", + "parentIndex": "4663", + "start": "35912" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "id": "4663", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "28", + "end": "35922", + "id": "4664", + "length": "11", + "line": "1008", + "parentIndex": "4661", + "start": "35912" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "4667", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "42", + "end": "35926", + "id": "4668", + "length": "1", + "line": "1008", + "parentIndex": "4661", + "start": "35926" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "28", + "end": "35926", + "id": "4662", + "length": "15", + "line": "1008", + "parentIndex": "4657", + "start": "35912" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "src": { + "column": "24", + "end": "35926", + "id": "4658", + "length": "19", + "line": "1008", + "parentIndex": "4649", + "start": "35908" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "4649", + "initialiser": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "4653" + ], + "declarations": [ + { + "id": "4653", + "mutability": "MUTABLE", + "name": "i", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4647", + "src": { + "column": "13", + "end": "35905", + "id": "4654", + "length": "9", + "line": "1008", + "parentIndex": "4651", + "start": "35897" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4655", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "13", + "end": "35903", + "id": "4656", + "length": "7", + "line": "1008", + "parentIndex": "4653", + "start": "35897" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "4651", + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "13", + "end": "35906", + "id": "4652", + "length": "10", + "line": "1008", + "parentIndex": "4647", + "start": "35897" + } + } + }, + "nodeType": "FOR_STATEMENT", + "src": { + "end": "36717", + "id": "4650", + "length": "826", + "line": "1008", + "parentIndex": "4647", + "start": "35892" + } + } + } + ] + }, + "id": "4628", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_swap", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "4630", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "4632", + "name": "amounts", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4632", + "src": { + "column": "8", + "end": "35805", + "id": "4633", + "length": "24", + "line": "1004", + "parentIndex": "4630", + "start": "35782" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4634", + "name": "uint256", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "35788", + "id": "4636", + "length": "7", + "line": "1004", + "parentIndex": "4632", + "start": "35782" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4637", + "name": "path", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4637", + "src": { + "column": "8", + "end": "35836", + "id": "4638", + "length": "21", + "line": "1005", + "parentIndex": "4630", + "start": "35816" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "4639", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "35822", + "id": "4641", + "length": "7", + "line": "1005", + "parentIndex": "4637", + "start": "35816" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4642", + "name": "_to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4642", + "src": { + "column": "8", + "end": "35857", + "id": "4643", + "length": "11", + "line": "1006", + "parentIndex": "4630", + "start": "35847" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "4644", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "35853", + "id": "4645", + "length": "7", + "line": "1006", + "parentIndex": "4642", + "start": "35847" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "35857", + "id": "4631", + "length": "76", + "line": "1004", + "parentIndex": "4628", + "start": "35782" + } + }, + "returnParameters": { + "id": "4646", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "36723", + "id": "4629", + "length": "966", + "line": "1003", + "parentIndex": "4628", + "start": "35758" + } + }, + "scope": "4454", + "src": { + "column": "4", + "end": "36723", + "id": "4629", + "length": "966", + "line": "1003", + "parentIndex": "4454", + "start": "35758" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_address$_t_address$", + "typeString": "function(uint256,address,address)" + }, + "virtual": true, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "36725", + "length": "2094", + "line": "967", + "parentIndex": "4404", + "start": "34632" + } + } + } + ] + }, + "src": { + "id": 4405, + "line": 967, + "start": 34632, + "end": 36725, + "length": 2094, + "parent_index": 263 + } + }, + { + "id": 4839, + "license": "MIT", + "name": "ITridentRouter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ITridentRouter.sol", + "exported_symbols": [ + { + "id": 4839, + "name": "ITridentRouter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ITridentRouter.sol" + }, + { + "id": 4404, + "name": "IPool", + "absolute_path": "IPool.sol" + }, + { + "id": 4404, + "name": "IBentoBoxMinimal", + "absolute_path": "IBentoBoxMinimal.sol" + }, + { + "id": 4404, + "name": "IERC20", + "absolute_path": "IERC20.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "4873", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "36796", + "id": "4874", + "length": "23", + "line": "1032", + "parentIndex": "4839", + "start": "36774" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IPool.sol", + "file": "./IPool.sol", + "id": "4891", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "4839", + "sourceUnit": "4404", + "src": { + "end": "36819", + "length": "21", + "line": "1034", + "parentIndex": "4839", + "start": "36799" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IBentoBoxMinimal.sol", + "file": "./IBentoBoxMinimal.sol", + "id": "4892", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "4839", + "sourceUnit": "4404", + "src": { + "end": "36852", + "length": "32", + "line": "1035", + "parentIndex": "4839", + "start": "36821" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IERC20.sol", + "file": "./IERC20.sol", + "id": "4893", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "4839", + "sourceUnit": "4404", + "src": { + "end": "36875", + "length": "22", + "line": "1036", + "parentIndex": "4839", + "start": "36854" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "contractDependencies": [ + "4891", + "4892", + "4893" + ], + "fullyImplemented": true, + "id": "4911", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "4911", + "4891", + "4892", + "4893" + ], + "name": "ITridentRouter", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", + "value": { + "canonicalName": "ITridentRouter.Path", + "id": "4913", + "members": [ + { + "id": "4915", + "name": "pool", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4915", + "src": { + "column": "8", + "end": "36986", + "id": "4916", + "length": "13", + "line": "1041", + "parentIndex": "4913", + "start": "36974" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "4917", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "36980", + "id": "4918", + "length": "7", + "line": "1041", + "parentIndex": "4915", + "start": "36974" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4919", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4919", + "src": { + "column": "8", + "end": "37006", + "id": "4920", + "length": "11", + "line": "1042", + "parentIndex": "4913", + "start": "36996" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "4921", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37000", + "id": "4922", + "length": "5", + "line": "1042", + "parentIndex": "4919", + "start": "36996" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "name": "Path", + "nodeType": "STRUCT_DEFINITION", + "src": { + "column": "4", + "end": "37012", + "id": "4914", + "length": "61", + "line": "1040", + "parentIndex": "4839", + "start": "36952" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_Path_$4913", + "typeString": "struct ITridentRouter.Path" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", + "value": { + "canonicalName": "ITridentRouter.ExactInputSingleParams", + "id": "4924", + "members": [ + { + "id": "4926", + "name": "amountIn", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4926", + "src": { + "column": "8", + "end": "37075", + "id": "4927", + "length": "17", + "line": "1046", + "parentIndex": "4924", + "start": "37059" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4928", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37065", + "id": "4929", + "length": "7", + "line": "1046", + "parentIndex": "4926", + "start": "37059" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4930", + "name": "amountOutMinimum", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4930", + "src": { + "column": "8", + "end": "37109", + "id": "4931", + "length": "25", + "line": "1047", + "parentIndex": "4924", + "start": "37085" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4932", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37091", + "id": "4933", + "length": "7", + "line": "1047", + "parentIndex": "4930", + "start": "37085" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4934", + "name": "pool", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4934", + "src": { + "column": "8", + "end": "37131", + "id": "4935", + "length": "13", + "line": "1048", + "parentIndex": "4924", + "start": "37119" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "4936", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37125", + "id": "4937", + "length": "7", + "line": "1048", + "parentIndex": "4934", + "start": "37119" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4938", + "name": "tokenIn", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4938", + "src": { + "column": "8", + "end": "37156", + "id": "4939", + "length": "16", + "line": "1049", + "parentIndex": "4924", + "start": "37141" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "4940", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37147", + "id": "4941", + "length": "7", + "line": "1049", + "parentIndex": "4938", + "start": "37141" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4942", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4942", + "src": { + "column": "8", + "end": "37176", + "id": "4943", + "length": "11", + "line": "1050", + "parentIndex": "4924", + "start": "37166" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "4944", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37170", + "id": "4945", + "length": "5", + "line": "1050", + "parentIndex": "4942", + "start": "37166" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "name": "ExactInputSingleParams", + "nodeType": "STRUCT_DEFINITION", + "src": { + "column": "4", + "end": "37182", + "id": "4925", + "length": "164", + "line": "1045", + "parentIndex": "4839", + "start": "37019" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputSingleParams_$4924", + "typeString": "struct ITridentRouter.ExactInputSingleParams" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", + "value": { + "canonicalName": "ITridentRouter.ExactInputParams", + "id": "4947", + "members": [ + { + "id": "4949", + "name": "tokenIn", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4949", + "src": { + "column": "8", + "end": "37238", + "id": "4950", + "length": "16", + "line": "1054", + "parentIndex": "4947", + "start": "37223" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "4951", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37229", + "id": "4952", + "length": "7", + "line": "1054", + "parentIndex": "4949", + "start": "37223" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4953", + "name": "amountIn", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4953", + "src": { + "column": "8", + "end": "37264", + "id": "4954", + "length": "17", + "line": "1055", + "parentIndex": "4947", + "start": "37248" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4955", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37254", + "id": "4956", + "length": "7", + "line": "1055", + "parentIndex": "4953", + "start": "37248" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4957", + "name": "amountOutMinimum", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4957", + "src": { + "column": "8", + "end": "37298", + "id": "4958", + "length": "25", + "line": "1056", + "parentIndex": "4947", + "start": "37274" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4959", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37280", + "id": "4960", + "length": "7", + "line": "1056", + "parentIndex": "4957", + "start": "37274" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4961", + "name": "path", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4961", + "src": { + "column": "8", + "end": "37319", + "id": "4962", + "length": "12", + "line": "1057", + "parentIndex": "4947", + "start": "37308" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_Path_$4913", + "typeString": "struct ITridentRouter.Path" + }, + "typeName": { + "id": "4963", + "name": "Path", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "4966", + "name": "Path", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "4913", + "src": { + "column": "8", + "end": "37311", + "id": "4967", + "length": "4", + "line": "1057", + "parentIndex": "4963", + "start": "37308" + } + }, + "referencedDeclaration": "4913", + "src": { + "column": "8", + "end": "37311", + "id": "4965", + "length": "4", + "line": "1057", + "parentIndex": "4961", + "start": "37308" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_Path_$4913", + "typeString": "struct ITridentRouter.Path" + } + }, + "visibility": "INTERNAL" + } + ], + "name": "ExactInputParams", + "nodeType": "STRUCT_DEFINITION", + "src": { + "column": "4", + "end": "37325", + "id": "4948", + "length": "137", + "line": "1053", + "parentIndex": "4839", + "start": "37189" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", + "value": { + "canonicalName": "ITridentRouter.TokenInput", + "id": "4969", + "members": [ + { + "id": "4971", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4971", + "src": { + "column": "8", + "end": "37373", + "id": "4972", + "length": "14", + "line": "1061", + "parentIndex": "4969", + "start": "37360" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "4973", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37366", + "id": "4974", + "length": "7", + "line": "1061", + "parentIndex": "4971", + "start": "37360" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4975", + "name": "native", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4975", + "src": { + "column": "8", + "end": "37394", + "id": "4976", + "length": "12", + "line": "1062", + "parentIndex": "4969", + "start": "37383" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "4977", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37386", + "id": "4978", + "length": "4", + "line": "1062", + "parentIndex": "4975", + "start": "37383" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4979", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4979", + "src": { + "column": "8", + "end": "37418", + "id": "4980", + "length": "15", + "line": "1063", + "parentIndex": "4969", + "start": "37404" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "4981", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37410", + "id": "4982", + "length": "7", + "line": "1063", + "parentIndex": "4979", + "start": "37404" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "name": "TokenInput", + "nodeType": "STRUCT_DEFINITION", + "src": { + "column": "4", + "end": "37424", + "id": "4970", + "length": "93", + "line": "1060", + "parentIndex": "4839", + "start": "37332" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_TokenInput_$4969", + "typeString": "struct ITridentRouter.TokenInput" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", + "value": { + "canonicalName": "ITridentRouter.InitialPath", + "id": "4984", + "members": [ + { + "id": "4986", + "name": "tokenIn", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4986", + "src": { + "column": "8", + "end": "37475", + "id": "4987", + "length": "16", + "line": "1067", + "parentIndex": "4984", + "start": "37460" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "4988", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37466", + "id": "4989", + "length": "7", + "line": "1067", + "parentIndex": "4986", + "start": "37460" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4990", + "name": "pool", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4990", + "src": { + "column": "8", + "end": "37497", + "id": "4991", + "length": "13", + "line": "1068", + "parentIndex": "4984", + "start": "37485" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "4992", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37491", + "id": "4993", + "length": "7", + "line": "1068", + "parentIndex": "4990", + "start": "37485" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4994", + "name": "native", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4994", + "src": { + "column": "8", + "end": "37518", + "id": "4995", + "length": "12", + "line": "1069", + "parentIndex": "4984", + "start": "37507" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "4996", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37510", + "id": "4997", + "length": "4", + "line": "1069", + "parentIndex": "4994", + "start": "37507" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "4998", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "4998", + "src": { + "column": "8", + "end": "37542", + "id": "4999", + "length": "15", + "line": "1070", + "parentIndex": "4984", + "start": "37528" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "5000", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37534", + "id": "5001", + "length": "7", + "line": "1070", + "parentIndex": "4998", + "start": "37528" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "5002", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5002", + "src": { + "column": "8", + "end": "37562", + "id": "5003", + "length": "11", + "line": "1071", + "parentIndex": "4984", + "start": "37552" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "5004", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37556", + "id": "5005", + "length": "5", + "line": "1071", + "parentIndex": "5002", + "start": "37552" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "name": "InitialPath", + "nodeType": "STRUCT_DEFINITION", + "src": { + "column": "4", + "end": "37568", + "id": "4985", + "length": "138", + "line": "1066", + "parentIndex": "4839", + "start": "37431" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_InitialPath_$4984", + "typeString": "struct ITridentRouter.InitialPath" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", + "value": { + "canonicalName": "ITridentRouter.PercentagePath", + "id": "5007", + "members": [ + { + "id": "5009", + "name": "tokenIn", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5009", + "src": { + "column": "8", + "end": "37622", + "id": "5010", + "length": "16", + "line": "1075", + "parentIndex": "5007", + "start": "37607" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "5011", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37613", + "id": "5012", + "length": "7", + "line": "1075", + "parentIndex": "5009", + "start": "37607" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "5013", + "name": "pool", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5013", + "src": { + "column": "8", + "end": "37644", + "id": "5014", + "length": "13", + "line": "1076", + "parentIndex": "5007", + "start": "37632" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "5015", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37638", + "id": "5016", + "length": "7", + "line": "1076", + "parentIndex": "5013", + "start": "37632" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "5017", + "name": "balancePercentage", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5017", + "src": { + "column": "8", + "end": "37678", + "id": "5018", + "length": "25", + "line": "1077", + "parentIndex": "5007", + "start": "37654" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": "5019", + "name": "uint64", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37659", + "id": "5020", + "length": "6", + "line": "1077", + "parentIndex": "5017", + "start": "37654" + }, + "typeDescription": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "5021", + "name": "data", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5021", + "src": { + "column": "8", + "end": "37740", + "id": "5022", + "length": "11", + "line": "1078", + "parentIndex": "5007", + "start": "37730" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "5023", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37734", + "id": "5024", + "length": "5", + "line": "1078", + "parentIndex": "5021", + "start": "37730" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "name": "PercentagePath", + "nodeType": "STRUCT_DEFINITION", + "src": { + "column": "4", + "end": "37746", + "id": "5008", + "length": "172", + "line": "1074", + "parentIndex": "4839", + "start": "37575" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_PercentagePath_$5007", + "typeString": "struct ITridentRouter.PercentagePath" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", + "value": { + "canonicalName": "ITridentRouter.Output", + "id": "5026", + "members": [ + { + "id": "5028", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5028", + "src": { + "column": "8", + "end": "37790", + "id": "5029", + "length": "14", + "line": "1082", + "parentIndex": "5026", + "start": "37777" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "5030", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37783", + "id": "5031", + "length": "7", + "line": "1082", + "parentIndex": "5028", + "start": "37777" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "5032", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5032", + "src": { + "column": "8", + "end": "37810", + "id": "5033", + "length": "11", + "line": "1083", + "parentIndex": "5026", + "start": "37800" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "5034", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37806", + "id": "5035", + "length": "7", + "line": "1083", + "parentIndex": "5032", + "start": "37800" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "5036", + "name": "unwrapBento", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5036", + "src": { + "column": "8", + "end": "37836", + "id": "5037", + "length": "17", + "line": "1084", + "parentIndex": "5026", + "start": "37820" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "5038", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37823", + "id": "5039", + "length": "4", + "line": "1084", + "parentIndex": "5036", + "start": "37820" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "5040", + "name": "minAmount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5040", + "src": { + "column": "8", + "end": "37863", + "id": "5041", + "length": "18", + "line": "1085", + "parentIndex": "5026", + "start": "37846" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "5042", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "37852", + "id": "5043", + "length": "7", + "line": "1085", + "parentIndex": "5040", + "start": "37846" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "name": "Output", + "nodeType": "STRUCT_DEFINITION", + "src": { + "column": "4", + "end": "37869", + "id": "5027", + "length": "117", + "line": "1081", + "parentIndex": "4839", + "start": "37753" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_Output_$5026", + "typeString": "struct ITridentRouter.Output" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", + "value": { + "canonicalName": "ITridentRouter.ComplexPathParams", + "id": "5045", + "members": [ + { + "id": "5047", + "name": "initialPath", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5047", + "src": { + "column": "8", + "end": "37936", + "id": "5048", + "length": "26", + "line": "1089", + "parentIndex": "5045", + "start": "37911" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_InitialPath_$4984", + "typeString": "struct ITridentRouter.InitialPath" + }, + "typeName": { + "id": "5049", + "name": "InitialPath", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "5052", + "name": "InitialPath", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "4984", + "src": { + "column": "8", + "end": "37921", + "id": "5053", + "length": "11", + "line": "1089", + "parentIndex": "5049", + "start": "37911" + } + }, + "referencedDeclaration": "4984", + "src": { + "column": "8", + "end": "37921", + "id": "5051", + "length": "11", + "line": "1089", + "parentIndex": "5047", + "start": "37911" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_InitialPath_$4984", + "typeString": "struct ITridentRouter.InitialPath" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "5054", + "name": "percentagePath", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5054", + "src": { + "column": "8", + "end": "37977", + "id": "5055", + "length": "32", + "line": "1090", + "parentIndex": "5045", + "start": "37946" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_PercentagePath_$5007", + "typeString": "struct ITridentRouter.PercentagePath" + }, + "typeName": { + "id": "5056", + "name": "PercentagePath", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "5059", + "name": "PercentagePath", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "5007", + "src": { + "column": "8", + "end": "37959", + "id": "5060", + "length": "14", + "line": "1090", + "parentIndex": "5056", + "start": "37946" + } + }, + "referencedDeclaration": "5007", + "src": { + "column": "8", + "end": "37959", + "id": "5058", + "length": "14", + "line": "1090", + "parentIndex": "5054", + "start": "37946" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_PercentagePath_$5007", + "typeString": "struct ITridentRouter.PercentagePath" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "5061", + "name": "output", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5061", + "src": { + "column": "8", + "end": "38002", + "id": "5062", + "length": "16", + "line": "1091", + "parentIndex": "5045", + "start": "37987" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_Output_$5026", + "typeString": "struct ITridentRouter.Output" + }, + "typeName": { + "id": "5063", + "name": "Output", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "5066", + "name": "Output", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "5026", + "src": { + "column": "8", + "end": "37992", + "id": "5067", + "length": "6", + "line": "1091", + "parentIndex": "5063", + "start": "37987" + } + }, + "referencedDeclaration": "5026", + "src": { + "column": "8", + "end": "37992", + "id": "5065", + "length": "6", + "line": "1091", + "parentIndex": "5061", + "start": "37987" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_Output_$5026", + "typeString": "struct ITridentRouter.Output" + } + }, + "visibility": "INTERNAL" + } + ], + "name": "ComplexPathParams", + "nodeType": "STRUCT_DEFINITION", + "src": { + "column": "4", + "end": "38008", + "id": "5046", + "length": "133", + "line": "1088", + "parentIndex": "4839", + "start": "37876" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "typeString": "struct ITridentRouter.ComplexPathParams" + }, + "visibility": "PUBLIC" + } + } + ], + "src": { + "end": "38010", + "length": "1090", + "line": "1039", + "parentIndex": "4839", + "start": "36921" + } + } + } + ] + }, + "src": { + "id": 4840, + "line": 1039, + "start": 36921, + "end": 38010, + "length": 1090, + "parent_index": 263 + } + }, + { + "id": 5068, + "license": "MIT", + "name": "ITridentSwapAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ITridentSwapAdapter.sol", + "exported_symbols": [ + { + "id": 5068, + "name": "ITridentSwapAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ITridentSwapAdapter.sol" + }, + { + "id": 4839, + "name": "ITridentRouter", + "absolute_path": "ITridentRouter.sol" + }, + { + "id": 4839, + "name": "BentoAdapter", + "absolute_path": "BentoAdapter.sol" + }, + { + "id": 4839, + "name": "TokenAdapter", + "absolute_path": "TokenAdapter.sol" + }, + { + "id": 4839, + "name": "ImmutableState", + "absolute_path": "ImmutableState.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "5104", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "38081", + "id": "5105", + "length": "23", + "line": "1097", + "parentIndex": "5068", + "start": "38059" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ITridentRouter.sol", + "file": "./ITridentRouter.sol", + "id": "5125", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "5068", + "sourceUnit": "4839", + "src": { + "end": "38113", + "length": "30", + "line": "1099", + "parentIndex": "5068", + "start": "38084" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "BentoAdapter.sol", + "file": "./BentoAdapter.sol", + "id": "5126", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "5068", + "sourceUnit": "4839", + "src": { + "end": "38142", + "length": "28", + "line": "1100", + "parentIndex": "5068", + "start": "38115" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "TokenAdapter.sol", + "file": "./TokenAdapter.sol", + "id": "5127", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "5068", + "sourceUnit": "4839", + "src": { + "end": "38171", + "length": "28", + "line": "1101", + "parentIndex": "5068", + "start": "38144" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ImmutableState.sol", + "file": "./ImmutableState.sol", + "id": "5128", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "5068", + "sourceUnit": "4839", + "src": { + "end": "38202", + "length": "30", + "line": "1102", + "parentIndex": "5068", + "start": "38173" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "contractDependencies": [ + "5125", + "5126", + "5127", + "5128" + ], + "fullyImplemented": true, + "id": "5142", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "5142", + "5125", + "5126", + "5127", + "5128" + ], + "name": "ITridentSwapAdapter", + "nodeType": "CONTRACT_DEFINITION", + "src": { + "end": "38236", + "length": "32", + "line": "1104", + "parentIndex": "5068", + "start": "38205" + } + } + } + ] + }, + "src": { + "id": 5069, + "line": 1104, + "start": 38205, + "end": 38236, + "length": 32, + "parent_index": 263 + } + }, + { + "id": 5143, + "license": "MIT", + "name": "TridentSwapAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/TridentSwapAdapter.sol", + "exported_symbols": [ + { + "id": 5143, + "name": "TridentSwapAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/TridentSwapAdapter.sol" + }, + { + "id": 5068, + "name": "ITridentRouter", + "absolute_path": "ITridentRouter.sol" + }, + { + "id": 5068, + "name": "BentoAdapter", + "absolute_path": "BentoAdapter.sol" + }, + { + "id": 5068, + "name": "TokenAdapter", + "absolute_path": "TokenAdapter.sol" + }, + { + "id": 5068, + "name": "ImmutableState", + "absolute_path": "ImmutableState.sol" + }, + { + "id": 5068, + "name": "ITridentSwapAdapter", + "absolute_path": "ITridentSwapAdapter.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "5181", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "38307", + "id": "5182", + "length": "23", + "line": "1108", + "parentIndex": "5143", + "start": "38285" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ITridentRouter.sol", + "file": "./ITridentRouter.sol", + "id": "5202", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "5143", + "sourceUnit": "5068", + "src": { + "end": "38113", + "length": "30", + "line": "1099", + "parentIndex": "5143", + "start": "38084" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "BentoAdapter.sol", + "file": "./BentoAdapter.sol", + "id": "5203", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "5143", + "sourceUnit": "5068", + "src": { + "end": "38142", + "length": "28", + "line": "1100", + "parentIndex": "5143", + "start": "38115" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "TokenAdapter.sol", + "file": "./TokenAdapter.sol", + "id": "5204", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "5143", + "sourceUnit": "5068", + "src": { + "end": "38171", + "length": "28", + "line": "1101", + "parentIndex": "5143", + "start": "38144" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ImmutableState.sol", + "file": "./ImmutableState.sol", + "id": "5205", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "5143", + "sourceUnit": "5068", + "src": { + "end": "38202", + "length": "30", + "line": "1102", + "parentIndex": "5143", + "start": "38173" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ITridentSwapAdapter.sol", + "file": "./ITridentSwapAdapter.sol", + "id": "5206", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "5143", + "sourceUnit": "5068", + "src": { + "end": "38344", + "length": "35", + "line": "1110", + "parentIndex": "5143", + "start": "38310" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "5210", + "name": "ITridentRouter", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "4839", + "src": { + "column": "4", + "end": "38483", + "id": "5211", + "length": "14", + "line": "1116", + "parentIndex": "5207", + "start": "38470" + } + }, + "id": "5208", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "4", + "end": "38483", + "id": "5209", + "length": "14", + "line": "1116", + "parentIndex": "5207", + "start": "38470" + } + }, + { + "baseName": { + "id": "5214", + "name": "ImmutableState", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1354", + "src": { + "column": "4", + "end": "38503", + "id": "5215", + "length": "14", + "line": "1117", + "parentIndex": "5207", + "start": "38490" + } + }, + "id": "5212", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "4", + "end": "38503", + "id": "5213", + "length": "14", + "line": "1117", + "parentIndex": "5207", + "start": "38490" + } + }, + { + "baseName": { + "id": "5218", + "name": "BentoAdapter", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1482", + "src": { + "column": "4", + "end": "38521", + "id": "5219", + "length": "12", + "line": "1118", + "parentIndex": "5207", + "start": "38510" + } + }, + "id": "5216", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "4", + "end": "38521", + "id": "5217", + "length": "12", + "line": "1118", + "parentIndex": "5207", + "start": "38510" + } + }, + { + "baseName": { + "id": "5222", + "name": "TokenAdapter", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "2401", + "src": { + "column": "4", + "end": "38539", + "id": "5223", + "length": "12", + "line": "1119", + "parentIndex": "5207", + "start": "38528" + } + }, + "id": "5220", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "4", + "end": "38539", + "id": "5221", + "length": "12", + "line": "1119", + "parentIndex": "5207", + "start": "38528" + } + } + ], + "contractDependencies": [ + "4839", + "1354", + "1482", + "2401", + "5202", + "5203", + "5204", + "5205", + "5206" + ], + "fullyImplemented": true, + "id": "5207", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "4839", + "1354", + "1482", + "2401", + "5207", + "5202", + "5203", + "5204", + "5205", + "5206" + ], + "name": "TridentSwapAdapter", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Error", + "value": { + "id": "5225", + "name": "TooLittleReceived", + "nodeType": "ERROR_DEFINITION", + "parameters": { + "id": "5227", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "38592", + "id": "5226", + "length": "26", + "line": "1122", + "parentIndex": "5225", + "start": "38567" + } + }, + "src": { + "column": "4", + "end": "38592", + "id": "5226", + "length": "26", + "line": "1122", + "parentIndex": "5207", + "start": "38567" + }, + "typeDescription": { + "typeIdentifier": "t_error$_TridentSwapAdapter_TooLittleReceived_$5225", + "typeString": "error TridentSwapAdapter.TooLittleReceived" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "5245", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "40360", + "id": "5246", + "length": "1272", + "line": "1131", + "parentIndex": "5229", + "start": "39089" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "5257", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "34", + "end": "39658", + "id": "5258", + "length": "534", + "line": "1132", + "parentIndex": "5229", + "start": "39125" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "5261" + ], + "declarations": [ + { + "id": "5261", + "mutability": "MUTABLE", + "name": "tokenBalance", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5257", + "src": { + "column": "10", + "end": "39156", + "id": "5262", + "length": "20", + "line": "1133", + "parentIndex": "5259", + "start": "39137" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "5263", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "10", + "end": "39143", + "id": "5264", + "length": "7", + "line": "1133", + "parentIndex": "5261", + "start": "39137" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "5259", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TridentSwapAdapter_$5143", + "typeString": "contract TridentSwapAdapter" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5283", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "39221", + "id": "5284", + "length": "4", + "line": "1134", + "parentIndex": "5277", + "start": "39218" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TridentSwapAdapter_$5143", + "typeString": "contract TridentSwapAdapter" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "5279", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "39216", + "id": "5280", + "length": "7", + "line": "1134", + "parentIndex": "5277", + "start": "39210" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "5281", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "39216", + "id": "5282", + "length": "7", + "line": "1134", + "parentIndex": "5279", + "start": "39210" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "5277", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "39222", + "id": "5278", + "length": "13", + "line": "1134", + "parentIndex": "5265", + "start": "39210" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5275", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5275", + "src": { + "column": "40", + "end": "39172", + "id": "5276", + "length": "6", + "line": "1133", + "parentIndex": "5273", + "start": "39167" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5273", + "memberName": "tokenIn", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "40", + "end": "39180", + "id": "5274", + "length": "14", + "line": "1133", + "parentIndex": "5269", + "start": "39167" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5271", + "name": "IERC20", + "nodeType": "IDENTIFIER", + "src": { + "column": "33", + "end": "39165", + "id": "5272", + "length": "6", + "line": "1133", + "parentIndex": "5269", + "start": "39160" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "5269", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "33", + "end": "39181", + "id": "5270", + "length": "22", + "line": "1133", + "parentIndex": "5267", + "start": "39160" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "typeString": "function(struct ITridentRouter.ExactInputParams)" + } + } + }, + "id": "5267", + "memberName": "balanceOf", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "33", + "end": "39191", + "id": "5268", + "length": "32", + "line": "1133", + "parentIndex": "5265", + "start": "39160" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "typeString": "function(struct ITridentRouter.ExactInputParams)" + } + } + }, + "id": "5265", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "33", + "end": "39236", + "id": "5266", + "length": "77", + "line": "1133", + "parentIndex": "5259", + "start": "39160" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_address$", + "typeString": "function(function(address))" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "10", + "end": "39237", + "id": "5260", + "length": "101", + "line": "1133", + "parentIndex": "5257", + "start": "39137" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "typeString": "function(struct ITridentRouter.ExactInputParams)" + }, + { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5295", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5295", + "src": { + "column": "23", + "end": "39296", + "id": "5296", + "length": "6", + "line": "1137", + "parentIndex": "5293", + "start": "39291" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5293", + "memberName": "tokenIn", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "23", + "end": "39304", + "id": "5294", + "length": "14", + "line": "1137", + "parentIndex": "5289", + "start": "39291" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5291", + "name": "IERC20", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "39289", + "id": "5292", + "length": "6", + "line": "1137", + "parentIndex": "5289", + "start": "39284" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "5289", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "39305", + "id": "5290", + "length": "22", + "line": "1137", + "parentIndex": "5285", + "start": "39284" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "typeString": "function(struct ITridentRouter.ExactInputParams)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5303", + "name": "bentoBox", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "39339", + "id": "5304", + "length": "8", + "line": "1138", + "parentIndex": "5297", + "start": "39332" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "5299", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "39330", + "id": "5300", + "length": "7", + "line": "1138", + "parentIndex": "5297", + "start": "39324" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "5301", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "39330", + "id": "5302", + "length": "7", + "line": "1138", + "parentIndex": "5299", + "start": "39324" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "5297", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "39340", + "id": "5298", + "length": "17", + "line": "1138", + "parentIndex": "5285", + "start": "39324" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "typeString": "function(struct ITridentRouter.ExactInputParams)" + }, + { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + ], + "id": "5305", + "name": "tokenBalance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5259", + "src": { + "column": "16", + "end": "39370", + "id": "5306", + "length": "12", + "line": "1139", + "parentIndex": "5285", + "start": "39359" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5287", + "name": "_transferTokens", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "39265", + "id": "5288", + "length": "15", + "line": "1136", + "parentIndex": "5285", + "start": "39251" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "5285", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "39384", + "id": "5286", + "length": "134", + "line": "1136", + "parentIndex": "5257", + "start": "39251" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$_t_function_$_t_function_$_t_uint256$", + "typeString": "function(function(struct ITridentRouter.ExactInputParams),function(function()),uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "5309", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5315", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5315", + "src": { + "column": "15", + "end": "39451", + "id": "5316", + "length": "6", + "line": "1142", + "parentIndex": "5313", + "start": "39446" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5313", + "memberName": "amountIn", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "15", + "end": "39460", + "id": "5314", + "length": "15", + "line": "1142", + "parentIndex": "5311", + "start": "39446" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + } + ], + "id": "5311", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "12", + "end": "39461", + "id": "5312", + "length": "19", + "line": "1142", + "parentIndex": "5309", + "start": "39443" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "typeString": "tuple(struct ITridentRouter.ExactInputParams)" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + }, + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:int_const 0]" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5325", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5325", + "src": { + "column": "16", + "end": "39504", + "id": "5326", + "length": "6", + "line": "1143", + "parentIndex": "5323", + "start": "39499" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5323", + "memberName": "tokenIn", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "39512", + "id": "5324", + "length": "14", + "line": "1143", + "parentIndex": "5317", + "start": "39499" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5333", + "name": "bentoBox", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "39546", + "id": "5334", + "length": "8", + "line": "1144", + "parentIndex": "5327", + "start": "39539" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "5329", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "39537", + "id": "5330", + "length": "7", + "line": "1144", + "parentIndex": "5327", + "start": "39531" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "5331", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "39537", + "id": "5332", + "length": "7", + "line": "1144", + "parentIndex": "5329", + "start": "39531" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "5327", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "39547", + "id": "5328", + "length": "17", + "line": "1144", + "parentIndex": "5317", + "start": "39531" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "5343", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "28", + "end": "39578", + "id": "5344", + "length": "1", + "line": "1145", + "parentIndex": "5337", + "start": "39578" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "id": "5337", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5341", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5341", + "src": { + "column": "16", + "end": "39571", + "id": "5342", + "length": "6", + "line": "1145", + "parentIndex": "5339", + "start": "39566" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5339", + "memberName": "path", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "39576", + "id": "5340", + "length": "11", + "line": "1145", + "parentIndex": "5337", + "start": "39566" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "16", + "end": "39579", + "id": "5338", + "length": "14", + "line": "1145", + "parentIndex": "5335", + "start": "39566" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:int_const 0]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ] + } + }, + "id": "5335", + "memberName": "pool", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "39584", + "id": "5336", + "length": "19", + "line": "1145", + "parentIndex": "5317", + "start": "39566" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:int_const 0]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + }, + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:int_const 0]" + } + ], + "id": "5345", + "name": "tokenBalance", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5259", + "src": { + "column": "16", + "end": "39614", + "id": "5346", + "length": "12", + "line": "1146", + "parentIndex": "5317", + "start": "39603" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + }, + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:int_const 0]" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "hexValue": "30", + "id": "5347", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "16", + "end": "39633", + "id": "5348", + "length": "1", + "line": "1147", + "parentIndex": "5317", + "start": "39633" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5321", + "name": "bentoBox", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1378", + "src": { + "column": "34", + "end": "39472", + "id": "5322", + "length": "8", + "line": "1142", + "parentIndex": "5319", + "start": "39465" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "5319", + "memberName": "deposit", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "34", + "end": "39480", + "id": "5320", + "length": "16", + "line": "1142", + "parentIndex": "5317", + "start": "39465" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "5317", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "34", + "end": "39647", + "id": "5318", + "length": "183", + "line": "1142", + "parentIndex": "5309", + "start": "39465" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$_t_function_$_t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$_t_uint256$_t_rational_0_by_1$", + "typeString": "function(struct ITridentRouter.ExactInputParams,function(function()),index[struct ITridentRouter.ExactInputParams:int_const 0],uint256,int_const 0)" + } + } + }, + "src": { + "column": "12", + "end": "39647", + "id": "5310", + "length": "205", + "line": "1142", + "parentIndex": "5257", + "start": "39443" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "typeString": "tuple(struct ITridentRouter.ExactInputParams)" + } + } + }, + "id": "5307", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "39648", + "id": "5308", + "length": "206", + "line": "1142", + "parentIndex": "5257", + "start": "39443" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "typeString": "tuple(struct ITridentRouter.ExactInputParams)" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "5249", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5253", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5253", + "src": { + "column": "12", + "end": "39108", + "id": "5254", + "length": "6", + "line": "1132", + "parentIndex": "5251", + "start": "39103" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5251", + "memberName": "amountIn", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "39117", + "id": "5252", + "length": "15", + "line": "1132", + "parentIndex": "5249", + "start": "39103" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "5255", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "31", + "end": "39122", + "id": "5256", + "length": "1", + "line": "1132", + "parentIndex": "5249", + "start": "39122" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "12", + "end": "39122", + "id": "5250", + "length": "20", + "line": "1132", + "parentIndex": "5247", + "start": "39103" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "5247", + "nodeType": "IF_STATEMENT", + "src": { + "end": "39658", + "id": "5248", + "length": "560", + "line": "1132", + "parentIndex": "5245", + "start": "39099" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "5351" + ], + "declarations": [ + { + "id": "5351", + "mutability": "MUTABLE", + "name": "n", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5245", + "src": { + "column": "8", + "end": "40020", + "id": "5352", + "length": "9", + "line": "1156", + "parentIndex": "5349", + "start": "40012" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "5353", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "40018", + "id": "5354", + "length": "7", + "line": "1156", + "parentIndex": "5351", + "start": "40012" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "5349", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5359", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5359", + "src": { + "column": "20", + "end": "40029", + "id": "5360", + "length": "6", + "line": "1156", + "parentIndex": "5357", + "start": "40024" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5357", + "memberName": "path", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "20", + "end": "40034", + "id": "5358", + "length": "11", + "line": "1156", + "parentIndex": "5349", + "start": "40024" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5355", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "20", + "end": "40041", + "id": "5356", + "length": "18", + "line": "1156", + "parentIndex": "5349", + "start": "40024" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "40042", + "id": "5350", + "length": "31", + "line": "1156", + "parentIndex": "5245", + "start": "40012" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.For", + "value": { + "body": { + "id": "5387", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "54", + "end": "40186", + "id": "5388", + "length": "89", + "line": "1157", + "parentIndex": "5361", + "start": "40098" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "5391", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5393", + "name": "amountOut", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "913", + "src": { + "column": "12", + "end": "40120", + "id": "5394", + "length": "9", + "line": "1158", + "parentIndex": "5391", + "start": "40112" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5421", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "68", + "end": "40168", + "id": "5422", + "length": "1", + "line": "1158", + "parentIndex": "5415", + "start": "40168" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5415", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5419", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "56", + "end": "40161", + "id": "5420", + "length": "6", + "line": "1158", + "parentIndex": "5417", + "start": "40156" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5417", + "memberName": "path", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "56", + "end": "40166", + "id": "5418", + "length": "11", + "line": "1158", + "parentIndex": "5415", + "start": "40156" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "56", + "end": "40169", + "id": "5416", + "length": "14", + "line": "1158", + "parentIndex": "5413", + "start": "40156" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5413", + "memberName": "data", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "56", + "end": "40174", + "id": "5414", + "length": "19", + "line": "1158", + "parentIndex": "5395", + "start": "40156" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5411", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "42", + "end": "40142", + "id": "5412", + "length": "1", + "line": "1158", + "parentIndex": "5405", + "start": "40142" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5405", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5409", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "30", + "end": "40135", + "id": "5410", + "length": "6", + "line": "1158", + "parentIndex": "5407", + "start": "40130" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5407", + "memberName": "path", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "30", + "end": "40140", + "id": "5408", + "length": "11", + "line": "1158", + "parentIndex": "5405", + "start": "40130" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "30", + "end": "40143", + "id": "5406", + "length": "14", + "line": "1158", + "parentIndex": "5403", + "start": "40130" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5403", + "memberName": "pool", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "30", + "end": "40148", + "id": "5404", + "length": "19", + "line": "1158", + "parentIndex": "5399", + "start": "40130" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5401", + "name": "IPool", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "40128", + "id": "5402", + "length": "5", + "line": "1158", + "parentIndex": "5399", + "start": "40124" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "5399", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "40149", + "id": "5400", + "length": "26", + "line": "1158", + "parentIndex": "5397", + "start": "40124" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + } + }, + "id": "5397", + "memberName": "swap", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "24", + "end": "40154", + "id": "5398", + "length": "31", + "line": "1158", + "parentIndex": "5395", + "start": "40124" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + } + }, + "id": "5395", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "40175", + "id": "5396", + "length": "52", + "line": "1158", + "parentIndex": "5391", + "start": "40124" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + } + }, + "src": { + "column": "12", + "end": "40175", + "id": "5392", + "length": "64", + "line": "1158", + "parentIndex": "5387", + "start": "40112" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5389", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "40176", + "id": "5390", + "length": "65", + "line": "1158", + "parentIndex": "5387", + "start": "40112" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + }, + "closure": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "5377", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5379", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "35", + "end": "40079", + "id": "5380", + "length": "1", + "line": "1157", + "parentIndex": "5377", + "start": "40079" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5385", + "name": "i", + "nodeType": "IDENTIFIER", + "src": { + "column": "50", + "end": "40094", + "id": "5386", + "length": "1", + "line": "1157", + "parentIndex": "5381", + "start": "40094" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5383", + "name": "_increment", + "nodeType": "IDENTIFIER", + "src": { + "column": "39", + "end": "40092", + "id": "5384", + "length": "10", + "line": "1157", + "parentIndex": "5381", + "start": "40083" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "5381", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "39", + "end": "40095", + "id": "5382", + "length": "13", + "line": "1157", + "parentIndex": "5377", + "start": "40083" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "src": { + "column": "35", + "end": "40095", + "id": "5378", + "length": "17", + "line": "1157", + "parentIndex": "5245", + "start": "40079" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "5371", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5373", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "28", + "end": "40072", + "id": "5374", + "length": "1", + "line": "1157", + "parentIndex": "5371", + "start": "40072" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5375", + "name": "n", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5349", + "src": { + "column": "32", + "end": "40076", + "id": "5376", + "length": "1", + "line": "1157", + "parentIndex": "5371", + "start": "40076" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "28", + "end": "40076", + "id": "5372", + "length": "5", + "line": "1157", + "parentIndex": "5361", + "start": "40072" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "5361", + "initialiser": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "5365" + ], + "declarations": [ + { + "id": "5365", + "mutability": "MUTABLE", + "name": "i", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5245", + "src": { + "column": "13", + "end": "40065", + "id": "5366", + "length": "9", + "line": "1157", + "parentIndex": "5363", + "start": "40057" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "5367", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "13", + "end": "40063", + "id": "5368", + "length": "7", + "line": "1157", + "parentIndex": "5365", + "start": "40057" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "5363", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "5369", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "25", + "end": "40069", + "id": "5370", + "length": "1", + "line": "1157", + "parentIndex": "5363", + "start": "40069" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "13", + "end": "40070", + "id": "5364", + "length": "14", + "line": "1157", + "parentIndex": "5245", + "start": "40057" + } + } + }, + "nodeType": "FOR_STATEMENT", + "src": { + "end": "40186", + "id": "5362", + "length": "135", + "line": "1157", + "parentIndex": "5245", + "start": "40052" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "5433", + "nodeType": "BLOCK", + "src": {} + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "5425", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5427", + "name": "amountOut", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "913", + "src": { + "column": "12", + "end": "40299", + "id": "5428", + "length": "9", + "line": "1161", + "parentIndex": "5425", + "start": "40291" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5431", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5431", + "src": { + "column": "24", + "end": "40308", + "id": "5432", + "length": "6", + "line": "1161", + "parentIndex": "5429", + "start": "40303" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5429", + "memberName": "amountOutMinimum", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "24", + "end": "40325", + "id": "5430", + "length": "23", + "line": "1161", + "parentIndex": "5425", + "start": "40303" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "src": { + "column": "12", + "end": "40325", + "id": "5426", + "length": "35", + "line": "1161", + "parentIndex": "5423", + "start": "40291" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "5423", + "nodeType": "IF_STATEMENT", + "src": { + "end": "40354", + "id": "5424", + "length": "68", + "line": "1161", + "parentIndex": "5245", + "start": "40287" + } + } + } + ] + }, + "id": "5229", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_exactInput", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "5231", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "5233", + "name": "params", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5233", + "src": { + "column": "25", + "end": "39029", + "id": "5234", + "length": "30", + "line": "1128", + "parentIndex": "5231", + "start": "39000" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + "typeName": { + "id": "5235", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "5237", + "name": "ExactInputParams", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "4947", + "src": { + "column": "25", + "end": "39015", + "id": "5238", + "length": "16", + "line": "1128", + "parentIndex": "5235", + "start": "39000" + } + }, + "referencedDeclaration": "4947", + "src": { + "column": "25", + "end": "39015", + "id": "5236", + "length": "16", + "line": "1128", + "parentIndex": "5233", + "start": "39000" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "25", + "end": "39029", + "id": "5232", + "length": "30", + "line": "1128", + "parentIndex": "5229", + "start": "39000" + } + }, + "returnParameters": { + "id": "5239", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "5241", + "name": "amountOut", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5241", + "src": { + "column": "17", + "end": "39082", + "id": "5242", + "length": "17", + "line": "1130", + "parentIndex": "5239", + "start": "39066" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "5243", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "17", + "end": "39072", + "id": "5244", + "length": "7", + "line": "1130", + "parentIndex": "5241", + "start": "39066" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "17", + "end": "39082", + "id": "5240", + "length": "17", + "line": "1130", + "parentIndex": "5229", + "start": "39066" + } + }, + "scope": "5207", + "src": { + "column": "4", + "end": "40360", + "id": "5230", + "length": "1382", + "line": "1128", + "parentIndex": "5207", + "start": "38979" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "typeString": "function(struct ITridentRouter.ExactInputParams)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "5446", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "68", + "end": "43276", + "id": "5447", + "length": "2299", + "line": "1170", + "parentIndex": "5435", + "start": "40978" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "5450" + ], + "declarations": [ + { + "id": "5450", + "mutability": "MUTABLE", + "name": "n", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5446", + "src": { + "column": "8", + "end": "41155", + "id": "5451", + "length": "9", + "line": "1173", + "parentIndex": "5448", + "start": "41147" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "5452", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "41153", + "id": "5453", + "length": "7", + "line": "1173", + "parentIndex": "5450", + "start": "41147" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "5448", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5458", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5458", + "src": { + "column": "20", + "end": "41164", + "id": "5459", + "length": "6", + "line": "1173", + "parentIndex": "5456", + "start": "41159" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "typeString": "struct ITridentRouter.ComplexPathParams" + } + } + }, + "id": "5456", + "memberName": "initialPath", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "20", + "end": "41176", + "id": "5457", + "length": "18", + "line": "1173", + "parentIndex": "5448", + "start": "41159" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "typeString": "struct ITridentRouter.ComplexPathParams" + } + } + }, + "id": "5454", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "20", + "end": "41183", + "id": "5455", + "length": "25", + "line": "1173", + "parentIndex": "5448", + "start": "41159" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "typeString": "struct ITridentRouter.ComplexPathParams" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "41184", + "id": "5449", + "length": "38", + "line": "1173", + "parentIndex": "5446", + "start": "41147" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.For", + "value": { + "body": { + "id": "5486", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "54", + "end": "41543", + "id": "5487", + "length": "304", + "line": "1174", + "parentIndex": "5460", + "start": "41240" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5502", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "35", + "end": "41308", + "id": "5503", + "length": "1", + "line": "1176", + "parentIndex": "5496", + "start": "41308" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5496", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5500", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "16", + "end": "41294", + "id": "5501", + "length": "6", + "line": "1176", + "parentIndex": "5498", + "start": "41289" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5498", + "memberName": "initialPath", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "41306", + "id": "5499", + "length": "18", + "line": "1176", + "parentIndex": "5496", + "start": "41289" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "16", + "end": "41309", + "id": "5497", + "length": "21", + "line": "1176", + "parentIndex": "5494", + "start": "41289" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5494", + "memberName": "tokenIn", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "41317", + "id": "5495", + "length": "29", + "line": "1176", + "parentIndex": "5488", + "start": "41289" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TridentSwapAdapter_$5143", + "typeString": "contract TridentSwapAdapter" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5510", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "41347", + "id": "5511", + "length": "4", + "line": "1177", + "parentIndex": "5504", + "start": "41344" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TridentSwapAdapter_$5143", + "typeString": "contract TridentSwapAdapter" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "5506", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "41342", + "id": "5507", + "length": "7", + "line": "1177", + "parentIndex": "5504", + "start": "41336" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "5508", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "41342", + "id": "5509", + "length": "7", + "line": "1177", + "parentIndex": "5506", + "start": "41336" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "5504", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "41348", + "id": "5505", + "length": "13", + "line": "1177", + "parentIndex": "5488", + "start": "41336" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5520", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "35", + "end": "41386", + "id": "5521", + "length": "1", + "line": "1178", + "parentIndex": "5514", + "start": "41386" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5514", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5518", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "16", + "end": "41372", + "id": "5519", + "length": "6", + "line": "1178", + "parentIndex": "5516", + "start": "41367" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5516", + "memberName": "initialPath", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "41384", + "id": "5517", + "length": "18", + "line": "1178", + "parentIndex": "5514", + "start": "41367" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "16", + "end": "41387", + "id": "5515", + "length": "21", + "line": "1178", + "parentIndex": "5512", + "start": "41367" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5512", + "memberName": "pool", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "41392", + "id": "5513", + "length": "26", + "line": "1178", + "parentIndex": "5488", + "start": "41367" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5530", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "35", + "end": "41430", + "id": "5531", + "length": "1", + "line": "1179", + "parentIndex": "5524", + "start": "41430" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5524", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5528", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "16", + "end": "41416", + "id": "5529", + "length": "6", + "line": "1179", + "parentIndex": "5526", + "start": "41411" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5526", + "memberName": "initialPath", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "41428", + "id": "5527", + "length": "18", + "line": "1179", + "parentIndex": "5524", + "start": "41411" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "16", + "end": "41431", + "id": "5525", + "length": "21", + "line": "1179", + "parentIndex": "5522", + "start": "41411" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5522", + "memberName": "amount", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "41438", + "id": "5523", + "length": "28", + "line": "1179", + "parentIndex": "5488", + "start": "41411" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5492", + "name": "bentoBox", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1378", + "src": { + "column": "12", + "end": "41261", + "id": "5493", + "length": "8", + "line": "1175", + "parentIndex": "5490", + "start": "41254" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "5490", + "memberName": "transfer", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "41270", + "id": "5491", + "length": "17", + "line": "1175", + "parentIndex": "5488", + "start": "41254" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "5488", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "41452", + "id": "5489", + "length": "199", + "line": "1175", + "parentIndex": "5486", + "start": "41254" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],index[struct ITridentRouter.ExactInputParams:uint256])" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5558", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "70", + "end": "41525", + "id": "5559", + "length": "1", + "line": "1181", + "parentIndex": "5552", + "start": "41525" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5552", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5556", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "51", + "end": "41511", + "id": "5557", + "length": "6", + "line": "1181", + "parentIndex": "5554", + "start": "41506" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5554", + "memberName": "initialPath", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "51", + "end": "41523", + "id": "5555", + "length": "18", + "line": "1181", + "parentIndex": "5552", + "start": "41506" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "51", + "end": "41526", + "id": "5553", + "length": "21", + "line": "1181", + "parentIndex": "5550", + "start": "41506" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5550", + "memberName": "data", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "51", + "end": "41531", + "id": "5551", + "length": "26", + "line": "1181", + "parentIndex": "5532", + "start": "41506" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5548", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "37", + "end": "41492", + "id": "5549", + "length": "1", + "line": "1181", + "parentIndex": "5542", + "start": "41492" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5542", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5546", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "18", + "end": "41478", + "id": "5547", + "length": "6", + "line": "1181", + "parentIndex": "5544", + "start": "41473" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5544", + "memberName": "initialPath", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "18", + "end": "41490", + "id": "5545", + "length": "18", + "line": "1181", + "parentIndex": "5542", + "start": "41473" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "18", + "end": "41493", + "id": "5543", + "length": "21", + "line": "1181", + "parentIndex": "5540", + "start": "41473" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5540", + "memberName": "pool", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "18", + "end": "41498", + "id": "5541", + "length": "26", + "line": "1181", + "parentIndex": "5536", + "start": "41473" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5538", + "name": "IPool", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "41471", + "id": "5539", + "length": "5", + "line": "1181", + "parentIndex": "5536", + "start": "41467" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "5536", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "41499", + "id": "5537", + "length": "33", + "line": "1181", + "parentIndex": "5534", + "start": "41467" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + } + }, + "id": "5534", + "memberName": "swap", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "41504", + "id": "5535", + "length": "38", + "line": "1181", + "parentIndex": "5532", + "start": "41467" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + } + }, + "id": "5532", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "41532", + "id": "5533", + "length": "66", + "line": "1181", + "parentIndex": "5486", + "start": "41467" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + } + } + ] + }, + "closure": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "5476", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5478", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "35", + "end": "41221", + "id": "5479", + "length": "1", + "line": "1174", + "parentIndex": "5476", + "start": "41221" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5484", + "name": "i", + "nodeType": "IDENTIFIER", + "src": { + "column": "50", + "end": "41236", + "id": "5485", + "length": "1", + "line": "1174", + "parentIndex": "5480", + "start": "41236" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5482", + "name": "_increment", + "nodeType": "IDENTIFIER", + "src": { + "column": "39", + "end": "41234", + "id": "5483", + "length": "10", + "line": "1174", + "parentIndex": "5480", + "start": "41225" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "5480", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "39", + "end": "41237", + "id": "5481", + "length": "13", + "line": "1174", + "parentIndex": "5476", + "start": "41225" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "src": { + "column": "35", + "end": "41237", + "id": "5477", + "length": "17", + "line": "1174", + "parentIndex": "5446", + "start": "41221" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "5470", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5472", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "28", + "end": "41214", + "id": "5473", + "length": "1", + "line": "1174", + "parentIndex": "5470", + "start": "41214" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5474", + "name": "n", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5448", + "src": { + "column": "32", + "end": "41218", + "id": "5475", + "length": "1", + "line": "1174", + "parentIndex": "5470", + "start": "41218" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "28", + "end": "41218", + "id": "5471", + "length": "5", + "line": "1174", + "parentIndex": "5460", + "start": "41214" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "5460", + "initialiser": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "5464" + ], + "declarations": [ + { + "id": "5464", + "mutability": "MUTABLE", + "name": "i", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5446", + "src": { + "column": "13", + "end": "41207", + "id": "5465", + "length": "9", + "line": "1174", + "parentIndex": "5462", + "start": "41199" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "5466", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "13", + "end": "41205", + "id": "5467", + "length": "7", + "line": "1174", + "parentIndex": "5464", + "start": "41199" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "5462", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "5468", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "25", + "end": "41211", + "id": "5469", + "length": "1", + "line": "1174", + "parentIndex": "5462", + "start": "41211" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "13", + "end": "41212", + "id": "5463", + "length": "14", + "line": "1174", + "parentIndex": "5446", + "start": "41199" + } + } + }, + "nodeType": "FOR_STATEMENT", + "src": { + "end": "41543", + "id": "5461", + "length": "350", + "line": "1174", + "parentIndex": "5446", + "start": "41194" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "5562", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5564", + "name": "n", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5448", + "src": { + "column": "8", + "end": "41622", + "id": "5565", + "length": "1", + "line": "1184", + "parentIndex": "5562", + "start": "41622" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5570", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5570", + "src": { + "column": "12", + "end": "41631", + "id": "5571", + "length": "6", + "line": "1184", + "parentIndex": "5568", + "start": "41626" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "typeString": "struct ITridentRouter.ComplexPathParams" + } + } + }, + "id": "5568", + "memberName": "percentagePath", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "41646", + "id": "5569", + "length": "21", + "line": "1184", + "parentIndex": "5566", + "start": "41626" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "typeString": "struct ITridentRouter.ComplexPathParams" + } + } + }, + "id": "5566", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "41653", + "id": "5567", + "length": "28", + "line": "1184", + "parentIndex": "5562", + "start": "41626" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "typeString": "struct ITridentRouter.ComplexPathParams" + } + } + }, + "src": { + "column": "8", + "end": "41653", + "id": "5563", + "length": "32", + "line": "1184", + "parentIndex": "5446", + "start": "41622" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5560", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "41654", + "id": "5561", + "length": "33", + "line": "1184", + "parentIndex": "5446", + "start": "41622" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.For", + "value": { + "body": { + "id": "5598", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "54", + "end": "42324", + "id": "5599", + "length": "615", + "line": "1185", + "parentIndex": "5572", + "start": "41710" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "5602" + ], + "declarations": [ + { + "id": "5602", + "mutability": "MUTABLE", + "name": "balanceShares", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5598", + "src": { + "column": "12", + "end": "41744", + "id": "5603", + "length": "21", + "line": "1186", + "parentIndex": "5600", + "start": "41724" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "5604", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "41730", + "id": "5605", + "length": "7", + "line": "1186", + "parentIndex": "5602", + "start": "41724" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "5600", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5620", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "38", + "end": "41806", + "id": "5621", + "length": "1", + "line": "1187", + "parentIndex": "5614", + "start": "41806" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5614", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5618", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "16", + "end": "41789", + "id": "5619", + "length": "6", + "line": "1187", + "parentIndex": "5616", + "start": "41784" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5616", + "memberName": "percentagePath", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "41804", + "id": "5617", + "length": "21", + "line": "1187", + "parentIndex": "5614", + "start": "41784" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "16", + "end": "41807", + "id": "5615", + "length": "24", + "line": "1187", + "parentIndex": "5612", + "start": "41784" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5612", + "memberName": "tokenIn", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "41815", + "id": "5613", + "length": "32", + "line": "1187", + "parentIndex": "5606", + "start": "41784" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TridentSwapAdapter_$5143", + "typeString": "contract TridentSwapAdapter" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5628", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "41845", + "id": "5629", + "length": "4", + "line": "1188", + "parentIndex": "5622", + "start": "41842" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TridentSwapAdapter_$5143", + "typeString": "contract TridentSwapAdapter" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "5624", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "41840", + "id": "5625", + "length": "7", + "line": "1188", + "parentIndex": "5622", + "start": "41834" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "5626", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "41840", + "id": "5627", + "length": "7", + "line": "1188", + "parentIndex": "5624", + "start": "41834" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "5622", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "41846", + "id": "5623", + "length": "13", + "line": "1188", + "parentIndex": "5606", + "start": "41834" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5610", + "name": "bentoBox", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1378", + "src": { + "column": "36", + "end": "41755", + "id": "5611", + "length": "8", + "line": "1186", + "parentIndex": "5608", + "start": "41748" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "5608", + "memberName": "balanceOf", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "36", + "end": "41765", + "id": "5609", + "length": "18", + "line": "1186", + "parentIndex": "5606", + "start": "41748" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "5606", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "36", + "end": "41860", + "id": "5607", + "length": "113", + "line": "1186", + "parentIndex": "5600", + "start": "41748" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$", + "typeString": "function(index[struct ITridentRouter.ExactInputParams:uint256],function(address))" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "41861", + "id": "5601", + "length": "138", + "line": "1186", + "parentIndex": "5598", + "start": "41724" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "5632" + ], + "declarations": [ + { + "id": "5632", + "mutability": "MUTABLE", + "name": "transferShares", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5598", + "src": { + "column": "12", + "end": "41896", + "id": "5633", + "length": "22", + "line": "1190", + "parentIndex": "5630", + "start": "41875" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "5634", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "41881", + "id": "5635", + "length": "7", + "line": "1190", + "parentIndex": "5632", + "start": "41875" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "5630", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "5636", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "5640", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5642", + "name": "balanceShares", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5600", + "src": { + "column": "38", + "end": "41913", + "id": "5643", + "length": "13", + "line": "1190", + "parentIndex": "5640", + "start": "41901" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "MULTIPLICATION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5652", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "38", + "end": "41955", + "id": "5653", + "length": "1", + "line": "1191", + "parentIndex": "5646", + "start": "41955" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5646", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5650", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "16", + "end": "41938", + "id": "5651", + "length": "6", + "line": "1191", + "parentIndex": "5648", + "start": "41933" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5648", + "memberName": "percentagePath", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "41953", + "id": "5649", + "length": "21", + "line": "1191", + "parentIndex": "5630", + "start": "41933" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "16", + "end": "41956", + "id": "5647", + "length": "24", + "line": "1191", + "parentIndex": "5630", + "start": "41933" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5644", + "memberName": "balancePercentage", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "41974", + "id": "5645", + "length": "42", + "line": "1191", + "parentIndex": "5630", + "start": "41933" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + }, + "src": { + "column": "38", + "end": "41974", + "id": "5641", + "length": "74", + "line": "1190", + "parentIndex": "5630", + "start": "41901" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "5638", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "37", + "end": "41975", + "id": "5639", + "length": "76", + "line": "1190", + "parentIndex": "5636", + "start": "41900" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_uint256$", + "typeString": "tuple(uint256)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "DIVISION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.ExprOperation", + "value": { + "id": "5655", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "3130", + "id": "5663", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "70", + "end": "41988", + "id": "5664", + "length": "2", + "line": "1191", + "parentIndex": "5657", + "start": "41987" + }, + "typeDescription": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": "5659", + "name": "uint256", + "nodeType": "IDENTIFIER", + "src": { + "column": "62", + "end": "41985", + "id": "5660", + "length": "7", + "line": "1191", + "parentIndex": "5657", + "start": "41979" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "typeName": { + "id": "5661", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "41985", + "id": "5662", + "length": "7", + "line": "1191", + "parentIndex": "5659", + "start": "41979" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "id": "5657", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "62", + "end": "41989", + "id": "5658", + "length": "11", + "line": "1191", + "parentIndex": "5630", + "start": "41979" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_10_by_1$", + "typeString": "function(int_const 10)" + } + } + }, + "nodeType": "EXPRESSION_OPERATION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "38", + "id": "5665", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "75", + "end": "41992", + "id": "5666", + "length": "1", + "line": "1191", + "parentIndex": "5655", + "start": "41992" + }, + "typeDescription": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + } + }, + "src": { + "column": "62", + "end": "41992", + "id": "5656", + "length": "14", + "line": "1191", + "parentIndex": "5630", + "start": "41979" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_10_by_1$", + "typeString": "function(int_const 10)" + } + } + }, + "src": { + "column": "37", + "end": "41992", + "id": "5637", + "length": "93", + "line": "1190", + "parentIndex": "5630", + "start": "41900" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_uint256$", + "typeString": "tuple(uint256)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "41993", + "id": "5631", + "length": "119", + "line": "1190", + "parentIndex": "5598", + "start": "41875" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5681", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "38", + "end": "42064", + "id": "5682", + "length": "1", + "line": "1193", + "parentIndex": "5675", + "start": "42064" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5675", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5679", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "16", + "end": "42047", + "id": "5680", + "length": "6", + "line": "1193", + "parentIndex": "5677", + "start": "42042" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5677", + "memberName": "percentagePath", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "42062", + "id": "5678", + "length": "21", + "line": "1193", + "parentIndex": "5675", + "start": "42042" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "16", + "end": "42065", + "id": "5676", + "length": "24", + "line": "1193", + "parentIndex": "5673", + "start": "42042" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5673", + "memberName": "tokenIn", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "42073", + "id": "5674", + "length": "32", + "line": "1193", + "parentIndex": "5667", + "start": "42042" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TridentSwapAdapter_$5143", + "typeString": "contract TridentSwapAdapter" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5689", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "42103", + "id": "5690", + "length": "4", + "line": "1194", + "parentIndex": "5683", + "start": "42100" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TridentSwapAdapter_$5143", + "typeString": "contract TridentSwapAdapter" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "5685", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "42098", + "id": "5686", + "length": "7", + "line": "1194", + "parentIndex": "5683", + "start": "42092" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "5687", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "42098", + "id": "5688", + "length": "7", + "line": "1194", + "parentIndex": "5685", + "start": "42092" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "5683", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "42104", + "id": "5684", + "length": "13", + "line": "1194", + "parentIndex": "5667", + "start": "42092" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5699", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "38", + "end": "42145", + "id": "5700", + "length": "1", + "line": "1195", + "parentIndex": "5693", + "start": "42145" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5693", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5697", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "16", + "end": "42128", + "id": "5698", + "length": "6", + "line": "1195", + "parentIndex": "5695", + "start": "42123" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5695", + "memberName": "percentagePath", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "42143", + "id": "5696", + "length": "21", + "line": "1195", + "parentIndex": "5693", + "start": "42123" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "16", + "end": "42146", + "id": "5694", + "length": "24", + "line": "1195", + "parentIndex": "5691", + "start": "42123" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5691", + "memberName": "pool", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "42151", + "id": "5692", + "length": "29", + "line": "1195", + "parentIndex": "5667", + "start": "42123" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "id": "5701", + "name": "transferShares", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5630", + "src": { + "column": "16", + "end": "42183", + "id": "5702", + "length": "14", + "line": "1196", + "parentIndex": "5667", + "start": "42170" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5671", + "name": "bentoBox", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1378", + "src": { + "column": "12", + "end": "42014", + "id": "5672", + "length": "8", + "line": "1192", + "parentIndex": "5669", + "start": "42007" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "5669", + "memberName": "transfer", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "42023", + "id": "5670", + "length": "17", + "line": "1192", + "parentIndex": "5667", + "start": "42007" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "5667", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "42197", + "id": "5668", + "length": "191", + "line": "1192", + "parentIndex": "5598", + "start": "42007" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_uint256$", + "typeString": "function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],uint256)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5729", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "38", + "end": "42293", + "id": "5730", + "length": "1", + "line": "1199", + "parentIndex": "5723", + "start": "42293" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5723", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5727", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "16", + "end": "42276", + "id": "5728", + "length": "6", + "line": "1199", + "parentIndex": "5725", + "start": "42271" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5725", + "memberName": "percentagePath", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "42291", + "id": "5726", + "length": "21", + "line": "1199", + "parentIndex": "5723", + "start": "42271" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "16", + "end": "42294", + "id": "5724", + "length": "24", + "line": "1199", + "parentIndex": "5721", + "start": "42271" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5721", + "memberName": "data", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "42299", + "id": "5722", + "length": "29", + "line": "1199", + "parentIndex": "5703", + "start": "42271" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5719", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "40", + "end": "42240", + "id": "5720", + "length": "1", + "line": "1198", + "parentIndex": "5713", + "start": "42240" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5713", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5717", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "18", + "end": "42223", + "id": "5718", + "length": "6", + "line": "1198", + "parentIndex": "5715", + "start": "42218" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5715", + "memberName": "percentagePath", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "18", + "end": "42238", + "id": "5716", + "length": "21", + "line": "1198", + "parentIndex": "5713", + "start": "42218" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "18", + "end": "42241", + "id": "5714", + "length": "24", + "line": "1198", + "parentIndex": "5711", + "start": "42218" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5711", + "memberName": "pool", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "18", + "end": "42246", + "id": "5712", + "length": "29", + "line": "1198", + "parentIndex": "5707", + "start": "42218" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5709", + "name": "IPool", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "42216", + "id": "5710", + "length": "5", + "line": "1198", + "parentIndex": "5707", + "start": "42212" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "5707", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "42247", + "id": "5708", + "length": "36", + "line": "1198", + "parentIndex": "5705", + "start": "42212" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + } + }, + "id": "5705", + "memberName": "swap", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "42252", + "id": "5706", + "length": "41", + "line": "1198", + "parentIndex": "5703", + "start": "42212" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + } + }, + "id": "5703", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "42313", + "id": "5704", + "length": "102", + "line": "1198", + "parentIndex": "5598", + "start": "42212" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + } + } + ] + }, + "closure": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "5588", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5590", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "35", + "end": "41691", + "id": "5591", + "length": "1", + "line": "1185", + "parentIndex": "5588", + "start": "41691" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5596", + "name": "i", + "nodeType": "IDENTIFIER", + "src": { + "column": "50", + "end": "41706", + "id": "5597", + "length": "1", + "line": "1185", + "parentIndex": "5592", + "start": "41706" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5594", + "name": "_increment", + "nodeType": "IDENTIFIER", + "src": { + "column": "39", + "end": "41704", + "id": "5595", + "length": "10", + "line": "1185", + "parentIndex": "5592", + "start": "41695" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "5592", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "39", + "end": "41707", + "id": "5593", + "length": "13", + "line": "1185", + "parentIndex": "5588", + "start": "41695" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "src": { + "column": "35", + "end": "41707", + "id": "5589", + "length": "17", + "line": "1185", + "parentIndex": "5446", + "start": "41691" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "5582", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5584", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "28", + "end": "41684", + "id": "5585", + "length": "1", + "line": "1185", + "parentIndex": "5582", + "start": "41684" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5586", + "name": "n", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5448", + "src": { + "column": "32", + "end": "41688", + "id": "5587", + "length": "1", + "line": "1185", + "parentIndex": "5582", + "start": "41688" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "28", + "end": "41688", + "id": "5583", + "length": "5", + "line": "1185", + "parentIndex": "5572", + "start": "41684" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "5572", + "initialiser": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "5576" + ], + "declarations": [ + { + "id": "5576", + "mutability": "MUTABLE", + "name": "i", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5446", + "src": { + "column": "13", + "end": "41677", + "id": "5577", + "length": "9", + "line": "1185", + "parentIndex": "5574", + "start": "41669" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "5578", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "13", + "end": "41675", + "id": "5579", + "length": "7", + "line": "1185", + "parentIndex": "5576", + "start": "41669" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "5574", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "5580", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "25", + "end": "41681", + "id": "5581", + "length": "1", + "line": "1185", + "parentIndex": "5574", + "start": "41681" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "13", + "end": "41682", + "id": "5575", + "length": "14", + "line": "1185", + "parentIndex": "5446", + "start": "41669" + } + } + }, + "nodeType": "FOR_STATEMENT", + "src": { + "end": "42324", + "id": "5573", + "length": "661", + "line": "1185", + "parentIndex": "5446", + "start": "41664" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "5733", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5735", + "name": "n", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5448", + "src": { + "column": "8", + "end": "42413", + "id": "5736", + "length": "1", + "line": "1203", + "parentIndex": "5733", + "start": "42413" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5741", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5741", + "src": { + "column": "12", + "end": "42422", + "id": "5742", + "length": "6", + "line": "1203", + "parentIndex": "5739", + "start": "42417" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "typeString": "struct ITridentRouter.ComplexPathParams" + } + } + }, + "id": "5739", + "memberName": "output", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "42429", + "id": "5740", + "length": "13", + "line": "1203", + "parentIndex": "5737", + "start": "42417" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "typeString": "struct ITridentRouter.ComplexPathParams" + } + } + }, + "id": "5737", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "42436", + "id": "5738", + "length": "20", + "line": "1203", + "parentIndex": "5733", + "start": "42417" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "typeString": "struct ITridentRouter.ComplexPathParams" + } + } + }, + "src": { + "column": "8", + "end": "42436", + "id": "5734", + "length": "24", + "line": "1203", + "parentIndex": "5446", + "start": "42413" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5731", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "42437", + "id": "5732", + "length": "25", + "line": "1203", + "parentIndex": "5446", + "start": "42413" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.For", + "value": { + "body": { + "id": "5769", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "54", + "end": "43270", + "id": "5770", + "length": "778", + "line": "1204", + "parentIndex": "5743", + "start": "42493" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "5773" + ], + "declarations": [ + { + "id": "5773", + "mutability": "MUTABLE", + "name": "balanceShares", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5769", + "src": { + "column": "12", + "end": "42527", + "id": "5774", + "length": "21", + "line": "1205", + "parentIndex": "5771", + "start": "42507" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "5775", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "42513", + "id": "5776", + "length": "7", + "line": "1205", + "parentIndex": "5773", + "start": "42507" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "5771", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5791", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "30", + "end": "42581", + "id": "5792", + "length": "1", + "line": "1206", + "parentIndex": "5785", + "start": "42581" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5785", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5789", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "16", + "end": "42572", + "id": "5790", + "length": "6", + "line": "1206", + "parentIndex": "5787", + "start": "42567" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5787", + "memberName": "output", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "42579", + "id": "5788", + "length": "13", + "line": "1206", + "parentIndex": "5785", + "start": "42567" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "16", + "end": "42582", + "id": "5786", + "length": "16", + "line": "1206", + "parentIndex": "5783", + "start": "42567" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5783", + "memberName": "token", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "42588", + "id": "5784", + "length": "22", + "line": "1206", + "parentIndex": "5777", + "start": "42567" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TridentSwapAdapter_$5143", + "typeString": "contract TridentSwapAdapter" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5799", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "42618", + "id": "5800", + "length": "4", + "line": "1207", + "parentIndex": "5793", + "start": "42615" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TridentSwapAdapter_$5143", + "typeString": "contract TridentSwapAdapter" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "5795", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "42613", + "id": "5796", + "length": "7", + "line": "1207", + "parentIndex": "5793", + "start": "42607" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "5797", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "16", + "end": "42613", + "id": "5798", + "length": "7", + "line": "1207", + "parentIndex": "5795", + "start": "42607" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "5793", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "42619", + "id": "5794", + "length": "13", + "line": "1207", + "parentIndex": "5777", + "start": "42607" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5781", + "name": "bentoBox", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1378", + "src": { + "column": "36", + "end": "42538", + "id": "5782", + "length": "8", + "line": "1205", + "parentIndex": "5779", + "start": "42531" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "5779", + "memberName": "balanceOf", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "36", + "end": "42548", + "id": "5780", + "length": "18", + "line": "1205", + "parentIndex": "5777", + "start": "42531" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "5777", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "36", + "end": "42633", + "id": "5778", + "length": "103", + "line": "1205", + "parentIndex": "5771", + "start": "42531" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$", + "typeString": "function(index[struct ITridentRouter.ExactInputParams:uint256],function(address))" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "42634", + "id": "5772", + "length": "128", + "line": "1205", + "parentIndex": "5769", + "start": "42507" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "5817", + "nodeType": "BLOCK", + "src": {} + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "5803", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5805", + "name": "balanceShares", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5771", + "src": { + "column": "16", + "end": "42664", + "id": "5806", + "length": "13", + "line": "1209", + "parentIndex": "5803", + "start": "42652" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5815", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "46", + "end": "42682", + "id": "5816", + "length": "1", + "line": "1209", + "parentIndex": "5809", + "start": "42682" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5809", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5813", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "32", + "end": "42673", + "id": "5814", + "length": "6", + "line": "1209", + "parentIndex": "5811", + "start": "42668" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5811", + "memberName": "output", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "32", + "end": "42680", + "id": "5812", + "length": "13", + "line": "1209", + "parentIndex": "5809", + "start": "42668" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "32", + "end": "42683", + "id": "5810", + "length": "16", + "line": "1209", + "parentIndex": "5807", + "start": "42668" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5807", + "memberName": "minAmount", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "32", + "end": "42693", + "id": "5808", + "length": "26", + "line": "1209", + "parentIndex": "5803", + "start": "42668" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + }, + "src": { + "column": "16", + "end": "42693", + "id": "5804", + "length": "42", + "line": "1209", + "parentIndex": "5801", + "start": "42652" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "5801", + "nodeType": "IF_STATEMENT", + "src": { + "end": "42738", + "id": "5802", + "length": "91", + "line": "1209", + "parentIndex": "5769", + "start": "42648" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "5830", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "46", + "end": "43031", + "id": "5831", + "length": "246", + "line": "1211", + "parentIndex": "5743", + "start": "42786" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$$$_t_function_$_t_address$$$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$$$_t_rational_0_by_1$", + "typeString": "function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],int_const 0)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5846", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "34", + "end": "42857", + "id": "5847", + "length": "1", + "line": "1213", + "parentIndex": "5840", + "start": "42857" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5840", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5844", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "20", + "end": "42848", + "id": "5845", + "length": "6", + "line": "1213", + "parentIndex": "5842", + "start": "42843" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5842", + "memberName": "output", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "20", + "end": "42855", + "id": "5843", + "length": "13", + "line": "1213", + "parentIndex": "5840", + "start": "42843" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "20", + "end": "42858", + "id": "5841", + "length": "16", + "line": "1213", + "parentIndex": "5838", + "start": "42843" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5838", + "memberName": "token", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "20", + "end": "42864", + "id": "5839", + "length": "22", + "line": "1213", + "parentIndex": "5832", + "start": "42843" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TridentSwapAdapter_$5143", + "typeString": "contract TridentSwapAdapter" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5854", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "28", + "end": "42898", + "id": "5855", + "length": "4", + "line": "1214", + "parentIndex": "5848", + "start": "42895" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_TridentSwapAdapter_$5143", + "typeString": "contract TridentSwapAdapter" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "5850", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "42893", + "id": "5851", + "length": "7", + "line": "1214", + "parentIndex": "5848", + "start": "42887" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "5852", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "20", + "end": "42893", + "id": "5853", + "length": "7", + "line": "1214", + "parentIndex": "5850", + "start": "42887" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "5848", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "20", + "end": "42899", + "id": "5849", + "length": "13", + "line": "1214", + "parentIndex": "5832", + "start": "42887" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5864", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "34", + "end": "42936", + "id": "5865", + "length": "1", + "line": "1215", + "parentIndex": "5858", + "start": "42936" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5858", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5862", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "20", + "end": "42927", + "id": "5863", + "length": "6", + "line": "1215", + "parentIndex": "5860", + "start": "42922" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5860", + "memberName": "output", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "20", + "end": "42934", + "id": "5861", + "length": "13", + "line": "1215", + "parentIndex": "5858", + "start": "42922" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "20", + "end": "42937", + "id": "5859", + "length": "16", + "line": "1215", + "parentIndex": "5856", + "start": "42922" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5856", + "memberName": "to", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "20", + "end": "42940", + "id": "5857", + "length": "19", + "line": "1215", + "parentIndex": "5832", + "start": "42922" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "hexValue": "30", + "id": "5866", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "20", + "end": "42963", + "id": "5867", + "length": "1", + "line": "1216", + "parentIndex": "5832", + "start": "42963" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": "5868", + "name": "balanceShares", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "42998", + "id": "5869", + "length": "13", + "line": "1217", + "parentIndex": "5832", + "start": "42986" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$$$_t_function_$_t_address$$$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$$$_t_rational_0_by_1$", + "typeString": "function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],int_const 0)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5836", + "name": "bentoBox", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1378", + "src": { + "column": "16", + "end": "42811", + "id": "5837", + "length": "8", + "line": "1212", + "parentIndex": "5834", + "start": "42804" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "5834", + "memberName": "withdraw", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "42820", + "id": "5835", + "length": "17", + "line": "1212", + "parentIndex": "5832", + "start": "42804" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "5832", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "43016", + "id": "5833", + "length": "213", + "line": "1212", + "parentIndex": "5830", + "start": "42804" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_rational_0_by_1$_t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_rational_0_by_1$", + "typeString": "function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],int_const 0,function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],int_const 0))" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5828", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "30", + "end": "42770", + "id": "5829", + "length": "1", + "line": "1211", + "parentIndex": "5822", + "start": "42770" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "5822", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5826", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5233", + "src": { + "column": "16", + "end": "42761", + "id": "5827", + "length": "6", + "line": "1211", + "parentIndex": "5824", + "start": "42756" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "id": "5824", + "memberName": "output", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "42768", + "id": "5825", + "length": "13", + "line": "1211", + "parentIndex": "5822", + "start": "42756" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "16", + "end": "42771", + "id": "5823", + "length": "16", + "line": "1211", + "parentIndex": "5820", + "start": "42756" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "typeString": "struct ITridentRouter.ExactInputParams" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "id": "5820", + "memberName": "unwrapBento", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "42783", + "id": "5821", + "length": "28", + "line": "1211", + "parentIndex": "5818", + "start": "42756" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "typeString": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + }, + "id": "5818", + "nodeType": "IF_STATEMENT", + "src": { + "end": "43260", + "id": "5819", + "length": "509", + "line": "1211", + "parentIndex": "5769", + "start": "42752" + } + } + } + ] + }, + "closure": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "5759", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5761", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "35", + "end": "42474", + "id": "5762", + "length": "1", + "line": "1204", + "parentIndex": "5759", + "start": "42474" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5767", + "name": "i", + "nodeType": "IDENTIFIER", + "src": { + "column": "50", + "end": "42489", + "id": "5768", + "length": "1", + "line": "1204", + "parentIndex": "5763", + "start": "42489" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5765", + "name": "_increment", + "nodeType": "IDENTIFIER", + "src": { + "column": "39", + "end": "42487", + "id": "5766", + "length": "10", + "line": "1204", + "parentIndex": "5763", + "start": "42478" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "5763", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "39", + "end": "42490", + "id": "5764", + "length": "13", + "line": "1204", + "parentIndex": "5759", + "start": "42478" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "src": { + "column": "35", + "end": "42490", + "id": "5760", + "length": "17", + "line": "1204", + "parentIndex": "5446", + "start": "42474" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "5753", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5755", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "28", + "end": "42467", + "id": "5756", + "length": "1", + "line": "1204", + "parentIndex": "5753", + "start": "42467" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5757", + "name": "n", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5448", + "src": { + "column": "32", + "end": "42471", + "id": "5758", + "length": "1", + "line": "1204", + "parentIndex": "5753", + "start": "42471" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "28", + "end": "42471", + "id": "5754", + "length": "5", + "line": "1204", + "parentIndex": "5743", + "start": "42467" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "5743", + "initialiser": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "5747" + ], + "declarations": [ + { + "id": "5747", + "mutability": "MUTABLE", + "name": "i", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5446", + "src": { + "column": "13", + "end": "42460", + "id": "5748", + "length": "9", + "line": "1204", + "parentIndex": "5745", + "start": "42452" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "5749", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "13", + "end": "42458", + "id": "5750", + "length": "7", + "line": "1204", + "parentIndex": "5747", + "start": "42452" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "5745", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "5751", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "25", + "end": "42464", + "id": "5752", + "length": "1", + "line": "1204", + "parentIndex": "5745", + "start": "42464" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "13", + "end": "42465", + "id": "5746", + "length": "14", + "line": "1204", + "parentIndex": "5446", + "start": "42452" + } + } + }, + "nodeType": "FOR_STATEMENT", + "src": { + "end": "43270", + "id": "5744", + "length": "824", + "line": "1204", + "parentIndex": "5446", + "start": "42447" + } + } + } + ] + }, + "id": "5435", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_complexPath", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "5437", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "5439", + "name": "params", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5439", + "src": { + "column": "26", + "end": "40966", + "id": "5440", + "length": "31", + "line": "1170", + "parentIndex": "5437", + "start": "40936" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "typeString": "struct ITridentRouter.ComplexPathParams" + }, + "typeName": { + "id": "5441", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "5443", + "name": "ComplexPathParams", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "5045", + "src": { + "column": "26", + "end": "40952", + "id": "5444", + "length": "17", + "line": "1170", + "parentIndex": "5441", + "start": "40936" + } + }, + "referencedDeclaration": "5045", + "src": { + "column": "26", + "end": "40952", + "id": "5442", + "length": "17", + "line": "1170", + "parentIndex": "5439", + "start": "40936" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "typeString": "struct ITridentRouter.ComplexPathParams" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "26", + "end": "40966", + "id": "5438", + "length": "31", + "line": "1170", + "parentIndex": "5435", + "start": "40936" + } + }, + "returnParameters": { + "id": "5445", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "43276", + "id": "5436", + "length": "2363", + "line": "1170", + "parentIndex": "5435", + "start": "40914" + } + }, + "scope": "5207", + "src": { + "column": "4", + "end": "43276", + "id": "5436", + "length": "2363", + "line": "1170", + "parentIndex": "5207", + "start": "40914" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_struct$_ITridentRouter_ComplexPathParams_$5045$", + "typeString": "function(struct ITridentRouter.ComplexPathParams)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "5885", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "67", + "end": "43408", + "id": "5886", + "length": "63", + "line": "1230", + "parentIndex": "5871", + "start": "43346" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Block", + "value": { + "id": "5887", + "nodeType": "UNCHECKED_BLOCK", + "src": { + "column": "8", + "end": "43402", + "id": "5888", + "length": "47", + "line": "1231", + "parentIndex": "5207", + "start": "43356" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Return", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "5891", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "5893", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5893", + "src": { + "column": "19", + "end": "43387", + "id": "5894", + "length": "1", + "line": "1232", + "parentIndex": "5891", + "start": "43387" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "ADDITION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "31", + "id": "5895", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "23", + "end": "43391", + "id": "5896", + "length": "1", + "line": "1232", + "parentIndex": "5891", + "start": "43391" + }, + "typeDescription": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + }, + "src": { + "column": "19", + "end": "43391", + "id": "5892", + "length": "5", + "line": "1232", + "parentIndex": "5887", + "start": "43387" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "functionReturnParameters": "5871", + "id": "5889", + "nodeType": "RETURN_STATEMENT", + "src": { + "column": "12", + "end": "43392", + "id": "5890", + "length": "13", + "line": "1232", + "parentIndex": "5871", + "start": "43380" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ] + } + } + ] + }, + "id": "5871", + "kind": "KIND_FUNCTION", + "name": "_increment", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "5873", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "5875", + "name": "i", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5875", + "src": { + "column": "24", + "end": "43311", + "id": "5876", + "length": "9", + "line": "1230", + "parentIndex": "5873", + "start": "43303" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "5877", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "24", + "end": "43309", + "id": "5878", + "length": "7", + "line": "1230", + "parentIndex": "5875", + "start": "43303" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "24", + "end": "43311", + "id": "5874", + "length": "9", + "line": "1230", + "parentIndex": "5871", + "start": "43303" + } + }, + "returnParameters": { + "id": "5879", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "5881", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5881", + "src": { + "column": "58", + "end": "43343", + "id": "5882", + "length": "7", + "line": "1230", + "parentIndex": "5879", + "start": "43337" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "5883", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "58", + "end": "43343", + "id": "5884", + "length": "7", + "line": "1230", + "parentIndex": "5881", + "start": "43337" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "58", + "end": "43343", + "id": "5880", + "length": "7", + "line": "1230", + "parentIndex": "5871", + "start": "43337" + } + }, + "scope": "5207", + "src": { + "column": "4", + "end": "43408", + "id": "5872", + "length": "126", + "line": "1230", + "parentIndex": "5207", + "start": "43283" + }, + "stateMutability": "PURE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$", + "typeString": "function(uint256)" + }, + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "43410", + "length": "4985", + "line": "1115", + "parentIndex": "5143", + "start": "38426" + } + } + } + ] + }, + "src": { + "id": 5144, + "line": 1115, + "start": 38426, + "end": 43410, + "length": 4985, + "parent_index": 263 + } + }, + { + "id": 5897, + "license": "MIT", + "name": "StargateAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/StargateAdapter.sol", + "exported_symbols": [ + { + "id": 5897, + "name": "StargateAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/StargateAdapter.sol" + }, + { + "id": 5143, + "name": "IStargateAdapter", + "absolute_path": "IStargateAdapter.sol" + }, + { + "id": 5965, + "name": "ImmutableState" + }, + { + "id": 5969, + "name": "IStargateReceiver" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "5937", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "43481", + "id": "5938", + "length": "23", + "line": "1239", + "parentIndex": "5897", + "start": "43459" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IStargateAdapter.sol", + "file": "./IStargateAdapter.sol", + "id": "5963", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "5897", + "sourceUnit": "5143", + "src": { + "end": "43515", + "length": "32", + "line": "1241", + "parentIndex": "5897", + "start": "43484" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "5967", + "name": "ImmutableState", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1354", + "src": { + "column": "37", + "end": "43652", + "id": "5968", + "length": "14", + "line": "1245", + "parentIndex": "5964", + "start": "43639" + } + }, + "id": "5965", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "37", + "end": "43652", + "id": "5966", + "length": "14", + "line": "1245", + "parentIndex": "5964", + "start": "43639" + } + }, + { + "baseName": { + "id": "5971", + "name": "IStargateReceiver", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "6650", + "src": { + "column": "53", + "end": "43671", + "id": "5972", + "length": "17", + "line": "1245", + "parentIndex": "5964", + "start": "43655" + } + }, + "id": "5969", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "53", + "end": "43671", + "id": "5970", + "length": "17", + "line": "1245", + "parentIndex": "5964", + "start": "43655" + } + } + ], + "contractDependencies": [ + "1354", + "5963" + ], + "fullyImplemented": true, + "id": "5964", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "1354", + "5964", + "5963" + ], + "name": "StargateAdapter", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Using", + "value": { + "id": "5974", + "libraryName": { + "id": "5980", + "name": "SafeERC20", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1854", + "src": { + "end": "43693", + "id": "5981", + "length": "9", + "line": "1246", + "parentIndex": "5974", + "start": "43685" + } + }, + "name": "SafeERC20", + "nodeType": "USING_FOR_DIRECTIVE", + "src": { + "end": "43705", + "id": "5975", + "length": "27", + "line": "1246", + "parentIndex": "5964", + "start": "43679" + }, + "typeName": { + "id": "5976", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "5978", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "2570", + "src": { + "column": "24", + "end": "43704", + "id": "5979", + "length": "6", + "line": "1246", + "parentIndex": "5976", + "start": "43699" + } + }, + "referencedDeclaration": "2570", + "src": { + "column": "24", + "end": "43704", + "id": "5977", + "length": "6", + "line": "1246", + "parentIndex": "5974", + "start": "43699" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Error", + "value": { + "id": "5983", + "name": "NotStargateRouter", + "nodeType": "ERROR_DEFINITION", + "parameters": { + "id": "5985", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "43757", + "id": "5984", + "length": "26", + "line": "1249", + "parentIndex": "5983", + "start": "43732" + } + }, + "src": { + "column": "4", + "end": "43757", + "id": "5984", + "length": "26", + "line": "1249", + "parentIndex": "5964", + "start": "43732" + }, + "typeDescription": { + "typeIdentifier": "t_error$_StargateAdapter_NotStargateRouter_$5983", + "typeString": "error StargateAdapter.NotStargateRouter" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "5987", + "name": "StargateSushiXSwapSrc", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "5989", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "5990", + "indexed": true, + "name": "srcContext", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5990", + "src": { + "column": "32", + "end": "43831", + "id": "5991", + "length": "26", + "line": "1252", + "parentIndex": "5989", + "start": "43806" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "5992", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "32", + "end": "43812", + "id": "5993", + "length": "7", + "line": "1252", + "parentIndex": "5990", + "start": "43806" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "43833", + "id": "5988", + "length": "56", + "line": "1252", + "parentIndex": "5987", + "start": "43778" + } + }, + "src": { + "column": "4", + "end": "43833", + "id": "5988", + "length": "56", + "line": "1252", + "parentIndex": "5964", + "start": "43778" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_StargateAdapter_StargateSushiXSwapSrc_\u00265987", + "typeString": "event StargateAdapter.StargateSushiXSwapSrc" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Event", + "value": { + "id": "5995", + "name": "StargateSushiXSwapDst", + "nodeType": "EVENT_DEFINITION", + "parameters": { + "id": "5997", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "5998", + "indexed": true, + "name": "srcContext", + "nodeType": "VARIABLE_DECLARATION", + "scope": "5998", + "src": { + "column": "32", + "end": "43892", + "id": "5999", + "length": "26", + "line": "1253", + "parentIndex": "5997", + "start": "43867" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "6000", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "32", + "end": "43873", + "id": "6001", + "length": "7", + "line": "1253", + "parentIndex": "5998", + "start": "43867" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6002", + "name": "failed", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6002", + "src": { + "column": "60", + "end": "43905", + "id": "6003", + "length": "11", + "line": "1253", + "parentIndex": "5997", + "start": "43895" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "6004", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "60", + "end": "43898", + "id": "6005", + "length": "4", + "line": "1253", + "parentIndex": "6002", + "start": "43895" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "4", + "end": "43907", + "id": "5996", + "length": "69", + "line": "1253", + "parentIndex": "5995", + "start": "43839" + } + }, + "src": { + "column": "4", + "end": "43907", + "id": "5996", + "length": "69", + "line": "1253", + "parentIndex": "5964", + "start": "43839" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_StargateAdapter_StargateSushiXSwapDst_\u00265995", + "typeString": "event StargateAdapter.StargateSushiXSwapDst" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Struct", + "value": { + "canonicalName": "StargateAdapter.StargateTeleportParams", + "id": "6007", + "members": [ + { + "id": "6009", + "name": "dstChainId", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6009", + "src": { + "column": "8", + "end": "43971", + "id": "6010", + "length": "18", + "line": "1256", + "parentIndex": "6007", + "start": "43954" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": "6011", + "name": "uint16", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "43959", + "id": "6012", + "length": "6", + "line": "1256", + "parentIndex": "6009", + "start": "43954" + }, + "typeDescription": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6013", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6013", + "src": { + "column": "8", + "end": "44019", + "id": "6014", + "length": "14", + "line": "1257", + "parentIndex": "6007", + "start": "44006" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "6015", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "44012", + "id": "6016", + "length": "7", + "line": "1257", + "parentIndex": "6013", + "start": "44006" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6017", + "name": "srcPoolId", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6017", + "src": { + "column": "8", + "end": "44071", + "id": "6018", + "length": "18", + "line": "1258", + "parentIndex": "6007", + "start": "44054" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6019", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "44060", + "id": "6020", + "length": "7", + "line": "1258", + "parentIndex": "6017", + "start": "44054" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6021", + "name": "dstPoolId", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6021", + "src": { + "column": "8", + "end": "44122", + "id": "6022", + "length": "18", + "line": "1259", + "parentIndex": "6007", + "start": "44105" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6023", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "44111", + "id": "6024", + "length": "7", + "line": "1259", + "parentIndex": "6021", + "start": "44105" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6025", + "name": "amount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6025", + "src": { + "column": "8", + "end": "44170", + "id": "6026", + "length": "15", + "line": "1260", + "parentIndex": "6007", + "start": "44156" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6027", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "44162", + "id": "6028", + "length": "7", + "line": "1260", + "parentIndex": "6025", + "start": "44156" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6029", + "name": "amountMin", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6029", + "src": { + "column": "8", + "end": "44217", + "id": "6030", + "length": "18", + "line": "1261", + "parentIndex": "6007", + "start": "44200" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6031", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "44206", + "id": "6032", + "length": "7", + "line": "1261", + "parentIndex": "6029", + "start": "44200" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6033", + "name": "dustAmount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6033", + "src": { + "column": "8", + "end": "44273", + "id": "6034", + "length": "19", + "line": "1262", + "parentIndex": "6007", + "start": "44255" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6035", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "44261", + "id": "6036", + "length": "7", + "line": "1262", + "parentIndex": "6033", + "start": "44255" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6037", + "name": "receiver", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6037", + "src": { + "column": "8", + "end": "44343", + "id": "6038", + "length": "17", + "line": "1263", + "parentIndex": "6007", + "start": "44327" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "6039", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "44333", + "id": "6040", + "length": "7", + "line": "1263", + "parentIndex": "6037", + "start": "44327" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6041", + "name": "to", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6041", + "src": { + "column": "8", + "end": "44390", + "id": "6042", + "length": "11", + "line": "1264", + "parentIndex": "6007", + "start": "44380" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "6043", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "44386", + "id": "6044", + "length": "7", + "line": "1264", + "parentIndex": "6041", + "start": "44380" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6045", + "name": "gas", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6045", + "src": { + "column": "8", + "end": "44479", + "id": "6046", + "length": "12", + "line": "1265", + "parentIndex": "6007", + "start": "44468" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6047", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "44474", + "id": "6048", + "length": "7", + "line": "1265", + "parentIndex": "6045", + "start": "44468" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6049", + "name": "srcContext", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6049", + "src": { + "column": "8", + "end": "44556", + "id": "6050", + "length": "19", + "line": "1266", + "parentIndex": "6007", + "start": "44538" + }, + "stateMutability": "MUTABLE", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "6051", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "44544", + "id": "6052", + "length": "7", + "line": "1266", + "parentIndex": "6049", + "start": "44538" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + } + ], + "name": "StargateTeleportParams", + "nodeType": "STRUCT_DEFINITION", + "src": { + "column": "4", + "end": "44598", + "id": "6008", + "length": "685", + "line": "1255", + "parentIndex": "5897", + "start": "43914" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "6065", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "60", + "end": "44830", + "id": "6066", + "length": "78", + "line": "1271", + "parentIndex": "6054", + "start": "44753" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + }, + { + "typeString": "type" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6079", + "name": "stargateRouter", + "nodeType": "IDENTIFIER", + "src": { + "column": "34", + "end": "44802", + "id": "6080", + "length": "14", + "line": "1272", + "parentIndex": "6073", + "start": "44789" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "6075", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "26", + "end": "44787", + "id": "6076", + "length": "7", + "line": "1272", + "parentIndex": "6073", + "start": "44781" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "6077", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "26", + "end": "44787", + "id": "6078", + "length": "7", + "line": "1272", + "parentIndex": "6075", + "start": "44781" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "6073", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "26", + "end": "44803", + "id": "6074", + "length": "23", + "line": "1272", + "parentIndex": "6067", + "start": "44781" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MetaType", + "value": { + "id": "6083", + "name": "type", + "nodeType": "IDENTIFIER", + "src": { + "column": "51", + "end": "44818", + "id": "6084", + "length": "13", + "line": "1272", + "parentIndex": "6081", + "start": "44806" + }, + "typeDescription": { + "typeString": "type" + } + } + }, + "id": "6081", + "memberName": "max", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "51", + "end": "44822", + "id": "6082", + "length": "17", + "line": "1272", + "parentIndex": "6067", + "start": "44806" + }, + "typeDescription": { + "typeString": "type" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6071", + "name": "token", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6071", + "src": { + "column": "8", + "end": "44767", + "id": "6072", + "length": "5", + "line": "1272", + "parentIndex": "6069", + "start": "44763" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "6069", + "memberName": "safeApprove", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "44779", + "id": "6070", + "length": "17", + "line": "1272", + "parentIndex": "6067", + "start": "44763" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "6067", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "44823", + "id": "6068", + "length": "61", + "line": "1272", + "parentIndex": "6065", + "start": "44763" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_$", + "typeString": "function(function(function()),type)" + } + } + } + ] + }, + "id": "6054", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "approveToStargateRouter", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "6056", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "6058", + "name": "token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6058", + "src": { + "column": "37", + "end": "44741", + "id": "6059", + "length": "12", + "line": "1271", + "parentIndex": "6056", + "start": "44730" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + "typeName": { + "id": "6060", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "6062", + "name": "IERC20", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "2570", + "src": { + "column": "37", + "end": "44735", + "id": "6063", + "length": "6", + "line": "1271", + "parentIndex": "6060", + "start": "44730" + } + }, + "referencedDeclaration": "2570", + "src": { + "column": "37", + "end": "44735", + "id": "6061", + "length": "6", + "line": "1271", + "parentIndex": "6058", + "start": "44730" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "37", + "end": "44741", + "id": "6057", + "length": "12", + "line": "1271", + "parentIndex": "6054", + "start": "44730" + } + }, + "returnParameters": { + "id": "6064", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "44830", + "id": "6055", + "length": "134", + "line": "1271", + "parentIndex": "6054", + "start": "44697" + } + }, + "scope": "5964", + "src": { + "column": "4", + "end": "44830", + "id": "6055", + "length": "134", + "line": "1271", + "parentIndex": "5964", + "start": "44697" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "6112", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "15", + "end": "46533", + "id": "6113", + "length": "881", + "line": "1287", + "parentIndex": "6086", + "start": "45653" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "6116" + ], + "declarations": [ + { + "id": "6116", + "mutability": "MUTABLE", + "name": "payload", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6112", + "src": { + "column": "8", + "end": "45682", + "id": "6117", + "length": "20", + "line": "1288", + "parentIndex": "6114", + "start": "45663" + }, + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "6118", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "45667", + "id": "6119", + "length": "5", + "line": "1288", + "parentIndex": "6116", + "start": "45663" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "6114", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6128", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6128", + "src": { + "column": "42", + "end": "45702", + "id": "6129", + "length": "6", + "line": "1288", + "parentIndex": "6126", + "start": "45697" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + "id": "6126", + "memberName": "to", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "42", + "end": "45705", + "id": "6127", + "length": "9", + "line": "1288", + "parentIndex": "6120", + "start": "45697" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + ], + "id": "6130", + "name": "actions", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6130", + "src": { + "column": "53", + "end": "45714", + "id": "6131", + "length": "7", + "line": "1288", + "parentIndex": "6120", + "start": "45708" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": "6132", + "name": "values", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6132", + "src": { + "column": "62", + "end": "45722", + "id": "6133", + "length": "6", + "line": "1288", + "parentIndex": "6120", + "start": "45717" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": "6134", + "name": "datas", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6134", + "src": { + "column": "70", + "end": "45729", + "id": "6135", + "length": "5", + "line": "1288", + "parentIndex": "6120", + "start": "45725" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6138", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6138", + "src": { + "column": "77", + "end": "45737", + "id": "6139", + "length": "6", + "line": "1288", + "parentIndex": "6136", + "start": "45732" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + "id": "6136", + "memberName": "srcContext", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "77", + "end": "45748", + "id": "6137", + "length": "17", + "line": "1288", + "parentIndex": "6120", + "start": "45732" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6124", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "31", + "end": "45688", + "id": "6125", + "length": "3", + "line": "1288", + "parentIndex": "6122", + "start": "45686" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "6122", + "memberName": "encode", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "31", + "end": "45695", + "id": "6123", + "length": "10", + "line": "1288", + "parentIndex": "6120", + "start": "45686" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "6120", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "31", + "end": "45749", + "id": "6121", + "length": "64", + "line": "1288", + "parentIndex": "6114", + "start": "45686" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_uint8$_t_uint256$_t_bytes$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "typeString": "function(struct StargateAdapter.StargateTeleportParams,uint8,uint256,bytes,struct StargateAdapter.StargateTeleportParams)" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "45750", + "id": "6115", + "length": "88", + "line": "1288", + "parentIndex": "6112", + "start": "45663" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_function_payable$_t_address$", + "typeString": "function(address) payable" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "typeString": "function(struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,function(struct StargateAdapter.StargateTeleportParams))" + }, + { + "typeIdentifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "typeString": "function(struct StargateAdapter.StargateTeleportParams)" + }, + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6150", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6150", + "src": { + "column": "12", + "end": "45829", + "id": "6151", + "length": "6", + "line": "1291", + "parentIndex": "6148", + "start": "45824" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + "id": "6148", + "memberName": "dstChainId", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "45840", + "id": "6149", + "length": "17", + "line": "1291", + "parentIndex": "6140", + "start": "45824" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6154", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6154", + "src": { + "column": "12", + "end": "45860", + "id": "6155", + "length": "6", + "line": "1292", + "parentIndex": "6152", + "start": "45855" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + "id": "6152", + "memberName": "srcPoolId", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "45870", + "id": "6153", + "length": "16", + "line": "1292", + "parentIndex": "6140", + "start": "45855" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6158", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6158", + "src": { + "column": "12", + "end": "45890", + "id": "6159", + "length": "6", + "line": "1293", + "parentIndex": "6156", + "start": "45885" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + "id": "6156", + "memberName": "dstPoolId", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "45900", + "id": "6157", + "length": "16", + "line": "1293", + "parentIndex": "6140", + "start": "45885" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PayableConversion", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6164", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "45925", + "id": "6165", + "length": "3", + "line": "1294", + "parentIndex": "6162", + "start": "45923" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "6162", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "20", + "end": "45932", + "id": "6163", + "length": "10", + "line": "1294", + "parentIndex": "6160", + "start": "45923" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "id": "6160", + "nodeType": "PAYABLE_CONVERSION", + "payable": true, + "src": { + "column": "12", + "end": "45933", + "id": "6161", + "length": "19", + "line": "1294", + "parentIndex": "6140", + "start": "45915" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Conditional", + "value": {} + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_function_payable$_t_address$", + "typeString": "function(address) payable" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6203", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6203", + "src": { + "column": "12", + "end": "46099", + "id": "6204", + "length": "6", + "line": "1298", + "parentIndex": "6201", + "start": "46094" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + "id": "6201", + "memberName": "amountMin", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "46109", + "id": "6202", + "length": "16", + "line": "1298", + "parentIndex": "6140", + "start": "46094" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "typeString": "function(struct StargateAdapter.StargateTeleportParams)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6213", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6213", + "src": { + "column": "16", + "end": "46170", + "id": "6214", + "length": "6", + "line": "1300", + "parentIndex": "6211", + "start": "46165" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + "id": "6211", + "memberName": "gas", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "46174", + "id": "6212", + "length": "10", + "line": "1300", + "parentIndex": "6205", + "start": "46165" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6217", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6217", + "src": { + "column": "16", + "end": "46240", + "id": "6218", + "length": "6", + "line": "1301", + "parentIndex": "6215", + "start": "46235" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + "id": "6215", + "memberName": "dustAmount", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "46251", + "id": "6216", + "length": "17", + "line": "1301", + "parentIndex": "6205", + "start": "46235" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6227", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6227", + "src": { + "column": "33", + "end": "46292", + "id": "6228", + "length": "6", + "line": "1302", + "parentIndex": "6225", + "start": "46287" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + "id": "6225", + "memberName": "receiver", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "33", + "end": "46301", + "id": "6226", + "length": "15", + "line": "1302", + "parentIndex": "6219", + "start": "46287" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6223", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "46272", + "id": "6224", + "length": "3", + "line": "1302", + "parentIndex": "6221", + "start": "46270" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "6221", + "memberName": "encodePacked", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "46285", + "id": "6222", + "length": "16", + "line": "1302", + "parentIndex": "6219", + "start": "46270" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "6219", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "46302", + "id": "6220", + "length": "33", + "line": "1302", + "parentIndex": "6205", + "start": "46270" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "typeString": "function(struct StargateAdapter.StargateTeleportParams)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6209", + "name": "IStargateRouter", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1012", + "src": { + "column": "12", + "end": "46138", + "id": "6210", + "length": "15", + "line": "1299", + "parentIndex": "6207", + "start": "46124" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + } + }, + "id": "6207", + "memberName": "lzTxObj", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "46146", + "id": "6208", + "length": "23", + "line": "1299", + "parentIndex": "6205", + "start": "46124" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + } + }, + "id": "6205", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "46316", + "id": "6206", + "length": "193", + "line": "1299", + "parentIndex": "6140", + "start": "46124" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "typeString": "function(struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,function(struct StargateAdapter.StargateTeleportParams))" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6237", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6237", + "src": { + "column": "29", + "end": "46353", + "id": "6238", + "length": "6", + "line": "1304", + "parentIndex": "6235", + "start": "46348" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + "id": "6235", + "memberName": "receiver", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "29", + "end": "46362", + "id": "6236", + "length": "15", + "line": "1304", + "parentIndex": "6229", + "start": "46348" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6233", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "46333", + "id": "6234", + "length": "3", + "line": "1304", + "parentIndex": "6231", + "start": "46331" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "6231", + "memberName": "encodePacked", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "46346", + "id": "6232", + "length": "16", + "line": "1304", + "parentIndex": "6229", + "start": "46331" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "6229", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "46363", + "id": "6230", + "length": "33", + "line": "1304", + "parentIndex": "6140", + "start": "46331" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "typeString": "function(struct StargateAdapter.StargateTeleportParams)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_function_payable$_t_address$", + "typeString": "function(address) payable" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + { + "typeIdentifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "typeString": "function(struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,function(struct StargateAdapter.StargateTeleportParams))" + }, + { + "typeIdentifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$", + "typeString": "function(struct StargateAdapter.StargateTeleportParams)" + } + ], + "id": "6239", + "name": "payload", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6114", + "src": { + "column": "12", + "end": "46415", + "id": "6240", + "length": "7", + "line": "1305", + "parentIndex": "6140", + "start": "46409" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCallOption", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6146", + "name": "stargateRouter", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1385", + "src": { + "column": "8", + "end": "45774", + "id": "6147", + "length": "14", + "line": "1290", + "parentIndex": "6144", + "start": "45761" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + } + }, + "id": "6144", + "memberName": "swap", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "45779", + "id": "6145", + "length": "19", + "line": "1290", + "parentIndex": "6142", + "start": "45761" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + } + }, + "id": "6142", + "kind": "FUNCTION_CALL_OPTION", + "nodeType": "FUNCTION_CALL_OPTION", + "src": { + "column": "8", + "end": "45809", + "id": "6143", + "length": "49", + "line": "1290", + "parentIndex": "6140", + "start": "45761" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + } + }, + "id": "6140", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "46425", + "id": "6141", + "length": "665", + "line": "1290", + "parentIndex": "6112", + "start": "45761" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_payable$_t_address$_t_bool$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_bytes$", + "typeString": "function(struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,function(address) payable,bool,struct StargateAdapter.StargateTeleportParams,function(struct StargateAdapter.StargateTeleportParams,struct StargateAdapter.StargateTeleportParams,function(struct StargateAdapter.StargateTeleportParams)),function(struct StargateAdapter.StargateTeleportParams),bytes)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0x0001" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "307830303031", + "id": "6247", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "35", + "end": "46469", + "id": "6248", + "length": "6", + "line": "1308", + "parentIndex": "6241", + "start": "46464" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0x0001" + }, + "value": "0x0001" + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6245", + "name": "stargateWidget", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1392", + "src": { + "column": "8", + "end": "46450", + "id": "6246", + "length": "14", + "line": "1308", + "parentIndex": "6243", + "start": "46437" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + } + } + }, + "id": "6243", + "memberName": "partnerSwap", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "46462", + "id": "6244", + "length": "26", + "line": "1308", + "parentIndex": "6241", + "start": "46437" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + } + } + }, + "id": "6241", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "46470", + "id": "6242", + "length": "34", + "line": "1308", + "parentIndex": "6112", + "start": "46437" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_rational_0_by_1$", + "typeString": "function(int_const 0x0001)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6253", + "name": "params", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6253", + "src": { + "column": "35", + "end": "46514", + "id": "6254", + "length": "6", + "line": "1310", + "parentIndex": "6251", + "start": "46509" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + }, + "id": "6251", + "memberName": "srcContext", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "35", + "end": "46525", + "id": "6252", + "length": "17", + "line": "1310", + "parentIndex": "6112", + "start": "46509" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6255", + "name": "StargateSushiXSwapSrc", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5987", + "src": { + "column": "13", + "end": "46507", + "id": "6256", + "length": "21", + "line": "1310", + "parentIndex": "6112", + "start": "46487" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_StargateAdapter_StargateSushiXSwapSrc_\u00265987", + "typeString": "event StargateAdapter.StargateSushiXSwapSrc" + } + } + }, + "id": "6249", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "46527", + "id": "6250", + "length": "46", + "line": "1310", + "parentIndex": "6086", + "start": "46482" + } + } + } + ] + }, + "id": "6086", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "_stargateTeleport", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "6088", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "6090", + "name": "params", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6090", + "src": { + "column": "8", + "end": "45541", + "id": "6091", + "length": "36", + "line": "1283", + "parentIndex": "6088", + "start": "45506" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + }, + "typeName": { + "id": "6092", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "6094", + "name": "StargateTeleportParams", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "6007", + "src": { + "column": "8", + "end": "45527", + "id": "6095", + "length": "22", + "line": "1283", + "parentIndex": "6092", + "start": "45506" + } + }, + "referencedDeclaration": "6007", + "src": { + "column": "8", + "end": "45527", + "id": "6093", + "length": "22", + "line": "1283", + "parentIndex": "6090", + "start": "45506" + }, + "typeDescription": { + "typeIdentifier": "t_struct$_StargateAdapter_StargateTeleportParams_$6007", + "typeString": "struct StargateAdapter.StargateTeleportParams" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6096", + "name": "actions", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6096", + "src": { + "column": "8", + "end": "45573", + "id": "6097", + "length": "22", + "line": "1284", + "parentIndex": "6088", + "start": "45552" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "6098", + "name": "uint8", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "45556", + "id": "6100", + "length": "5", + "line": "1284", + "parentIndex": "6096", + "start": "45552" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6101", + "name": "values", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6101", + "src": { + "column": "8", + "end": "45606", + "id": "6102", + "length": "23", + "line": "1285", + "parentIndex": "6088", + "start": "45584" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6103", + "name": "uint256", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "45590", + "id": "6105", + "length": "7", + "line": "1285", + "parentIndex": "6101", + "start": "45584" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6106", + "name": "datas", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6106", + "src": { + "column": "8", + "end": "45636", + "id": "6107", + "length": "20", + "line": "1286", + "parentIndex": "6088", + "start": "45617" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "6108", + "name": "bytes", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "45621", + "id": "6110", + "length": "5", + "line": "1286", + "parentIndex": "6106", + "start": "45617" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "45636", + "id": "6089", + "length": "131", + "line": "1283", + "parentIndex": "6086", + "start": "45506" + } + }, + "returnParameters": { + "id": "6111", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "46533", + "id": "6087", + "length": "1064", + "line": "1282", + "parentIndex": "6086", + "start": "45470" + } + }, + "scope": "5964", + "src": { + "column": "4", + "end": "46533", + "id": "6087", + "length": "1064", + "line": "1282", + "parentIndex": "5964", + "start": "45470" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_struct$_StargateAdapter_StargateTeleportParams_$6007$_t_uint8$_t_uint256$_t_bytes$", + "typeString": "function(struct StargateAdapter.StargateTeleportParams,uint8,uint256,bytes)" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "6296", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "51", + "end": "47611", + "id": "6297", + "length": "342", + "line": "1328", + "parentIndex": "6258", + "start": "47270" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "6300", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6304", + "name": "a", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6288", + "src": { + "column": "9", + "end": "47281", + "id": "6305", + "length": "1", + "line": "1329", + "parentIndex": "6302", + "start": "47281" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6306", + "name": "b", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6292", + "src": { + "column": "12", + "end": "47284", + "id": "6307", + "length": "1", + "line": "1329", + "parentIndex": "6302", + "start": "47284" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + ], + "id": "6302", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "8", + "end": "47285", + "id": "6303", + "length": "6", + "line": "1329", + "parentIndex": "6300", + "start": "47280" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_uint256_$_t_uint256$", + "typeString": "tuple(uint256,uint256)" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + }, + { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$_t_function_$_t_address$", + "typeString": "function(uint256,uint256,function(address))" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6314", + "name": "_dstChainId", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6314", + "src": { + "column": "12", + "end": "47345", + "id": "6315", + "length": "11", + "line": "1330", + "parentIndex": "6308", + "start": "47335" + }, + "typeDescription": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": "6316", + "name": "_functionType", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6316", + "src": { + "column": "12", + "end": "47372", + "id": "6317", + "length": "13", + "line": "1331", + "parentIndex": "6308", + "start": "47360" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6324", + "name": "_receiver", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6324", + "src": { + "column": "29", + "end": "47412", + "id": "6325", + "length": "9", + "line": "1332", + "parentIndex": "6318", + "start": "47404" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6322", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "47389", + "id": "6323", + "length": "3", + "line": "1332", + "parentIndex": "6320", + "start": "47387" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "6320", + "memberName": "encodePacked", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "47402", + "id": "6321", + "length": "16", + "line": "1332", + "parentIndex": "6318", + "start": "47387" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "6318", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "47413", + "id": "6319", + "length": "27", + "line": "1332", + "parentIndex": "6308", + "start": "47387" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6332", + "name": "_payload", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6332", + "src": { + "column": "23", + "end": "47446", + "id": "6333", + "length": "8", + "line": "1333", + "parentIndex": "6326", + "start": "47439" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6330", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "47430", + "id": "6331", + "length": "3", + "line": "1333", + "parentIndex": "6328", + "start": "47428" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "6328", + "memberName": "encode", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "47437", + "id": "6329", + "length": "10", + "line": "1333", + "parentIndex": "6326", + "start": "47428" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "6326", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "47447", + "id": "6327", + "length": "20", + "line": "1333", + "parentIndex": "6308", + "start": "47428" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$", + "typeString": "function(bytes)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6340", + "name": "_gas", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6340", + "src": { + "column": "16", + "end": "47506", + "id": "6341", + "length": "4", + "line": "1335", + "parentIndex": "6334", + "start": "47503" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": "6342", + "name": "_dustAmount", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6342", + "src": { + "column": "16", + "end": "47535", + "id": "6343", + "length": "11", + "line": "1336", + "parentIndex": "6334", + "start": "47525" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6350", + "name": "_receiver", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6350", + "src": { + "column": "33", + "end": "47579", + "id": "6351", + "length": "9", + "line": "1337", + "parentIndex": "6344", + "start": "47571" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6348", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "47556", + "id": "6349", + "length": "3", + "line": "1337", + "parentIndex": "6346", + "start": "47554" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "6346", + "memberName": "encodePacked", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "47569", + "id": "6347", + "length": "16", + "line": "1337", + "parentIndex": "6344", + "start": "47554" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "6344", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "47580", + "id": "6345", + "length": "27", + "line": "1337", + "parentIndex": "6334", + "start": "47554" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6338", + "name": "IStargateRouter", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1012", + "src": { + "column": "12", + "end": "47476", + "id": "6339", + "length": "15", + "line": "1334", + "parentIndex": "6336", + "start": "47462" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + } + }, + "id": "6336", + "memberName": "lzTxObj", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "47484", + "id": "6337", + "length": "23", + "line": "1334", + "parentIndex": "6334", + "start": "47462" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + } + }, + "id": "6334", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "47594", + "id": "6335", + "length": "133", + "line": "1334", + "parentIndex": "6308", + "start": "47462" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint256$_t_uint256$_t_function_$_t_address$", + "typeString": "function(uint256,uint256,function(address))" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6312", + "name": "stargateRouter", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1385", + "src": { + "column": "17", + "end": "47302", + "id": "6313", + "length": "14", + "line": "1329", + "parentIndex": "6310", + "start": "47289" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + } + }, + "id": "6310", + "memberName": "quoteLayerZeroFee", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "17", + "end": "47320", + "id": "6311", + "length": "32", + "line": "1329", + "parentIndex": "6308", + "start": "47289" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + } + }, + "id": "6308", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "17", + "end": "47604", + "id": "6309", + "length": "316", + "line": "1329", + "parentIndex": "6300", + "start": "47289" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint16$_t_uint8$_t_function_$_t_address$_t_function_$_t_bytes$_t_function_$_t_uint256$_t_uint256$_t_function_$_t_address$", + "typeString": "function(uint16,uint8,function(address),function(bytes),function(uint256,uint256,function(address)))" + } + } + }, + "src": { + "column": "8", + "end": "47604", + "id": "6301", + "length": "325", + "line": "1329", + "parentIndex": "6296", + "start": "47280" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_uint256_$_t_uint256$", + "typeString": "tuple(uint256,uint256)" + } + } + }, + "id": "6298", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "8", + "end": "47605", + "id": "6299", + "length": "326", + "line": "1329", + "parentIndex": "6296", + "start": "47280" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_uint256_$_t_uint256$", + "typeString": "tuple(uint256,uint256)" + } + } + } + ] + }, + "id": "6258", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "getFee", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "6260", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "6262", + "name": "_dstChainId", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6262", + "src": { + "column": "8", + "end": "47079", + "id": "6263", + "length": "18", + "line": "1322", + "parentIndex": "6260", + "start": "47062" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": "6264", + "name": "uint16", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "47067", + "id": "6265", + "length": "6", + "line": "1322", + "parentIndex": "6262", + "start": "47062" + }, + "typeDescription": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6266", + "name": "_functionType", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6266", + "src": { + "column": "8", + "end": "47108", + "id": "6267", + "length": "19", + "line": "1323", + "parentIndex": "6260", + "start": "47090" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "6268", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "47094", + "id": "6269", + "length": "5", + "line": "1323", + "parentIndex": "6266", + "start": "47090" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6270", + "name": "_receiver", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6270", + "src": { + "column": "8", + "end": "47135", + "id": "6271", + "length": "17", + "line": "1324", + "parentIndex": "6260", + "start": "47119" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "6272", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "47125", + "id": "6273", + "length": "7", + "line": "1324", + "parentIndex": "6270", + "start": "47119" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6274", + "name": "_gas", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6274", + "src": { + "column": "8", + "end": "47157", + "id": "6275", + "length": "12", + "line": "1325", + "parentIndex": "6260", + "start": "47146" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6276", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "47152", + "id": "6277", + "length": "7", + "line": "1325", + "parentIndex": "6274", + "start": "47146" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6278", + "name": "_dustAmount", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6278", + "src": { + "column": "8", + "end": "47186", + "id": "6279", + "length": "19", + "line": "1326", + "parentIndex": "6260", + "start": "47168" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6280", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "47174", + "id": "6281", + "length": "7", + "line": "1326", + "parentIndex": "6278", + "start": "47168" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6282", + "name": "_payload", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6282", + "src": { + "column": "8", + "end": "47217", + "id": "6283", + "length": "21", + "line": "1327", + "parentIndex": "6260", + "start": "47197" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "6284", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "47201", + "id": "6285", + "length": "5", + "line": "1327", + "parentIndex": "6282", + "start": "47197" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "47217", + "id": "6261", + "length": "156", + "line": "1322", + "parentIndex": "6258", + "start": "47062" + } + }, + "returnParameters": { + "id": "6286", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "6288", + "name": "a", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6288", + "src": { + "column": "29", + "end": "47256", + "id": "6289", + "length": "9", + "line": "1328", + "parentIndex": "6286", + "start": "47248" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6290", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "29", + "end": "47254", + "id": "6291", + "length": "7", + "line": "1328", + "parentIndex": "6288", + "start": "47248" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6292", + "name": "b", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6292", + "src": { + "column": "40", + "end": "47267", + "id": "6293", + "length": "9", + "line": "1328", + "parentIndex": "6286", + "start": "47259" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6294", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "40", + "end": "47265", + "id": "6295", + "length": "7", + "line": "1328", + "parentIndex": "6292", + "start": "47259" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "29", + "end": "47267", + "id": "6287", + "length": "20", + "line": "1328", + "parentIndex": "6258", + "start": "47248" + } + }, + "scope": "5964", + "src": { + "column": "4", + "end": "47611", + "id": "6259", + "length": "575", + "line": "1321", + "parentIndex": "5964", + "start": "47037" + }, + "stateMutability": "VIEW", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint16$_t_uint8$_t_address$_t_uint256$_t_uint256$_t_bytes$", + "typeString": "function(uint16,uint8,address,uint256,uint256,bytes)" + }, + "visibility": "EXTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "6384", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "24", + "end": "49031", + "id": "6385", + "length": "1041", + "line": "1353", + "parentIndex": "6353", + "start": "47991" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "6402", + "nodeType": "BLOCK", + "src": {} + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "6388", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6392", + "name": "msg", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "48007", + "id": "6393", + "length": "3", + "line": "1354", + "parentIndex": "6390", + "start": "48005" + }, + "typeDescription": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + } + }, + "id": "6390", + "memberName": "sender", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "48014", + "id": "6391", + "length": "10", + "line": "1354", + "parentIndex": "6388", + "start": "48005" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "NOT_EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6400", + "name": "stargateRouter", + "nodeType": "IDENTIFIER", + "src": { + "column": "34", + "end": "48040", + "id": "6401", + "length": "14", + "line": "1354", + "parentIndex": "6394", + "start": "48027" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "6396", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "26", + "end": "48025", + "id": "6397", + "length": "7", + "line": "1354", + "parentIndex": "6394", + "start": "48019" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "6398", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "26", + "end": "48025", + "id": "6399", + "length": "7", + "line": "1354", + "parentIndex": "6396", + "start": "48019" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "6394", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "26", + "end": "48041", + "id": "6395", + "length": "23", + "line": "1354", + "parentIndex": "6388", + "start": "48019" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "src": { + "column": "12", + "end": "48041", + "id": "6389", + "length": "37", + "line": "1354", + "parentIndex": "6386", + "start": "48005" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "6386", + "nodeType": "IF_STATEMENT", + "src": { + "end": "48070", + "id": "6387", + "length": "70", + "line": "1354", + "parentIndex": "6384", + "start": "48001" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "6403", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_tuple_$_t_address_$_t_[_[$_t_uint8]$_$_t_[_[$_t_uint256]$_$_t_[_[$_t_bytes]$_$_t_bytes32$", + "typeString": "tuple(address,index[uint8],index[uint256],index[bytes],bytes32)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6411", + "name": "payload", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6411", + "src": { + "column": "23", + "end": "48274", + "id": "6412", + "length": "7", + "line": "1362", + "parentIndex": "6405", + "start": "48268" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6415", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "33", + "end": "48284", + "id": "6416", + "length": "7", + "line": "1362", + "parentIndex": "6413", + "start": "48278" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "6417", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "33", + "end": "48284", + "id": "6418", + "length": "7", + "line": "1362", + "parentIndex": "6415", + "start": "48278" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "id": "6419", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6421", + "name": "uint8", + "nodeType": "IDENTIFIER", + "src": { + "column": "42", + "end": "48291", + "id": "6422", + "length": "5", + "line": "1362", + "parentIndex": "6419", + "start": "48287" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "6423", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "42", + "end": "48291", + "id": "6424", + "length": "5", + "line": "1362", + "parentIndex": "6421", + "start": "48287" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "42", + "end": "48293", + "id": "6420", + "length": "7", + "line": "1362", + "parentIndex": "6413", + "start": "48287" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint8]$", + "typeString": "index[uint8]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ] + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "id": "6425", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6427", + "name": "uint256", + "nodeType": "IDENTIFIER", + "src": { + "column": "51", + "end": "48302", + "id": "6428", + "length": "7", + "line": "1362", + "parentIndex": "6425", + "start": "48296" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6429", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "51", + "end": "48302", + "id": "6430", + "length": "7", + "line": "1362", + "parentIndex": "6427", + "start": "48296" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "51", + "end": "48304", + "id": "6426", + "length": "9", + "line": "1362", + "parentIndex": "6413", + "start": "48296" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint256]$", + "typeString": "index[uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "id": "6431", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6433", + "name": "bytes", + "nodeType": "IDENTIFIER", + "src": { + "column": "62", + "end": "48311", + "id": "6434", + "length": "5", + "line": "1362", + "parentIndex": "6431", + "start": "48307" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "6435", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "62", + "end": "48311", + "id": "6436", + "length": "5", + "line": "1362", + "parentIndex": "6433", + "start": "48307" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "62", + "end": "48313", + "id": "6432", + "length": "7", + "line": "1362", + "parentIndex": "6413", + "start": "48307" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_bytes]$", + "typeString": "index[bytes]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + ] + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6437", + "name": "bytes32", + "nodeType": "IDENTIFIER", + "src": { + "column": "71", + "end": "48322", + "id": "6438", + "length": "7", + "line": "1362", + "parentIndex": "6413", + "start": "48316" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "6439", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "71", + "end": "48322", + "id": "6440", + "length": "7", + "line": "1362", + "parentIndex": "6437", + "start": "48316" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + } + } + ], + "id": "6413", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "32", + "end": "48323", + "id": "6414", + "length": "47", + "line": "1362", + "parentIndex": "6405", + "start": "48277" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_address_$_t_[_[$_t_uint8]$_$_t_[_[$_t_uint256]$_$_t_[_[$_t_bytes]$_$_t_bytes32$", + "typeString": "tuple(address,index[uint8],index[uint256],index[bytes],bytes32)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6409", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "48259", + "id": "6410", + "length": "3", + "line": "1362", + "parentIndex": "6407", + "start": "48257" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "6407", + "memberName": "decode", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "48266", + "id": "6408", + "length": "10", + "line": "1362", + "parentIndex": "6405", + "start": "48257" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "6405", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "48324", + "id": "6406", + "length": "68", + "line": "1362", + "parentIndex": "6403", + "start": "48257" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_bytes$_t_tuple_$_t_address_$_t_[_[$_t_uint8]$_$_t_[_[$_t_uint256]$_$_t_[_[$_t_bytes]$_$_t_bytes32$", + "typeString": "function(bytes,tuple(address,index[uint8],index[uint256],index[bytes],bytes32))" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "48325", + "id": "6404", + "length": "245", + "line": "1356", + "parentIndex": "6384", + "start": "48081" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "6443" + ], + "declarations": [ + { + "id": "6443", + "mutability": "MUTABLE", + "name": "limit", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6384", + "src": { + "column": "8", + "end": "48378", + "id": "6444", + "length": "13", + "line": "1365", + "parentIndex": "6441", + "start": "48366" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6445", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "48372", + "id": "6446", + "length": "7", + "line": "1365", + "parentIndex": "6443", + "start": "48366" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "6441", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "6447", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6451", + "name": "gasleft", + "nodeType": "IDENTIFIER", + "src": { + "column": "24", + "end": "48388", + "id": "6452", + "length": "7", + "line": "1365", + "parentIndex": "6449", + "start": "48382" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "6449", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "24", + "end": "48390", + "id": "6450", + "length": "9", + "line": "1365", + "parentIndex": "6441", + "start": "48382" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "SUBTRACTION", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "323030303030", + "id": "6453", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "48399", + "id": "6454", + "length": "6", + "line": "1365", + "parentIndex": "6447", + "start": "48394" + }, + "typeDescription": { + "typeIdentifier": "t_rational_200000_by_1", + "typeString": "int_const 200000" + }, + "value": "200000" + } + }, + "src": { + "column": "24", + "end": "48399", + "id": "6448", + "length": "18", + "line": "1365", + "parentIndex": "6441", + "start": "48382" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "48400", + "id": "6442", + "length": "35", + "line": "1365", + "parentIndex": "6384", + "start": "48366" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "6457" + ], + "declarations": [ + { + "id": "6457", + "mutability": "MUTABLE", + "name": "failed", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6384", + "src": { + "column": "8", + "end": "48420", + "id": "6458", + "length": "11", + "line": "1366", + "parentIndex": "6455", + "start": "48410" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "6459", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "48413", + "id": "6460", + "length": "4", + "line": "1366", + "parentIndex": "6457", + "start": "48410" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "6455", + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "48421", + "id": "6456", + "length": "12", + "line": "1366", + "parentIndex": "6384", + "start": "48410" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Try", + "value": { + "body": { + "id": "6489", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "8", + "end": "48677", + "id": "6490", + "length": "2", + "line": "1374", + "parentIndex": "6461", + "start": "48676" + } + }, + "clauses": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Catch", + "value": { + "body": { + "id": "6498", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "32", + "end": "48792", + "id": "6499", + "length": "93", + "line": "1374", + "start": "48700" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6510", + "name": "to", + "nodeType": "IDENTIFIER", + "src": { + "column": "40", + "end": "48743", + "id": "6511", + "length": "2", + "line": "1375", + "parentIndex": "6500", + "start": "48742" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "id": "6512", + "name": "amountLD", + "nodeType": "IDENTIFIER", + "src": { + "column": "44", + "end": "48753", + "id": "6513", + "length": "8", + "line": "1375", + "parentIndex": "6500", + "start": "48746" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6508", + "name": "_token", + "nodeType": "IDENTIFIER", + "src": { + "column": "19", + "end": "48726", + "id": "6509", + "length": "6", + "line": "1375", + "parentIndex": "6504", + "start": "48721" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6506", + "name": "IERC20", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "48719", + "id": "6507", + "length": "6", + "line": "1375", + "parentIndex": "6504", + "start": "48714" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "6504", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "48727", + "id": "6505", + "length": "14", + "line": "1375", + "parentIndex": "6502", + "start": "48714" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "id": "6502", + "memberName": "safeTransfer", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "48740", + "id": "6503", + "length": "27", + "line": "1375", + "parentIndex": "6500", + "start": "48714" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "id": "6500", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "48754", + "id": "6501", + "length": "41", + "line": "1375", + "parentIndex": "6498", + "start": "48714" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$", + "typeString": "function(function(),function(function()))" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "6516", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6518", + "name": "failed", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6002", + "src": { + "column": "12", + "end": "48774", + "id": "6519", + "length": "6", + "line": "1376", + "parentIndex": "6516", + "start": "48769" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "74727565", + "id": "6520", + "isPure": true, + "kind": "BOOLEAN", + "nodeType": "LITERAL", + "src": { + "column": "21", + "end": "48781", + "id": "6521", + "length": "4", + "line": "1376", + "parentIndex": "6516", + "start": "48778" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + }, + "src": { + "column": "12", + "end": "48781", + "id": "6517", + "length": "13", + "line": "1376", + "parentIndex": "6498", + "start": "48769" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "6514", + "nodeType": "EXPRESSION_STATEMENT", + "src": { + "column": "12", + "end": "48782", + "id": "6515", + "length": "14", + "line": "1376", + "parentIndex": "6498", + "start": "48769" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ] + }, + "kind": "CATCH", + "nodeType": "TRY_CATCH_CLAUSE", + "parameters": { + "id": "6492", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "6494", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6494", + "src": { + "column": "18", + "end": "48697", + "id": "6495", + "length": "12", + "line": "1374", + "parentIndex": "6492", + "start": "48686" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "6496", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "18", + "end": "48690", + "id": "6497", + "length": "5", + "line": "1374", + "parentIndex": "6494", + "start": "48686" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "18", + "end": "48697", + "id": "6493", + "length": "12", + "line": "1374", + "start": "48686" + } + }, + "src": { + "end": "48792", + "id": "6491", + "length": "114", + "line": "1374", + "parentIndex": "6461", + "start": "48679" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_function_$$$", + "typeString": "function(function(),function(function()))" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6483", + "name": "actions", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "48605", + "id": "6484", + "length": "7", + "line": "1370", + "parentIndex": "6463", + "start": "48599" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "id": "6485", + "name": "values", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "48629", + "id": "6486", + "length": "6", + "line": "1371", + "parentIndex": "6463", + "start": "48624" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_function_$$", + "typeString": "function(function())" + } + ], + "id": "6487", + "name": "datas", + "nodeType": "IDENTIFIER", + "src": { + "column": "16", + "end": "48652", + "id": "6488", + "length": "5", + "line": "1372", + "parentIndex": "6463", + "start": "48648" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_function_$$$", + "typeString": "function(function(),function(function()))" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCallOption", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_payable$_t_function_$_t_address$$", + "typeString": "function(function(address)) payable" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PayableConversion", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_StargateAdapter_$5897", + "typeString": "contract StargateAdapter" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6481", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "40", + "end": "48560", + "id": "6482", + "length": "4", + "line": "1369", + "parentIndex": "6475", + "start": "48557" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StargateAdapter_$5897", + "typeString": "contract StargateAdapter" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "6477", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "32", + "end": "48555", + "id": "6478", + "length": "7", + "line": "1369", + "parentIndex": "6475", + "start": "48549" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "6479", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "32", + "end": "48555", + "id": "6480", + "length": "7", + "line": "1369", + "parentIndex": "6477", + "start": "48549" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "6475", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "32", + "end": "48561", + "id": "6476", + "length": "13", + "line": "1369", + "parentIndex": "6473", + "start": "48549" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + } + ], + "id": "6473", + "nodeType": "PAYABLE_CONVERSION", + "payable": true, + "src": { + "column": "24", + "end": "48562", + "id": "6474", + "length": "22", + "line": "1369", + "parentIndex": "6469", + "start": "48541" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6471", + "name": "ISushiXSwap", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "48539", + "id": "6472", + "length": "11", + "line": "1369", + "parentIndex": "6469", + "start": "48529" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "6469", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "48563", + "id": "6470", + "length": "35", + "line": "1369", + "parentIndex": "6467", + "start": "48529" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_payable$_t_function_$_t_address$", + "typeString": "function(function(function(address)) payable)" + } + } + }, + "id": "6467", + "memberName": "cook", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "48568", + "id": "6468", + "length": "40", + "line": "1369", + "parentIndex": "6465", + "start": "48529" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_payable$_t_function_$_t_address$", + "typeString": "function(function(function(address)) payable)" + } + } + }, + "id": "6465", + "kind": "FUNCTION_CALL_OPTION", + "nodeType": "FUNCTION_CALL_OPTION", + "src": { + "column": "12", + "end": "48580", + "id": "6466", + "length": "52", + "line": "1369", + "parentIndex": "6463", + "start": "48529" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_payable$_t_function_$_t_address$", + "typeString": "function(function(function(address)) payable)" + } + } + }, + "id": "6463", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "48666", + "id": "6464", + "length": "138", + "line": "1369", + "parentIndex": "6461", + "start": "48529" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$", + "typeString": "function(function(),function(function()),function(function(),function(function())))" + } + } + }, + "id": "6461", + "kind": "TRY", + "nodeType": "TRY_STATEMENT", + "src": { + "end": "48792", + "id": "6462", + "length": "280", + "line": "1368", + "parentIndex": "6384", + "start": "48513" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "6538", + "nodeType": "BLOCK", + "src": {} + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "6524", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_StargateAdapter_$5897", + "typeString": "contract StargateAdapter" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6534", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "48896", + "id": "6535", + "length": "4", + "line": "1380", + "parentIndex": "6528", + "start": "48893" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_StargateAdapter_$5897", + "typeString": "contract StargateAdapter" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "6530", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "12", + "end": "48891", + "id": "6531", + "length": "7", + "line": "1380", + "parentIndex": "6528", + "start": "48885" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "6532", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "48891", + "id": "6533", + "length": "7", + "line": "1380", + "parentIndex": "6530", + "start": "48885" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "6528", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "12", + "end": "48897", + "id": "6529", + "length": "13", + "line": "1380", + "parentIndex": "6526", + "start": "48885" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "id": "6526", + "memberName": "balance", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "12", + "end": "48905", + "id": "6527", + "length": "21", + "line": "1380", + "parentIndex": "6524", + "start": "48885" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "GREATER_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "hexValue": "30", + "id": "6536", + "isPure": true, + "kind": "NUMBER", + "nodeType": "LITERAL", + "src": { + "column": "36", + "end": "48909", + "id": "6537", + "length": "1", + "line": "1380", + "parentIndex": "6524", + "start": "48909" + }, + "typeDescription": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + }, + "src": { + "column": "12", + "end": "48909", + "id": "6525", + "length": "25", + "line": "1380", + "parentIndex": "6522", + "start": "48885" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "6522", + "nodeType": "IF_STATEMENT", + "src": { + "end": "48967", + "id": "6523", + "length": "87", + "line": "1380", + "parentIndex": "6384", + "start": "48881" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Emit", + "value": { + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6541", + "name": "srcContext", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5990", + "src": { + "column": "35", + "end": "49014", + "id": "6542", + "length": "10", + "line": "1383", + "parentIndex": "6384", + "start": "49005" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6543", + "name": "failed", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6455", + "src": { + "column": "47", + "end": "49022", + "id": "6544", + "length": "6", + "line": "1383", + "parentIndex": "6384", + "start": "49017" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6545", + "name": "StargateSushiXSwapDst", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "5995", + "src": { + "column": "13", + "end": "49003", + "id": "6546", + "length": "21", + "line": "1383", + "parentIndex": "6384", + "start": "48983" + }, + "typeDescription": { + "typeIdentifier": "t_event\u0026_StargateAdapter_StargateSushiXSwapDst_\u00265995", + "typeString": "event StargateAdapter.StargateSushiXSwapDst" + } + } + }, + "id": "6539", + "nodeType": "EMIT_STATEMENT", + "src": { + "column": "8", + "end": "49024", + "id": "6540", + "length": "47", + "line": "1383", + "parentIndex": "6353", + "start": "48978" + } + } + } + ] + }, + "id": "6353", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "sgReceive", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "6355", + "name": "sgReceive", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "6353", + "src": { + "column": "15", + "end": "47989", + "id": "6356", + "length": "8", + "line": "1353", + "parentIndex": "6353", + "start": "47982" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint16$_t_bytes$_t_uint256$_t_address$_t_uint256$_t_bytes$", + "typeString": "function(uint16,bytes,uint256,address,uint256,bytes)" + } + } + ], + "parameters": { + "id": "6357", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "6359", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6359", + "src": { + "column": "8", + "end": "47846", + "id": "6360", + "length": "6", + "line": "1347", + "parentIndex": "6357", + "start": "47841" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": "6361", + "name": "uint16", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "47846", + "id": "6362", + "length": "6", + "line": "1347", + "parentIndex": "6359", + "start": "47841" + }, + "typeDescription": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6363", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6363", + "src": { + "column": "8", + "end": "47868", + "id": "6364", + "length": "12", + "line": "1348", + "parentIndex": "6357", + "start": "47857" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "6365", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "47861", + "id": "6366", + "length": "5", + "line": "1348", + "parentIndex": "6363", + "start": "47857" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6367", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6367", + "src": { + "column": "8", + "end": "47885", + "id": "6368", + "length": "7", + "line": "1349", + "parentIndex": "6357", + "start": "47879" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6369", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "47885", + "id": "6370", + "length": "7", + "line": "1349", + "parentIndex": "6367", + "start": "47879" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6371", + "name": "_token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6371", + "src": { + "column": "8", + "end": "47909", + "id": "6372", + "length": "14", + "line": "1350", + "parentIndex": "6357", + "start": "47896" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "6373", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "47902", + "id": "6374", + "length": "7", + "line": "1350", + "parentIndex": "6371", + "start": "47896" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6375", + "name": "amountLD", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6375", + "src": { + "column": "8", + "end": "47935", + "id": "6376", + "length": "16", + "line": "1351", + "parentIndex": "6357", + "start": "47920" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6377", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "47926", + "id": "6378", + "length": "7", + "line": "1351", + "parentIndex": "6375", + "start": "47920" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6379", + "name": "payload", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6379", + "src": { + "column": "8", + "end": "47965", + "id": "6380", + "length": "20", + "line": "1352", + "parentIndex": "6357", + "start": "47946" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "6381", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "47950", + "id": "6382", + "length": "5", + "line": "1352", + "parentIndex": "6379", + "start": "47946" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "47965", + "id": "6358", + "length": "125", + "line": "1347", + "parentIndex": "6353", + "start": "47841" + } + }, + "returnParameters": { + "id": "6383", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "49031", + "id": "6354", + "length": "1219", + "line": "1346", + "parentIndex": "6353", + "start": "47813" + } + }, + "scope": "5964", + "src": { + "column": "4", + "end": "49031", + "id": "6354", + "length": "1219", + "line": "1346", + "parentIndex": "5964", + "start": "47813" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint16$_t_bytes$_t_uint256$_t_address$_t_uint256$_t_bytes$", + "typeString": "function(uint16,bytes,uint256,address,uint256,bytes)" + }, + "visibility": "EXTERNAL" + } + } + ], + "src": { + "end": "49033", + "length": "5432", + "line": "1245", + "parentIndex": "5897", + "start": "43602" + } + } + } + ] + }, + "src": { + "id": 5898, + "line": 1245, + "start": 43602, + "end": 49033, + "length": 5432, + "parent_index": 263 + } + }, + { + "id": 6547, + "license": "MIT", + "name": "ISushiXSwap", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ISushiXSwap.sol", + "exported_symbols": [ + { + "id": 6547, + "name": "ISushiXSwap", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/ISushiXSwap.sol" + }, + { + "id": 5897, + "name": "BentoAdapter", + "absolute_path": "BentoAdapter.sol" + }, + { + "id": 5897, + "name": "TokenAdapter", + "absolute_path": "TokenAdapter.sol" + }, + { + "id": 5897, + "name": "SushiLegacyAdapter", + "absolute_path": "SushiLegacyAdapter.sol" + }, + { + "id": 5897, + "name": "TridentSwapAdapter", + "absolute_path": "TridentSwapAdapter.sol" + }, + { + "id": 5897, + "name": "StargateAdapter", + "absolute_path": "StargateAdapter.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "6589", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "49104", + "id": "6590", + "length": "23", + "line": "1390", + "parentIndex": "6547", + "start": "49082" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "BentoAdapter.sol", + "file": "./BentoAdapter.sol", + "id": "6616", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6547", + "sourceUnit": "5897", + "src": { + "end": "49134", + "length": "28", + "line": "1392", + "parentIndex": "6547", + "start": "49107" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "TokenAdapter.sol", + "file": "./TokenAdapter.sol", + "id": "6617", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6547", + "sourceUnit": "5897", + "src": { + "end": "49163", + "length": "28", + "line": "1393", + "parentIndex": "6547", + "start": "49136" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "SushiLegacyAdapter.sol", + "file": "./SushiLegacyAdapter.sol", + "id": "6618", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6547", + "sourceUnit": "5897", + "src": { + "end": "49198", + "length": "34", + "line": "1394", + "parentIndex": "6547", + "start": "49165" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "TridentSwapAdapter.sol", + "file": "./TridentSwapAdapter.sol", + "id": "6619", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6547", + "sourceUnit": "5897", + "src": { + "end": "49233", + "length": "34", + "line": "1395", + "parentIndex": "6547", + "start": "49200" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "StargateAdapter.sol", + "file": "./StargateAdapter.sol", + "id": "6620", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6547", + "sourceUnit": "5897", + "src": { + "end": "49265", + "length": "31", + "line": "1396", + "parentIndex": "6547", + "start": "49235" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "contractDependencies": [ + "6616", + "6617", + "6618", + "6619", + "6620" + ], + "fullyImplemented": true, + "id": "6627", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "6627", + "6616", + "6617", + "6618", + "6619", + "6620" + ], + "name": "ISushiXSwap", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "6649", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "49427", + "id": "6630", + "length": "132", + "line": "1399", + "parentIndex": "6629", + "start": "49296" + } + }, + "id": "6629", + "kind": "KIND_FUNCTION", + "name": "cook", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "6631", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "6633", + "name": "actions", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6633", + "src": { + "column": "8", + "end": "49340", + "id": "6634", + "length": "22", + "line": "1400", + "parentIndex": "6631", + "start": "49319" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "6635", + "name": "uint8", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "49323", + "id": "6637", + "length": "5", + "line": "1400", + "parentIndex": "6633", + "start": "49319" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6638", + "name": "values", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6638", + "src": { + "column": "8", + "end": "49373", + "id": "6639", + "length": "23", + "line": "1401", + "parentIndex": "6631", + "start": "49351" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6640", + "name": "uint256", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "49357", + "id": "6642", + "length": "7", + "line": "1401", + "parentIndex": "6638", + "start": "49351" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6643", + "name": "datas", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6643", + "src": { + "column": "8", + "end": "49403", + "id": "6644", + "length": "20", + "line": "1402", + "parentIndex": "6631", + "start": "49384" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "6645", + "name": "bytes", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "49388", + "id": "6647", + "length": "5", + "line": "1402", + "parentIndex": "6643", + "start": "49384" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "49403", + "id": "6632", + "length": "85", + "line": "1400", + "parentIndex": "6629", + "start": "49319" + } + }, + "returnParameters": { + "id": "6648", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "49427", + "id": "6630", + "length": "132", + "line": "1399", + "parentIndex": "6629", + "start": "49296" + } + }, + "scope": "6627", + "src": { + "column": "4", + "end": "49427", + "id": "6630", + "length": "132", + "line": "1399", + "parentIndex": "6627", + "start": "49296" + }, + "stateMutability": "PAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint8$_t_uint256$_t_bytes$", + "typeString": "function(uint8,uint256,bytes)" + }, + "visibility": "EXTERNAL" + } + } + ], + "src": { + "end": "49429", + "length": "162", + "line": "1398", + "parentIndex": "6547", + "start": "49268" + } + } + } + ] + }, + "src": { + "id": 6548, + "line": 1398, + "start": 49268, + "end": 49429, + "length": 162, + "parent_index": 263 + } + }, + { + "id": 6650, + "license": "MIT", + "name": "IStargateReceiver", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateReceiver.sol", + "exported_symbols": [ + { + "id": 6650, + "name": "IStargateReceiver", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateReceiver.sol" + }, + { + "id": 6547, + "name": "BentoAdapter", + "absolute_path": "BentoAdapter.sol" + }, + { + "id": 6547, + "name": "TokenAdapter", + "absolute_path": "TokenAdapter.sol" + }, + { + "id": 6547, + "name": "SushiLegacyAdapter", + "absolute_path": "SushiLegacyAdapter.sol" + }, + { + "id": 6547, + "name": "TridentSwapAdapter", + "absolute_path": "TridentSwapAdapter.sol" + }, + { + "id": 6547, + "name": "StargateAdapter", + "absolute_path": "StargateAdapter.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "6694", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "49491", + "id": "6695", + "length": "23", + "line": "1408", + "parentIndex": "6650", + "start": "49469" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "BentoAdapter.sol", + "file": "./BentoAdapter.sol", + "id": "6721", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6650", + "sourceUnit": "6547", + "src": { + "end": "49134", + "length": "28", + "line": "1392", + "parentIndex": "6650", + "start": "49107" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "TokenAdapter.sol", + "file": "./TokenAdapter.sol", + "id": "6722", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6650", + "sourceUnit": "6547", + "src": { + "end": "49163", + "length": "28", + "line": "1393", + "parentIndex": "6650", + "start": "49136" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "SushiLegacyAdapter.sol", + "file": "./SushiLegacyAdapter.sol", + "id": "6723", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6650", + "sourceUnit": "6547", + "src": { + "end": "49198", + "length": "34", + "line": "1394", + "parentIndex": "6650", + "start": "49165" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "TridentSwapAdapter.sol", + "file": "./TridentSwapAdapter.sol", + "id": "6724", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6650", + "sourceUnit": "6547", + "src": { + "end": "49233", + "length": "34", + "line": "1395", + "parentIndex": "6650", + "start": "49200" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "StargateAdapter.sol", + "file": "./StargateAdapter.sol", + "id": "6725", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6650", + "sourceUnit": "6547", + "src": { + "end": "49265", + "length": "31", + "line": "1396", + "parentIndex": "6650", + "start": "49235" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "contractDependencies": [ + "6721", + "6722", + "6723", + "6724", + "6725" + ], + "fullyImplemented": true, + "id": "6732", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "6732", + "6721", + "6722", + "6723", + "6724", + "6725" + ], + "name": "IStargateReceiver", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "6763", + "nodeType": "BLOCK", + "src": { + "column": "4", + "end": "49724", + "id": "6735", + "length": "197", + "line": "1411", + "parentIndex": "6734", + "start": "49528" + } + }, + "id": "6734", + "kind": "KIND_FUNCTION", + "name": "sgReceive", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "6736", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "6738", + "name": "_chainId", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6738", + "src": { + "column": "8", + "end": "49570", + "id": "6739", + "length": "15", + "line": "1412", + "parentIndex": "6736", + "start": "49556" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": "6740", + "name": "uint16", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "49561", + "id": "6741", + "length": "6", + "line": "1412", + "parentIndex": "6738", + "start": "49556" + }, + "typeDescription": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6742", + "name": "_srcAddress", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6742", + "src": { + "column": "8", + "end": "49604", + "id": "6743", + "length": "24", + "line": "1413", + "parentIndex": "6736", + "start": "49581" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "6744", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "49585", + "id": "6745", + "length": "5", + "line": "1413", + "parentIndex": "6742", + "start": "49581" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6746", + "name": "_nonce", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6746", + "src": { + "column": "8", + "end": "49628", + "id": "6747", + "length": "14", + "line": "1414", + "parentIndex": "6736", + "start": "49615" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6748", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "49621", + "id": "6749", + "length": "7", + "line": "1414", + "parentIndex": "6746", + "start": "49615" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6750", + "name": "_token", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6750", + "src": { + "column": "8", + "end": "49652", + "id": "6751", + "length": "14", + "line": "1415", + "parentIndex": "6736", + "start": "49639" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "6752", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "49645", + "id": "6753", + "length": "7", + "line": "1415", + "parentIndex": "6750", + "start": "49639" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6754", + "name": "amountLD", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6754", + "src": { + "column": "8", + "end": "49678", + "id": "6755", + "length": "16", + "line": "1416", + "parentIndex": "6736", + "start": "49663" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "6756", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "49669", + "id": "6757", + "length": "7", + "line": "1416", + "parentIndex": "6754", + "start": "49663" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6758", + "name": "payload", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6758", + "src": { + "column": "8", + "end": "49708", + "id": "6759", + "length": "20", + "line": "1417", + "parentIndex": "6736", + "start": "49689" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "6760", + "name": "bytes", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "49693", + "id": "6761", + "length": "5", + "line": "1417", + "parentIndex": "6758", + "start": "49689" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "49708", + "id": "6737", + "length": "153", + "line": "1412", + "parentIndex": "6734", + "start": "49556" + } + }, + "returnParameters": { + "id": "6762", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "49724", + "id": "6735", + "length": "197", + "line": "1411", + "parentIndex": "6734", + "start": "49528" + } + }, + "scope": "6732", + "src": { + "column": "4", + "end": "49724", + "id": "6735", + "length": "197", + "line": "1411", + "parentIndex": "6732", + "start": "49528" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint16$_t_bytes$_t_uint256$_t_address$_t_uint256$_t_bytes$", + "typeString": "function(uint16,bytes,uint256,address,uint256,bytes)" + }, + "visibility": "EXTERNAL" + } + } + ], + "src": { + "end": "49726", + "length": "233", + "line": "1410", + "parentIndex": "6650", + "start": "49494" + } + } + } + ] + }, + "src": { + "id": 6651, + "line": 1410, + "start": 49494, + "end": 49726, + "length": 233, + "parent_index": 263 + } + }, + { + "id": 6764, + "license": "MIT", + "name": "IStargateAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateAdapter.sol", + "exported_symbols": [ + { + "id": 6764, + "name": "IStargateAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/IStargateAdapter.sol" + }, + { + "id": 6650, + "name": "SafeERC20", + "absolute_path": "SafeERC20.sol" + }, + { + "id": 6650, + "name": "ImmutableState", + "absolute_path": "ImmutableState.sol" + }, + { + "id": 6650, + "name": "ISushiXSwap", + "absolute_path": "ISushiXSwap.sol" + }, + { + "id": 6650, + "name": "IStargateReceiver", + "absolute_path": "IStargateReceiver.sol" + }, + { + "id": 6650, + "name": "IStargateWidget", + "absolute_path": "IStargateWidget.sol" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "6810", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "49788", + "id": "6811", + "length": "23", + "line": "1423", + "parentIndex": "6764", + "start": "49766" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "SafeERC20.sol", + "file": "./SafeERC20.sol", + "id": "6842", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6764", + "sourceUnit": "6650", + "src": { + "end": "49815", + "length": "25", + "line": "1425", + "parentIndex": "6764", + "start": "49791" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ImmutableState.sol", + "file": "./ImmutableState.sol", + "id": "6843", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6764", + "sourceUnit": "6650", + "src": { + "end": "49846", + "length": "30", + "line": "1426", + "parentIndex": "6764", + "start": "49817" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ISushiXSwap.sol", + "file": "./ISushiXSwap.sol", + "id": "6844", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6764", + "sourceUnit": "6650", + "src": { + "end": "49874", + "length": "27", + "line": "1427", + "parentIndex": "6764", + "start": "49848" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IStargateReceiver.sol", + "file": "./IStargateReceiver.sol", + "id": "6845", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6764", + "sourceUnit": "6650", + "src": { + "end": "49908", + "length": "33", + "line": "1428", + "parentIndex": "6764", + "start": "49876" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IStargateWidget.sol", + "file": "./IStargateWidget.sol", + "id": "6846", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6764", + "sourceUnit": "6650", + "src": { + "end": "49940", + "length": "31", + "line": "1429", + "parentIndex": "6764", + "start": "49910" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "contractDependencies": [ + "6842", + "6843", + "6844", + "6845", + "6846" + ], + "fullyImplemented": true, + "id": "6848", + "kind": "KIND_LIBRARY", + "linearizedBaseContracts": [ + "6848", + "6842", + "6843", + "6844", + "6845", + "6846" + ], + "name": "IStargateAdapter", + "nodeType": "CONTRACT_DEFINITION", + "src": { + "end": "49971", + "length": "29", + "line": "1431", + "parentIndex": "6764", + "start": "49943" + } + } + } + ] + }, + "src": { + "id": 6765, + "line": 1431, + "start": 49943, + "end": 49971, + "length": 29, + "parent_index": 263 + } + }, + { + "id": 6849, + "license": "MIT", + "name": "SushiXSwap", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/SushiXSwap.sol", + "exported_symbols": [ + { + "id": 6849, + "name": "SushiXSwap", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/SushiXSwap.sol" + }, + { + "id": 6764, + "name": "SafeERC20", + "absolute_path": "SafeERC20.sol" + }, + { + "id": 6764, + "name": "ImmutableState", + "absolute_path": "ImmutableState.sol" + }, + { + "id": 6764, + "name": "ISushiXSwap", + "absolute_path": "ISushiXSwap.sol" + }, + { + "id": 6764, + "name": "IStargateReceiver", + "absolute_path": "IStargateReceiver.sol" + }, + { + "id": 6764, + "name": "IStargateWidget", + "absolute_path": "IStargateWidget.sol" + }, + { + "id": 6940, + "name": "BentoAdapter" + }, + { + "id": 6944, + "name": "TokenAdapter" + }, + { + "id": 6948, + "name": "SushiLegacyAdapter" + }, + { + "id": 6952, + "name": "TridentSwapAdapter" + }, + { + "id": 6956, + "name": "StargateAdapter" + } + ], + "node_type": 1, + "root": { + "nodes": [ + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Pragma", + "value": { + "id": "6897", + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "nodeType": "PRAGMA_DIRECTIVE", + "src": { + "end": "50042", + "id": "6898", + "length": "23", + "line": "1435", + "parentIndex": "6849", + "start": "50020" + }, + "text": "pragma solidity 0.8.11;" + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "SafeERC20.sol", + "file": "./SafeERC20.sol", + "id": "6929", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6849", + "sourceUnit": "6764", + "src": { + "end": "49815", + "length": "25", + "line": "1425", + "parentIndex": "6849", + "start": "49791" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ImmutableState.sol", + "file": "./ImmutableState.sol", + "id": "6930", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6849", + "sourceUnit": "6764", + "src": { + "end": "49846", + "length": "30", + "line": "1426", + "parentIndex": "6849", + "start": "49817" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ISushiXSwap.sol", + "file": "./ISushiXSwap.sol", + "id": "6931", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6849", + "sourceUnit": "6764", + "src": { + "end": "49874", + "length": "27", + "line": "1427", + "parentIndex": "6849", + "start": "49848" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IStargateReceiver.sol", + "file": "./IStargateReceiver.sol", + "id": "6932", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6849", + "sourceUnit": "6764", + "src": { + "end": "49908", + "length": "33", + "line": "1428", + "parentIndex": "6849", + "start": "49876" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "IStargateWidget.sol", + "file": "./IStargateWidget.sol", + "id": "6933", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6849", + "sourceUnit": "6764", + "src": { + "end": "49940", + "length": "31", + "line": "1429", + "parentIndex": "6849", + "start": "49910" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Import", + "value": { + "absolutePath": "ISushiXSwap.sol", + "file": "./ISushiXSwap.sol", + "id": "6934", + "nodeType": "IMPORT_DIRECTIVE", + "scope": "6849", + "sourceUnit": "6764", + "src": { + "end": "50071", + "length": "27", + "line": "1437", + "parentIndex": "6849", + "start": "50045" + } + } + }, + { + "type_url": "github.com/txpull/protos/txpull.v1.ast.Contract", + "value": { + "baseContracts": [ + { + "baseName": { + "id": "6938", + "name": "ISushiXSwap", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "6547", + "src": { + "column": "4", + "end": "50292", + "id": "6939", + "length": "11", + "line": "1443", + "parentIndex": "6935", + "start": "50282" + } + }, + "id": "6936", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "4", + "end": "50292", + "id": "6937", + "length": "11", + "line": "1443", + "parentIndex": "6935", + "start": "50282" + } + }, + { + "baseName": { + "id": "6942", + "name": "BentoAdapter", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1482", + "src": { + "column": "4", + "end": "50310", + "id": "6943", + "length": "12", + "line": "1444", + "parentIndex": "6935", + "start": "50299" + } + }, + "id": "6940", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "4", + "end": "50310", + "id": "6941", + "length": "12", + "line": "1444", + "parentIndex": "6935", + "start": "50299" + } + }, + { + "baseName": { + "id": "6946", + "name": "TokenAdapter", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "2401", + "src": { + "column": "4", + "end": "50328", + "id": "6947", + "length": "12", + "line": "1445", + "parentIndex": "6935", + "start": "50317" + } + }, + "id": "6944", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "4", + "end": "50328", + "id": "6945", + "length": "12", + "line": "1445", + "parentIndex": "6935", + "start": "50317" + } + }, + { + "baseName": { + "id": "6950", + "name": "SushiLegacyAdapter", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "4404", + "src": { + "column": "4", + "end": "50352", + "id": "6951", + "length": "18", + "line": "1446", + "parentIndex": "6935", + "start": "50335" + } + }, + "id": "6948", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "4", + "end": "50352", + "id": "6949", + "length": "18", + "line": "1446", + "parentIndex": "6935", + "start": "50335" + } + }, + { + "baseName": { + "id": "6954", + "name": "TridentSwapAdapter", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "5143", + "src": { + "column": "4", + "end": "50376", + "id": "6955", + "length": "18", + "line": "1447", + "parentIndex": "6935", + "start": "50359" + } + }, + "id": "6952", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "4", + "end": "50376", + "id": "6953", + "length": "18", + "line": "1447", + "parentIndex": "6935", + "start": "50359" + } + }, + { + "baseName": { + "id": "6958", + "name": "StargateAdapter", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "5897", + "src": { + "column": "4", + "end": "50397", + "id": "6959", + "length": "15", + "line": "1448", + "parentIndex": "6935", + "start": "50383" + } + }, + "id": "6956", + "nodeType": "INHERITANCE_SPECIFIER", + "src": { + "column": "4", + "end": "50397", + "id": "6957", + "length": "15", + "line": "1448", + "parentIndex": "6935", + "start": "50383" + } + } + ], + "contractDependencies": [ + "6547", + "1482", + "2401", + "4404", + "5143", + "5897", + "6929", + "6930", + "6931", + "6932", + "6933", + "6934" + ], + "fullyImplemented": true, + "id": "6935", + "kind": "KIND_CONTRACT", + "linearizedBaseContracts": [ + "6547", + "1482", + "2401", + "4404", + "5143", + "5897", + "6935", + "6929", + "6930", + "6931", + "6932", + "6933", + "6934" + ], + "name": "SushiXSwap", + "nodeType": "CONTRACT_DEFINITION", + "nodes": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "7006", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "91", + "end": "50759", + "id": "7007", + "length": "77", + "line": "1456", + "parentIndex": "6961", + "start": "50683" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7012", + "name": "_bentoBox", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "7012", + "src": { + "column": "8", + "end": "50733", + "id": "7013", + "length": "9", + "line": "1458", + "parentIndex": "7010", + "start": "50725" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "7010", + "memberName": "registerProtocol", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "8", + "end": "50750", + "id": "7011", + "length": "26", + "line": "1458", + "parentIndex": "7008", + "start": "50725" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "7008", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "8", + "end": "50752", + "id": "7009", + "length": "28", + "line": "1458", + "parentIndex": "7006", + "start": "50725" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ] + }, + "id": "6961", + "implemented": true, + "kind": "CONSTRUCTOR", + "modifiers": [ + { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + }, + { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6996", + "name": "_bentoBox", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6996", + "src": { + "column": "21", + "end": "50621", + "id": "6997", + "length": "9", + "line": "1456", + "parentIndex": "6992", + "start": "50613" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "6998", + "name": "_stargateRouter", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6998", + "src": { + "column": "32", + "end": "50638", + "id": "6999", + "length": "15", + "line": "1456", + "parentIndex": "6992", + "start": "50624" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7000", + "name": "_factory", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "7000", + "src": { + "column": "49", + "end": "50648", + "id": "7001", + "length": "8", + "line": "1456", + "parentIndex": "6992", + "start": "50641" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7002", + "name": "_pairCodeHash", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "7002", + "src": { + "column": "59", + "end": "50663", + "id": "7003", + "length": "13", + "line": "1456", + "parentIndex": "6992", + "start": "50651" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7004", + "name": "_stargateWidget", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "7004", + "src": { + "column": "74", + "end": "50680", + "id": "7005", + "length": "15", + "line": "1456", + "parentIndex": "6992", + "start": "50666" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + } + } + } + ], + "id": "6992", + "kind": "MODIFIER_INVOCATION", + "modifierName": { + "id": "6994", + "name": "ImmutableState", + "src": { + "column": "6", + "end": "50611", + "id": "6995", + "length": "14", + "line": "1456", + "parentIndex": "6992", + "start": "50598" + } + }, + "name": "ImmutableState", + "nodeType": "MODIFIER_INVOCATION", + "src": { + "column": "6", + "end": "50681", + "id": "6993", + "length": "84", + "line": "1456", + "parentIndex": "6961", + "start": "50598" + } + } + ], + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "6963", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "6965", + "name": "_bentoBox", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6965", + "src": { + "column": "8", + "end": "50451", + "id": "6966", + "length": "26", + "line": "1451", + "parentIndex": "6963", + "start": "50426" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + }, + "typeName": { + "id": "6967", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "6969", + "name": "IBentoBoxMinimal", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "769", + "src": { + "column": "8", + "end": "50441", + "id": "6970", + "length": "16", + "line": "1451", + "parentIndex": "6967", + "start": "50426" + } + }, + "referencedDeclaration": "769", + "src": { + "column": "8", + "end": "50441", + "id": "6968", + "length": "16", + "line": "1451", + "parentIndex": "6965", + "start": "50426" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6971", + "name": "_stargateRouter", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6971", + "src": { + "column": "8", + "end": "50492", + "id": "6972", + "length": "31", + "line": "1452", + "parentIndex": "6963", + "start": "50462" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + }, + "typeName": { + "id": "6973", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "6975", + "name": "IStargateRouter", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1012", + "src": { + "column": "8", + "end": "50476", + "id": "6976", + "length": "15", + "line": "1452", + "parentIndex": "6973", + "start": "50462" + } + }, + "referencedDeclaration": "1012", + "src": { + "column": "8", + "end": "50476", + "id": "6974", + "length": "15", + "line": "1452", + "parentIndex": "6971", + "start": "50462" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateRouter_$1012", + "typeString": "contract IStargateRouter" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6977", + "name": "_factory", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6977", + "src": { + "column": "8", + "end": "50518", + "id": "6978", + "length": "16", + "line": "1453", + "parentIndex": "6963", + "start": "50503" + }, + "stateMutability": "NONPAYABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "6979", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "50509", + "id": "6980", + "length": "7", + "line": "1453", + "parentIndex": "6977", + "start": "50503" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6981", + "name": "_pairCodeHash", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6981", + "src": { + "column": "8", + "end": "50549", + "id": "6982", + "length": "21", + "line": "1454", + "parentIndex": "6963", + "start": "50529" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "6983", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "50535", + "id": "6984", + "length": "7", + "line": "1454", + "parentIndex": "6981", + "start": "50529" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "6985", + "name": "_stargateWidget", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6985", + "src": { + "column": "8", + "end": "50590", + "id": "6986", + "length": "31", + "line": "1455", + "parentIndex": "6963", + "start": "50560" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + }, + "typeName": { + "id": "6987", + "nodeType": "USER_DEFINED_PATH_NAME", + "pathNode": { + "id": "6989", + "name": "IStargateWidget", + "nodeType": "IDENTIFIER_PATH", + "referencedDeclaration": "1155", + "src": { + "column": "8", + "end": "50574", + "id": "6990", + "length": "15", + "line": "1455", + "parentIndex": "6987", + "start": "50560" + } + }, + "referencedDeclaration": "1155", + "src": { + "column": "8", + "end": "50574", + "id": "6988", + "length": "15", + "line": "1455", + "parentIndex": "6985", + "start": "50560" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IStargateWidget_$1155", + "typeString": "contract IStargateWidget" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "50590", + "id": "6964", + "length": "165", + "line": "1451", + "parentIndex": "6961", + "start": "50426" + } + }, + "returnParameters": { + "id": "6991", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "50759", + "id": "6962", + "length": "355", + "line": "1450", + "parentIndex": "6961", + "start": "50405" + } + }, + "scope": "6935", + "src": { + "column": "4", + "end": "50759", + "id": "6962", + "length": "355", + "line": "1450", + "parentIndex": "6935", + "start": "50405" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "$_t_constructor", + "typeString": "constructor" + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "7015", + "isConstant": true, + "isStateVariable": true, + "name": "ACTION_MASTER_CONTRACT_APPROVAL", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6935", + "src": { + "column": "4", + "end": "50919", + "id": "7016", + "length": "60", + "line": "1464", + "parentIndex": "6935", + "start": "50860" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "7017", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "50864", + "id": "7018", + "length": "5", + "line": "1464", + "parentIndex": "7015", + "start": "50860" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "7020", + "isConstant": true, + "isStateVariable": true, + "name": "ACTION_SRC_DEPOSIT_TO_BENTOBOX", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6935", + "src": { + "column": "4", + "end": "50983", + "id": "7021", + "length": "59", + "line": "1465", + "parentIndex": "6935", + "start": "50925" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "7022", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "50929", + "id": "7023", + "length": "5", + "line": "1465", + "parentIndex": "7020", + "start": "50925" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "7025", + "isConstant": true, + "isStateVariable": true, + "name": "ACTION_SRC_TRANSFER_FROM_BENTOBOX", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6935", + "src": { + "column": "4", + "end": "51050", + "id": "7026", + "length": "62", + "line": "1466", + "parentIndex": "6935", + "start": "50989" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "7027", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "50993", + "id": "7028", + "length": "5", + "line": "1466", + "parentIndex": "7025", + "start": "50989" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "7030", + "isConstant": true, + "isStateVariable": true, + "name": "ACTION_DST_DEPOSIT_TO_BENTOBOX", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6935", + "src": { + "column": "4", + "end": "51114", + "id": "7031", + "length": "59", + "line": "1467", + "parentIndex": "6935", + "start": "51056" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "7032", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "51060", + "id": "7033", + "length": "5", + "line": "1467", + "parentIndex": "7030", + "start": "51056" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "7035", + "isConstant": true, + "isStateVariable": true, + "name": "ACTION_DST_WITHDRAW_TOKEN", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6935", + "src": { + "column": "4", + "end": "51173", + "id": "7036", + "length": "54", + "line": "1468", + "parentIndex": "6935", + "start": "51120" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "7037", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "51124", + "id": "7038", + "length": "5", + "line": "1468", + "parentIndex": "7035", + "start": "51120" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "7040", + "isConstant": true, + "isStateVariable": true, + "name": "ACTION_DST_WITHDRAW_OR_TRANSFER_FROM_BENTOBOX", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6935", + "src": { + "column": "4", + "end": "51252", + "id": "7041", + "length": "74", + "line": "1469", + "parentIndex": "6935", + "start": "51179" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "7042", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "51183", + "id": "7043", + "length": "5", + "line": "1469", + "parentIndex": "7040", + "start": "51179" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "7045", + "isConstant": true, + "isStateVariable": true, + "name": "ACTION_UNWRAP_AND_TRANSFER", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6935", + "src": { + "column": "4", + "end": "51312", + "id": "7046", + "length": "55", + "line": "1470", + "parentIndex": "6935", + "start": "51258" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "7047", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "51262", + "id": "7048", + "length": "5", + "line": "1470", + "parentIndex": "7045", + "start": "51258" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "7050", + "isConstant": true, + "isStateVariable": true, + "name": "ACTION_LEGACY_SWAP", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6935", + "src": { + "column": "4", + "end": "51388", + "id": "7051", + "length": "47", + "line": "1473", + "parentIndex": "6935", + "start": "51342" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "7052", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "51346", + "id": "7053", + "length": "5", + "line": "1473", + "parentIndex": "7050", + "start": "51342" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "7055", + "isConstant": true, + "isStateVariable": true, + "name": "ACTION_TRIDENT_SWAP", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6935", + "src": { + "column": "4", + "end": "51441", + "id": "7056", + "length": "48", + "line": "1474", + "parentIndex": "6935", + "start": "51394" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "7057", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "51398", + "id": "7058", + "length": "5", + "line": "1474", + "parentIndex": "7055", + "start": "51394" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "7060", + "isConstant": true, + "isStateVariable": true, + "name": "ACTION_TRIDENT_COMPLEX_PATH_SWAP", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6935", + "src": { + "column": "4", + "end": "51507", + "id": "7061", + "length": "61", + "line": "1475", + "parentIndex": "6935", + "start": "51447" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "7062", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "51451", + "id": "7063", + "length": "5", + "line": "1475", + "parentIndex": "7060", + "start": "51447" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "7065", + "isConstant": true, + "isStateVariable": true, + "name": "ACTION_STARGATE_TELEPORT", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6935", + "src": { + "column": "4", + "end": "51592", + "id": "7066", + "length": "54", + "line": "1478", + "parentIndex": "6935", + "start": "51539" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "7067", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "51543", + "id": "7068", + "length": "5", + "line": "1478", + "parentIndex": "7065", + "start": "51539" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "7070", + "isConstant": true, + "isStateVariable": true, + "name": "ACTION_SRC_TOKEN_TRANSFER", + "nodeType": "VARIABLE_DECLARATION", + "scope": "6935", + "src": { + "column": "4", + "end": "51653", + "id": "7071", + "length": "55", + "line": "1480", + "parentIndex": "6935", + "start": "51599" + }, + "stateMutability": "MUTABLE", + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "7072", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "4", + "end": "51603", + "id": "7073", + "length": "5", + "line": "1480", + "parentIndex": "7070", + "start": "51599" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Function", + "value": { + "body": { + "id": "7097", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "30", + "end": "58799", + "id": "7098", + "length": "6515", + "line": "1491", + "parentIndex": "7075", + "start": "52285" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "7101" + ], + "declarations": [ + { + "id": "7101", + "mutability": "MUTABLE", + "name": "actionLength", + "nodeType": "VARIABLE_DECLARATION", + "scope": "7097", + "src": { + "column": "8", + "end": "52314", + "id": "7102", + "length": "20", + "line": "1492", + "parentIndex": "7099", + "start": "52295" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "7103", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "8", + "end": "52301", + "id": "7104", + "length": "7", + "line": "1492", + "parentIndex": "7101", + "start": "52295" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "7099", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7107", + "name": "actions", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "7107", + "src": { + "column": "31", + "end": "52324", + "id": "7108", + "length": "7", + "line": "1492", + "parentIndex": "7105", + "start": "52318" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + }, + "id": "7105", + "memberName": "length", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "31", + "end": "52331", + "id": "7106", + "length": "14", + "line": "1492", + "parentIndex": "7099", + "start": "52318" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "8", + "end": "52332", + "id": "7100", + "length": "38", + "line": "1492", + "parentIndex": "7097", + "start": "52295" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.For", + "value": { + "body": { + "id": "7133", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "61", + "end": "58793", + "id": "7134", + "length": "6399", + "line": "1493", + "parentIndex": "7109", + "start": "52395" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "7137" + ], + "declarations": [ + { + "id": "7137", + "mutability": "MUTABLE", + "name": "action", + "nodeType": "VARIABLE_DECLARATION", + "scope": "7133", + "src": { + "column": "12", + "end": "52420", + "id": "7138", + "length": "12", + "line": "1494", + "parentIndex": "7135", + "start": "52409" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "7139", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "12", + "end": "52413", + "id": "7140", + "length": "5", + "line": "1494", + "parentIndex": "7137", + "start": "52409" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "7135", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7145", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "35", + "end": "52432", + "id": "7146", + "length": "1", + "line": "1494", + "parentIndex": "7141", + "start": "52432" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "7141", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7143", + "name": "actions", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6096", + "src": { + "column": "27", + "end": "52430", + "id": "7144", + "length": "7", + "line": "1494", + "parentIndex": "7141", + "start": "52424" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "27", + "end": "52433", + "id": "7142", + "length": "10", + "line": "1494", + "parentIndex": "7135", + "start": "52424" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_uint8]$_t_uint256]$", + "typeString": "index[uint8:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "12", + "end": "52434", + "id": "7136", + "length": "26", + "line": "1494", + "parentIndex": "7133", + "start": "52409" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.If", + "value": { + "body": { + "id": "7155", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "59", + "end": "53124", + "id": "7156", + "length": "577", + "line": "1496", + "parentIndex": "7109", + "start": "52548" + }, + "statements": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "id": "7157", + "initialValue": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_[_[$_t_bytes]$_t_uint256]$", + "typeString": "index[bytes:uint256]" + }, + { + "typeIdentifier": "t_tuple_$_t_address_$_t_bool_$_t_uint8_$_t_bytes32_$_t_bytes32$", + "typeString": "tuple(address,bool,uint8,bytes32,bytes32)" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.IndexAccess", + "value": { + "baseExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7169", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "30", + "end": "52789", + "id": "7170", + "length": "1", + "line": "1504", + "parentIndex": "7165", + "start": "52789" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "id": "7165", + "indexExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7167", + "name": "datas", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "6106", + "src": { + "column": "24", + "end": "52787", + "id": "7168", + "length": "5", + "line": "1504", + "parentIndex": "7165", + "start": "52783" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + } + }, + "nodeType": "INDEX_ACCESS", + "src": { + "column": "24", + "end": "52790", + "id": "7166", + "length": "8", + "line": "1504", + "parentIndex": "7159", + "start": "52783" + }, + "typeDescription": { + "typeIdentifier": "t_[_[$_t_bytes]$_t_uint256]$", + "typeString": "index[bytes:uint256]" + }, + "typeDescriptions": [ + { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ] + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Tuple", + "value": { + "components": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7173", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "25", + "end": "52824", + "id": "7174", + "length": "7", + "line": "1505", + "parentIndex": "7171", + "start": "52818" + }, + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": "7175", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "25", + "end": "52824", + "id": "7176", + "length": "7", + "line": "1505", + "parentIndex": "7173", + "start": "52818" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7177", + "name": "bool", + "nodeType": "IDENTIFIER", + "src": { + "column": "34", + "end": "52830", + "id": "7178", + "length": "4", + "line": "1505", + "parentIndex": "7171", + "start": "52827" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": "7179", + "name": "bool", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "34", + "end": "52830", + "id": "7180", + "length": "4", + "line": "1505", + "parentIndex": "7177", + "start": "52827" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7181", + "name": "uint8", + "nodeType": "IDENTIFIER", + "src": { + "column": "40", + "end": "52837", + "id": "7182", + "length": "5", + "line": "1505", + "parentIndex": "7171", + "start": "52833" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "7183", + "name": "uint8", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "40", + "end": "52837", + "id": "7184", + "length": "5", + "line": "1505", + "parentIndex": "7181", + "start": "52833" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7185", + "name": "bytes32", + "nodeType": "IDENTIFIER", + "src": { + "column": "47", + "end": "52846", + "id": "7186", + "length": "7", + "line": "1505", + "parentIndex": "7171", + "start": "52840" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "7187", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "47", + "end": "52846", + "id": "7188", + "length": "7", + "line": "1505", + "parentIndex": "7185", + "start": "52840" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7189", + "name": "bytes32", + "nodeType": "IDENTIFIER", + "src": { + "column": "56", + "end": "52855", + "id": "7190", + "length": "7", + "line": "1505", + "parentIndex": "7171", + "start": "52849" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": "7191", + "name": "bytes32", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "56", + "end": "52855", + "id": "7192", + "length": "7", + "line": "1505", + "parentIndex": "7189", + "start": "52849" + }, + "typeDescription": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + } + } + ], + "id": "7171", + "nodeType": "TUPLE_EXPRESSION", + "src": { + "column": "24", + "end": "52856", + "id": "7172", + "length": "40", + "line": "1505", + "parentIndex": "7159", + "start": "52817" + }, + "typeDescription": { + "typeIdentifier": "t_tuple_$_t_address_$_t_bool_$_t_uint8_$_t_bytes32_$_t_bytes32$", + "typeString": "tuple(address,bool,uint8,bytes32,bytes32)" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7163", + "name": "abi", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "52749", + "id": "7164", + "length": "3", + "line": "1503", + "parentIndex": "7161", + "start": "52747" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "7161", + "memberName": "decode", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "20", + "end": "52756", + "id": "7162", + "length": "10", + "line": "1503", + "parentIndex": "7159", + "start": "52747" + }, + "typeDescription": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + } + }, + "id": "7159", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "20", + "end": "52878", + "id": "7160", + "length": "132", + "line": "1503", + "parentIndex": "7157", + "start": "52747" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_[_[$_t_bytes]$_t_uint256]$_t_tuple_$_t_address_$_t_bool_$_t_uint8_$_t_bytes32_$_t_bytes32$", + "typeString": "function(index[bytes:uint256],tuple(address,bool,uint8,bytes32,bytes32))" + } + } + }, + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "16", + "end": "52879", + "id": "7158", + "length": "314", + "line": "1497", + "parentIndex": "7155", + "start": "52566" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_address$$", + "typeString": "function(function(),function(address))" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$", + "typeString": "function(function(),function(address),function(function(),function(address)))" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$", + "typeString": "function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address))))" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$$", + "typeString": "function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address))),function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address)))))" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7199", + "name": "user", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "52957", + "id": "7200", + "length": "4", + "line": "1509", + "parentIndex": "7193", + "start": "52954" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SushiXSwap_$6849", + "typeString": "contract SushiXSwap" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7207", + "name": "this", + "nodeType": "IDENTIFIER", + "src": { + "column": "28", + "end": "52991", + "id": "7208", + "length": "4", + "line": "1510", + "parentIndex": "7201", + "start": "52988" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_SushiXSwap_$6849", + "typeString": "contract SushiXSwap" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": "7203", + "name": "address", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "52986", + "id": "7204", + "length": "7", + "line": "1510", + "parentIndex": "7201", + "start": "52980" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + "typeName": { + "id": "7205", + "name": "address", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "20", + "end": "52986", + "id": "7206", + "length": "7", + "line": "1510", + "parentIndex": "7203", + "start": "52980" + }, + "stateMutability": "NONPAYABLE", + "typeDescription": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + } + }, + "id": "7201", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "20", + "end": "52992", + "id": "7202", + "length": "13", + "line": "1510", + "parentIndex": "7193", + "start": "52980" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + } + ], + "id": "7209", + "name": "approved", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "53022", + "id": "7210", + "length": "8", + "line": "1511", + "parentIndex": "7193", + "start": "53015" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_address$$", + "typeString": "function(function(),function(address))" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_address$$", + "typeString": "function(function(),function(address))" + } + ], + "id": "7211", + "name": "v", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "53045", + "id": "7212", + "length": "1", + "line": "1512", + "parentIndex": "7193", + "start": "53045" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$", + "typeString": "function(function(),function(address),function(function(),function(address)))" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_address$$", + "typeString": "function(function(),function(address))" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$", + "typeString": "function(function(),function(address),function(function(),function(address)))" + } + ], + "id": "7213", + "name": "r", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "53068", + "id": "7214", + "length": "1", + "line": "1513", + "parentIndex": "7193", + "start": "53068" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$", + "typeString": "function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address))))" + } + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + }, + { + "typeIdentifier": "t_function_$_t_address$", + "typeString": "function(address)" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_address$$", + "typeString": "function(function(),function(address))" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$", + "typeString": "function(function(),function(address),function(function(),function(address)))" + }, + { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$", + "typeString": "function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address))))" + } + ], + "id": "7215", + "name": "s", + "nodeType": "IDENTIFIER", + "src": { + "column": "20", + "end": "53091", + "id": "7216", + "length": "1", + "line": "1514", + "parentIndex": "7193", + "start": "53091" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$_t_function_$_t_function_$$$_t_function_$_t_address$$$$$", + "typeString": "function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address))),function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address)))))" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.MemberAccess", + "value": { + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7197", + "name": "bentoBox", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "1378", + "src": { + "column": "16", + "end": "52905", + "id": "7198", + "length": "8", + "line": "1508", + "parentIndex": "7195", + "start": "52898" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "7195", + "memberName": "setMasterContractApproval", + "nodeType": "MEMBER_ACCESS", + "src": { + "column": "16", + "end": "52931", + "id": "7196", + "length": "34", + "line": "1508", + "parentIndex": "7193", + "start": "52898" + }, + "typeDescription": { + "typeIdentifier": "t_contract$_IBentoBoxMinimal_$769", + "typeString": "contract IBentoBoxMinimal" + } + } + }, + "id": "7193", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "16", + "end": "53109", + "id": "7194", + "length": "212", + "line": "1508", + "parentIndex": "7155", + "start": "52898" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$_t_function_$_t_function_$_t_function_$_t_address$", + "typeString": "function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address))),function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address)))),function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address))),function(function(),function(address),function(function(),function(address)),function(function(),function(address),function(function(),function(address))))))" + } + } + } + ] + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "7149", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7151", + "name": "action", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "7135", + "src": { + "column": "16", + "end": "52510", + "id": "7152", + "length": "6", + "line": "1496", + "parentIndex": "7149", + "start": "52505" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7153", + "name": "ACTION_MASTER_CONTRACT_APPROVAL", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "7015", + "src": { + "column": "26", + "end": "52545", + "id": "7154", + "length": "31", + "line": "1496", + "parentIndex": "7149", + "start": "52515" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + }, + "src": { + "column": "16", + "end": "52545", + "id": "7150", + "length": "41", + "line": "1496", + "parentIndex": "7147", + "start": "52505" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "7147", + "nodeType": "IF_STATEMENT", + "src": { + "end": "58783", + "id": "7148", + "length": "6283", + "line": "1496", + "parentIndex": "7133", + "start": "52501" + } + } + } + ] + }, + "closure": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Assignment", + "value": { + "id": "7123", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7125", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "42", + "end": "52376", + "id": "7126", + "length": "1", + "line": "1493", + "parentIndex": "7123", + "start": "52376" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "ASSIGNMENT", + "operator": "EQUAL", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.FunctionCall", + "value": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + ], + "arguments": [ + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7131", + "name": "i", + "nodeType": "IDENTIFIER", + "src": { + "column": "57", + "end": "52391", + "id": "7132", + "length": "1", + "line": "1493", + "parentIndex": "7127", + "start": "52391" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + } + ], + "expression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7129", + "name": "_increment", + "nodeType": "IDENTIFIER", + "src": { + "column": "46", + "end": "52389", + "id": "7130", + "length": "10", + "line": "1493", + "parentIndex": "7127", + "start": "52380" + }, + "typeDescription": { + "typeIdentifier": "t_function_$", + "typeString": "function()" + } + } + }, + "id": "7127", + "kind": "FUNCTION_CALL", + "nodeType": "FUNCTION_CALL", + "src": { + "column": "46", + "end": "52392", + "id": "7128", + "length": "13", + "line": "1493", + "parentIndex": "7123", + "start": "52380" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_function_$", + "typeString": "function(function())" + } + } + }, + "src": { + "column": "42", + "end": "52392", + "id": "7124", + "length": "17", + "line": "1493", + "parentIndex": "7097", + "start": "52376" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "condition": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.BinaryOperation", + "value": { + "id": "7117", + "leftExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7119", + "name": "i", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "4164", + "src": { + "column": "24", + "end": "52358", + "id": "7120", + "length": "1", + "line": "1493", + "parentIndex": "7117", + "start": "52358" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "nodeType": "BINARY_OPERATION", + "operator": "LESS_THAN", + "rightExpression": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.PrimaryExpression", + "value": { + "id": "7121", + "name": "actionLength", + "nodeType": "IDENTIFIER", + "referencedDeclaration": "7099", + "src": { + "column": "28", + "end": "52373", + "id": "7122", + "length": "12", + "line": "1493", + "parentIndex": "7117", + "start": "52362" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "src": { + "column": "24", + "end": "52373", + "id": "7118", + "length": "16", + "line": "1493", + "parentIndex": "7109", + "start": "52358" + }, + "typeDescription": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "id": "7109", + "initialiser": { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Variable", + "value": { + "assignments": [ + "7113" + ], + "declarations": [ + { + "id": "7113", + "mutability": "MUTABLE", + "name": "i", + "nodeType": "VARIABLE_DECLARATION", + "scope": "7097", + "src": { + "column": "13", + "end": "52355", + "id": "7114", + "length": "9", + "line": "1493", + "parentIndex": "7111", + "start": "52347" + }, + "storageLocation": "DEFAULT", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "7115", + "name": "uint256", + "nodeType": "ELEMENTARY_TYPE_NAME", + "src": { + "column": "13", + "end": "52353", + "id": "7116", + "length": "7", + "line": "1493", + "parentIndex": "7113", + "start": "52347" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + } + ], + "id": "7111", + "nodeType": "VARIABLE_DECLARATION", + "src": { + "column": "13", + "end": "52356", + "id": "7112", + "length": "10", + "line": "1493", + "parentIndex": "7097", + "start": "52347" + } + } + }, + "nodeType": "FOR_STATEMENT", + "src": { + "end": "58793", + "id": "7110", + "length": "6452", + "line": "1493", + "parentIndex": "7097", + "start": "52342" + } + } + } + ] + }, + "id": "7075", + "implemented": true, + "kind": "KIND_FUNCTION", + "name": "cook", + "nodeType": "FUNCTION_DEFINITION", + "overrides": [ + { + "id": "7077", + "name": "cook", + "nodeType": "OVERRIDE_SPECIFIER", + "referencedDeclaration": "6629", + "src": { + "column": "21", + "end": "52283", + "id": "7078", + "length": "8", + "line": "1491", + "parentIndex": "7075", + "start": "52276" + }, + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint8$_t_uint256$_t_bytes$", + "typeString": "function(uint8,uint256,bytes)" + } + } + ], + "parameters": { + "id": "7079", + "nodeType": "PARAMETER_LIST", + "parameters": [ + { + "id": "7081", + "name": "actions", + "nodeType": "VARIABLE_DECLARATION", + "scope": "7081", + "src": { + "column": "8", + "end": "52190", + "id": "7082", + "length": "22", + "line": "1488", + "parentIndex": "7079", + "start": "52169" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": "7083", + "name": "uint8", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "52173", + "id": "7085", + "length": "5", + "line": "1488", + "parentIndex": "7081", + "start": "52169" + }, + "typeDescription": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "7086", + "name": "values", + "nodeType": "VARIABLE_DECLARATION", + "scope": "7086", + "src": { + "column": "8", + "end": "52223", + "id": "7087", + "length": "23", + "line": "1489", + "parentIndex": "7079", + "start": "52201" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": "7088", + "name": "uint256", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "52207", + "id": "7090", + "length": "7", + "line": "1489", + "parentIndex": "7086", + "start": "52201" + }, + "typeDescription": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "INTERNAL" + }, + { + "id": "7091", + "name": "datas", + "nodeType": "VARIABLE_DECLARATION", + "scope": "7091", + "src": { + "column": "8", + "end": "52253", + "id": "7092", + "length": "20", + "line": "1490", + "parentIndex": "7079", + "start": "52234" + }, + "stateMutability": "MUTABLE", + "storageLocation": "MEMORY", + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + }, + "typeName": { + "id": "7093", + "name": "bytes", + "nodeType": "IDENTIFIER", + "src": { + "column": "8", + "end": "52238", + "id": "7095", + "length": "5", + "line": "1490", + "parentIndex": "7091", + "start": "52234" + }, + "typeDescription": { + "typeIdentifier": "t_bytes", + "typeString": "bytes" + } + }, + "visibility": "INTERNAL" + } + ], + "src": { + "column": "8", + "end": "52253", + "id": "7080", + "length": "85", + "line": "1488", + "parentIndex": "7075", + "start": "52169" + } + }, + "returnParameters": { + "id": "7096", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "58799", + "id": "7076", + "length": "6654", + "line": "1487", + "parentIndex": "7075", + "start": "52146" + } + }, + "scope": "6935", + "src": { + "column": "4", + "end": "58799", + "id": "7076", + "length": "6654", + "line": "1487", + "parentIndex": "6935", + "start": "52146" + }, + "stateMutability": "PAYABLE", + "typeDescription": { + "typeIdentifier": "t_function_$_t_uint8$_t_uint256$_t_bytes$", + "typeString": "function(uint8,uint256,bytes)" + }, + "visibility": "PUBLIC" + } + }, + { + "typeUrl": "github.com/txpull/protos/txpull.v1.ast.Receive", + "value": { + "body": { + "id": "7222", + "implemented": true, + "nodeType": "BLOCK", + "src": { + "column": "31", + "end": "58895", + "id": "7223", + "length": "2", + "line": "1670", + "parentIndex": "7218", + "start": "58894" + } + }, + "id": "7218", + "implemented": true, + "kind": "RECEIVE", + "nodeType": "FUNCTION_DEFINITION", + "parameters": { + "id": "7220", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "58895", + "id": "7219", + "length": "29", + "line": "1670", + "parentIndex": "7218", + "start": "58867" + } + }, + "returnParameters": { + "id": "7221", + "nodeType": "PARAMETER_LIST", + "src": { + "column": "4", + "end": "58895", + "id": "7219", + "length": "29", + "line": "1670", + "parentIndex": "7218", + "start": "58867" + } + }, + "src": { + "column": "4", + "end": "58895", + "id": "7219", + "length": "29", + "line": "1670", + "parentIndex": "6935", + "start": "58867" + }, + "stateMutability": "NONPAYABLE", + "visibility": "INTERNAL" + } + } + ], + "src": { + "end": "58897", + "length": "8643", + "line": "1442", + "parentIndex": "6849", + "start": "50255" + } + } + } + ] + }, + "src": { + "id": 6850, + "line": 1442, + "start": 50255, + "end": 58897, + "length": 8643, + "parent_index": 263 + } + } + ], + "comments": [ + { + "id": 1, + "node_type": 33, + "src": { + "line": 1, + "end": 30, + "length": 31, + "parent_index": 2 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 2, + "node_type": 31, + "src": { + "line": 2, + "start": 32, + "end": 98, + "length": 67, + "parent_index": 3 + }, + "text": "// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)" + }, + { + "id": 3, + "node_type": 32, + "src": { + "line": 6, + "start": 126, + "end": 192, + "length": 67, + "parent_index": 4 + }, + "text": "/**\n * @dev Collection of functions related to the address type\n */" + }, + { + "id": 4, + "node_type": 32, + "src": { + "line": 10, + "column": 4, + "start": 216, + "end": 1169, + "length": 954, + "parent_index": 5 + }, + "text": "/**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */" + }, + { + "id": 5, + "node_type": 31, + "src": { + "line": 37, + "column": 8, + "start": 1251, + "end": 1323, + "length": 73, + "parent_index": 6 + }, + "text": "// This method relies on extcodesize/address.code.length, which returns 0" + }, + { + "id": 6, + "node_type": 31, + "src": { + "line": 38, + "column": 8, + "start": 1333, + "end": 1406, + "length": 74, + "parent_index": 7 + }, + "text": "// for contracts in construction, since the code is only stored at the end" + }, + { + "id": 7, + "node_type": 31, + "src": { + "line": 39, + "column": 8, + "start": 1416, + "end": 1447, + "length": 32, + "parent_index": 8 + }, + "text": "// of the constructor execution." + }, + { + "id": 8, + "node_type": 32, + "src": { + "line": 44, + "column": 4, + "start": 1501, + "end": 2406, + "length": 906, + "parent_index": 9 + }, + "text": "/**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */" + }, + { + "id": 9, + "node_type": 32, + "src": { + "line": 67, + "column": 4, + "start": 2730, + "end": 3460, + "length": 731, + "parent_index": 10 + }, + "text": "/**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */" + }, + { + "id": 10, + "node_type": 32, + "src": { + "line": 89, + "column": 4, + "start": 3645, + "end": 3855, + "length": 211, + "parent_index": 11 + }, + "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */" + }, + { + "id": 11, + "node_type": 32, + "src": { + "line": 103, + "column": 4, + "start": 4090, + "end": 4440, + "length": 351, + "parent_index": 12 + }, + "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */" + }, + { + "id": 12, + "node_type": 32, + "src": { + "line": 122, + "column": 4, + "start": 4706, + "end": 4942, + "length": 237, + "parent_index": 13 + }, + "text": "/**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */" + }, + { + "id": 13, + "node_type": 32, + "src": { + "line": 141, + "column": 4, + "start": 5453, + "end": 5618, + "length": 166, + "parent_index": 14 + }, + "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */" + }, + { + "id": 14, + "node_type": 32, + "src": { + "line": 151, + "column": 4, + "start": 5827, + "end": 5999, + "length": 173, + "parent_index": 15 + }, + "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */" + }, + { + "id": 15, + "node_type": 32, + "src": { + "line": 168, + "column": 4, + "start": 6397, + "end": 6564, + "length": 168, + "parent_index": 16 + }, + "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */" + }, + { + "id": 16, + "node_type": 32, + "src": { + "line": 178, + "column": 4, + "start": 6774, + "end": 6948, + "length": 175, + "parent_index": 17 + }, + "text": "/**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */" + }, + { + "id": 17, + "node_type": 32, + "src": { + "line": 195, + "column": 4, + "start": 7347, + "end": 7555, + "length": 209, + "parent_index": 18 + }, + "text": "/**\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason using the provided one.\n *\n * _Available since v4.3._\n */" + }, + { + "id": 18, + "node_type": 31, + "src": { + "line": 209, + "column": 12, + "start": 7806, + "end": 7858, + "length": 53, + "parent_index": 19 + }, + "text": "// Look for revert reason and bubble it up if present" + }, + { + "id": 19, + "node_type": 31, + "src": { + "line": 211, + "column": 16, + "start": 7917, + "end": 7991, + "length": 75, + "parent_index": 20 + }, + "text": "// The easiest way to bubble the revert reason is using memory via assembly" + }, + { + "id": 20, + "node_type": 33, + "src": { + "line": 225, + "start": 8258, + "end": 8301, + "length": 44, + "parent_index": 21 + }, + "text": "// SPDX-License-Identifier: GPL-3.0-or-later" + }, + { + "id": 21, + "node_type": 31, + "src": { + "line": 229, + "start": 8329, + "end": 8373, + "length": 45, + "parent_index": 22 + }, + "text": "/// @notice Minimal BentoBox vault interface." + }, + { + "id": 22, + "node_type": 31, + "src": { + "line": 230, + "start": 8375, + "end": 8444, + "length": 70, + "parent_index": 23 + }, + "text": "/// @dev `token` is aliased as `address` from `IERC20` for simplicity." + }, + { + "id": 23, + "node_type": 31, + "src": { + "line": 232, + "column": 4, + "start": 8479, + "end": 8537, + "length": 59, + "parent_index": 24 + }, + "text": "/// @notice Balance per ERC-20 token per account in shares." + }, + { + "id": 24, + "node_type": 31, + "src": { + "line": 235, + "column": 4, + "start": 8618, + "end": 8688, + "length": 71, + "parent_index": 25 + }, + "text": "/// @dev Helper function to represent an `amount` of `token` in shares." + }, + { + "id": 25, + "node_type": 31, + "src": { + "line": 236, + "column": 4, + "start": 8694, + "end": 8727, + "length": 34, + "parent_index": 26 + }, + "text": "/// @param token The ERC-20 token." + }, + { + "id": 26, + "node_type": 31, + "src": { + "line": 237, + "column": 4, + "start": 8733, + "end": 8769, + "length": 37, + "parent_index": 27 + }, + "text": "/// @param amount The `token` amount." + }, + { + "id": 27, + "node_type": 31, + "src": { + "line": 238, + "column": 4, + "start": 8775, + "end": 8836, + "length": 62, + "parent_index": 28 + }, + "text": "/// @param roundUp If the result `share` should be rounded up." + }, + { + "id": 28, + "node_type": 31, + "src": { + "line": 239, + "column": 4, + "start": 8842, + "end": 8898, + "length": 57, + "parent_index": 29 + }, + "text": "/// @return share The token amount represented in shares." + }, + { + "id": 29, + "node_type": 31, + "src": { + "line": 246, + "column": 4, + "start": 9040, + "end": 9113, + "length": 74, + "parent_index": 30 + }, + "text": "/// @dev Helper function to represent shares back into the `token` amount." + }, + { + "id": 30, + "node_type": 31, + "src": { + "line": 247, + "column": 4, + "start": 9119, + "end": 9152, + "length": 34, + "parent_index": 31 + }, + "text": "/// @param token The ERC-20 token." + }, + { + "id": 31, + "node_type": 31, + "src": { + "line": 248, + "column": 4, + "start": 9158, + "end": 9195, + "length": 38, + "parent_index": 32 + }, + "text": "/// @param share The amount of shares." + }, + { + "id": 32, + "node_type": 31, + "src": { + "line": 249, + "column": 4, + "start": 9201, + "end": 9254, + "length": 54, + "parent_index": 33 + }, + "text": "/// @param roundUp If the result should be rounded up." + }, + { + "id": 33, + "node_type": 31, + "src": { + "line": 250, + "column": 4, + "start": 9260, + "end": 9327, + "length": 68, + "parent_index": 34 + }, + "text": "/// @return amount The share amount back into native representation." + }, + { + "id": 34, + "node_type": 31, + "src": { + "line": 257, + "column": 4, + "start": 9470, + "end": 9547, + "length": 78, + "parent_index": 35 + }, + "text": "/// @notice Registers this contract so that users can approve it for BentoBox." + }, + { + "id": 35, + "node_type": 31, + "src": { + "line": 260, + "column": 4, + "start": 9596, + "end": 9678, + "length": 83, + "parent_index": 36 + }, + "text": "/// @notice Deposit an amount of `token` represented in either `amount` or `share`." + }, + { + "id": 36, + "node_type": 31, + "src": { + "line": 261, + "column": 4, + "start": 9684, + "end": 9729, + "length": 46, + "parent_index": 37 + }, + "text": "/// @param token_ The ERC-20 token to deposit." + }, + { + "id": 37, + "node_type": 31, + "src": { + "line": 262, + "column": 4, + "start": 9735, + "end": 9783, + "length": 49, + "parent_index": 38 + }, + "text": "/// @param from which account to pull the tokens." + }, + { + "id": 38, + "node_type": 31, + "src": { + "line": 263, + "column": 4, + "start": 9789, + "end": 9835, + "length": 47, + "parent_index": 39 + }, + "text": "/// @param to which account to push the tokens." + }, + { + "id": 39, + "node_type": 31, + "src": { + "line": 264, + "column": 4, + "start": 9841, + "end": 9907, + "length": 67, + "parent_index": 40 + }, + "text": "/// @param amount Token amount in native representation to deposit." + }, + { + "id": 40, + "node_type": 31, + "src": { + "line": 265, + "column": 4, + "start": 9913, + "end": 10007, + "length": 95, + "parent_index": 41 + }, + "text": "/// @param share Token amount represented in shares to deposit. Takes precedence over `amount`." + }, + { + "id": 41, + "node_type": 31, + "src": { + "line": 266, + "column": 4, + "start": 10013, + "end": 10055, + "length": 43, + "parent_index": 42 + }, + "text": "/// @return amountOut The amount deposited." + }, + { + "id": 42, + "node_type": 31, + "src": { + "line": 267, + "column": 4, + "start": 10061, + "end": 10124, + "length": 64, + "parent_index": 43 + }, + "text": "/// @return shareOut The deposited amount represented in shares." + }, + { + "id": 43, + "node_type": 31, + "src": { + "line": 276, + "column": 4, + "start": 10335, + "end": 10397, + "length": 63, + "parent_index": 44 + }, + "text": "/// @notice Withdraws an amount of `token` from a user account." + }, + { + "id": 44, + "node_type": 31, + "src": { + "line": 277, + "column": 4, + "start": 10403, + "end": 10449, + "length": 47, + "parent_index": 45 + }, + "text": "/// @param token_ The ERC-20 token to withdraw." + }, + { + "id": 45, + "node_type": 31, + "src": { + "line": 278, + "column": 4, + "start": 10455, + "end": 10500, + "length": 46, + "parent_index": 46 + }, + "text": "/// @param from which user to pull the tokens." + }, + { + "id": 46, + "node_type": 31, + "src": { + "line": 279, + "column": 4, + "start": 10506, + "end": 10549, + "length": 44, + "parent_index": 47 + }, + "text": "/// @param to which user to push the tokens." + }, + { + "id": 47, + "node_type": 31, + "src": { + "line": 280, + "column": 4, + "start": 10555, + "end": 10638, + "length": 84, + "parent_index": 48 + }, + "text": "/// @param amount of tokens. Either one of `amount` or `share` needs to be supplied." + }, + { + "id": 48, + "node_type": 31, + "src": { + "line": 281, + "column": 4, + "start": 10644, + "end": 10715, + "length": 72, + "parent_index": 49 + }, + "text": "/// @param share Like above, but `share` takes precedence over `amount`." + }, + { + "id": 49, + "node_type": 31, + "src": { + "line": 290, + "column": 4, + "start": 10919, + "end": 10981, + "length": 63, + "parent_index": 50 + }, + "text": "/// @notice Transfer shares from a user account to another one." + }, + { + "id": 50, + "node_type": 31, + "src": { + "line": 291, + "column": 4, + "start": 10987, + "end": 11032, + "length": 46, + "parent_index": 51 + }, + "text": "/// @param token The ERC-20 token to transfer." + }, + { + "id": 51, + "node_type": 31, + "src": { + "line": 292, + "column": 4, + "start": 11038, + "end": 11083, + "length": 46, + "parent_index": 52 + }, + "text": "/// @param from which user to pull the tokens." + }, + { + "id": 52, + "node_type": 31, + "src": { + "line": 293, + "column": 4, + "start": 11089, + "end": 11132, + "length": 44, + "parent_index": 53 + }, + "text": "/// @param to which user to push the tokens." + }, + { + "id": 53, + "node_type": 31, + "src": { + "line": 294, + "column": 4, + "start": 11138, + "end": 11186, + "length": 49, + "parent_index": 54 + }, + "text": "/// @param share The amount of `token` in shares." + }, + { + "id": 54, + "node_type": 33, + "src": { + "line": 313, + "start": 11506, + "end": 11540, + "length": 35, + "parent_index": 55 + }, + "text": "// SPDX-License-Identifier: GPL-3.0" + }, + { + "id": 55, + "node_type": 33, + "src": { + "line": 346, + "start": 12297, + "end": 12331, + "length": 35, + "parent_index": 56 + }, + "text": "// SPDX-License-Identifier: GPL-3.0" + }, + { + "id": 56, + "node_type": 33, + "src": { + "line": 354, + "start": 12444, + "end": 12487, + "length": 44, + "parent_index": 57 + }, + "text": "// SPDX-License-Identifier: GPL-3.0-or-later" + }, + { + "id": 57, + "node_type": 33, + "src": { + "line": 374, + "start": 12973, + "end": 13016, + "length": 44, + "parent_index": 58 + }, + "text": "// SPDX-License-Identifier: GPL-3.0-or-later" + }, + { + "id": 58, + "node_type": 31, + "src": { + "line": 380, + "start": 13077, + "end": 13101, + "length": 25, + "parent_index": 59 + }, + "text": "/// @title ImmutableState" + }, + { + "id": 59, + "node_type": 31, + "src": { + "line": 381, + "start": 13103, + "end": 13140, + "length": 38, + "parent_index": 60 + }, + "text": "/// @notice Stores the immutable state" + }, + { + "id": 60, + "node_type": 31, + "src": { + "line": 383, + "column": 4, + "start": 13200, + "end": 13231, + "length": 32, + "parent_index": 61 + }, + "text": "/// @notice BentoBox token vault" + }, + { + "id": 61, + "node_type": 31, + "src": { + "line": 386, + "column": 4, + "start": 13295, + "end": 13349, + "length": 55, + "parent_index": 62 + }, + "text": "/// @notice Stargate Router for cross chain interaction" + }, + { + "id": 62, + "node_type": 31, + "src": { + "line": 389, + "column": 4, + "start": 13418, + "end": 13469, + "length": 52, + "parent_index": 63 + }, + "text": "/// @notice Stargate Widget for stargate partner fee" + }, + { + "id": 63, + "node_type": 31, + "src": { + "line": 392, + "column": 4, + "start": 13538, + "end": 13577, + "length": 40, + "parent_index": 64 + }, + "text": "/// @notice Sushiswap Legacy AMM Factory" + }, + { + "id": 64, + "node_type": 31, + "src": { + "line": 395, + "column": 4, + "start": 13631, + "end": 13675, + "length": 45, + "parent_index": 65 + }, + "text": "/// @notice Sushiswap Legacy AMM PairCodeHash" + }, + { + "id": 65, + "node_type": 33, + "src": { + "line": 413, + "start": 14118, + "end": 14161, + "length": 44, + "parent_index": 66 + }, + "text": "// SPDX-License-Identifier: GPL-3.0-or-later" + }, + { + "id": 66, + "node_type": 31, + "src": { + "line": 420, + "start": 14254, + "end": 14276, + "length": 23, + "parent_index": 67 + }, + "text": "/// @title BentoAdapter" + }, + { + "id": 67, + "node_type": 31, + "src": { + "line": 421, + "start": 14278, + "end": 14363, + "length": 86, + "parent_index": 68 + }, + "text": "/// @notice Adapter which provides all functions of BentoBox require by this contract." + }, + { + "id": 68, + "node_type": 31, + "src": { + "line": 422, + "start": 14365, + "end": 14465, + "length": 101, + "parent_index": 69 + }, + "text": "/// @dev These are generic functions, make sure, only msg.sender, address(this) and address(bentoBox)" + }, + { + "id": 69, + "node_type": 31, + "src": { + "line": 423, + "start": 14467, + "end": 14555, + "length": 89, + "parent_index": 70 + }, + "text": "/// are passed in the from param, or else the attacker can sifu user's funds in bentobox." + }, + { + "id": 70, + "node_type": 31, + "src": { + "line": 425, + "column": 4, + "start": 14612, + "end": 14678, + "length": 67, + "parent_index": 71 + }, + "text": "/// @notice Deposits the token from users wallet into the BentoBox." + }, + { + "id": 71, + "node_type": 31, + "src": { + "line": 426, + "column": 4, + "start": 14684, + "end": 14755, + "length": 72, + "parent_index": 72 + }, + "text": "/// @dev Make sure, only msg.sender, address(this) and address(bentoBox)" + }, + { + "id": 72, + "node_type": 31, + "src": { + "line": 427, + "column": 4, + "start": 14761, + "end": 14849, + "length": 89, + "parent_index": 73 + }, + "text": "/// are passed in the from param, or else the attacker can sifu user's funds in bentobox." + }, + { + "id": 73, + "node_type": 31, + "src": { + "line": 428, + "column": 4, + "start": 14855, + "end": 14886, + "length": 32, + "parent_index": 74 + }, + "text": "/// Pass either amount or share." + }, + { + "id": 74, + "node_type": 31, + "src": { + "line": 429, + "column": 4, + "start": 14892, + "end": 14978, + "length": 87, + "parent_index": 75 + }, + "text": "/// @param token token to deposit. Use token as address(0) when depositing native token" + }, + { + "id": 75, + "node_type": 31, + "src": { + "line": 430, + "column": 4, + "start": 14984, + "end": 15005, + "length": 22, + "parent_index": 76 + }, + "text": "/// @param from sender" + }, + { + "id": 76, + "node_type": 31, + "src": { + "line": 431, + "column": 4, + "start": 15011, + "end": 15032, + "length": 22, + "parent_index": 77 + }, + "text": "/// @param to receiver" + }, + { + "id": 77, + "node_type": 31, + "src": { + "line": 432, + "column": 4, + "start": 15038, + "end": 15077, + "length": 40, + "parent_index": 78 + }, + "text": "/// @param amount amount to be deposited" + }, + { + "id": 78, + "node_type": 31, + "src": { + "line": 433, + "column": 4, + "start": 15083, + "end": 15120, + "length": 38, + "parent_index": 79 + }, + "text": "/// @param share share to be deposited" + }, + { + "id": 79, + "node_type": 31, + "src": { + "line": 434, + "column": 4, + "start": 15126, + "end": 15219, + "length": 94, + "parent_index": 80 + }, + "text": "/// @param value native token value to be deposited. Only use when token address is address(0)" + }, + { + "id": 80, + "node_type": 31, + "src": { + "line": 446, + "column": 4, + "start": 15488, + "end": 15583, + "length": 96, + "parent_index": 81 + }, + "text": "/// @notice Transfers the token from bentobox user to another or withdraw it to another address." + }, + { + "id": 81, + "node_type": 31, + "src": { + "line": 447, + "column": 4, + "start": 15589, + "end": 15660, + "length": 72, + "parent_index": 82 + }, + "text": "/// @dev Make sure, only msg.sender, address(this) and address(bentoBox)" + }, + { + "id": 82, + "node_type": 31, + "src": { + "line": 448, + "column": 4, + "start": 15666, + "end": 15754, + "length": 89, + "parent_index": 83 + }, + "text": "/// are passed in the from param, or else the attacker can sifu user's funds in bentobox." + }, + { + "id": 83, + "node_type": 31, + "src": { + "line": 449, + "column": 4, + "start": 15760, + "end": 15791, + "length": 32, + "parent_index": 84 + }, + "text": "/// Pass either amount or share." + }, + { + "id": 84, + "node_type": 31, + "src": { + "line": 450, + "column": 4, + "start": 15797, + "end": 15876, + "length": 80, + "parent_index": 85 + }, + "text": "/// @param token token to transfer. For native tokens, use wnative token address" + }, + { + "id": 85, + "node_type": 31, + "src": { + "line": 451, + "column": 4, + "start": 15882, + "end": 15903, + "length": 22, + "parent_index": 86 + }, + "text": "/// @param from sender" + }, + { + "id": 86, + "node_type": 31, + "src": { + "line": 452, + "column": 4, + "start": 15909, + "end": 15930, + "length": 22, + "parent_index": 87 + }, + "text": "/// @param to receiver" + }, + { + "id": 87, + "node_type": 31, + "src": { + "line": 453, + "column": 4, + "start": 15936, + "end": 15971, + "length": 36, + "parent_index": 88 + }, + "text": "/// @param amount amount to transfer" + }, + { + "id": 88, + "node_type": 31, + "src": { + "line": 454, + "column": 4, + "start": 15977, + "end": 16010, + "length": 34, + "parent_index": 89 + }, + "text": "/// @param share share to transfer" + }, + { + "id": 89, + "node_type": 31, + "src": { + "line": 455, + "column": 4, + "start": 16016, + "end": 16082, + "length": 67, + "parent_index": 90 + }, + "text": "/// @param unwrapBento use true for withdraw and false for transfer" + }, + { + "id": 90, + "node_type": 33, + "src": { + "line": 475, + "start": 16563, + "end": 16593, + "length": 31, + "parent_index": 91 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 91, + "node_type": 31, + "src": { + "line": 476, + "start": 16595, + "end": 16650, + "length": 56, + "parent_index": 92 + }, + "text": "// OpenZeppelin Contracts v4.4.1 (interfaces/IERC20.sol)" + }, + { + "id": 92, + "node_type": 33, + "src": { + "line": 483, + "start": 16703, + "end": 16746, + "length": 44, + "parent_index": 93 + }, + "text": "// SPDX-License-Identifier: GPL-3.0-or-later" + }, + { + "id": 93, + "node_type": 31, + "src": { + "line": 487, + "start": 16774, + "end": 16808, + "length": 35, + "parent_index": 94 + }, + "text": "/// @notice Trident pool interface." + }, + { + "id": 94, + "node_type": 31, + "src": { + "line": 489, + "column": 4, + "start": 16832, + "end": 16885, + "length": 54, + "parent_index": 95 + }, + "text": "/// @notice Executes a swap from one token to another." + }, + { + "id": 95, + "node_type": 31, + "src": { + "line": 490, + "column": 4, + "start": 16891, + "end": 16954, + "length": 64, + "parent_index": 96 + }, + "text": "/// @dev The input tokens must've already been sent to the pool." + }, + { + "id": 96, + "node_type": 31, + "src": { + "line": 491, + "column": 4, + "start": 16960, + "end": 17017, + "length": 58, + "parent_index": 97 + }, + "text": "/// @param data ABI-encoded params that the pool requires." + }, + { + "id": 97, + "node_type": 31, + "src": { + "line": 492, + "column": 4, + "start": 17023, + "end": 17104, + "length": 82, + "parent_index": 98 + }, + "text": "/// @return finalAmountOut The amount of output tokens that were sent to the user." + }, + { + "id": 98, + "node_type": 31, + "src": { + "line": 497, + "column": 4, + "start": 17209, + "end": 17278, + "length": 70, + "parent_index": 99 + }, + "text": "/// @notice Executes a swap from one token to another with a callback." + }, + { + "id": 99, + "node_type": 31, + "src": { + "line": 498, + "column": 4, + "start": 17284, + "end": 17386, + "length": 103, + "parent_index": 100 + }, + "text": "/// @dev This function allows borrowing the output tokens and sending the input tokens in the callback." + }, + { + "id": 100, + "node_type": 31, + "src": { + "line": 499, + "column": 4, + "start": 17392, + "end": 17449, + "length": 58, + "parent_index": 101 + }, + "text": "/// @param data ABI-encoded params that the pool requires." + }, + { + "id": 101, + "node_type": 31, + "src": { + "line": 500, + "column": 4, + "start": 17455, + "end": 17536, + "length": 82, + "parent_index": 102 + }, + "text": "/// @return finalAmountOut The amount of output tokens that were sent to the user." + }, + { + "id": 102, + "node_type": 31, + "src": { + "line": 505, + "column": 4, + "start": 17646, + "end": 17680, + "length": 35, + "parent_index": 103 + }, + "text": "/// @notice Mints liquidity tokens." + }, + { + "id": 103, + "node_type": 31, + "src": { + "line": 506, + "column": 4, + "start": 17686, + "end": 17743, + "length": 58, + "parent_index": 104 + }, + "text": "/// @param data ABI-encoded params that the pool requires." + }, + { + "id": 104, + "node_type": 31, + "src": { + "line": 507, + "column": 4, + "start": 17749, + "end": 17831, + "length": 83, + "parent_index": 105 + }, + "text": "/// @return liquidity The amount of liquidity tokens that were minted for the user." + }, + { + "id": 105, + "node_type": 31, + "src": { + "line": 510, + "column": 4, + "start": 17915, + "end": 17949, + "length": 35, + "parent_index": 106 + }, + "text": "/// @notice Burns liquidity tokens." + }, + { + "id": 106, + "node_type": 31, + "src": { + "line": 511, + "column": 4, + "start": 17955, + "end": 18021, + "length": 67, + "parent_index": 107 + }, + "text": "/// @dev The input LP tokens must've already been sent to the pool." + }, + { + "id": 107, + "node_type": 31, + "src": { + "line": 512, + "column": 4, + "start": 18027, + "end": 18084, + "length": 58, + "parent_index": 108 + }, + "text": "/// @param data ABI-encoded params that the pool requires." + }, + { + "id": 108, + "node_type": 31, + "src": { + "line": 513, + "column": 4, + "start": 18090, + "end": 18181, + "length": 92, + "parent_index": 109 + }, + "text": "/// @return withdrawnAmounts The amount of various output tokens that were sent to the user." + }, + { + "id": 109, + "node_type": 31, + "src": { + "line": 518, + "column": 4, + "start": 18301, + "end": 18361, + "length": 61, + "parent_index": 110 + }, + "text": "/// @notice Burns liquidity tokens for a single output token." + }, + { + "id": 110, + "node_type": 31, + "src": { + "line": 519, + "column": 4, + "start": 18367, + "end": 18433, + "length": 67, + "parent_index": 111 + }, + "text": "/// @dev The input LP tokens must've already been sent to the pool." + }, + { + "id": 111, + "node_type": 31, + "src": { + "line": 520, + "column": 4, + "start": 18439, + "end": 18496, + "length": 58, + "parent_index": 112 + }, + "text": "/// @param data ABI-encoded params that the pool requires." + }, + { + "id": 112, + "node_type": 31, + "src": { + "line": 521, + "column": 4, + "start": 18502, + "end": 18578, + "length": 77, + "parent_index": 113 + }, + "text": "/// @return amountOut The amount of output tokens that were sent to the user." + }, + { + "id": 113, + "node_type": 31, + "src": { + "line": 526, + "column": 4, + "start": 18684, + "end": 18733, + "length": 50, + "parent_index": 114 + }, + "text": "/// @return A unique identifier for the pool type." + }, + { + "id": 114, + "node_type": 31, + "src": { + "line": 529, + "column": 4, + "start": 18803, + "end": 18855, + "length": 53, + "parent_index": 115 + }, + "text": "/// @return An array of tokens supported by the pool." + }, + { + "id": 115, + "node_type": 31, + "src": { + "line": 532, + "column": 4, + "start": 18929, + "end": 18990, + "length": 62, + "parent_index": 116 + }, + "text": "/// @notice Simulates a trade and returns the expected output." + }, + { + "id": 116, + "node_type": 31, + "src": { + "line": 533, + "column": 4, + "start": 18996, + "end": 19098, + "length": 103, + "parent_index": 117 + }, + "text": "/// @dev The pool does not need to include a trade simulator directly in itself - it can use a library." + }, + { + "id": 117, + "node_type": 31, + "src": { + "line": 534, + "column": 4, + "start": 19104, + "end": 19161, + "length": 58, + "parent_index": 118 + }, + "text": "/// @param data ABI-encoded params that the pool requires." + }, + { + "id": 118, + "node_type": 31, + "src": { + "line": 535, + "column": 4, + "start": 19167, + "end": 19276, + "length": 110, + "parent_index": 119 + }, + "text": "/// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed." + }, + { + "id": 119, + "node_type": 31, + "src": { + "line": 541, + "column": 4, + "start": 19402, + "end": 19463, + "length": 62, + "parent_index": 120 + }, + "text": "/// @notice Simulates a trade and returns the expected output." + }, + { + "id": 120, + "node_type": 31, + "src": { + "line": 542, + "column": 4, + "start": 19469, + "end": 19571, + "length": 103, + "parent_index": 121 + }, + "text": "/// @dev The pool does not need to include a trade simulator directly in itself - it can use a library." + }, + { + "id": 121, + "node_type": 31, + "src": { + "line": 543, + "column": 4, + "start": 19577, + "end": 19634, + "length": 58, + "parent_index": 122 + }, + "text": "/// @param data ABI-encoded params that the pool requires." + }, + { + "id": 122, + "node_type": 31, + "src": { + "line": 544, + "column": 4, + "start": 19640, + "end": 19749, + "length": 110, + "parent_index": 123 + }, + "text": "/// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed." + }, + { + "id": 123, + "node_type": 31, + "src": { + "line": 550, + "column": 4, + "start": 19873, + "end": 19921, + "length": 49, + "parent_index": 124 + }, + "text": "/// @dev This event must be emitted on all swaps." + }, + { + "id": 124, + "node_type": 31, + "src": { + "line": 559, + "column": 4, + "start": 20105, + "end": 20156, + "length": 52, + "parent_index": 125 + }, + "text": "/// @dev This struct frames output tokens for burns." + }, + { + "id": 125, + "node_type": 33, + "src": { + "line": 566, + "start": 20239, + "end": 20269, + "length": 31, + "parent_index": 126 + }, + "text": "// SPDX-License-Identifier: MIT" + }, + { + "id": 126, + "node_type": 31, + "src": { + "line": 567, + "start": 20271, + "end": 20336, + "length": 66, + "parent_index": 127 + }, + "text": "// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol)" + }, + { + "id": 127, + "node_type": 32, + "src": { + "line": 574, + "start": 20412, + "end": 20868, + "length": 457, + "parent_index": 128 + }, + "text": "/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */" + }, + { + "id": 128, + "node_type": 32, + "src": { + "line": 603, + "column": 4, + "start": 21384, + "end": 21632, + "length": 249, + "parent_index": 129 + }, + "text": "/**\n * @dev Deprecated. This function has issues similar to the ones found in\n * {IERC20-approve}, and its usage is discouraged.\n *\n * Whenever possible, use {safeIncreaseAllowance} and\n * {safeDecreaseAllowance} instead.\n */" + }, + { + "id": 129, + "node_type": 31, + "src": { + "line": 615, + "column": 8, + "start": 21754, + "end": 21824, + "length": 71, + "parent_index": 130 + }, + "text": "// safeApprove should only be called when setting an initial allowance," + }, + { + "id": 130, + "node_type": 31, + "src": { + "line": 616, + "column": 8, + "start": 21834, + "end": 21898, + "length": 65, + "parent_index": 131 + }, + "text": "// or when resetting it to zero. To increase and decrease it, use" + }, + { + "id": 131, + "node_type": 31, + "src": { + "line": 617, + "column": 8, + "start": 21908, + "end": 21961, + "length": 54, + "parent_index": 132 + }, + "text": "// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'" + }, + { + "id": 132, + "node_type": 32, + "src": { + "line": 647, + "column": 4, + "start": 23055, + "end": 23426, + "length": 372, + "parent_index": 133 + }, + "text": "/**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */" + }, + { + "id": 133, + "node_type": 31, + "src": { + "line": 654, + "column": 8, + "start": 23512, + "end": 23619, + "length": 108, + "parent_index": 134 + }, + "text": "// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since" + }, + { + "id": 134, + "node_type": 31, + "src": { + "line": 655, + "column": 8, + "start": 23629, + "end": 23735, + "length": 107, + "parent_index": 135 + }, + "text": "// we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that" + }, + { + "id": 135, + "node_type": 31, + "src": { + "line": 656, + "column": 8, + "start": 23745, + "end": 23840, + "length": 96, + "parent_index": 136 + }, + "text": "// the target address contains contract code and also asserts for success in the low-level call." + }, + { + "id": 136, + "node_type": 31, + "src": { + "line": 660, + "column": 12, + "start": 23997, + "end": 24022, + "length": 26, + "parent_index": 137 + }, + "text": "// Return data is optional" + }, + { + "id": 137, + "node_type": 33, + "src": { + "line": 667, + "start": 24143, + "end": 24186, + "length": 44, + "parent_index": 138 + }, + "text": "// SPDX-License-Identifier: GPL-3.0-or-later" + }, + { + "id": 138, + "node_type": 33, + "src": { + "line": 679, + "start": 24393, + "end": 24436, + "length": 44, + "parent_index": 139 + }, + "text": "// SPDX-License-Identifier: GPL-3.0-or-later" + }, + { + "id": 139, + "node_type": 31, + "src": { + "line": 686, + "start": 24513, + "end": 24535, + "length": 23, + "parent_index": 140 + }, + "text": "/// @title TokenAdapter" + }, + { + "id": 140, + "node_type": 31, + "src": { + "line": 687, + "start": 24537, + "end": 24580, + "length": 44, + "parent_index": 141 + }, + "text": "/// @notice Adapter for all token operations" + }, + { + "id": 141, + "node_type": 31, + "src": { + "line": 691, + "column": 4, + "start": 24652, + "end": 24709, + "length": 58, + "parent_index": 142 + }, + "text": "/// @notice Function to transfer tokens from address(this)" + }, + { + "id": 142, + "node_type": 31, + "src": { + "line": 692, + "column": 4, + "start": 24715, + "end": 24748, + "length": 34, + "parent_index": 143 + }, + "text": "/// @param token token to transfer" + }, + { + "id": 143, + "node_type": 31, + "src": { + "line": 693, + "column": 4, + "start": 24754, + "end": 24775, + "length": 22, + "parent_index": 144 + }, + "text": "/// @param to receiver" + }, + { + "id": 144, + "node_type": 31, + "src": { + "line": 694, + "column": 4, + "start": 24781, + "end": 24816, + "length": 36, + "parent_index": 145 + }, + "text": "/// @param amount amount to transfer" + }, + { + "id": 145, + "node_type": 31, + "src": { + "line": 707, + "column": 4, + "start": 25098, + "end": 25164, + "length": 67, + "parent_index": 146 + }, + "text": "/// @notice Function to transfer tokens from user to the to address" + }, + { + "id": 146, + "node_type": 31, + "src": { + "line": 708, + "column": 4, + "start": 25170, + "end": 25203, + "length": 34, + "parent_index": 147 + }, + "text": "/// @param token token to transfer" + }, + { + "id": 147, + "node_type": 31, + "src": { + "line": 709, + "column": 4, + "start": 25209, + "end": 25230, + "length": 22, + "parent_index": 148 + }, + "text": "/// @param to receiver" + }, + { + "id": 148, + "node_type": 31, + "src": { + "line": 710, + "column": 4, + "start": 25236, + "end": 25271, + "length": 36, + "parent_index": 149 + }, + "text": "/// @param amount amount to transfer" + }, + { + "id": 149, + "node_type": 31, + "src": { + "line": 719, + "column": 4, + "start": 25455, + "end": 25534, + "length": 80, + "parent_index": 150 + }, + "text": "/// @notice Unwraps the wrapper native into native and sends it to the receiver." + }, + { + "id": 150, + "node_type": 31, + "src": { + "line": 720, + "column": 4, + "start": 25540, + "end": 25573, + "length": 34, + "parent_index": 151 + }, + "text": "/// @param token token to transfer" + }, + { + "id": 151, + "node_type": 31, + "src": { + "line": 721, + "column": 4, + "start": 25579, + "end": 25600, + "length": 22, + "parent_index": 152 + }, + "text": "/// @param to receiver" + }, + { + "id": 152, + "node_type": 33, + "src": { + "line": 728, + "start": 25821, + "end": 25855, + "length": 35, + "parent_index": 153 + }, + "text": "// SPDX-License-Identifier: GPL-3.0" + }, + { + "id": 153, + "node_type": 33, + "src": { + "line": 783, + "start": 28283, + "end": 28317, + "length": 35, + "parent_index": 154 + }, + "text": "// SPDX-License-Identifier: GPL-3.0" + }, + { + "id": 154, + "node_type": 31, + "src": { + "line": 787, + "start": 28347, + "end": 28450, + "length": 104, + "parent_index": 155 + }, + "text": "// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)" + }, + { + "id": 155, + "node_type": 33, + "src": { + "line": 803, + "start": 28919, + "end": 28953, + "length": 35, + "parent_index": 156 + }, + "text": "// SPDX-License-Identifier: GPL-3.0" + }, + { + "id": 156, + "node_type": 31, + "src": { + "line": 814, + "column": 4, + "start": 29111, + "end": 29205, + "length": 95, + "parent_index": 157 + }, + "text": "// returns sorted token addresses, used to handle return values from pairs sorted in this order" + }, + { + "id": 157, + "node_type": 31, + "src": { + "line": 827, + "column": 4, + "start": 29614, + "end": 29691, + "length": 78, + "parent_index": 158 + }, + "text": "// calculates the CREATE2 address for a pair without making any external calls" + }, + { + "id": 158, + "node_type": 31, + "src": { + "line": 843, + "column": 41, + "start": 30264, + "end": 30280, + "length": 17, + "parent_index": 159 + }, + "text": "// init code hash" + }, + { + "id": 159, + "node_type": 31, + "src": { + "line": 851, + "column": 4, + "start": 30384, + "end": 30427, + "length": 44, + "parent_index": 160 + }, + "text": "// fetches and sorts the reserves for a pair" + }, + { + "id": 160, + "node_type": 31, + "src": { + "line": 867, + "column": 4, + "start": 30960, + "end": 31058, + "length": 99, + "parent_index": 161 + }, + "text": "// given some amount of an asset and pair reserves, returns an equivalent amount of the other asset" + }, + { + "id": 161, + "node_type": 31, + "src": { + "line": 881, + "column": 4, + "start": 31463, + "end": 31570, + "length": 108, + "parent_index": 162 + }, + "text": "// given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset" + }, + { + "id": 162, + "node_type": 31, + "src": { + "line": 898, + "column": 4, + "start": 32177, + "end": 32283, + "length": 107, + "parent_index": 163 + }, + "text": "// given an output amount of an asset and pair reserves, returns a required input amount of the other asset" + }, + { + "id": 163, + "node_type": 31, + "src": { + "line": 914, + "column": 4, + "start": 32843, + "end": 32910, + "length": 68, + "parent_index": 164 + }, + "text": "// performs chained getAmountOut calculations on any number of pairs" + }, + { + "id": 164, + "node_type": 31, + "src": { + "line": 935, + "column": 4, + "start": 33595, + "end": 33661, + "length": 67, + "parent_index": 165 + }, + "text": "// performs chained getAmountIn calculations on any number of pairs" + }, + { + "id": 165, + "node_type": 33, + "src": { + "line": 957, + "start": 34365, + "end": 34408, + "length": 44, + "parent_index": 166 + }, + "text": "// SPDX-License-Identifier: GPL-3.0-or-later" + }, + { + "id": 166, + "node_type": 31, + "src": { + "line": 965, + "start": 34527, + "end": 34555, + "length": 29, + "parent_index": 167 + }, + "text": "/// @title SushiLegacyAdapter" + }, + { + "id": 167, + "node_type": 31, + "src": { + "line": 966, + "start": 34557, + "end": 34630, + "length": 74, + "parent_index": 168 + }, + "text": "/// @notice Adapter for functions used to swap using Sushiswap Legacy AMM." + }, + { + "id": 168, + "node_type": 31, + "src": { + "line": 987, + "column": 8, + "start": 35232, + "end": 35295, + "length": 64, + "parent_index": 169 + }, + "text": "/// @dev force sends token to the first pair if not already sent" + }, + { + "id": 169, + "node_type": 31, + "src": { + "line": 1002, + "column": 4, + "start": 35673, + "end": 35752, + "length": 80, + "parent_index": 170 + }, + "text": "/// @dev requires the initial amount to have already been sent to the first pair" + }, + { + "id": 170, + "node_type": 33, + "src": { + "line": 1030, + "start": 36728, + "end": 36771, + "length": 44, + "parent_index": 171 + }, + "text": "// SPDX-License-Identifier: GPL-3.0-or-later" + }, + { + "id": 171, + "node_type": 31, + "src": { + "line": 1038, + "start": 36878, + "end": 36919, + "length": 42, + "parent_index": 172 + }, + "text": "/// @notice Trident pool router interface." + }, + { + "id": 172, + "node_type": 31, + "src": { + "line": 1077, + "column": 34, + "start": 37680, + "end": 37720, + "length": 41, + "parent_index": 173 + }, + "text": "// Multiplied by 10^6. 100% = 100_000_000" + }, + { + "id": 173, + "node_type": 33, + "src": { + "line": 1095, + "start": 38013, + "end": 38056, + "length": 44, + "parent_index": 174 + }, + "text": "// SPDX-License-Identifier: GPL-3.0-or-later" + }, + { + "id": 174, + "node_type": 33, + "src": { + "line": 1106, + "start": 38239, + "end": 38282, + "length": 44, + "parent_index": 175 + }, + "text": "// SPDX-License-Identifier: GPL-3.0-or-later" + }, + { + "id": 175, + "node_type": 31, + "src": { + "line": 1112, + "start": 38347, + "end": 38375, + "length": 29, + "parent_index": 176 + }, + "text": "/// @title TridentSwapAdapter" + }, + { + "id": 176, + "node_type": 31, + "src": { + "line": 1113, + "start": 38377, + "end": 38423, + "length": 47, + "parent_index": 177 + }, + "text": "/// @notice Adapter for all Trident based Swaps" + }, + { + "id": 177, + "node_type": 31, + "src": { + "line": 1121, + "column": 4, + "start": 38547, + "end": 38561, + "length": 15, + "parent_index": 178 + }, + "text": "// Custom Error" + }, + { + "id": 178, + "node_type": 31, + "src": { + "line": 1124, + "column": 4, + "start": 38599, + "end": 38678, + "length": 80, + "parent_index": 179 + }, + "text": "/// @notice Swaps token A to token B directly. Swaps are done on `bento` tokens." + }, + { + "id": 179, + "node_type": 31, + "src": { + "line": 1125, + "column": 4, + "start": 38684, + "end": 38771, + "length": 88, + "parent_index": 180 + }, + "text": "/// @param params This includes the address of token A, pool, amount of token A to swap," + }, + { + "id": 180, + "node_type": 31, + "src": { + "line": 1126, + "column": 4, + "start": 38777, + "end": 38864, + "length": 88, + "parent_index": 181 + }, + "text": "/// minimum amount of token B after the swap and data required by the pool for the swap." + }, + { + "id": 181, + "node_type": 31, + "src": { + "line": 1127, + "column": 4, + "start": 38870, + "end": 38973, + "length": 104, + "parent_index": 182 + }, + "text": "/// @dev Ensure that the pool is trusted before calling this function. The pool can steal users' tokens." + }, + { + "id": 182, + "node_type": 31, + "src": { + "line": 1141, + "column": 12, + "start": 39399, + "end": 39429, + "length": 31, + "parent_index": 183 + }, + "text": "// Pay the first pool directly." + }, + { + "id": 183, + "node_type": 31, + "src": { + "line": 1151, + "column": 8, + "start": 39669, + "end": 39699, + "length": 31, + "parent_index": 184 + }, + "text": "// Call every pool in the path." + }, + { + "id": 184, + "node_type": 31, + "src": { + "line": 1152, + "column": 8, + "start": 39709, + "end": 39777, + "length": 69, + "parent_index": 185 + }, + "text": "// Pool `N` should transfer its output tokens to pool `N+1` directly." + }, + { + "id": 185, + "node_type": 31, + "src": { + "line": 1153, + "column": 8, + "start": 39787, + "end": 39849, + "length": 63, + "parent_index": 186 + }, + "text": "// The last pool should transfer its output tokens to the user." + }, + { + "id": 186, + "node_type": 31, + "src": { + "line": 1154, + "column": 8, + "start": 39859, + "end": 39946, + "length": 88, + "parent_index": 187 + }, + "text": "// If the user wants to unwrap `wETH`, the final destination should be this contract and" + }, + { + "id": 187, + "node_type": 31, + "src": { + "line": 1155, + "column": 8, + "start": 39956, + "end": 40002, + "length": 47, + "parent_index": 188 + }, + "text": "// a batch call should be made to `unwrapWETH`." + }, + { + "id": 188, + "node_type": 31, + "src": { + "line": 1160, + "column": 8, + "start": 40196, + "end": 40277, + "length": 82, + "parent_index": 189 + }, + "text": "// Ensure that the slippage wasn't too much. This assumes that the pool is honest." + }, + { + "id": 189, + "node_type": 31, + "src": { + "line": 1164, + "column": 4, + "start": 40367, + "end": 40479, + "length": 113, + "parent_index": 190 + }, + "text": "/// @notice Swaps multiple input tokens to multiple output tokens using multiple paths, in different percentages." + }, + { + "id": 190, + "node_type": 31, + "src": { + "line": 1165, + "column": 4, + "start": 40485, + "end": 40557, + "length": 73, + "parent_index": 191 + }, + "text": "/// For example, you can swap 50 DAI + 100 USDC into 60% ETH and 40% BTC." + }, + { + "id": 191, + "node_type": 31, + "src": { + "line": 1166, + "column": 4, + "start": 40563, + "end": 40625, + "length": 63, + "parent_index": 192 + }, + "text": "/// @param params This includes everything needed for the swap." + }, + { + "id": 192, + "node_type": 31, + "src": { + "line": 1167, + "column": 4, + "start": 40631, + "end": 40690, + "length": 60, + "parent_index": 193 + }, + "text": "/// Look at the `ComplexPathParams` struct for more details." + }, + { + "id": 193, + "node_type": 31, + "src": { + "line": 1168, + "column": 4, + "start": 40696, + "end": 40798, + "length": 103, + "parent_index": 194 + }, + "text": "/// @dev This function is not optimized for single swaps and should only be used in complex cases where" + }, + { + "id": 194, + "node_type": 31, + "src": { + "line": 1169, + "column": 4, + "start": 40804, + "end": 40908, + "length": 105, + "parent_index": 195 + }, + "text": "/// the amounts are large enough that minimizing slippage by using multiple paths is worth the extra gas." + }, + { + "id": 195, + "node_type": 31, + "src": { + "line": 1171, + "column": 8, + "start": 40988, + "end": 41060, + "length": 73, + "parent_index": 196 + }, + "text": "// Deposit all initial tokens to respective pools and initiate the swaps." + }, + { + "id": 196, + "node_type": 31, + "src": { + "line": 1172, + "column": 8, + "start": 41070, + "end": 41137, + "length": 68, + "parent_index": 197 + }, + "text": "// Input tokens come from the user - output goes to following pools." + }, + { + "id": 197, + "node_type": 31, + "src": { + "line": 1183, + "column": 8, + "start": 41553, + "end": 41612, + "length": 60, + "parent_index": 198 + }, + "text": "// Do all the middle swaps. Input comes from previous pools." + }, + { + "id": 198, + "node_type": 31, + "src": { + "line": 1202, + "column": 8, + "start": 42334, + "end": 42403, + "length": 70, + "parent_index": 199 + }, + "text": "// Ensure enough was received and transfer the ouput to the recipient." + }, + { + "id": 199, + "node_type": 33, + "src": { + "line": 1237, + "start": 43413, + "end": 43456, + "length": 44, + "parent_index": 200 + }, + "text": "// SPDX-License-Identifier: GPL-3.0-or-later" + }, + { + "id": 200, + "node_type": 31, + "src": { + "line": 1243, + "start": 43518, + "end": 43543, + "length": 26, + "parent_index": 201 + }, + "text": "/// @title StargateAdapter" + }, + { + "id": 201, + "node_type": 31, + "src": { + "line": 1244, + "start": 43545, + "end": 43600, + "length": 56, + "parent_index": 202 + }, + "text": "/// @notice Adapter for function used by Stargate Bridge" + }, + { + "id": 202, + "node_type": 31, + "src": { + "line": 1248, + "column": 4, + "start": 43712, + "end": 43726, + "length": 15, + "parent_index": 203 + }, + "text": "// Custom Error" + }, + { + "id": 203, + "node_type": 31, + "src": { + "line": 1251, + "column": 4, + "start": 43764, + "end": 43772, + "length": 9, + "parent_index": 204 + }, + "text": "// events" + }, + { + "id": 204, + "node_type": 31, + "src": { + "line": 1256, + "column": 27, + "start": 43973, + "end": 43996, + "length": 24, + "parent_index": 205 + }, + "text": "// stargate dst chain id" + }, + { + "id": 205, + "node_type": 31, + "src": { + "line": 1257, + "column": 23, + "start": 44021, + "end": 44044, + "length": 24, + "parent_index": 206 + }, + "text": "// token getting bridged" + }, + { + "id": 206, + "node_type": 31, + "src": { + "line": 1258, + "column": 27, + "start": 44073, + "end": 44095, + "length": 23, + "parent_index": 207 + }, + "text": "// stargate src pool id" + }, + { + "id": 207, + "node_type": 31, + "src": { + "line": 1259, + "column": 27, + "start": 44124, + "end": 44146, + "length": 23, + "parent_index": 208 + }, + "text": "// stargate dst pool id" + }, + { + "id": 208, + "node_type": 31, + "src": { + "line": 1260, + "column": 24, + "start": 44172, + "end": 44190, + "length": 19, + "parent_index": 209 + }, + "text": "// amount to bridge" + }, + { + "id": 209, + "node_type": 31, + "src": { + "line": 1261, + "column": 27, + "start": 44219, + "end": 44245, + "length": 27, + "parent_index": 210 + }, + "text": "// amount to bridge minimum" + }, + { + "id": 210, + "node_type": 31, + "src": { + "line": 1262, + "column": 28, + "start": 44275, + "end": 44317, + "length": 43, + "parent_index": 211 + }, + "text": "// native token to be received on dst chain" + }, + { + "id": 211, + "node_type": 31, + "src": { + "line": 1263, + "column": 26, + "start": 44345, + "end": 44370, + "length": 26, + "parent_index": 212 + }, + "text": "// sushiXswap on dst chain" + }, + { + "id": 212, + "node_type": 31, + "src": { + "line": 1264, + "column": 20, + "start": 44392, + "end": 44458, + "length": 67, + "parent_index": 213 + }, + "text": "// receiver bridge token incase of transaction reverts on dst chain" + }, + { + "id": 213, + "node_type": 31, + "src": { + "line": 1265, + "column": 21, + "start": 44481, + "end": 44528, + "length": 48, + "parent_index": 214 + }, + "text": "// extra gas to be sent for dst chain operations" + }, + { + "id": 214, + "node_type": 31, + "src": { + "line": 1266, + "column": 28, + "start": 44558, + "end": 44592, + "length": 35, + "parent_index": 215 + }, + "text": "// random bytes32 as source context" + }, + { + "id": 215, + "node_type": 31, + "src": { + "line": 1269, + "column": 4, + "start": 44605, + "end": 44653, + "length": 49, + "parent_index": 216 + }, + "text": "/// @notice Approves token to the Stargate Router" + }, + { + "id": 216, + "node_type": 31, + "src": { + "line": 1270, + "column": 4, + "start": 44659, + "end": 44691, + "length": 33, + "parent_index": 217 + }, + "text": "/// @param token token to approve" + }, + { + "id": 217, + "node_type": 31, + "src": { + "line": 1275, + "column": 4, + "start": 44837, + "end": 44900, + "length": 64, + "parent_index": 218 + }, + "text": "/// @notice Bridges the token to dst chain using Stargate Router" + }, + { + "id": 218, + "node_type": 31, + "src": { + "line": 1276, + "column": 4, + "start": 44906, + "end": 44995, + "length": 90, + "parent_index": 219 + }, + "text": "/// @dev It is hardcoded to use all the contract balance. Only call this as the last step." + }, + { + "id": 219, + "node_type": 31, + "src": { + "line": 1277, + "column": 4, + "start": 45001, + "end": 45057, + "length": 57, + "parent_index": 220 + }, + "text": "/// The refund address for extra fees sent it msg.sender." + }, + { + "id": 220, + "node_type": 31, + "src": { + "line": 1278, + "column": 4, + "start": 45063, + "end": 45152, + "length": 90, + "parent_index": 221 + }, + "text": "/// @param params required by the Stargate, can be found at StargateTeleportParams struct." + }, + { + "id": 221, + "node_type": 31, + "src": { + "line": 1279, + "column": 4, + "start": 45158, + "end": 45250, + "length": 93, + "parent_index": 222 + }, + "text": "/// @param actions An array with a sequence of actions to execute (see ACTION_ declarations)." + }, + { + "id": 222, + "node_type": 31, + "src": { + "line": 1280, + "column": 4, + "start": 45256, + "end": 45354, + "length": 99, + "parent_index": 223 + }, + "text": "/// @param values A one-to-one mapped array to `actions`. Native token amount to send along action." + }, + { + "id": 223, + "node_type": 31, + "src": { + "line": 1281, + "column": 4, + "start": 45360, + "end": 45464, + "length": 105, + "parent_index": 224 + }, + "text": "/// @param datas A one-to-one mapped array to `actions`. Contains abi encoded data of function arguments." + }, + { + "id": 224, + "node_type": 31, + "src": { + "line": 1294, + "column": 33, + "start": 45936, + "end": 45952, + "length": 17, + "parent_index": 225 + }, + "text": "// refund address" + }, + { + "id": 225, + "node_type": 31, + "src": { + "line": 1300, + "column": 28, + "start": 46177, + "end": 46217, + "length": 41, + "parent_index": 226 + }, + "text": "// extra gas to be sent for dst execution" + }, + { + "id": 226, + "node_type": 31, + "src": { + "line": 1304, + "column": 47, + "start": 46366, + "end": 46395, + "length": 30, + "parent_index": 227 + }, + "text": "// sushiXswap on the dst chain" + }, + { + "id": 227, + "node_type": 31, + "src": { + "line": 1313, + "column": 4, + "start": 46540, + "end": 46603, + "length": 64, + "parent_index": 228 + }, + "text": "/// @notice Get the fees to be paid in native token for the swap" + }, + { + "id": 228, + "node_type": 31, + "src": { + "line": 1314, + "column": 4, + "start": 46609, + "end": 46651, + "length": 43, + "parent_index": 229 + }, + "text": "/// @param _dstChainId stargate dst chainId" + }, + { + "id": 229, + "node_type": 31, + "src": { + "line": 1315, + "column": 4, + "start": 46657, + "end": 46715, + "length": 59, + "parent_index": 230 + }, + "text": "/// @param _functionType stargate Function type 1 for swap." + }, + { + "id": 230, + "node_type": 31, + "src": { + "line": 1316, + "column": 4, + "start": 46721, + "end": 46806, + "length": 86, + "parent_index": 231 + }, + "text": "/// See more at https://stargateprotocol.gitbook.io/stargate/developers/function-types" + }, + { + "id": 231, + "node_type": 31, + "src": { + "line": 1317, + "column": 4, + "start": 46812, + "end": 46859, + "length": 48, + "parent_index": 232 + }, + "text": "/// @param _receiver sushiXswap on the dst chain" + }, + { + "id": 232, + "node_type": 31, + "src": { + "line": 1318, + "column": 4, + "start": 46865, + "end": 46900, + "length": 36, + "parent_index": 233 + }, + "text": "/// @param _gas extra gas being sent" + }, + { + "id": 233, + "node_type": 31, + "src": { + "line": 1319, + "column": 4, + "start": 46906, + "end": 46971, + "length": 66, + "parent_index": 234 + }, + "text": "/// @param _dustAmount dust amount to be received at the dst chain" + }, + { + "id": 234, + "node_type": 31, + "src": { + "line": 1320, + "column": 4, + "start": 46977, + "end": 47031, + "length": 55, + "parent_index": 235 + }, + "text": "/// @param _payload payload being sent at the dst chain" + }, + { + "id": 235, + "node_type": 31, + "src": { + "line": 1342, + "column": 4, + "start": 47618, + "end": 47659, + "length": 42, + "parent_index": 236 + }, + "text": "/// @notice Receiver function on dst chain" + }, + { + "id": 236, + "node_type": 31, + "src": { + "line": 1343, + "column": 4, + "start": 47665, + "end": 47703, + "length": 39, + "parent_index": 237 + }, + "text": "/// @param _token bridge token received" + }, + { + "id": 237, + "node_type": 31, + "src": { + "line": 1344, + "column": 4, + "start": 47709, + "end": 47743, + "length": 35, + "parent_index": 238 + }, + "text": "/// @param amountLD amount received" + }, + { + "id": 238, + "node_type": 31, + "src": { + "line": 1345, + "column": 4, + "start": 47749, + "end": 47807, + "length": 59, + "parent_index": 239 + }, + "text": "/// @param payload ABI-Encoded data received from src chain" + }, + { + "id": 239, + "node_type": 31, + "src": { + "line": 1364, + "column": 8, + "start": 48336, + "end": 48356, + "length": 21, + "parent_index": 240 + }, + "text": "// 100000 -\u003e exit gas" + }, + { + "id": 240, + "node_type": 31, + "src": { + "line": 1367, + "column": 8, + "start": 48431, + "end": 48503, + "length": 73, + "parent_index": 241 + }, + "text": "/// @dev incase the actions fail, transfer bridge token to the to address" + }, + { + "id": 241, + "node_type": 31, + "src": { + "line": 1379, + "column": 8, + "start": 48803, + "end": 48871, + "length": 69, + "parent_index": 242 + }, + "text": "/// @dev transfer any native token received as dust to the to address" + }, + { + "id": 242, + "node_type": 33, + "src": { + "line": 1388, + "start": 49036, + "end": 49079, + "length": 44, + "parent_index": 243 + }, + "text": "// SPDX-License-Identifier: GPL-3.0-or-later" + }, + { + "id": 243, + "node_type": 33, + "src": { + "line": 1406, + "start": 49432, + "end": 49466, + "length": 35, + "parent_index": 244 + }, + "text": "// SPDX-License-Identifier: GPL-3.0" + }, + { + "id": 244, + "node_type": 33, + "src": { + "line": 1421, + "start": 49729, + "end": 49763, + "length": 35, + "parent_index": 245 + }, + "text": "// SPDX-License-Identifier: GPL-3.0" + }, + { + "id": 245, + "node_type": 33, + "src": { + "line": 1433, + "start": 49974, + "end": 50017, + "length": 44, + "parent_index": 246 + }, + "text": "// SPDX-License-Identifier: GPL-3.0-or-later" + }, + { + "id": 246, + "node_type": 31, + "src": { + "line": 1439, + "start": 50074, + "end": 50094, + "length": 21, + "parent_index": 247 + }, + "text": "/// @title SushiXSwap" + }, + { + "id": 247, + "node_type": 31, + "src": { + "line": 1440, + "start": 50096, + "end": 50146, + "length": 51, + "parent_index": 248 + }, + "text": "/// @notice Enables cross chain swap for sushiswap." + }, + { + "id": 248, + "node_type": 31, + "src": { + "line": 1441, + "start": 50148, + "end": 50253, + "length": 106, + "parent_index": 249 + }, + "text": "/// @dev Supports both BentoBox and Wallet. Supports both Trident and Legacy AMM. Uses Stargate as bridge." + }, + { + "id": 249, + "node_type": 31, + "src": { + "line": 1457, + "column": 8, + "start": 50693, + "end": 50715, + "length": 23, + "parent_index": 250 + }, + "text": "// Register to BentoBox" + }, + { + "id": 250, + "node_type": 31, + "src": { + "line": 1461, + "column": 4, + "start": 50766, + "end": 50819, + "length": 54, + "parent_index": 251 + }, + "text": "/// @notice List of ACTIONS supported by the `cook()`." + }, + { + "id": 251, + "node_type": 31, + "src": { + "line": 1463, + "column": 4, + "start": 50826, + "end": 50854, + "length": 29, + "parent_index": 252 + }, + "text": "// Bento and Token Operations" + }, + { + "id": 252, + "node_type": 31, + "src": { + "line": 1472, + "column": 4, + "start": 51319, + "end": 51336, + "length": 18, + "parent_index": 253 + }, + "text": "// Swap Operations" + }, + { + "id": 253, + "node_type": 31, + "src": { + "line": 1477, + "column": 4, + "start": 51514, + "end": 51533, + "length": 20, + "parent_index": 254 + }, + "text": "// Bridge Operations" + }, + { + "id": 254, + "node_type": 31, + "src": { + "line": 1482, + "column": 4, + "start": 51660, + "end": 51758, + "length": 99, + "parent_index": 255 + }, + "text": "/// @notice Executes a set of actions and allows composability (contract calls) to other contracts." + }, + { + "id": 255, + "node_type": 31, + "src": { + "line": 1483, + "column": 4, + "start": 51764, + "end": 51856, + "length": 93, + "parent_index": 256 + }, + "text": "/// @param actions An array with a sequence of actions to execute (see ACTION_ declarations)." + }, + { + "id": 256, + "node_type": 31, + "src": { + "line": 1484, + "column": 4, + "start": 51862, + "end": 51960, + "length": 99, + "parent_index": 257 + }, + "text": "/// @param values A one-to-one mapped array to `actions`. Native token amount to send along action." + }, + { + "id": 257, + "node_type": 31, + "src": { + "line": 1485, + "column": 4, + "start": 51966, + "end": 52070, + "length": 105, + "parent_index": 258 + }, + "text": "/// @param datas A one-to-one mapped array to `actions`. Contains abi encoded data of function arguments." + }, + { + "id": 258, + "node_type": 31, + "src": { + "line": 1486, + "column": 4, + "start": 52076, + "end": 52140, + "length": 65, + "parent_index": 259 + }, + "text": "/// @dev The function gets invoked both at the src and dst chain." + }, + { + "id": 259, + "node_type": 31, + "src": { + "line": 1495, + "column": 12, + "start": 52448, + "end": 52487, + "length": 40, + "parent_index": 260 + }, + "text": "// update for total amounts in contract?" + }, + { + "id": 260, + "node_type": 31, + "src": { + "line": 1559, + "column": 20, + "start": 54854, + "end": 54922, + "length": 69, + "parent_index": 261 + }, + "text": "// Stargate Router doesn't support value? Should we update it anyway?" + }, + { + "id": 261, + "node_type": 31, + "src": { + "line": 1560, + "column": 20, + "start": 54944, + "end": 54980, + "length": 37, + "parent_index": 262 + }, + "text": "// values[i] = address(this).balance;" + }, + { + "id": 262, + "node_type": 31, + "src": { + "line": 1669, + "column": 4, + "start": 58806, + "end": 58861, + "length": 56, + "parent_index": 263 + }, + "text": "/// @notice Allows the contract to receive Native tokens" + } + ] +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/TokenAdapter.sol b/data/tests/contracts/sushixswap/TokenAdapter.sol new file mode 100644 index 00000000..48b6b1f9 --- /dev/null +++ b/data/tests/contracts/sushixswap/TokenAdapter.sol @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity 0.8.11; + +import "./SafeERC20.sol"; +import "./IWETH.sol"; + +/// @title TokenAdapter +/// @notice Adapter for all token operations +abstract contract TokenAdapter { + using SafeERC20 for IERC20; + + /// @notice Function to transfer tokens from address(this) + /// @param token token to transfer + /// @param to receiver + /// @param amount amount to transfer + function _transferTokens( + IERC20 token, + address to, + uint256 amount + ) internal { + if (address(token) != address(0)) { + token.safeTransfer(to, amount); + } else { + payable(to).transfer(amount); + } + } + + /// @notice Function to transfer tokens from user to the to address + /// @param token token to transfer + /// @param to receiver + /// @param amount amount to transfer + function _transferFromToken( + IERC20 token, + address to, + uint256 amount + ) internal { + token.safeTransferFrom(msg.sender, to, amount); + } + + /// @notice Unwraps the wrapper native into native and sends it to the receiver. + /// @param token token to transfer + /// @param to receiver + function _unwrapTransfer(address token, address to) internal { + IWETH(token).withdraw(IERC20(token).balanceOf(address(this))); + _transferTokens(IERC20(address(0)), to, address(this).balance); + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/TokenAdapter.solgo.ast.json b/data/tests/contracts/sushixswap/TokenAdapter.solgo.ast.json new file mode 100644 index 00000000..eb0529c3 --- /dev/null +++ b/data/tests/contracts/sushixswap/TokenAdapter.solgo.ast.json @@ -0,0 +1,1990 @@ +{ + "id": 2401, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 2401, + "name": "TokenAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/TokenAdapter.sol" + }, + { + "id": 2303, + "name": "SafeERC20", + "absolute_path": "SafeERC20.sol" + }, + { + "id": 2303, + "name": "IWETH", + "absolute_path": "IWETH.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/TokenAdapter.sol", + "name": "TokenAdapter", + "node_type": 1, + "nodes": [ + { + "id": 2425, + "node_type": 10, + "src": { + "id": 2426, + "line": 681, + "column": 0, + "start": 24439, + "end": 24461, + "length": 23, + "parent_index": 2401 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 2436, + "node_type": 29, + "src": { + "id": 0, + "line": 683, + "column": 0, + "start": 24464, + "end": 24488, + "length": 25, + "parent_index": 2401 + }, + "absolute_path": "SafeERC20.sol", + "file": "./SafeERC20.sol", + "scope": 2401, + "unit_alias": "", + "source_unit": 2303 + }, + { + "id": 2437, + "node_type": 29, + "src": { + "id": 0, + "line": 684, + "column": 0, + "start": 24490, + "end": 24510, + "length": 21, + "parent_index": 2401 + }, + "absolute_path": "IWETH.sol", + "file": "./IWETH.sol", + "scope": 2401, + "unit_alias": "", + "source_unit": 2303 + }, + { + "id": 2438, + "name": "TokenAdapter", + "node_type": 35, + "src": { + "id": 0, + "line": 688, + "column": 0, + "start": 24582, + "end": 25818, + "length": 1237, + "parent_index": 2401 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 2440, + "node_type": 51, + "src": { + "id": 2441, + "line": 689, + "column": 0, + "start": 24619, + "end": 24645, + "length": 27, + "parent_index": 2438 + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "type_name": { + "id": 2442, + "node_type": 69, + "src": { + "id": 2443, + "line": 689, + "column": 24, + "start": 24639, + "end": 24644, + "length": 6, + "parent_index": 2440 + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "path_node": { + "id": 2444, + "name": "IERC20", + "node_type": 52, + "referenced_declaration": 0, + "src": { + "id": 2445, + "line": 689, + "column": 24, + "start": 24639, + "end": 24644, + "length": 6, + "parent_index": 2442 + } + }, + "referenced_declaration": 2570 + }, + "library_name": { + "id": 2446, + "node_type": 52, + "src": { + "id": 2447, + "line": 689, + "column": 0, + "start": 24625, + "end": 24633, + "length": 9, + "parent_index": 2440 + }, + "name": "SafeERC20", + "referenced_declaration": 2570 + } + }, + { + "id": 2449, + "name": "_transferTokens", + "node_type": 42, + "kind": 41, + "src": { + "id": 2450, + "line": 695, + "column": 4, + "start": 24822, + "end": 25091, + "length": 270, + "parent_index": 2438 + }, + "body": { + "id": 2468, + "node_type": 46, + "kind": 0, + "src": { + "id": 2469, + "line": 699, + "column": 15, + "start": 24928, + "end": 25091, + "length": 164, + "parent_index": 2449 + }, + "implemented": true, + "statements": [ + { + "id": 2470, + "node_type": 48, + "src": { + "id": 2471, + "line": 700, + "column": 0, + "start": 24938, + "end": 25085, + "length": 148, + "parent_index": 2468 + }, + "condition": { + "id": 2472, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 2473, + "line": 700, + "column": 12, + "start": 24942, + "end": 24969, + "length": 28, + "parent_index": 2470 + }, + "operator": 12, + "left_expression": { + "id": 2474, + "node_type": 24, + "kind": 24, + "src": { + "id": 2475, + "line": 700, + "column": 12, + "start": 24942, + "end": 24955, + "length": 14, + "parent_index": 2472 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 2480, + "node_type": 16, + "src": { + "id": 2481, + "line": 700, + "column": 20, + "start": 24950, + "end": 24954, + "length": 5, + "parent_index": 2474 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + } + ], + "expression": { + "id": 2476, + "node_type": 16, + "src": { + "id": 2477, + "line": 700, + "column": 12, + "start": 24942, + "end": 24948, + "length": 7, + "parent_index": 2474 + }, + "name": "address", + "type_name": { + "id": 2478, + "node_type": 30, + "src": { + "id": 2479, + "line": 700, + "column": 12, + "start": 24942, + "end": 24948, + "length": 7, + "parent_index": 2476 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "right_expression": { + "id": 2482, + "node_type": 24, + "kind": 24, + "src": { + "id": 2483, + "line": 700, + "column": 30, + "start": 24960, + "end": 24969, + "length": 10, + "parent_index": 2472 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 2488, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 2489, + "line": 700, + "column": 38, + "start": 24968, + "end": 24968, + "length": 1, + "parent_index": 2482 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 2484, + "node_type": 16, + "src": { + "id": 2485, + "line": 700, + "column": 30, + "start": 24960, + "end": 24966, + "length": 7, + "parent_index": 2482 + }, + "name": "address", + "type_name": { + "id": 2486, + "node_type": 30, + "src": { + "id": 2487, + "line": 700, + "column": 30, + "start": 24960, + "end": 24966, + "length": 7, + "parent_index": 2484 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 2490, + "node_type": 46, + "kind": 0, + "src": { + "id": 2491, + "line": 700, + "column": 42, + "start": 24972, + "end": 25026, + "length": 55, + "parent_index": 2449 + }, + "implemented": true, + "statements": [ + { + "id": 2492, + "node_type": 24, + "kind": 24, + "src": { + "id": 2493, + "line": 701, + "column": 12, + "start": 24986, + "end": 25015, + "length": 30, + "parent_index": 2490 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 2498, + "node_type": 16, + "src": { + "id": 2499, + "line": 701, + "column": 31, + "start": 25005, + "end": 25006, + "length": 2, + "parent_index": 2492 + }, + "name": "to", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2498, + "is_pure": false + }, + { + "id": 2500, + "node_type": 16, + "src": { + "id": 2501, + "line": 701, + "column": 35, + "start": 25009, + "end": 25014, + "length": 6, + "parent_index": 2492 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 2500, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 2494, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2495, + "line": 701, + "column": 12, + "start": 24986, + "end": 25003, + "length": 18, + "parent_index": 2492 + }, + "expression": { + "id": 2496, + "node_type": 16, + "src": { + "id": 2497, + "line": 701, + "column": 12, + "start": 24986, + "end": 24990, + "length": 5, + "parent_index": 2494 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + }, + "member_name": "safeTransfer", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_uint256$", + "type_string": "function(address,uint256)" + } + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2451, + "node_type": 43, + "src": { + "id": 2452, + "line": 696, + "column": 8, + "start": 24856, + "end": 24911, + "length": 56, + "parent_index": 2449 + }, + "parameters": [ + { + "id": 2453, + "node_type": 44, + "src": { + "id": 2454, + "line": 696, + "column": 8, + "start": 24856, + "end": 24867, + "length": 12, + "parent_index": 2451 + }, + "scope": 2449, + "name": "token", + "type_name": { + "id": 2455, + "node_type": 69, + "src": { + "id": 2456, + "line": 696, + "column": 8, + "start": 24856, + "end": 24861, + "length": 6, + "parent_index": 2453 + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "path_node": { + "id": 2457, + "name": "IERC20", + "node_type": 52, + "referenced_declaration": 0, + "src": { + "id": 2458, + "line": 696, + "column": 8, + "start": 24856, + "end": 24861, + "length": 6, + "parent_index": 2455 + } + }, + "referenced_declaration": 2570 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 2459, + "node_type": 44, + "src": { + "id": 2460, + "line": 697, + "column": 8, + "start": 24878, + "end": 24887, + "length": 10, + "parent_index": 2451 + }, + "scope": 2449, + "name": "to", + "type_name": { + "id": 2461, + "node_type": 30, + "src": { + "id": 2462, + "line": 697, + "column": 8, + "start": 24878, + "end": 24884, + "length": 7, + "parent_index": 2459 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2463, + "node_type": 44, + "src": { + "id": 2464, + "line": 698, + "column": 8, + "start": 24898, + "end": 24911, + "length": 14, + "parent_index": 2451 + }, + "scope": 2449, + "name": "amount", + "type_name": { + "id": 2465, + "node_type": 30, + "src": { + "id": 2466, + "line": 698, + "column": 8, + "start": 24898, + "end": 24904, + "length": 7, + "parent_index": 2463 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + null, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 2467, + "node_type": 43, + "src": { + "id": 2450, + "line": 695, + "column": 4, + "start": 24822, + "end": 25091, + "length": 270, + "parent_index": 2449 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2438, + "type_description": { + "type_identifier": "t_function_$_t_unknown_2449$_t_address$_t_uint256$", + "type_string": "function(unknown_2449,address,uint256)" + } + }, + { + "id": 2503, + "name": "_transferFromToken", + "node_type": 42, + "kind": 41, + "src": { + "id": 2504, + "line": 711, + "column": 4, + "start": 25277, + "end": 25448, + "length": 172, + "parent_index": 2438 + }, + "body": { + "id": 2522, + "node_type": 46, + "kind": 0, + "src": { + "id": 2523, + "line": 715, + "column": 15, + "start": 25386, + "end": 25448, + "length": 63, + "parent_index": 2503 + }, + "implemented": true, + "statements": [ + { + "id": 2524, + "node_type": 24, + "kind": 24, + "src": { + "id": 2525, + "line": 716, + "column": 8, + "start": 25396, + "end": 25441, + "length": 46, + "parent_index": 2522 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 2530, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2531, + "line": 716, + "column": 31, + "start": 25419, + "end": 25428, + "length": 10, + "parent_index": 2524 + }, + "expression": { + "id": 2532, + "node_type": 16, + "src": { + "id": 2533, + "line": 716, + "column": 31, + "start": 25419, + "end": 25421, + "length": 3, + "parent_index": 2530 + }, + "name": "msg", + "type_description": { + "type_identifier": "t_magic_message", + "type_string": "msg" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "sender", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + { + "id": 2534, + "node_type": 16, + "src": { + "id": 2535, + "line": 716, + "column": 43, + "start": 25431, + "end": 25432, + "length": 2, + "parent_index": 2524 + }, + "name": "to", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2534, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 2536, + "node_type": 16, + "src": { + "id": 2537, + "line": 716, + "column": 47, + "start": 25435, + "end": 25440, + "length": 6, + "parent_index": 2524 + }, + "name": "amount", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 2536, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 2526, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2527, + "line": 716, + "column": 8, + "start": 25396, + "end": 25417, + "length": 22, + "parent_index": 2524 + }, + "expression": { + "id": 2528, + "node_type": 16, + "src": { + "id": 2529, + "line": 716, + "column": 8, + "start": 25396, + "end": 25400, + "length": 5, + "parent_index": 2526 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 837, + "is_pure": false + }, + "member_name": "safeTransferFrom", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", + "type_string": "function(address,address,uint256)" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2505, + "node_type": 43, + "src": { + "id": 2506, + "line": 712, + "column": 8, + "start": 25314, + "end": 25369, + "length": 56, + "parent_index": 2503 + }, + "parameters": [ + { + "id": 2507, + "node_type": 44, + "src": { + "id": 2508, + "line": 712, + "column": 8, + "start": 25314, + "end": 25325, + "length": 12, + "parent_index": 2505 + }, + "scope": 2503, + "name": "token", + "type_name": { + "id": 2509, + "node_type": 69, + "src": { + "id": 2510, + "line": 712, + "column": 8, + "start": 25314, + "end": 25319, + "length": 6, + "parent_index": 2507 + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "path_node": { + "id": 2511, + "name": "IERC20", + "node_type": 52, + "referenced_declaration": 0, + "src": { + "id": 2512, + "line": 712, + "column": 8, + "start": 25314, + "end": 25319, + "length": 6, + "parent_index": 2509 + } + }, + "referenced_declaration": 2570 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 2513, + "node_type": 44, + "src": { + "id": 2514, + "line": 713, + "column": 8, + "start": 25336, + "end": 25345, + "length": 10, + "parent_index": 2505 + }, + "scope": 2503, + "name": "to", + "type_name": { + "id": 2515, + "node_type": 30, + "src": { + "id": 2516, + "line": 713, + "column": 8, + "start": 25336, + "end": 25342, + "length": 7, + "parent_index": 2513 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2517, + "node_type": 44, + "src": { + "id": 2518, + "line": 714, + "column": 8, + "start": 25356, + "end": 25369, + "length": 14, + "parent_index": 2505 + }, + "scope": 2503, + "name": "amount", + "type_name": { + "id": 2519, + "node_type": 30, + "src": { + "id": 2520, + "line": 714, + "column": 8, + "start": 25356, + "end": 25362, + "length": 7, + "parent_index": 2517 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + null, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 2521, + "node_type": 43, + "src": { + "id": 2504, + "line": 711, + "column": 4, + "start": 25277, + "end": 25448, + "length": 172, + "parent_index": 2503 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2438, + "type_description": { + "type_identifier": "t_function_$_t_unknown_2503$_t_address$_t_uint256$", + "type_string": "function(unknown_2503,address,uint256)" + } + }, + { + "id": 2539, + "name": "_unwrapTransfer", + "node_type": 42, + "kind": 41, + "src": { + "id": 2540, + "line": 722, + "column": 4, + "start": 25606, + "end": 25816, + "length": 211, + "parent_index": 2438 + }, + "body": { + "id": 2552, + "node_type": 46, + "kind": 0, + "src": { + "id": 2553, + "line": 722, + "column": 65, + "start": 25667, + "end": 25816, + "length": 150, + "parent_index": 2539 + }, + "implemented": true, + "statements": [ + { + "id": 2554, + "node_type": 24, + "kind": 24, + "src": { + "id": 2555, + "line": 723, + "column": 8, + "start": 25677, + "end": 25737, + "length": 61, + "parent_index": 2552 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_function_$_t_address$", + "type_string": "function(function(address))" + } + ], + "arguments": [ + { + "id": 2564, + "node_type": 24, + "kind": 24, + "src": { + "id": 2565, + "line": 723, + "column": 30, + "start": 25699, + "end": 25736, + "length": 38, + "parent_index": 2554 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ], + "arguments": [ + { + "id": 2574, + "node_type": 24, + "kind": 24, + "src": { + "id": 2575, + "line": 723, + "column": 54, + "start": 25723, + "end": 25735, + "length": 13, + "parent_index": 2564 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_TokenAdapter_$2401", + "type_string": "contract TokenAdapter" + } + ], + "arguments": [ + { + "id": 2580, + "node_type": 16, + "src": { + "id": 2581, + "line": 723, + "column": 62, + "start": 25731, + "end": 25734, + "length": 4, + "parent_index": 2574 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_TokenAdapter_$2401", + "type_string": "contract TokenAdapter" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 2576, + "node_type": 16, + "src": { + "id": 2577, + "line": 723, + "column": 54, + "start": 25723, + "end": 25729, + "length": 7, + "parent_index": 2574 + }, + "name": "address", + "type_name": { + "id": 2578, + "node_type": 30, + "src": { + "id": 2579, + "line": 723, + "column": 54, + "start": 25723, + "end": 25729, + "length": 7, + "parent_index": 2576 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ], + "expression": { + "id": 2566, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2567, + "line": 723, + "column": 30, + "start": 25699, + "end": 25721, + "length": 23, + "parent_index": 2564 + }, + "expression": { + "id": 2568, + "node_type": 24, + "kind": 24, + "src": { + "id": 2569, + "line": 723, + "column": 30, + "start": 25699, + "end": 25711, + "length": 13, + "parent_index": 2566 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 2572, + "node_type": 16, + "src": { + "id": 2573, + "line": 723, + "column": 37, + "start": 25706, + "end": 25710, + "length": 5, + "parent_index": 2568 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2572, + "is_pure": false + } + ], + "expression": { + "id": 2570, + "node_type": 16, + "src": { + "id": 2571, + "line": 723, + "column": 30, + "start": 25699, + "end": 25704, + "length": 6, + "parent_index": 2568 + }, + "name": "IERC20", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "member_name": "balanceOf", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$", + "type_string": "function(function(address))" + } + } + ], + "expression": { + "id": 2556, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2557, + "line": 723, + "column": 8, + "start": 25677, + "end": 25697, + "length": 21, + "parent_index": 2554 + }, + "expression": { + "id": 2558, + "node_type": 24, + "kind": 24, + "src": { + "id": 2559, + "line": 723, + "column": 8, + "start": 25677, + "end": 25688, + "length": 12, + "parent_index": 2556 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 2562, + "node_type": 16, + "src": { + "id": 2563, + "line": 723, + "column": 14, + "start": 25683, + "end": 25687, + "length": 5, + "parent_index": 2558 + }, + "name": "token", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2562, + "is_pure": false + } + ], + "expression": { + "id": 2560, + "node_type": 16, + "src": { + "id": 2561, + "line": 723, + "column": 8, + "start": 25677, + "end": 25681, + "length": 5, + "parent_index": 2558 + }, + "name": "IWETH", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "member_name": "withdraw", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_address$", + "type_string": "function(function(function(address)))" + } + }, + { + "id": 2582, + "node_type": 24, + "kind": 24, + "src": { + "id": 2583, + "line": 724, + "column": 8, + "start": 25748, + "end": 25809, + "length": 62, + "parent_index": 2552 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_function_$_t_rational_0_by_1$", + "type_string": "function(function(int_const 0))" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ], + "arguments": [ + { + "id": 2586, + "node_type": 24, + "kind": 24, + "src": { + "id": 2587, + "line": 724, + "column": 24, + "start": 25764, + "end": 25781, + "length": 18, + "parent_index": 2582 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + ], + "arguments": [ + { + "id": 2590, + "node_type": 24, + "kind": 24, + "src": { + "id": 2591, + "line": 724, + "column": 31, + "start": 25771, + "end": 25780, + "length": 10, + "parent_index": 2586 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 2596, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 2597, + "line": 724, + "column": 39, + "start": 25779, + "end": 25779, + "length": 1, + "parent_index": 2590 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 2592, + "node_type": 16, + "src": { + "id": 2593, + "line": 724, + "column": 31, + "start": 25771, + "end": 25777, + "length": 7, + "parent_index": 2590 + }, + "name": "address", + "type_name": { + "id": 2594, + "node_type": 30, + "src": { + "id": 2595, + "line": 724, + "column": 31, + "start": 25771, + "end": 25777, + "length": 7, + "parent_index": 2592 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + } + ], + "expression": { + "id": 2588, + "node_type": 16, + "src": { + "id": 2589, + "line": 724, + "column": 24, + "start": 25764, + "end": 25769, + "length": 6, + "parent_index": 2586 + }, + "name": "IERC20", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_rational_0_by_1$", + "type_string": "function(function(int_const 0))" + } + }, + { + "id": 2598, + "node_type": 16, + "src": { + "id": 2599, + "line": 724, + "column": 44, + "start": 25784, + "end": 25785, + "length": 2, + "parent_index": 2582 + }, + "name": "to", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 2598, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$_t_function_$_t_rational_0_by_1$", + "type_string": "function(function(int_const 0))" + } + ] + }, + { + "id": 2600, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 2601, + "line": 724, + "column": 48, + "start": 25788, + "end": 25808, + "length": 21, + "parent_index": 2582 + }, + "expression": { + "id": 2602, + "node_type": 24, + "kind": 24, + "src": { + "id": 2603, + "line": 724, + "column": 48, + "start": 25788, + "end": 25800, + "length": 13, + "parent_index": 2600 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_TokenAdapter_$2401", + "type_string": "contract TokenAdapter" + } + ], + "arguments": [ + { + "id": 2608, + "node_type": 16, + "src": { + "id": 2609, + "line": 724, + "column": 56, + "start": 25796, + "end": 25799, + "length": 4, + "parent_index": 2602 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_TokenAdapter_$2401", + "type_string": "contract TokenAdapter" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 2604, + "node_type": 16, + "src": { + "id": 2605, + "line": 724, + "column": 48, + "start": 25788, + "end": 25794, + "length": 7, + "parent_index": 2602 + }, + "name": "address", + "type_name": { + "id": 2606, + "node_type": 30, + "src": { + "id": 2607, + "line": 724, + "column": 48, + "start": 25788, + "end": 25794, + "length": 7, + "parent_index": 2604 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "member_name": "balance", + "argument_types": [ + { + "type_identifier": "t_function_$_t_function_$_t_rational_0_by_1$", + "type_string": "function(function(int_const 0))" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ], + "expression": { + "id": 2584, + "node_type": 16, + "src": { + "id": 2585, + "line": 724, + "column": 8, + "start": 25748, + "end": 25762, + "length": 15, + "parent_index": 2582 + }, + "name": "_transferTokens", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_rational_0_by_1$_t_address$_t_function_$_t_address$", + "type_string": "function(function(function(int_const 0)),address,function(address))" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 2541, + "node_type": 43, + "src": { + "id": 2542, + "line": 722, + "column": 29, + "start": 25631, + "end": 25655, + "length": 25, + "parent_index": 2539 + }, + "parameters": [ + { + "id": 2543, + "node_type": 44, + "src": { + "id": 2544, + "line": 722, + "column": 29, + "start": 25631, + "end": 25643, + "length": 13, + "parent_index": 2541 + }, + "scope": 2539, + "name": "token", + "type_name": { + "id": 2545, + "node_type": 30, + "src": { + "id": 2546, + "line": 722, + "column": 29, + "start": 25631, + "end": 25637, + "length": 7, + "parent_index": 2543 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 2547, + "node_type": 44, + "src": { + "id": 2548, + "line": 722, + "column": 44, + "start": 25646, + "end": 25655, + "length": 10, + "parent_index": 2541 + }, + "scope": 2539, + "name": "to", + "type_name": { + "id": 2549, + "node_type": 30, + "src": { + "id": 2550, + "line": 722, + "column": 44, + "start": 25646, + "end": 25652, + "length": 7, + "parent_index": 2547 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 2551, + "node_type": 43, + "src": { + "id": 2540, + "line": 722, + "column": 4, + "start": 25606, + "end": 25816, + "length": 211, + "parent_index": 2539 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 2438, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$", + "type_string": "function(address,address)" + } + } + ], + "linearized_base_contracts": [ + 2438, + 2436, + 2437 + ], + "base_contracts": [], + "contract_dependencies": [ + 2436, + 2437 + ] + } + ], + "src": { + "id": 2402, + "line": 688, + "column": 0, + "start": 24582, + "end": 25818, + "length": 1237, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/TridentSwapAdapter.sol b/data/tests/contracts/sushixswap/TridentSwapAdapter.sol new file mode 100644 index 00000000..f49b44fa --- /dev/null +++ b/data/tests/contracts/sushixswap/TridentSwapAdapter.sol @@ -0,0 +1,130 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +pragma solidity 0.8.11; + +import "./ITridentSwapAdapter.sol"; + +/// @title TridentSwapAdapter +/// @notice Adapter for all Trident based Swaps + +abstract contract TridentSwapAdapter is + ITridentRouter, + ImmutableState, + BentoAdapter, + TokenAdapter +{ + // Custom Error + error TooLittleReceived(); + + /// @notice Swaps token A to token B directly. Swaps are done on `bento` tokens. + /// @param params This includes the address of token A, pool, amount of token A to swap, + /// minimum amount of token B after the swap and data required by the pool for the swap. + /// @dev Ensure that the pool is trusted before calling this function. The pool can steal users' tokens. + function _exactInput(ExactInputParams memory params) + internal + returns (uint256 amountOut) + { + if (params.amountIn == 0) { + uint256 tokenBalance = IERC20(params.tokenIn).balanceOf( + address(this) + ); + _transferTokens( + IERC20(params.tokenIn), + address(bentoBox), + tokenBalance + ); + // Pay the first pool directly. + (, params.amountIn) = bentoBox.deposit( + params.tokenIn, + address(bentoBox), + params.path[0].pool, + tokenBalance, + 0 + ); + } + + // Call every pool in the path. + // Pool `N` should transfer its output tokens to pool `N+1` directly. + // The last pool should transfer its output tokens to the user. + // If the user wants to unwrap `wETH`, the final destination should be this contract and + // a batch call should be made to `unwrapWETH`. + uint256 n = params.path.length; + for (uint256 i = 0; i < n; i = _increment(i)) { + amountOut = IPool(params.path[i].pool).swap(params.path[i].data); + } + // Ensure that the slippage wasn't too much. This assumes that the pool is honest. + if (amountOut < params.amountOutMinimum) revert TooLittleReceived(); + } + + /// @notice Swaps multiple input tokens to multiple output tokens using multiple paths, in different percentages. + /// For example, you can swap 50 DAI + 100 USDC into 60% ETH and 40% BTC. + /// @param params This includes everything needed for the swap. + /// Look at the `ComplexPathParams` struct for more details. + /// @dev This function is not optimized for single swaps and should only be used in complex cases where + /// the amounts are large enough that minimizing slippage by using multiple paths is worth the extra gas. + function _complexPath(ComplexPathParams memory params) internal { + // Deposit all initial tokens to respective pools and initiate the swaps. + // Input tokens come from the user - output goes to following pools. + uint256 n = params.initialPath.length; + for (uint256 i = 0; i < n; i = _increment(i)) { + bentoBox.transfer( + params.initialPath[i].tokenIn, + address(this), + params.initialPath[i].pool, + params.initialPath[i].amount + ); + IPool(params.initialPath[i].pool).swap(params.initialPath[i].data); + } + // Do all the middle swaps. Input comes from previous pools. + n = params.percentagePath.length; + for (uint256 i = 0; i < n; i = _increment(i)) { + uint256 balanceShares = bentoBox.balanceOf( + params.percentagePath[i].tokenIn, + address(this) + ); + uint256 transferShares = (balanceShares * + params.percentagePath[i].balancePercentage) / uint256(10)**8; + bentoBox.transfer( + params.percentagePath[i].tokenIn, + address(this), + params.percentagePath[i].pool, + transferShares + ); + IPool(params.percentagePath[i].pool).swap( + params.percentagePath[i].data + ); + } + // Ensure enough was received and transfer the ouput to the recipient. + n = params.output.length; + for (uint256 i = 0; i < n; i = _increment(i)) { + uint256 balanceShares = bentoBox.balanceOf( + params.output[i].token, + address(this) + ); + if (balanceShares < params.output[i].minAmount) + revert TooLittleReceived(); + if (params.output[i].unwrapBento) { + bentoBox.withdraw( + params.output[i].token, + address(this), + params.output[i].to, + 0, + balanceShares + ); + } else { + bentoBox.transfer( + params.output[i].token, + address(this), + params.output[i].to, + balanceShares + ); + } + } + } + + function _increment(uint256 i) internal pure returns (uint256) { + unchecked { + return i + 1; + } + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/TridentSwapAdapter.solgo.ast.json b/data/tests/contracts/sushixswap/TridentSwapAdapter.solgo.ast.json new file mode 100644 index 00000000..55f804d8 --- /dev/null +++ b/data/tests/contracts/sushixswap/TridentSwapAdapter.solgo.ast.json @@ -0,0 +1,7880 @@ +{ + "id": 5143, + "base_contracts": [ + { + "id": 5208, + "node_type": 62, + "src": { + "id": 5209, + "line": 1116, + "column": 4, + "start": 38470, + "end": 38483, + "length": 14, + "parent_index": 5207 + }, + "base_name": { + "id": 5210, + "node_type": 52, + "src": { + "id": 5211, + "line": 1116, + "column": 4, + "start": 38470, + "end": 38483, + "length": 14, + "parent_index": 5207 + }, + "name": "ITridentRouter", + "referenced_declaration": 4839 + } + }, + { + "id": 5212, + "node_type": 62, + "src": { + "id": 5213, + "line": 1117, + "column": 4, + "start": 38490, + "end": 38503, + "length": 14, + "parent_index": 5207 + }, + "base_name": { + "id": 5214, + "node_type": 52, + "src": { + "id": 5215, + "line": 1117, + "column": 4, + "start": 38490, + "end": 38503, + "length": 14, + "parent_index": 5207 + }, + "name": "ImmutableState", + "referenced_declaration": 1354 + } + }, + { + "id": 5216, + "node_type": 62, + "src": { + "id": 5217, + "line": 1118, + "column": 4, + "start": 38510, + "end": 38521, + "length": 12, + "parent_index": 5207 + }, + "base_name": { + "id": 5218, + "node_type": 52, + "src": { + "id": 5219, + "line": 1118, + "column": 4, + "start": 38510, + "end": 38521, + "length": 12, + "parent_index": 5207 + }, + "name": "BentoAdapter", + "referenced_declaration": 1482 + } + }, + { + "id": 5220, + "node_type": 62, + "src": { + "id": 5221, + "line": 1119, + "column": 4, + "start": 38528, + "end": 38539, + "length": 12, + "parent_index": 5207 + }, + "base_name": { + "id": 5222, + "node_type": 52, + "src": { + "id": 5223, + "line": 1119, + "column": 4, + "start": 38528, + "end": 38539, + "length": 12, + "parent_index": 5207 + }, + "name": "TokenAdapter", + "referenced_declaration": 2401 + } + } + ], + "license": "MIT", + "exported_symbols": [ + { + "id": 5143, + "name": "TridentSwapAdapter", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/TridentSwapAdapter.sol" + }, + { + "id": 5068, + "name": "ITridentRouter", + "absolute_path": "ITridentRouter.sol" + }, + { + "id": 5068, + "name": "BentoAdapter", + "absolute_path": "BentoAdapter.sol" + }, + { + "id": 5068, + "name": "TokenAdapter", + "absolute_path": "TokenAdapter.sol" + }, + { + "id": 5068, + "name": "ImmutableState", + "absolute_path": "ImmutableState.sol" + }, + { + "id": 5068, + "name": "ITridentSwapAdapter", + "absolute_path": "ITridentSwapAdapter.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/TridentSwapAdapter.sol", + "name": "TridentSwapAdapter", + "node_type": 1, + "nodes": [ + { + "id": 5181, + "node_type": 10, + "src": { + "id": 5182, + "line": 1108, + "column": 0, + "start": 38285, + "end": 38307, + "length": 23, + "parent_index": 5143 + }, + "literals": [ + "pragma", + "solidity", + "0", + ".", + "8", + ".", + "11", + ";" + ], + "text": "pragma solidity 0.8.11;" + }, + { + "id": 5202, + "node_type": 29, + "src": { + "id": 0, + "line": 1099, + "column": 0, + "start": 38084, + "end": 38113, + "length": 30, + "parent_index": 5143 + }, + "absolute_path": "ITridentRouter.sol", + "file": "./ITridentRouter.sol", + "scope": 5143, + "unit_alias": "", + "source_unit": 5068 + }, + { + "id": 5203, + "node_type": 29, + "src": { + "id": 0, + "line": 1100, + "column": 0, + "start": 38115, + "end": 38142, + "length": 28, + "parent_index": 5143 + }, + "absolute_path": "BentoAdapter.sol", + "file": "./BentoAdapter.sol", + "scope": 5143, + "unit_alias": "", + "source_unit": 5068 + }, + { + "id": 5204, + "node_type": 29, + "src": { + "id": 0, + "line": 1101, + "column": 0, + "start": 38144, + "end": 38171, + "length": 28, + "parent_index": 5143 + }, + "absolute_path": "TokenAdapter.sol", + "file": "./TokenAdapter.sol", + "scope": 5143, + "unit_alias": "", + "source_unit": 5068 + }, + { + "id": 5205, + "node_type": 29, + "src": { + "id": 0, + "line": 1102, + "column": 0, + "start": 38173, + "end": 38202, + "length": 30, + "parent_index": 5143 + }, + "absolute_path": "ImmutableState.sol", + "file": "./ImmutableState.sol", + "scope": 5143, + "unit_alias": "", + "source_unit": 5068 + }, + { + "id": 5206, + "node_type": 29, + "src": { + "id": 0, + "line": 1110, + "column": 0, + "start": 38310, + "end": 38344, + "length": 35, + "parent_index": 5143 + }, + "absolute_path": "ITridentSwapAdapter.sol", + "file": "./ITridentSwapAdapter.sol", + "scope": 5143, + "unit_alias": "", + "source_unit": 5068 + }, + { + "id": 5207, + "name": "TridentSwapAdapter", + "node_type": 35, + "src": { + "id": 0, + "line": 1115, + "column": 0, + "start": 38426, + "end": 43410, + "length": 4985, + "parent_index": 5143 + }, + "abstract": false, + "kind": 36, + "fully_implemented": true, + "nodes": [ + { + "id": 5225, + "node_type": 77, + "src": { + "id": 5226, + "line": 1122, + "column": 4, + "start": 38567, + "end": 38592, + "length": 26, + "parent_index": 5207 + }, + "name": "TooLittleReceived", + "parameters": { + "id": 5227, + "node_type": 43, + "src": { + "id": 5226, + "line": 1122, + "column": 4, + "start": 38567, + "end": 38592, + "length": 26, + "parent_index": 5225 + }, + "parameters": [], + "parameter_types": [] + }, + "type_description": { + "type_identifier": "t_error$_TridentSwapAdapter_TooLittleReceived_$5225", + "type_string": "error TridentSwapAdapter.TooLittleReceived" + } + }, + { + "id": 5229, + "name": "_exactInput", + "node_type": 42, + "kind": 41, + "src": { + "id": 5230, + "line": 1128, + "column": 4, + "start": 38979, + "end": 40360, + "length": 1382, + "parent_index": 5207 + }, + "body": { + "id": 5245, + "node_type": 46, + "kind": 0, + "src": { + "id": 5246, + "line": 1131, + "column": 4, + "start": 39089, + "end": 40360, + "length": 1272, + "parent_index": 5229 + }, + "implemented": true, + "statements": [ + { + "id": 5247, + "node_type": 48, + "src": { + "id": 5248, + "line": 1132, + "column": 0, + "start": 39099, + "end": 39658, + "length": 560, + "parent_index": 5245 + }, + "condition": { + "id": 5249, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 5250, + "line": 1132, + "column": 12, + "start": 39103, + "end": 39122, + "length": 20, + "parent_index": 5247 + }, + "operator": 11, + "left_expression": { + "id": 5251, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5252, + "line": 1132, + "column": 12, + "start": 39103, + "end": 39117, + "length": 15, + "parent_index": 5249 + }, + "expression": { + "id": 5253, + "node_type": 16, + "src": { + "id": 5254, + "line": 1132, + "column": 12, + "start": 39103, + "end": 39108, + "length": 6, + "parent_index": 5251 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5253, + "is_pure": false + }, + "member_name": "amountIn", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "right_expression": { + "id": 5255, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 5256, + "line": 1132, + "column": 31, + "start": 39122, + "end": 39122, + "length": 1, + "parent_index": 5249 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 5257, + "node_type": 46, + "kind": 0, + "src": { + "id": 5258, + "line": 1132, + "column": 34, + "start": 39125, + "end": 39658, + "length": 534, + "parent_index": 5229 + }, + "implemented": true, + "statements": [ + { + "id": 5259, + "node_type": 44, + "src": { + "id": 5260, + "line": 1133, + "column": 10, + "start": 39137, + "end": 39237, + "length": 101, + "parent_index": 5257 + }, + "assignments": [ + 5261 + ], + "declarations": [ + { + "is_constant": false, + "id": 5261, + "state_mutability": 1, + "name": "tokenBalance", + "node_type": 44, + "scope": 5257, + "src": { + "id": 5262, + "line": 1133, + "column": 10, + "start": 39137, + "end": 39156, + "length": 20, + "parent_index": 5259 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 5263, + "node_type": 30, + "src": { + "id": 5264, + "line": 1133, + "column": 10, + "start": 39137, + "end": 39143, + "length": 7, + "parent_index": 5261 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 5265, + "node_type": 24, + "kind": 24, + "src": { + "id": 5266, + "line": 1133, + "column": 33, + "start": 39160, + "end": 39236, + "length": 77, + "parent_index": 5259 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ], + "arguments": [ + { + "id": 5277, + "node_type": 24, + "kind": 24, + "src": { + "id": 5278, + "line": 1134, + "column": 16, + "start": 39210, + "end": 39222, + "length": 13, + "parent_index": 5265 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_TridentSwapAdapter_$5143", + "type_string": "contract TridentSwapAdapter" + } + ], + "arguments": [ + { + "id": 5283, + "node_type": 16, + "src": { + "id": 5284, + "line": 1134, + "column": 24, + "start": 39218, + "end": 39221, + "length": 4, + "parent_index": 5277 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_TridentSwapAdapter_$5143", + "type_string": "contract TridentSwapAdapter" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 5279, + "node_type": 16, + "src": { + "id": 5280, + "line": 1134, + "column": 16, + "start": 39210, + "end": 39216, + "length": 7, + "parent_index": 5277 + }, + "name": "address", + "type_name": { + "id": 5281, + "node_type": 30, + "src": { + "id": 5282, + "line": 1134, + "column": 16, + "start": 39210, + "end": 39216, + "length": 7, + "parent_index": 5279 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ], + "expression": { + "id": 5267, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5268, + "line": 1133, + "column": 33, + "start": 39160, + "end": 39191, + "length": 32, + "parent_index": 5265 + }, + "expression": { + "id": 5269, + "node_type": 24, + "kind": 24, + "src": { + "id": 5270, + "line": 1133, + "column": 33, + "start": 39160, + "end": 39181, + "length": 22, + "parent_index": 5267 + }, + "argument_types": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + ], + "arguments": [ + { + "id": 5273, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5274, + "line": 1133, + "column": 40, + "start": 39167, + "end": 39180, + "length": 14, + "parent_index": 5269 + }, + "expression": { + "id": 5275, + "node_type": 16, + "src": { + "id": 5276, + "line": 1133, + "column": 40, + "start": 39167, + "end": 39172, + "length": 6, + "parent_index": 5273 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5275, + "is_pure": false + }, + "member_name": "tokenIn", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + } + ], + "expression": { + "id": 5271, + "node_type": 16, + "src": { + "id": 5272, + "line": 1133, + "column": 33, + "start": 39160, + "end": 39165, + "length": 6, + "parent_index": 5269 + }, + "name": "IERC20", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "type_string": "function(struct ITridentRouter.ExactInputParams)" + } + }, + "member_name": "balanceOf", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "type_string": "function(struct ITridentRouter.ExactInputParams)" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$", + "type_string": "function(function(address))" + } + } + }, + { + "id": 5285, + "node_type": 24, + "kind": 24, + "src": { + "id": 5286, + "line": 1136, + "column": 12, + "start": 39251, + "end": 39384, + "length": 134, + "parent_index": 5257 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "type_string": "function(struct ITridentRouter.ExactInputParams)" + }, + { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 5289, + "node_type": 24, + "kind": 24, + "src": { + "id": 5290, + "line": 1137, + "column": 16, + "start": 39284, + "end": 39305, + "length": 22, + "parent_index": 5285 + }, + "argument_types": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + ], + "arguments": [ + { + "id": 5293, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5294, + "line": 1137, + "column": 23, + "start": 39291, + "end": 39304, + "length": 14, + "parent_index": 5289 + }, + "expression": { + "id": 5295, + "node_type": 16, + "src": { + "id": 5296, + "line": 1137, + "column": 23, + "start": 39291, + "end": 39296, + "length": 6, + "parent_index": 5293 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5295, + "is_pure": false + }, + "member_name": "tokenIn", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + } + ], + "expression": { + "id": 5291, + "node_type": 16, + "src": { + "id": 5292, + "line": 1137, + "column": 16, + "start": 39284, + "end": 39289, + "length": 6, + "parent_index": 5289 + }, + "name": "IERC20", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "type_string": "function(struct ITridentRouter.ExactInputParams)" + } + }, + { + "id": 5297, + "node_type": 24, + "kind": 24, + "src": { + "id": 5298, + "line": 1138, + "column": 16, + "start": 39324, + "end": 39340, + "length": 17, + "parent_index": 5285 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 5303, + "node_type": 16, + "src": { + "id": 5304, + "line": 1138, + "column": 24, + "start": 39332, + "end": 39339, + "length": 8, + "parent_index": 5297 + }, + "name": "bentoBox", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 5299, + "node_type": 16, + "src": { + "id": 5300, + "line": 1138, + "column": 16, + "start": 39324, + "end": 39330, + "length": 7, + "parent_index": 5297 + }, + "name": "address", + "type_name": { + "id": 5301, + "node_type": 30, + "src": { + "id": 5302, + "line": 1138, + "column": 16, + "start": 39324, + "end": 39330, + "length": 7, + "parent_index": 5299 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + { + "id": 5305, + "node_type": 16, + "src": { + "id": 5306, + "line": 1139, + "column": 16, + "start": 39359, + "end": 39370, + "length": 12, + "parent_index": 5285 + }, + "name": "tokenBalance", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 5259, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "type_string": "function(struct ITridentRouter.ExactInputParams)" + }, + { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + ] + } + ], + "expression": { + "id": 5287, + "node_type": 16, + "src": { + "id": 5288, + "line": 1136, + "column": 12, + "start": 39251, + "end": 39265, + "length": 15, + "parent_index": 5285 + }, + "name": "_transferTokens", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$_t_function_$_t_function_$_t_uint256$", + "type_string": "function(function(struct ITridentRouter.ExactInputParams),function(function()),uint256)" + } + }, + { + "id": 5307, + "node_type": 81, + "src": { + "id": 5308, + "line": 1142, + "column": 12, + "start": 39443, + "end": 39648, + "length": 206, + "parent_index": 5257 + }, + "expression": { + "id": 5309, + "node_type": 27, + "src": { + "id": 5310, + "line": 1142, + "column": 12, + "start": 39443, + "end": 39647, + "length": 205, + "parent_index": 5257 + }, + "operator": 11, + "left_expression": { + "id": 5311, + "node_type": 60, + "src": { + "id": 5312, + "line": 1142, + "column": 12, + "start": 39443, + "end": 39461, + "length": 19, + "parent_index": 5309 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 5313, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5314, + "line": 1142, + "column": 15, + "start": 39446, + "end": 39460, + "length": 15, + "parent_index": 5311 + }, + "expression": { + "id": 5315, + "node_type": 16, + "src": { + "id": 5316, + "line": 1142, + "column": 15, + "start": 39446, + "end": 39451, + "length": 6, + "parent_index": 5313 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5315, + "is_pure": false + }, + "member_name": "amountIn", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "type_string": "tuple(struct ITridentRouter.ExactInputParams)" + } + }, + "right_expression": { + "id": 5317, + "node_type": 24, + "kind": 24, + "src": { + "id": 5318, + "line": 1142, + "column": 34, + "start": 39465, + "end": 39647, + "length": 183, + "parent_index": 5309 + }, + "argument_types": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:int_const 0]" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 5323, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5324, + "line": 1143, + "column": 16, + "start": 39499, + "end": 39512, + "length": 14, + "parent_index": 5317 + }, + "expression": { + "id": 5325, + "node_type": 16, + "src": { + "id": 5326, + "line": 1143, + "column": 16, + "start": 39499, + "end": 39504, + "length": 6, + "parent_index": 5323 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5325, + "is_pure": false + }, + "member_name": "tokenIn", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + { + "id": 5327, + "node_type": 24, + "kind": 24, + "src": { + "id": 5328, + "line": 1144, + "column": 16, + "start": 39531, + "end": 39547, + "length": 17, + "parent_index": 5317 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 5333, + "node_type": 16, + "src": { + "id": 5334, + "line": 1144, + "column": 24, + "start": 39539, + "end": 39546, + "length": 8, + "parent_index": 5327 + }, + "name": "bentoBox", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 5329, + "node_type": 16, + "src": { + "id": 5330, + "line": 1144, + "column": 16, + "start": 39531, + "end": 39537, + "length": 7, + "parent_index": 5327 + }, + "name": "address", + "type_name": { + "id": 5331, + "node_type": 30, + "src": { + "id": 5332, + "line": 1144, + "column": 16, + "start": 39531, + "end": 39537, + "length": 7, + "parent_index": 5329 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + { + "id": 5335, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5336, + "line": 1145, + "column": 16, + "start": 39566, + "end": 39584, + "length": 19, + "parent_index": 5317 + }, + "expression": { + "id": 5337, + "node_type": 22, + "src": { + "id": 5338, + "line": 1145, + "column": 16, + "start": 39566, + "end": 39579, + "length": 14, + "parent_index": 5335 + }, + "index_expression": { + "id": 5339, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5340, + "line": 1145, + "column": 16, + "start": 39566, + "end": 39576, + "length": 11, + "parent_index": 5337 + }, + "expression": { + "id": 5341, + "node_type": 16, + "src": { + "id": 5342, + "line": 1145, + "column": 16, + "start": 39566, + "end": 39571, + "length": 6, + "parent_index": 5339 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5341, + "is_pure": false + }, + "member_name": "path", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5343, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 5344, + "line": 1145, + "column": 28, + "start": 39578, + "end": 39578, + "length": 1, + "parent_index": 5337 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:int_const 0]" + } + }, + "member_name": "pool", + "argument_types": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:int_const 0]" + } + }, + { + "id": 5345, + "node_type": 16, + "src": { + "id": 5346, + "line": 1146, + "column": 16, + "start": 39603, + "end": 39614, + "length": 12, + "parent_index": 5317 + }, + "name": "tokenBalance", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 5259, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:int_const 0]" + } + ] + }, + { + "id": 5347, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 5348, + "line": 1147, + "column": 16, + "start": 39633, + "end": 39633, + "length": 1, + "parent_index": 5317 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + }, + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:int_const 0]" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + } + ], + "expression": { + "id": 5319, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5320, + "line": 1142, + "column": 34, + "start": 39465, + "end": 39480, + "length": 16, + "parent_index": 5317 + }, + "expression": { + "id": 5321, + "node_type": 16, + "src": { + "id": 5322, + "line": 1142, + "column": 34, + "start": 39465, + "end": 39472, + "length": 8, + "parent_index": 5319 + }, + "name": "bentoBox", + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + }, + "overloaded_declarations": [], + "referenced_declaration": 1378, + "is_pure": false + }, + "member_name": "deposit", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$_t_function_$_t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_rational_0_by_1]$_t_uint256$_t_rational_0_by_1$", + "type_string": "function(struct ITridentRouter.ExactInputParams,function(function()),index[struct ITridentRouter.ExactInputParams:int_const 0],uint256,int_const 0)" + } + }, + "type_description": { + "type_identifier": "t_tuple_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "type_string": "tuple(struct ITridentRouter.ExactInputParams)" + } + }, + "type_description": { + "type_identifier": "t_tuple_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "type_string": "tuple(struct ITridentRouter.ExactInputParams)" + } + } + ] + } + }, + { + "id": 5349, + "node_type": 44, + "src": { + "id": 5350, + "line": 1156, + "column": 8, + "start": 40012, + "end": 40042, + "length": 31, + "parent_index": 5245 + }, + "assignments": [ + 5351 + ], + "declarations": [ + { + "is_constant": false, + "id": 5351, + "state_mutability": 1, + "name": "n", + "node_type": 44, + "scope": 5245, + "src": { + "id": 5352, + "line": 1156, + "column": 8, + "start": 40012, + "end": 40020, + "length": 9, + "parent_index": 5349 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 5353, + "node_type": 30, + "src": { + "id": 5354, + "line": 1156, + "column": 8, + "start": 40012, + "end": 40018, + "length": 7, + "parent_index": 5351 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 5355, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5356, + "line": 1156, + "column": 20, + "start": 40024, + "end": 40041, + "length": 18, + "parent_index": 5349 + }, + "expression": { + "id": 5357, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5358, + "line": 1156, + "column": 20, + "start": 40024, + "end": 40034, + "length": 11, + "parent_index": 5349 + }, + "expression": { + "id": 5359, + "node_type": 16, + "src": { + "id": 5360, + "line": 1156, + "column": 20, + "start": 40024, + "end": 40029, + "length": 6, + "parent_index": 5357 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5359, + "is_pure": false + }, + "member_name": "path", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + } + }, + { + "id": 5361, + "node_type": 79, + "src": { + "id": 5362, + "line": 1157, + "column": 0, + "start": 40052, + "end": 40186, + "length": 135, + "parent_index": 5245 + }, + "initialiser": { + "id": 5363, + "node_type": 44, + "src": { + "id": 5364, + "line": 1157, + "column": 13, + "start": 40057, + "end": 40070, + "length": 14, + "parent_index": 5245 + }, + "assignments": [ + 5365 + ], + "declarations": [ + { + "is_constant": false, + "id": 5365, + "state_mutability": 1, + "name": "i", + "node_type": 44, + "scope": 5245, + "src": { + "id": 5366, + "line": 1157, + "column": 13, + "start": 40057, + "end": 40065, + "length": 9, + "parent_index": 5363 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 5367, + "node_type": 30, + "src": { + "id": 5368, + "line": 1157, + "column": 13, + "start": 40057, + "end": 40063, + "length": 7, + "parent_index": 5365 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 5369, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 5370, + "line": 1157, + "column": 25, + "start": 40069, + "end": 40069, + "length": 1, + "parent_index": 5363 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + }, + "condition": { + "id": 5371, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 5372, + "line": 1157, + "column": 28, + "start": 40072, + "end": 40076, + "length": 5, + "parent_index": 5361 + }, + "operator": 9, + "left_expression": { + "id": 5373, + "node_type": 16, + "src": { + "id": 5374, + "line": 1157, + "column": 28, + "start": 40072, + "end": 40072, + "length": 1, + "parent_index": 5371 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 5375, + "node_type": 16, + "src": { + "id": 5376, + "line": 1157, + "column": 32, + "start": 40076, + "end": 40076, + "length": 1, + "parent_index": 5371 + }, + "name": "n", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 5349, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "closure": { + "id": 5377, + "node_type": 27, + "src": { + "id": 5378, + "line": 1157, + "column": 35, + "start": 40079, + "end": 40095, + "length": 17, + "parent_index": 5245 + }, + "operator": 11, + "left_expression": { + "id": 5379, + "node_type": 16, + "src": { + "id": 5380, + "line": 1157, + "column": 35, + "start": 40079, + "end": 40079, + "length": 1, + "parent_index": 5377 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 5381, + "node_type": 24, + "kind": 24, + "src": { + "id": 5382, + "line": 1157, + "column": 39, + "start": 40083, + "end": 40095, + "length": 13, + "parent_index": 5377 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 5385, + "node_type": 16, + "src": { + "id": 5386, + "line": 1157, + "column": 50, + "start": 40094, + "end": 40094, + "length": 1, + "parent_index": 5381 + }, + "name": "i", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 5383, + "node_type": 16, + "src": { + "id": 5384, + "line": 1157, + "column": 39, + "start": 40083, + "end": 40092, + "length": 10, + "parent_index": 5381 + }, + "name": "_increment", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "body": { + "id": 5387, + "node_type": 46, + "kind": 0, + "src": { + "id": 5388, + "line": 1157, + "column": 54, + "start": 40098, + "end": 40186, + "length": 89, + "parent_index": 5361 + }, + "implemented": true, + "statements": [ + { + "id": 5389, + "node_type": 81, + "src": { + "id": 5390, + "line": 1158, + "column": 12, + "start": 40112, + "end": 40176, + "length": 65, + "parent_index": 5387 + }, + "expression": { + "id": 5391, + "node_type": 27, + "src": { + "id": 5392, + "line": 1158, + "column": 12, + "start": 40112, + "end": 40175, + "length": 64, + "parent_index": 5387 + }, + "operator": 11, + "left_expression": { + "id": 5393, + "node_type": 16, + "src": { + "id": 5394, + "line": 1158, + "column": 12, + "start": 40112, + "end": 40120, + "length": 9, + "parent_index": 5391 + }, + "name": "amountOut", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 913, + "is_pure": false + }, + "right_expression": { + "id": 5395, + "node_type": 24, + "kind": 24, + "src": { + "id": 5396, + "line": 1158, + "column": 24, + "start": 40124, + "end": 40175, + "length": 52, + "parent_index": 5391 + }, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "arguments": [ + { + "id": 5413, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5414, + "line": 1158, + "column": 56, + "start": 40156, + "end": 40174, + "length": 19, + "parent_index": 5395 + }, + "expression": { + "id": 5415, + "node_type": 22, + "src": { + "id": 5416, + "line": 1158, + "column": 56, + "start": 40156, + "end": 40169, + "length": 14, + "parent_index": 5413 + }, + "index_expression": { + "id": 5417, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5418, + "line": 1158, + "column": 56, + "start": 40156, + "end": 40166, + "length": 11, + "parent_index": 5415 + }, + "expression": { + "id": 5419, + "node_type": 16, + "src": { + "id": 5420, + "line": 1158, + "column": 56, + "start": 40156, + "end": 40161, + "length": 6, + "parent_index": 5417 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "path", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5421, + "node_type": 16, + "src": { + "id": 5422, + "line": 1158, + "column": 68, + "start": 40168, + "end": 40168, + "length": 1, + "parent_index": 5415 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "data", + "argument_types": [], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + ], + "expression": { + "id": 5397, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5398, + "line": 1158, + "column": 24, + "start": 40124, + "end": 40154, + "length": 31, + "parent_index": 5395 + }, + "expression": { + "id": 5399, + "node_type": 24, + "kind": 24, + "src": { + "id": 5400, + "line": 1158, + "column": 24, + "start": 40124, + "end": 40149, + "length": 26, + "parent_index": 5397 + }, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "arguments": [ + { + "id": 5403, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5404, + "line": 1158, + "column": 30, + "start": 40130, + "end": 40148, + "length": 19, + "parent_index": 5399 + }, + "expression": { + "id": 5405, + "node_type": 22, + "src": { + "id": 5406, + "line": 1158, + "column": 30, + "start": 40130, + "end": 40143, + "length": 14, + "parent_index": 5403 + }, + "index_expression": { + "id": 5407, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5408, + "line": 1158, + "column": 30, + "start": 40130, + "end": 40140, + "length": 11, + "parent_index": 5405 + }, + "expression": { + "id": 5409, + "node_type": 16, + "src": { + "id": 5410, + "line": 1158, + "column": 30, + "start": 40130, + "end": 40135, + "length": 6, + "parent_index": 5407 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "path", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5411, + "node_type": 16, + "src": { + "id": 5412, + "line": 1158, + "column": 42, + "start": 40142, + "end": 40142, + "length": 1, + "parent_index": 5405 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "pool", + "argument_types": [], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + ], + "expression": { + "id": 5401, + "node_type": 16, + "src": { + "id": 5402, + "line": 1158, + "column": 24, + "start": 40124, + "end": 40128, + "length": 5, + "parent_index": 5399 + }, + "name": "IPool", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + }, + "member_name": "swap", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + ] + } + }, + { + "id": 5423, + "node_type": 48, + "src": { + "id": 5424, + "line": 1161, + "column": 0, + "start": 40287, + "end": 40354, + "length": 68, + "parent_index": 5245 + }, + "condition": { + "id": 5425, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 5426, + "line": 1161, + "column": 12, + "start": 40291, + "end": 40325, + "length": 35, + "parent_index": 5423 + }, + "operator": 9, + "left_expression": { + "id": 5427, + "node_type": 16, + "src": { + "id": 5428, + "line": 1161, + "column": 12, + "start": 40291, + "end": 40299, + "length": 9, + "parent_index": 5425 + }, + "name": "amountOut", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 913, + "is_pure": false + }, + "right_expression": { + "id": 5429, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5430, + "line": 1161, + "column": 24, + "start": 40303, + "end": 40325, + "length": 23, + "parent_index": 5425 + }, + "expression": { + "id": 5431, + "node_type": 16, + "src": { + "id": 5432, + "line": 1161, + "column": 24, + "start": 40303, + "end": 40308, + "length": 6, + "parent_index": 5429 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5431, + "is_pure": false + }, + "member_name": "amountOutMinimum", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 5433, + "node_type": 46, + "kind": 0, + "src": { + "id": 0, + "line": 0, + "column": 0, + "start": 0, + "end": 0, + "length": 0, + "parent_index": 0 + }, + "implemented": false, + "statements": [] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 5231, + "node_type": 43, + "src": { + "id": 5232, + "line": 1128, + "column": 25, + "start": 39000, + "end": 39029, + "length": 30, + "parent_index": 5229 + }, + "parameters": [ + { + "id": 5233, + "node_type": 44, + "src": { + "id": 5234, + "line": 1128, + "column": 25, + "start": 39000, + "end": 39029, + "length": 30, + "parent_index": 5231 + }, + "scope": 5229, + "name": "params", + "type_name": { + "id": 5235, + "node_type": 69, + "src": { + "id": 5236, + "line": 1128, + "column": 25, + "start": 39000, + "end": 39015, + "length": 16, + "parent_index": 5233 + }, + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "path_node": { + "id": 5237, + "name": "ExactInputParams", + "node_type": 52, + "referenced_declaration": 4947, + "src": { + "id": 5238, + "line": 1128, + "column": 25, + "start": 39000, + "end": 39015, + "length": 16, + "parent_index": 5235 + } + }, + "referenced_declaration": 4947 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + ] + }, + "return_parameters": { + "id": 5239, + "node_type": 43, + "src": { + "id": 5240, + "line": 1130, + "column": 17, + "start": 39066, + "end": 39082, + "length": 17, + "parent_index": 5229 + }, + "parameters": [ + { + "id": 5241, + "node_type": 44, + "src": { + "id": 5242, + "line": 1130, + "column": 17, + "start": 39066, + "end": 39082, + "length": 17, + "parent_index": 5239 + }, + "scope": 5229, + "name": "amountOut", + "type_name": { + "id": 5243, + "node_type": 30, + "src": { + "id": 5244, + "line": 1130, + "column": 17, + "start": 39066, + "end": 39072, + "length": 7, + "parent_index": 5241 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 5207, + "type_description": { + "type_identifier": "t_function_$_t_struct$_ITridentRouter_ExactInputParams_$4947$", + "type_string": "function(struct ITridentRouter.ExactInputParams)" + } + }, + { + "id": 5435, + "name": "_complexPath", + "node_type": 42, + "kind": 41, + "src": { + "id": 5436, + "line": 1170, + "column": 4, + "start": 40914, + "end": 43276, + "length": 2363, + "parent_index": 5207 + }, + "body": { + "id": 5446, + "node_type": 46, + "kind": 0, + "src": { + "id": 5447, + "line": 1170, + "column": 68, + "start": 40978, + "end": 43276, + "length": 2299, + "parent_index": 5435 + }, + "implemented": true, + "statements": [ + { + "id": 5448, + "node_type": 44, + "src": { + "id": 5449, + "line": 1173, + "column": 8, + "start": 41147, + "end": 41184, + "length": 38, + "parent_index": 5446 + }, + "assignments": [ + 5450 + ], + "declarations": [ + { + "is_constant": false, + "id": 5450, + "state_mutability": 1, + "name": "n", + "node_type": 44, + "scope": 5446, + "src": { + "id": 5451, + "line": 1173, + "column": 8, + "start": 41147, + "end": 41155, + "length": 9, + "parent_index": 5448 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 5452, + "node_type": 30, + "src": { + "id": 5453, + "line": 1173, + "column": 8, + "start": 41147, + "end": 41153, + "length": 7, + "parent_index": 5450 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 5454, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5455, + "line": 1173, + "column": 20, + "start": 41159, + "end": 41183, + "length": 25, + "parent_index": 5448 + }, + "expression": { + "id": 5456, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5457, + "line": 1173, + "column": 20, + "start": 41159, + "end": 41176, + "length": 18, + "parent_index": 5448 + }, + "expression": { + "id": 5458, + "node_type": 16, + "src": { + "id": 5459, + "line": 1173, + "column": 20, + "start": 41159, + "end": 41164, + "length": 6, + "parent_index": 5456 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "type_string": "struct ITridentRouter.ComplexPathParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5458, + "is_pure": false + }, + "member_name": "initialPath", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "type_string": "struct ITridentRouter.ComplexPathParams" + } + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "type_string": "struct ITridentRouter.ComplexPathParams" + } + } + }, + { + "id": 5460, + "node_type": 79, + "src": { + "id": 5461, + "line": 1174, + "column": 0, + "start": 41194, + "end": 41543, + "length": 350, + "parent_index": 5446 + }, + "initialiser": { + "id": 5462, + "node_type": 44, + "src": { + "id": 5463, + "line": 1174, + "column": 13, + "start": 41199, + "end": 41212, + "length": 14, + "parent_index": 5446 + }, + "assignments": [ + 5464 + ], + "declarations": [ + { + "is_constant": false, + "id": 5464, + "state_mutability": 1, + "name": "i", + "node_type": 44, + "scope": 5446, + "src": { + "id": 5465, + "line": 1174, + "column": 13, + "start": 41199, + "end": 41207, + "length": 9, + "parent_index": 5462 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 5466, + "node_type": 30, + "src": { + "id": 5467, + "line": 1174, + "column": 13, + "start": 41199, + "end": 41205, + "length": 7, + "parent_index": 5464 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 5468, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 5469, + "line": 1174, + "column": 25, + "start": 41211, + "end": 41211, + "length": 1, + "parent_index": 5462 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + }, + "condition": { + "id": 5470, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 5471, + "line": 1174, + "column": 28, + "start": 41214, + "end": 41218, + "length": 5, + "parent_index": 5460 + }, + "operator": 9, + "left_expression": { + "id": 5472, + "node_type": 16, + "src": { + "id": 5473, + "line": 1174, + "column": 28, + "start": 41214, + "end": 41214, + "length": 1, + "parent_index": 5470 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 5474, + "node_type": 16, + "src": { + "id": 5475, + "line": 1174, + "column": 32, + "start": 41218, + "end": 41218, + "length": 1, + "parent_index": 5470 + }, + "name": "n", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 5448, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "closure": { + "id": 5476, + "node_type": 27, + "src": { + "id": 5477, + "line": 1174, + "column": 35, + "start": 41221, + "end": 41237, + "length": 17, + "parent_index": 5446 + }, + "operator": 11, + "left_expression": { + "id": 5478, + "node_type": 16, + "src": { + "id": 5479, + "line": 1174, + "column": 35, + "start": 41221, + "end": 41221, + "length": 1, + "parent_index": 5476 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 5480, + "node_type": 24, + "kind": 24, + "src": { + "id": 5481, + "line": 1174, + "column": 39, + "start": 41225, + "end": 41237, + "length": 13, + "parent_index": 5476 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 5484, + "node_type": 16, + "src": { + "id": 5485, + "line": 1174, + "column": 50, + "start": 41236, + "end": 41236, + "length": 1, + "parent_index": 5480 + }, + "name": "i", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 5482, + "node_type": 16, + "src": { + "id": 5483, + "line": 1174, + "column": 39, + "start": 41225, + "end": 41234, + "length": 10, + "parent_index": 5480 + }, + "name": "_increment", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "body": { + "id": 5486, + "node_type": 46, + "kind": 0, + "src": { + "id": 5487, + "line": 1174, + "column": 54, + "start": 41240, + "end": 41543, + "length": 304, + "parent_index": 5460 + }, + "implemented": true, + "statements": [ + { + "id": 5488, + "node_type": 24, + "kind": 24, + "src": { + "id": 5489, + "line": 1175, + "column": 12, + "start": 41254, + "end": 41452, + "length": 199, + "parent_index": 5486 + }, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "arguments": [ + { + "id": 5494, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5495, + "line": 1176, + "column": 16, + "start": 41289, + "end": 41317, + "length": 29, + "parent_index": 5488 + }, + "expression": { + "id": 5496, + "node_type": 22, + "src": { + "id": 5497, + "line": 1176, + "column": 16, + "start": 41289, + "end": 41309, + "length": 21, + "parent_index": 5494 + }, + "index_expression": { + "id": 5498, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5499, + "line": 1176, + "column": 16, + "start": 41289, + "end": 41306, + "length": 18, + "parent_index": 5496 + }, + "expression": { + "id": 5500, + "node_type": 16, + "src": { + "id": 5501, + "line": 1176, + "column": 16, + "start": 41289, + "end": 41294, + "length": 6, + "parent_index": 5498 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "initialPath", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5502, + "node_type": 16, + "src": { + "id": 5503, + "line": 1176, + "column": 35, + "start": 41308, + "end": 41308, + "length": 1, + "parent_index": 5496 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "tokenIn", + "argument_types": [], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + { + "id": 5504, + "node_type": 24, + "kind": 24, + "src": { + "id": 5505, + "line": 1177, + "column": 16, + "start": 41336, + "end": 41348, + "length": 13, + "parent_index": 5488 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_TridentSwapAdapter_$5143", + "type_string": "contract TridentSwapAdapter" + } + ], + "arguments": [ + { + "id": 5510, + "node_type": 16, + "src": { + "id": 5511, + "line": 1177, + "column": 24, + "start": 41344, + "end": 41347, + "length": 4, + "parent_index": 5504 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_TridentSwapAdapter_$5143", + "type_string": "contract TridentSwapAdapter" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 5506, + "node_type": 16, + "src": { + "id": 5507, + "line": 1177, + "column": 16, + "start": 41336, + "end": 41342, + "length": 7, + "parent_index": 5504 + }, + "name": "address", + "type_name": { + "id": 5508, + "node_type": 30, + "src": { + "id": 5509, + "line": 1177, + "column": 16, + "start": 41336, + "end": 41342, + "length": 7, + "parent_index": 5506 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 5512, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5513, + "line": 1178, + "column": 16, + "start": 41367, + "end": 41392, + "length": 26, + "parent_index": 5488 + }, + "expression": { + "id": 5514, + "node_type": 22, + "src": { + "id": 5515, + "line": 1178, + "column": 16, + "start": 41367, + "end": 41387, + "length": 21, + "parent_index": 5512 + }, + "index_expression": { + "id": 5516, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5517, + "line": 1178, + "column": 16, + "start": 41367, + "end": 41384, + "length": 18, + "parent_index": 5514 + }, + "expression": { + "id": 5518, + "node_type": 16, + "src": { + "id": 5519, + "line": 1178, + "column": 16, + "start": 41367, + "end": 41372, + "length": 6, + "parent_index": 5516 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "initialPath", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5520, + "node_type": 16, + "src": { + "id": 5521, + "line": 1178, + "column": 35, + "start": 41386, + "end": 41386, + "length": 1, + "parent_index": 5514 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "pool", + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + { + "id": 5522, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5523, + "line": 1179, + "column": 16, + "start": 41411, + "end": 41438, + "length": 28, + "parent_index": 5488 + }, + "expression": { + "id": 5524, + "node_type": 22, + "src": { + "id": 5525, + "line": 1179, + "column": 16, + "start": 41411, + "end": 41431, + "length": 21, + "parent_index": 5522 + }, + "index_expression": { + "id": 5526, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5527, + "line": 1179, + "column": 16, + "start": 41411, + "end": 41428, + "length": 18, + "parent_index": 5524 + }, + "expression": { + "id": 5528, + "node_type": 16, + "src": { + "id": 5529, + "line": 1179, + "column": 16, + "start": 41411, + "end": 41416, + "length": 6, + "parent_index": 5526 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "initialPath", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5530, + "node_type": 16, + "src": { + "id": 5531, + "line": 1179, + "column": 35, + "start": 41430, + "end": 41430, + "length": 1, + "parent_index": 5524 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "amount", + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + ], + "expression": { + "id": 5490, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5491, + "line": 1175, + "column": 12, + "start": 41254, + "end": 41270, + "length": 17, + "parent_index": 5488 + }, + "expression": { + "id": 5492, + "node_type": 16, + "src": { + "id": 5493, + "line": 1175, + "column": 12, + "start": 41254, + "end": 41261, + "length": 8, + "parent_index": 5490 + }, + "name": "bentoBox", + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + }, + "overloaded_declarations": [], + "referenced_declaration": 1378, + "is_pure": false + }, + "member_name": "transfer", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],index[struct ITridentRouter.ExactInputParams:uint256])" + } + }, + { + "id": 5532, + "node_type": 24, + "kind": 24, + "src": { + "id": 5533, + "line": 1181, + "column": 12, + "start": 41467, + "end": 41532, + "length": 66, + "parent_index": 5486 + }, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "arguments": [ + { + "id": 5550, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5551, + "line": 1181, + "column": 51, + "start": 41506, + "end": 41531, + "length": 26, + "parent_index": 5532 + }, + "expression": { + "id": 5552, + "node_type": 22, + "src": { + "id": 5553, + "line": 1181, + "column": 51, + "start": 41506, + "end": 41526, + "length": 21, + "parent_index": 5550 + }, + "index_expression": { + "id": 5554, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5555, + "line": 1181, + "column": 51, + "start": 41506, + "end": 41523, + "length": 18, + "parent_index": 5552 + }, + "expression": { + "id": 5556, + "node_type": 16, + "src": { + "id": 5557, + "line": 1181, + "column": 51, + "start": 41506, + "end": 41511, + "length": 6, + "parent_index": 5554 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "initialPath", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5558, + "node_type": 16, + "src": { + "id": 5559, + "line": 1181, + "column": 70, + "start": 41525, + "end": 41525, + "length": 1, + "parent_index": 5552 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "data", + "argument_types": [], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + ], + "expression": { + "id": 5534, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5535, + "line": 1181, + "column": 12, + "start": 41467, + "end": 41504, + "length": 38, + "parent_index": 5532 + }, + "expression": { + "id": 5536, + "node_type": 24, + "kind": 24, + "src": { + "id": 5537, + "line": 1181, + "column": 12, + "start": 41467, + "end": 41499, + "length": 33, + "parent_index": 5534 + }, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "arguments": [ + { + "id": 5540, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5541, + "line": 1181, + "column": 18, + "start": 41473, + "end": 41498, + "length": 26, + "parent_index": 5536 + }, + "expression": { + "id": 5542, + "node_type": 22, + "src": { + "id": 5543, + "line": 1181, + "column": 18, + "start": 41473, + "end": 41493, + "length": 21, + "parent_index": 5540 + }, + "index_expression": { + "id": 5544, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5545, + "line": 1181, + "column": 18, + "start": 41473, + "end": 41490, + "length": 18, + "parent_index": 5542 + }, + "expression": { + "id": 5546, + "node_type": 16, + "src": { + "id": 5547, + "line": 1181, + "column": 18, + "start": 41473, + "end": 41478, + "length": 6, + "parent_index": 5544 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "initialPath", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5548, + "node_type": 16, + "src": { + "id": 5549, + "line": 1181, + "column": 37, + "start": 41492, + "end": 41492, + "length": 1, + "parent_index": 5542 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "pool", + "argument_types": [], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + ], + "expression": { + "id": 5538, + "node_type": 16, + "src": { + "id": 5539, + "line": 1181, + "column": 12, + "start": 41467, + "end": 41471, + "length": 5, + "parent_index": 5536 + }, + "name": "IPool", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + }, + "member_name": "swap", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + } + ] + } + }, + { + "id": 5560, + "node_type": 81, + "src": { + "id": 5561, + "line": 1184, + "column": 8, + "start": 41622, + "end": 41654, + "length": 33, + "parent_index": 5446 + }, + "expression": { + "id": 5562, + "node_type": 27, + "src": { + "id": 5563, + "line": 1184, + "column": 8, + "start": 41622, + "end": 41653, + "length": 32, + "parent_index": 5446 + }, + "operator": 11, + "left_expression": { + "id": 5564, + "node_type": 16, + "src": { + "id": 5565, + "line": 1184, + "column": 8, + "start": 41622, + "end": 41622, + "length": 1, + "parent_index": 5562 + }, + "name": "n", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 5448, + "is_pure": false + }, + "right_expression": { + "id": 5566, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5567, + "line": 1184, + "column": 12, + "start": 41626, + "end": 41653, + "length": 28, + "parent_index": 5562 + }, + "expression": { + "id": 5568, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5569, + "line": 1184, + "column": 12, + "start": 41626, + "end": 41646, + "length": 21, + "parent_index": 5566 + }, + "expression": { + "id": 5570, + "node_type": 16, + "src": { + "id": 5571, + "line": 1184, + "column": 12, + "start": 41626, + "end": 41631, + "length": 6, + "parent_index": 5568 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "type_string": "struct ITridentRouter.ComplexPathParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5570, + "is_pure": false + }, + "member_name": "percentagePath", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "type_string": "struct ITridentRouter.ComplexPathParams" + } + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "type_string": "struct ITridentRouter.ComplexPathParams" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + { + "id": 5572, + "node_type": 79, + "src": { + "id": 5573, + "line": 1185, + "column": 0, + "start": 41664, + "end": 42324, + "length": 661, + "parent_index": 5446 + }, + "initialiser": { + "id": 5574, + "node_type": 44, + "src": { + "id": 5575, + "line": 1185, + "column": 13, + "start": 41669, + "end": 41682, + "length": 14, + "parent_index": 5446 + }, + "assignments": [ + 5576 + ], + "declarations": [ + { + "is_constant": false, + "id": 5576, + "state_mutability": 1, + "name": "i", + "node_type": 44, + "scope": 5446, + "src": { + "id": 5577, + "line": 1185, + "column": 13, + "start": 41669, + "end": 41677, + "length": 9, + "parent_index": 5574 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 5578, + "node_type": 30, + "src": { + "id": 5579, + "line": 1185, + "column": 13, + "start": 41669, + "end": 41675, + "length": 7, + "parent_index": 5576 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 5580, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 5581, + "line": 1185, + "column": 25, + "start": 41681, + "end": 41681, + "length": 1, + "parent_index": 5574 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + }, + "condition": { + "id": 5582, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 5583, + "line": 1185, + "column": 28, + "start": 41684, + "end": 41688, + "length": 5, + "parent_index": 5572 + }, + "operator": 9, + "left_expression": { + "id": 5584, + "node_type": 16, + "src": { + "id": 5585, + "line": 1185, + "column": 28, + "start": 41684, + "end": 41684, + "length": 1, + "parent_index": 5582 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 5586, + "node_type": 16, + "src": { + "id": 5587, + "line": 1185, + "column": 32, + "start": 41688, + "end": 41688, + "length": 1, + "parent_index": 5582 + }, + "name": "n", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 5448, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "closure": { + "id": 5588, + "node_type": 27, + "src": { + "id": 5589, + "line": 1185, + "column": 35, + "start": 41691, + "end": 41707, + "length": 17, + "parent_index": 5446 + }, + "operator": 11, + "left_expression": { + "id": 5590, + "node_type": 16, + "src": { + "id": 5591, + "line": 1185, + "column": 35, + "start": 41691, + "end": 41691, + "length": 1, + "parent_index": 5588 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 5592, + "node_type": 24, + "kind": 24, + "src": { + "id": 5593, + "line": 1185, + "column": 39, + "start": 41695, + "end": 41707, + "length": 13, + "parent_index": 5588 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 5596, + "node_type": 16, + "src": { + "id": 5597, + "line": 1185, + "column": 50, + "start": 41706, + "end": 41706, + "length": 1, + "parent_index": 5592 + }, + "name": "i", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 5594, + "node_type": 16, + "src": { + "id": 5595, + "line": 1185, + "column": 39, + "start": 41695, + "end": 41704, + "length": 10, + "parent_index": 5592 + }, + "name": "_increment", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "body": { + "id": 5598, + "node_type": 46, + "kind": 0, + "src": { + "id": 5599, + "line": 1185, + "column": 54, + "start": 41710, + "end": 42324, + "length": 615, + "parent_index": 5572 + }, + "implemented": true, + "statements": [ + { + "id": 5600, + "node_type": 44, + "src": { + "id": 5601, + "line": 1186, + "column": 12, + "start": 41724, + "end": 41861, + "length": 138, + "parent_index": 5598 + }, + "assignments": [ + 5602 + ], + "declarations": [ + { + "is_constant": false, + "id": 5602, + "state_mutability": 1, + "name": "balanceShares", + "node_type": 44, + "scope": 5598, + "src": { + "id": 5603, + "line": 1186, + "column": 12, + "start": 41724, + "end": 41744, + "length": 21, + "parent_index": 5600 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 5604, + "node_type": 30, + "src": { + "id": 5605, + "line": 1186, + "column": 12, + "start": 41724, + "end": 41730, + "length": 7, + "parent_index": 5602 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 5606, + "node_type": 24, + "kind": 24, + "src": { + "id": 5607, + "line": 1186, + "column": 36, + "start": 41748, + "end": 41860, + "length": 113, + "parent_index": 5600 + }, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ], + "arguments": [ + { + "id": 5612, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5613, + "line": 1187, + "column": 16, + "start": 41784, + "end": 41815, + "length": 32, + "parent_index": 5606 + }, + "expression": { + "id": 5614, + "node_type": 22, + "src": { + "id": 5615, + "line": 1187, + "column": 16, + "start": 41784, + "end": 41807, + "length": 24, + "parent_index": 5612 + }, + "index_expression": { + "id": 5616, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5617, + "line": 1187, + "column": 16, + "start": 41784, + "end": 41804, + "length": 21, + "parent_index": 5614 + }, + "expression": { + "id": 5618, + "node_type": 16, + "src": { + "id": 5619, + "line": 1187, + "column": 16, + "start": 41784, + "end": 41789, + "length": 6, + "parent_index": 5616 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "percentagePath", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5620, + "node_type": 16, + "src": { + "id": 5621, + "line": 1187, + "column": 38, + "start": 41806, + "end": 41806, + "length": 1, + "parent_index": 5614 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "tokenIn", + "argument_types": [], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + { + "id": 5622, + "node_type": 24, + "kind": 24, + "src": { + "id": 5623, + "line": 1188, + "column": 16, + "start": 41834, + "end": 41846, + "length": 13, + "parent_index": 5606 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_TridentSwapAdapter_$5143", + "type_string": "contract TridentSwapAdapter" + } + ], + "arguments": [ + { + "id": 5628, + "node_type": 16, + "src": { + "id": 5629, + "line": 1188, + "column": 24, + "start": 41842, + "end": 41845, + "length": 4, + "parent_index": 5622 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_TridentSwapAdapter_$5143", + "type_string": "contract TridentSwapAdapter" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 5624, + "node_type": 16, + "src": { + "id": 5625, + "line": 1188, + "column": 16, + "start": 41834, + "end": 41840, + "length": 7, + "parent_index": 5622 + }, + "name": "address", + "type_name": { + "id": 5626, + "node_type": 30, + "src": { + "id": 5627, + "line": 1188, + "column": 16, + "start": 41834, + "end": 41840, + "length": 7, + "parent_index": 5624 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ], + "expression": { + "id": 5608, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5609, + "line": 1186, + "column": 36, + "start": 41748, + "end": 41765, + "length": 18, + "parent_index": 5606 + }, + "expression": { + "id": 5610, + "node_type": 16, + "src": { + "id": 5611, + "line": 1186, + "column": 36, + "start": 41748, + "end": 41755, + "length": 8, + "parent_index": 5608 + }, + "name": "bentoBox", + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + }, + "overloaded_declarations": [], + "referenced_declaration": 1378, + "is_pure": false + }, + "member_name": "balanceOf", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$", + "type_string": "function(index[struct ITridentRouter.ExactInputParams:uint256],function(address))" + } + } + }, + { + "id": 5630, + "node_type": 44, + "src": { + "id": 5631, + "line": 1190, + "column": 12, + "start": 41875, + "end": 41993, + "length": 119, + "parent_index": 5598 + }, + "assignments": [ + 5632 + ], + "declarations": [ + { + "is_constant": false, + "id": 5632, + "state_mutability": 1, + "name": "transferShares", + "node_type": 44, + "scope": 5598, + "src": { + "id": 5633, + "line": 1190, + "column": 12, + "start": 41875, + "end": 41896, + "length": 22, + "parent_index": 5630 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 5634, + "node_type": 30, + "src": { + "id": 5635, + "line": 1190, + "column": 12, + "start": 41875, + "end": 41881, + "length": 7, + "parent_index": 5632 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 5636, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 5637, + "line": 1190, + "column": 37, + "start": 41900, + "end": 41992, + "length": 93, + "parent_index": 5630 + }, + "operator": 4, + "left_expression": { + "id": 5638, + "node_type": 60, + "src": { + "id": 5639, + "line": 1190, + "column": 37, + "start": 41900, + "end": 41975, + "length": 76, + "parent_index": 5636 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 5640, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 5641, + "line": 1190, + "column": 38, + "start": 41901, + "end": 41974, + "length": 74, + "parent_index": 5630 + }, + "operator": 3, + "left_expression": { + "id": 5642, + "node_type": 16, + "src": { + "id": 5643, + "line": 1190, + "column": 38, + "start": 41901, + "end": 41913, + "length": 13, + "parent_index": 5640 + }, + "name": "balanceShares", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 5600, + "is_pure": false + }, + "right_expression": { + "id": 5644, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5645, + "line": 1191, + "column": 16, + "start": 41933, + "end": 41974, + "length": 42, + "parent_index": 5630 + }, + "expression": { + "id": 5646, + "node_type": 22, + "src": { + "id": 5647, + "line": 1191, + "column": 16, + "start": 41933, + "end": 41956, + "length": 24, + "parent_index": 5630 + }, + "index_expression": { + "id": 5648, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5649, + "line": 1191, + "column": 16, + "start": 41933, + "end": 41953, + "length": 21, + "parent_index": 5630 + }, + "expression": { + "id": 5650, + "node_type": 16, + "src": { + "id": 5651, + "line": 1191, + "column": 16, + "start": 41933, + "end": 41938, + "length": 6, + "parent_index": 5648 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "percentagePath", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5652, + "node_type": 16, + "src": { + "id": 5653, + "line": 1191, + "column": 38, + "start": 41955, + "end": 41955, + "length": 1, + "parent_index": 5646 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "balancePercentage", + "argument_types": [], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_uint256$", + "type_string": "tuple(uint256)" + } + }, + "right_expression": { + "id": 5655, + "node_type": 95, + "src": { + "id": 5656, + "line": 1191, + "column": 62, + "start": 41979, + "end": 41992, + "length": 14, + "parent_index": 5630 + }, + "left_expression": { + "id": 5657, + "node_type": 24, + "kind": 24, + "src": { + "id": 5658, + "line": 1191, + "column": 62, + "start": 41979, + "end": 41989, + "length": 11, + "parent_index": 5630 + }, + "argument_types": [ + { + "type_identifier": "t_rational_10_by_1", + "type_string": "int_const 10" + } + ], + "arguments": [ + { + "id": 5663, + "node_type": 17, + "kind": 49, + "value": "10", + "hex_value": "3130", + "src": { + "id": 5664, + "line": 1191, + "column": 70, + "start": 41987, + "end": 41988, + "length": 2, + "parent_index": 5657 + }, + "type_description": { + "type_identifier": "t_rational_10_by_1", + "type_string": "int_const 10" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 5659, + "node_type": 16, + "src": { + "id": 5660, + "line": 1191, + "column": 62, + "start": 41979, + "end": 41985, + "length": 7, + "parent_index": 5657 + }, + "name": "uint256", + "type_name": { + "id": 5661, + "node_type": 30, + "src": { + "id": 5662, + "line": 1191, + "column": 62, + "start": 41979, + "end": 41985, + "length": 7, + "parent_index": 5659 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_10_by_1$", + "type_string": "function(int_const 10)" + } + }, + "right_expression": { + "id": 5665, + "node_type": 17, + "kind": 49, + "value": "8", + "hex_value": "38", + "src": { + "id": 5666, + "line": 1191, + "column": 75, + "start": 41992, + "end": 41992, + "length": 1, + "parent_index": 5655 + }, + "type_description": { + "type_identifier": "t_rational_8_by_1", + "type_string": "int_const 8" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_descriptions": [ + { + "type_identifier": "t_function_$_t_rational_10_by_1$", + "type_string": "function(int_const 10)" + }, + { + "type_identifier": "t_rational_8_by_1", + "type_string": "int_const 8" + } + ] + }, + "type_description": { + "type_identifier": "t_tuple_$_t_uint256$", + "type_string": "tuple(uint256)" + } + } + }, + { + "id": 5667, + "node_type": 24, + "kind": 24, + "src": { + "id": 5668, + "line": 1192, + "column": 12, + "start": 42007, + "end": 42197, + "length": 191, + "parent_index": 5598 + }, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 5673, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5674, + "line": 1193, + "column": 16, + "start": 42042, + "end": 42073, + "length": 32, + "parent_index": 5667 + }, + "expression": { + "id": 5675, + "node_type": 22, + "src": { + "id": 5676, + "line": 1193, + "column": 16, + "start": 42042, + "end": 42065, + "length": 24, + "parent_index": 5673 + }, + "index_expression": { + "id": 5677, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5678, + "line": 1193, + "column": 16, + "start": 42042, + "end": 42062, + "length": 21, + "parent_index": 5675 + }, + "expression": { + "id": 5679, + "node_type": 16, + "src": { + "id": 5680, + "line": 1193, + "column": 16, + "start": 42042, + "end": 42047, + "length": 6, + "parent_index": 5677 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "percentagePath", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5681, + "node_type": 16, + "src": { + "id": 5682, + "line": 1193, + "column": 38, + "start": 42064, + "end": 42064, + "length": 1, + "parent_index": 5675 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "tokenIn", + "argument_types": [], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + { + "id": 5683, + "node_type": 24, + "kind": 24, + "src": { + "id": 5684, + "line": 1194, + "column": 16, + "start": 42092, + "end": 42104, + "length": 13, + "parent_index": 5667 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_TridentSwapAdapter_$5143", + "type_string": "contract TridentSwapAdapter" + } + ], + "arguments": [ + { + "id": 5689, + "node_type": 16, + "src": { + "id": 5690, + "line": 1194, + "column": 24, + "start": 42100, + "end": 42103, + "length": 4, + "parent_index": 5683 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_TridentSwapAdapter_$5143", + "type_string": "contract TridentSwapAdapter" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 5685, + "node_type": 16, + "src": { + "id": 5686, + "line": 1194, + "column": 16, + "start": 42092, + "end": 42098, + "length": 7, + "parent_index": 5683 + }, + "name": "address", + "type_name": { + "id": 5687, + "node_type": 30, + "src": { + "id": 5688, + "line": 1194, + "column": 16, + "start": 42092, + "end": 42098, + "length": 7, + "parent_index": 5685 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 5691, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5692, + "line": 1195, + "column": 16, + "start": 42123, + "end": 42151, + "length": 29, + "parent_index": 5667 + }, + "expression": { + "id": 5693, + "node_type": 22, + "src": { + "id": 5694, + "line": 1195, + "column": 16, + "start": 42123, + "end": 42146, + "length": 24, + "parent_index": 5691 + }, + "index_expression": { + "id": 5695, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5696, + "line": 1195, + "column": 16, + "start": 42123, + "end": 42143, + "length": 21, + "parent_index": 5693 + }, + "expression": { + "id": 5697, + "node_type": 16, + "src": { + "id": 5698, + "line": 1195, + "column": 16, + "start": 42123, + "end": 42128, + "length": 6, + "parent_index": 5695 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "percentagePath", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5699, + "node_type": 16, + "src": { + "id": 5700, + "line": 1195, + "column": 38, + "start": 42145, + "end": 42145, + "length": 1, + "parent_index": 5693 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "pool", + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + { + "id": 5701, + "node_type": 16, + "src": { + "id": 5702, + "line": 1196, + "column": 16, + "start": 42170, + "end": 42183, + "length": 14, + "parent_index": 5667 + }, + "name": "transferShares", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 5630, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ] + } + ], + "expression": { + "id": 5669, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5670, + "line": 1192, + "column": 12, + "start": 42007, + "end": 42023, + "length": 17, + "parent_index": 5667 + }, + "expression": { + "id": 5671, + "node_type": 16, + "src": { + "id": 5672, + "line": 1192, + "column": 12, + "start": 42007, + "end": 42014, + "length": 8, + "parent_index": 5669 + }, + "name": "bentoBox", + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + }, + "overloaded_declarations": [], + "referenced_declaration": 1378, + "is_pure": false + }, + "member_name": "transfer", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_uint256$", + "type_string": "function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],uint256)" + } + }, + { + "id": 5703, + "node_type": 24, + "kind": 24, + "src": { + "id": 5704, + "line": 1198, + "column": 12, + "start": 42212, + "end": 42313, + "length": 102, + "parent_index": 5598 + }, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "arguments": [ + { + "id": 5721, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5722, + "line": 1199, + "column": 16, + "start": 42271, + "end": 42299, + "length": 29, + "parent_index": 5703 + }, + "expression": { + "id": 5723, + "node_type": 22, + "src": { + "id": 5724, + "line": 1199, + "column": 16, + "start": 42271, + "end": 42294, + "length": 24, + "parent_index": 5721 + }, + "index_expression": { + "id": 5725, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5726, + "line": 1199, + "column": 16, + "start": 42271, + "end": 42291, + "length": 21, + "parent_index": 5723 + }, + "expression": { + "id": 5727, + "node_type": 16, + "src": { + "id": 5728, + "line": 1199, + "column": 16, + "start": 42271, + "end": 42276, + "length": 6, + "parent_index": 5725 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "percentagePath", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5729, + "node_type": 16, + "src": { + "id": 5730, + "line": 1199, + "column": 38, + "start": 42293, + "end": 42293, + "length": 1, + "parent_index": 5723 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "data", + "argument_types": [], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + ], + "expression": { + "id": 5705, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5706, + "line": 1198, + "column": 12, + "start": 42212, + "end": 42252, + "length": 41, + "parent_index": 5703 + }, + "expression": { + "id": 5707, + "node_type": 24, + "kind": 24, + "src": { + "id": 5708, + "line": 1198, + "column": 12, + "start": 42212, + "end": 42247, + "length": 36, + "parent_index": 5705 + }, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ], + "arguments": [ + { + "id": 5711, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5712, + "line": 1198, + "column": 18, + "start": 42218, + "end": 42246, + "length": 29, + "parent_index": 5707 + }, + "expression": { + "id": 5713, + "node_type": 22, + "src": { + "id": 5714, + "line": 1198, + "column": 18, + "start": 42218, + "end": 42241, + "length": 24, + "parent_index": 5711 + }, + "index_expression": { + "id": 5715, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5716, + "line": 1198, + "column": 18, + "start": 42218, + "end": 42238, + "length": 21, + "parent_index": 5713 + }, + "expression": { + "id": 5717, + "node_type": 16, + "src": { + "id": 5718, + "line": 1198, + "column": 18, + "start": 42218, + "end": 42223, + "length": 6, + "parent_index": 5715 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "percentagePath", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5719, + "node_type": 16, + "src": { + "id": 5720, + "line": 1198, + "column": 40, + "start": 42240, + "end": 42240, + "length": 1, + "parent_index": 5713 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "pool", + "argument_types": [], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + } + ], + "expression": { + "id": 5709, + "node_type": 16, + "src": { + "id": 5710, + "line": 1198, + "column": 12, + "start": 42212, + "end": 42216, + "length": 5, + "parent_index": 5707 + }, + "name": "IPool", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + }, + "member_name": "swap", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "function(index[struct ITridentRouter.ExactInputParams:uint256])" + } + } + ] + } + }, + { + "id": 5731, + "node_type": 81, + "src": { + "id": 5732, + "line": 1203, + "column": 8, + "start": 42413, + "end": 42437, + "length": 25, + "parent_index": 5446 + }, + "expression": { + "id": 5733, + "node_type": 27, + "src": { + "id": 5734, + "line": 1203, + "column": 8, + "start": 42413, + "end": 42436, + "length": 24, + "parent_index": 5446 + }, + "operator": 11, + "left_expression": { + "id": 5735, + "node_type": 16, + "src": { + "id": 5736, + "line": 1203, + "column": 8, + "start": 42413, + "end": 42413, + "length": 1, + "parent_index": 5733 + }, + "name": "n", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 5448, + "is_pure": false + }, + "right_expression": { + "id": 5737, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5738, + "line": 1203, + "column": 12, + "start": 42417, + "end": 42436, + "length": 20, + "parent_index": 5733 + }, + "expression": { + "id": 5739, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5740, + "line": 1203, + "column": 12, + "start": 42417, + "end": 42429, + "length": 13, + "parent_index": 5737 + }, + "expression": { + "id": 5741, + "node_type": 16, + "src": { + "id": 5742, + "line": 1203, + "column": 12, + "start": 42417, + "end": 42422, + "length": 6, + "parent_index": 5739 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "type_string": "struct ITridentRouter.ComplexPathParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5741, + "is_pure": false + }, + "member_name": "output", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "type_string": "struct ITridentRouter.ComplexPathParams" + } + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "type_string": "struct ITridentRouter.ComplexPathParams" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + { + "id": 5743, + "node_type": 79, + "src": { + "id": 5744, + "line": 1204, + "column": 0, + "start": 42447, + "end": 43270, + "length": 824, + "parent_index": 5446 + }, + "initialiser": { + "id": 5745, + "node_type": 44, + "src": { + "id": 5746, + "line": 1204, + "column": 13, + "start": 42452, + "end": 42465, + "length": 14, + "parent_index": 5446 + }, + "assignments": [ + 5747 + ], + "declarations": [ + { + "is_constant": false, + "id": 5747, + "state_mutability": 1, + "name": "i", + "node_type": 44, + "scope": 5446, + "src": { + "id": 5748, + "line": 1204, + "column": 13, + "start": 42452, + "end": 42460, + "length": 9, + "parent_index": 5745 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 5749, + "node_type": 30, + "src": { + "id": 5750, + "line": 1204, + "column": 13, + "start": 42452, + "end": 42458, + "length": 7, + "parent_index": 5747 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 5751, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 5752, + "line": 1204, + "column": 25, + "start": 42464, + "end": 42464, + "length": 1, + "parent_index": 5745 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + }, + "condition": { + "id": 5753, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 5754, + "line": 1204, + "column": 28, + "start": 42467, + "end": 42471, + "length": 5, + "parent_index": 5743 + }, + "operator": 9, + "left_expression": { + "id": 5755, + "node_type": 16, + "src": { + "id": 5756, + "line": 1204, + "column": 28, + "start": 42467, + "end": 42467, + "length": 1, + "parent_index": 5753 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 5757, + "node_type": 16, + "src": { + "id": 5758, + "line": 1204, + "column": 32, + "start": 42471, + "end": 42471, + "length": 1, + "parent_index": 5753 + }, + "name": "n", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 5448, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "closure": { + "id": 5759, + "node_type": 27, + "src": { + "id": 5760, + "line": 1204, + "column": 35, + "start": 42474, + "end": 42490, + "length": 17, + "parent_index": 5446 + }, + "operator": 11, + "left_expression": { + "id": 5761, + "node_type": 16, + "src": { + "id": 5762, + "line": 1204, + "column": 35, + "start": 42474, + "end": 42474, + "length": 1, + "parent_index": 5759 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 5763, + "node_type": 24, + "kind": 24, + "src": { + "id": 5764, + "line": 1204, + "column": 39, + "start": 42478, + "end": 42490, + "length": 13, + "parent_index": 5759 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ], + "arguments": [ + { + "id": 5767, + "node_type": 16, + "src": { + "id": 5768, + "line": 1204, + "column": 50, + "start": 42489, + "end": 42489, + "length": 1, + "parent_index": 5763 + }, + "name": "i", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 5765, + "node_type": 16, + "src": { + "id": 5766, + "line": 1204, + "column": 39, + "start": 42478, + "end": 42487, + "length": 10, + "parent_index": 5763 + }, + "name": "_increment", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$", + "type_string": "function(function())" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "body": { + "id": 5769, + "node_type": 46, + "kind": 0, + "src": { + "id": 5770, + "line": 1204, + "column": 54, + "start": 42493, + "end": 43270, + "length": 778, + "parent_index": 5743 + }, + "implemented": true, + "statements": [ + { + "id": 5771, + "node_type": 44, + "src": { + "id": 5772, + "line": 1205, + "column": 12, + "start": 42507, + "end": 42634, + "length": 128, + "parent_index": 5769 + }, + "assignments": [ + 5773 + ], + "declarations": [ + { + "is_constant": false, + "id": 5773, + "state_mutability": 1, + "name": "balanceShares", + "node_type": 44, + "scope": 5769, + "src": { + "id": 5774, + "line": 1205, + "column": 12, + "start": 42507, + "end": 42527, + "length": 21, + "parent_index": 5771 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 5775, + "node_type": 30, + "src": { + "id": 5776, + "line": 1205, + "column": 12, + "start": 42507, + "end": 42513, + "length": 7, + "parent_index": 5773 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 5777, + "node_type": 24, + "kind": 24, + "src": { + "id": 5778, + "line": 1205, + "column": 36, + "start": 42531, + "end": 42633, + "length": 103, + "parent_index": 5771 + }, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ], + "arguments": [ + { + "id": 5783, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5784, + "line": 1206, + "column": 16, + "start": 42567, + "end": 42588, + "length": 22, + "parent_index": 5777 + }, + "expression": { + "id": 5785, + "node_type": 22, + "src": { + "id": 5786, + "line": 1206, + "column": 16, + "start": 42567, + "end": 42582, + "length": 16, + "parent_index": 5783 + }, + "index_expression": { + "id": 5787, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5788, + "line": 1206, + "column": 16, + "start": 42567, + "end": 42579, + "length": 13, + "parent_index": 5785 + }, + "expression": { + "id": 5789, + "node_type": 16, + "src": { + "id": 5790, + "line": 1206, + "column": 16, + "start": 42567, + "end": 42572, + "length": 6, + "parent_index": 5787 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "output", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5791, + "node_type": 16, + "src": { + "id": 5792, + "line": 1206, + "column": 30, + "start": 42581, + "end": 42581, + "length": 1, + "parent_index": 5785 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "token", + "argument_types": [], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + { + "id": 5793, + "node_type": 24, + "kind": 24, + "src": { + "id": 5794, + "line": 1207, + "column": 16, + "start": 42607, + "end": 42619, + "length": 13, + "parent_index": 5777 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_TridentSwapAdapter_$5143", + "type_string": "contract TridentSwapAdapter" + } + ], + "arguments": [ + { + "id": 5799, + "node_type": 16, + "src": { + "id": 5800, + "line": 1207, + "column": 24, + "start": 42615, + "end": 42618, + "length": 4, + "parent_index": 5793 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_TridentSwapAdapter_$5143", + "type_string": "contract TridentSwapAdapter" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 5795, + "node_type": 16, + "src": { + "id": 5796, + "line": 1207, + "column": 16, + "start": 42607, + "end": 42613, + "length": 7, + "parent_index": 5793 + }, + "name": "address", + "type_name": { + "id": 5797, + "node_type": 30, + "src": { + "id": 5798, + "line": 1207, + "column": 16, + "start": 42607, + "end": 42613, + "length": 7, + "parent_index": 5795 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + } + ], + "expression": { + "id": 5779, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5780, + "line": 1205, + "column": 36, + "start": 42531, + "end": 42548, + "length": 18, + "parent_index": 5777 + }, + "expression": { + "id": 5781, + "node_type": 16, + "src": { + "id": 5782, + "line": 1205, + "column": 36, + "start": 42531, + "end": 42538, + "length": 8, + "parent_index": 5779 + }, + "name": "bentoBox", + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + }, + "overloaded_declarations": [], + "referenced_declaration": 1378, + "is_pure": false + }, + "member_name": "balanceOf", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$", + "type_string": "function(index[struct ITridentRouter.ExactInputParams:uint256],function(address))" + } + } + }, + { + "id": 5801, + "node_type": 48, + "src": { + "id": 5802, + "line": 1209, + "column": 0, + "start": 42648, + "end": 42738, + "length": 91, + "parent_index": 5769 + }, + "condition": { + "id": 5803, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 5804, + "line": 1209, + "column": 16, + "start": 42652, + "end": 42693, + "length": 42, + "parent_index": 5801 + }, + "operator": 9, + "left_expression": { + "id": 5805, + "node_type": 16, + "src": { + "id": 5806, + "line": 1209, + "column": 16, + "start": 42652, + "end": 42664, + "length": 13, + "parent_index": 5803 + }, + "name": "balanceShares", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 5771, + "is_pure": false + }, + "right_expression": { + "id": 5807, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5808, + "line": 1209, + "column": 32, + "start": 42668, + "end": 42693, + "length": 26, + "parent_index": 5803 + }, + "expression": { + "id": 5809, + "node_type": 22, + "src": { + "id": 5810, + "line": 1209, + "column": 32, + "start": 42668, + "end": 42683, + "length": 16, + "parent_index": 5807 + }, + "index_expression": { + "id": 5811, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5812, + "line": 1209, + "column": 32, + "start": 42668, + "end": 42680, + "length": 13, + "parent_index": 5809 + }, + "expression": { + "id": 5813, + "node_type": 16, + "src": { + "id": 5814, + "line": 1209, + "column": 32, + "start": 42668, + "end": 42673, + "length": 6, + "parent_index": 5811 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "output", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5815, + "node_type": 16, + "src": { + "id": 5816, + "line": 1209, + "column": 46, + "start": 42682, + "end": 42682, + "length": 1, + "parent_index": 5809 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "minAmount", + "argument_types": [], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "body": { + "id": 5817, + "node_type": 46, + "kind": 0, + "src": { + "id": 0, + "line": 0, + "column": 0, + "start": 0, + "end": 0, + "length": 0, + "parent_index": 0 + }, + "implemented": false, + "statements": [] + } + }, + { + "id": 5818, + "node_type": 48, + "src": { + "id": 5819, + "line": 1211, + "column": 0, + "start": 42752, + "end": 43260, + "length": 509, + "parent_index": 5769 + }, + "condition": { + "id": 5820, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5821, + "line": 1211, + "column": 16, + "start": 42756, + "end": 42783, + "length": 28, + "parent_index": 5818 + }, + "expression": { + "id": 5822, + "node_type": 22, + "src": { + "id": 5823, + "line": 1211, + "column": 16, + "start": 42756, + "end": 42771, + "length": 16, + "parent_index": 5820 + }, + "index_expression": { + "id": 5824, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5825, + "line": 1211, + "column": 16, + "start": 42756, + "end": 42768, + "length": 13, + "parent_index": 5822 + }, + "expression": { + "id": 5826, + "node_type": 16, + "src": { + "id": 5827, + "line": 1211, + "column": 16, + "start": 42756, + "end": 42761, + "length": 6, + "parent_index": 5824 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "output", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5828, + "node_type": 16, + "src": { + "id": 5829, + "line": 1211, + "column": 30, + "start": 42770, + "end": 42770, + "length": 1, + "parent_index": 5822 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "unwrapBento", + "argument_types": [], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "body": { + "id": 5830, + "node_type": 46, + "kind": 0, + "src": { + "id": 5831, + "line": 1211, + "column": 46, + "start": 42786, + "end": 43031, + "length": 246, + "parent_index": 5743 + }, + "implemented": true, + "statements": [ + { + "id": 5832, + "node_type": 24, + "kind": 24, + "src": { + "id": 5833, + "line": 1212, + "column": 16, + "start": 42804, + "end": 43016, + "length": 213, + "parent_index": 5830 + }, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + { + "type_identifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$$$_t_function_$_t_address$$$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$$$_t_rational_0_by_1$", + "type_string": "function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],int_const 0)" + } + ], + "arguments": [ + { + "id": 5838, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5839, + "line": 1213, + "column": 20, + "start": 42843, + "end": 42864, + "length": 22, + "parent_index": 5832 + }, + "expression": { + "id": 5840, + "node_type": 22, + "src": { + "id": 5841, + "line": 1213, + "column": 20, + "start": 42843, + "end": 42858, + "length": 16, + "parent_index": 5838 + }, + "index_expression": { + "id": 5842, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5843, + "line": 1213, + "column": 20, + "start": 42843, + "end": 42855, + "length": 13, + "parent_index": 5840 + }, + "expression": { + "id": 5844, + "node_type": 16, + "src": { + "id": 5845, + "line": 1213, + "column": 20, + "start": 42843, + "end": 42848, + "length": 6, + "parent_index": 5842 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "output", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5846, + "node_type": 16, + "src": { + "id": 5847, + "line": 1213, + "column": 34, + "start": 42857, + "end": 42857, + "length": 1, + "parent_index": 5840 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "token", + "argument_types": [], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + { + "id": 5848, + "node_type": 24, + "kind": 24, + "src": { + "id": 5849, + "line": 1214, + "column": 20, + "start": 42887, + "end": 42899, + "length": 13, + "parent_index": 5832 + }, + "argument_types": [ + { + "type_identifier": "t_contract$_TridentSwapAdapter_$5143", + "type_string": "contract TridentSwapAdapter" + } + ], + "arguments": [ + { + "id": 5854, + "node_type": 16, + "src": { + "id": 5855, + "line": 1214, + "column": 28, + "start": 42895, + "end": 42898, + "length": 4, + "parent_index": 5848 + }, + "name": "this", + "type_description": { + "type_identifier": "t_contract$_TridentSwapAdapter_$5143", + "type_string": "contract TridentSwapAdapter" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + } + ], + "expression": { + "id": 5850, + "node_type": 16, + "src": { + "id": 5851, + "line": 1214, + "column": 20, + "start": 42887, + "end": 42893, + "length": 7, + "parent_index": 5848 + }, + "name": "address", + "type_name": { + "id": 5852, + "node_type": 30, + "src": { + "id": 5853, + "line": 1214, + "column": 20, + "start": 42887, + "end": 42893, + "length": 7, + "parent_index": 5850 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + { + "id": 5856, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5857, + "line": 1215, + "column": 20, + "start": 42922, + "end": 42940, + "length": 19, + "parent_index": 5832 + }, + "expression": { + "id": 5858, + "node_type": 22, + "src": { + "id": 5859, + "line": 1215, + "column": 20, + "start": 42922, + "end": 42937, + "length": 16, + "parent_index": 5856 + }, + "index_expression": { + "id": 5860, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5861, + "line": 1215, + "column": 20, + "start": 42922, + "end": 42934, + "length": 13, + "parent_index": 5858 + }, + "expression": { + "id": 5862, + "node_type": 16, + "src": { + "id": 5863, + "line": 1215, + "column": 20, + "start": 42922, + "end": 42927, + "length": 6, + "parent_index": 5860 + }, + "name": "params", + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + "overloaded_declarations": [], + "referenced_declaration": 5233, + "is_pure": false + }, + "member_name": "output", + "argument_types": [], + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + } + }, + "base_expression": { + "id": 5864, + "node_type": 16, + "src": { + "id": 5865, + "line": 1215, + "column": 34, + "start": 42936, + "end": 42936, + "length": 1, + "parent_index": 5858 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_struct$_ITridentRouter_ExactInputParams_$4947", + "type_string": "struct ITridentRouter.ExactInputParams" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + "member_name": "to", + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + }, + { + "id": 5866, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 5867, + "line": 1216, + "column": 20, + "start": 42963, + "end": 42963, + "length": 1, + "parent_index": 5832 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + } + ] + }, + { + "id": 5868, + "node_type": 16, + "src": { + "id": 5869, + "line": 1217, + "column": 20, + "start": 42986, + "end": 42998, + "length": 13, + "parent_index": 5832 + }, + "name": "balanceShares", + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$$$_t_function_$_t_address$$$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$$$_t_rational_0_by_1$", + "type_string": "function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],int_const 0)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + { + "type_identifier": "t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$", + "type_string": "index[struct ITridentRouter.ExactInputParams:uint256]" + }, + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ] + } + ], + "expression": { + "id": 5834, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 5835, + "line": 1212, + "column": 16, + "start": 42804, + "end": 42820, + "length": 17, + "parent_index": 5832 + }, + "expression": { + "id": 5836, + "node_type": 16, + "src": { + "id": 5837, + "line": 1212, + "column": 16, + "start": 42804, + "end": 42811, + "length": 8, + "parent_index": 5834 + }, + "name": "bentoBox", + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + }, + "overloaded_declarations": [], + "referenced_declaration": 1378, + "is_pure": false + }, + "member_name": "withdraw", + "argument_types": [], + "type_description": { + "type_identifier": "t_contract$_IBentoBoxMinimal_$769", + "type_string": "contract IBentoBoxMinimal" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_rational_0_by_1$_t_function_$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_function_$_t_address$_t_[_[$_t_struct$_ITridentRouter_ExactInputParams_$4947]$_t_uint256]$_t_rational_0_by_1$", + "type_string": "function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],int_const 0,function(index[struct ITridentRouter.ExactInputParams:uint256],function(address),index[struct ITridentRouter.ExactInputParams:uint256],int_const 0))" + } + } + ] + } + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 4, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 5437, + "node_type": 43, + "src": { + "id": 5438, + "line": 1170, + "column": 26, + "start": 40936, + "end": 40966, + "length": 31, + "parent_index": 5435 + }, + "parameters": [ + { + "id": 5439, + "node_type": 44, + "src": { + "id": 5440, + "line": 1170, + "column": 26, + "start": 40936, + "end": 40966, + "length": 31, + "parent_index": 5437 + }, + "scope": 5435, + "name": "params", + "type_name": { + "id": 5441, + "node_type": 69, + "src": { + "id": 5442, + "line": 1170, + "column": 26, + "start": 40936, + "end": 40952, + "length": 17, + "parent_index": 5439 + }, + "type_description": { + "type_identifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "type_string": "struct ITridentRouter.ComplexPathParams" + }, + "path_node": { + "id": 5443, + "name": "ComplexPathParams", + "node_type": 52, + "referenced_declaration": 5045, + "src": { + "id": 5444, + "line": 1170, + "column": 26, + "start": 40936, + "end": 40952, + "length": 17, + "parent_index": 5441 + } + }, + "referenced_declaration": 5045 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_struct$_ITridentRouter_ComplexPathParams_$5045", + "type_string": "struct ITridentRouter.ComplexPathParams" + } + ] + }, + "return_parameters": { + "id": 5445, + "node_type": 43, + "src": { + "id": 5436, + "line": 1170, + "column": 4, + "start": 40914, + "end": 43276, + "length": 2363, + "parent_index": 5435 + }, + "parameters": [], + "parameter_types": [] + }, + "scope": 5207, + "type_description": { + "type_identifier": "t_function_$_t_struct$_ITridentRouter_ComplexPathParams_$5045$", + "type_string": "function(struct ITridentRouter.ComplexPathParams)" + } + }, + { + "id": 5871, + "name": "_increment", + "node_type": 42, + "kind": 41, + "src": { + "id": 5872, + "line": 1230, + "column": 4, + "start": 43283, + "end": 43408, + "length": 126, + "parent_index": 5207 + }, + "body": { + "id": 5885, + "node_type": 46, + "kind": 0, + "src": { + "id": 5886, + "line": 1230, + "column": 67, + "start": 43346, + "end": 43408, + "length": 63, + "parent_index": 5871 + }, + "implemented": true, + "statements": [ + { + "id": 5887, + "node_type": 59, + "kind": 0, + "src": { + "id": 5888, + "line": 1231, + "column": 8, + "start": 43356, + "end": 43402, + "length": 47, + "parent_index": 5207 + }, + "implemented": false, + "statements": [ + { + "id": 5889, + "node_type": 47, + "src": { + "id": 5890, + "line": 1232, + "column": 12, + "start": 43380, + "end": 43392, + "length": 13, + "parent_index": 5871 + }, + "function_return_parameters": 5871, + "expression": { + "id": 5891, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 5892, + "line": 1232, + "column": 19, + "start": 43387, + "end": 43391, + "length": 5, + "parent_index": 5887 + }, + "operator": 1, + "left_expression": { + "id": 5893, + "node_type": 16, + "src": { + "id": 5894, + "line": 1232, + "column": 19, + "start": 43387, + "end": 43387, + "length": 1, + "parent_index": 5891 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 5893, + "is_pure": false + }, + "right_expression": { + "id": 5895, + "node_type": 17, + "kind": 49, + "value": "1", + "hex_value": "31", + "src": { + "id": 5896, + "line": 1232, + "column": 23, + "start": 43391, + "end": 43391, + "length": 1, + "parent_index": 5891 + }, + "type_description": { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + } + ] + } + ] + }, + "implemented": false, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 5873, + "node_type": 43, + "src": { + "id": 5874, + "line": 1230, + "column": 24, + "start": 43303, + "end": 43311, + "length": 9, + "parent_index": 5871 + }, + "parameters": [ + { + "id": 5875, + "node_type": 44, + "src": { + "id": 5876, + "line": 1230, + "column": 24, + "start": 43303, + "end": 43311, + "length": 9, + "parent_index": 5873 + }, + "scope": 5871, + "name": "i", + "type_name": { + "id": 5877, + "node_type": 30, + "src": { + "id": 5878, + "line": 1230, + "column": 24, + "start": 43303, + "end": 43309, + "length": 7, + "parent_index": 5875 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 5879, + "node_type": 43, + "src": { + "id": 5880, + "line": 1230, + "column": 58, + "start": 43337, + "end": 43343, + "length": 7, + "parent_index": 5871 + }, + "parameters": [ + { + "id": 5881, + "node_type": 44, + "src": { + "id": 5882, + "line": 1230, + "column": 58, + "start": 43337, + "end": 43343, + "length": 7, + "parent_index": 5879 + }, + "scope": 5871, + "name": "", + "type_name": { + "id": 5883, + "node_type": 30, + "src": { + "id": 5884, + "line": 1230, + "column": 58, + "start": 43337, + "end": 43343, + "length": 7, + "parent_index": 5881 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 5207, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + } + ], + "linearized_base_contracts": [ + 4839, + 1354, + 1482, + 2401, + 5207, + 5202, + 5203, + 5204, + 5205, + 5206 + ], + "base_contracts": [ + { + "id": 5208, + "node_type": 62, + "src": { + "id": 5209, + "line": 1116, + "column": 4, + "start": 38470, + "end": 38483, + "length": 14, + "parent_index": 5207 + }, + "base_name": { + "id": 5210, + "node_type": 52, + "src": { + "id": 5211, + "line": 1116, + "column": 4, + "start": 38470, + "end": 38483, + "length": 14, + "parent_index": 5207 + }, + "name": "ITridentRouter", + "referenced_declaration": 4839 + } + }, + { + "id": 5212, + "node_type": 62, + "src": { + "id": 5213, + "line": 1117, + "column": 4, + "start": 38490, + "end": 38503, + "length": 14, + "parent_index": 5207 + }, + "base_name": { + "id": 5214, + "node_type": 52, + "src": { + "id": 5215, + "line": 1117, + "column": 4, + "start": 38490, + "end": 38503, + "length": 14, + "parent_index": 5207 + }, + "name": "ImmutableState", + "referenced_declaration": 1354 + } + }, + { + "id": 5216, + "node_type": 62, + "src": { + "id": 5217, + "line": 1118, + "column": 4, + "start": 38510, + "end": 38521, + "length": 12, + "parent_index": 5207 + }, + "base_name": { + "id": 5218, + "node_type": 52, + "src": { + "id": 5219, + "line": 1118, + "column": 4, + "start": 38510, + "end": 38521, + "length": 12, + "parent_index": 5207 + }, + "name": "BentoAdapter", + "referenced_declaration": 1482 + } + }, + { + "id": 5220, + "node_type": 62, + "src": { + "id": 5221, + "line": 1119, + "column": 4, + "start": 38528, + "end": 38539, + "length": 12, + "parent_index": 5207 + }, + "base_name": { + "id": 5222, + "node_type": 52, + "src": { + "id": 5223, + "line": 1119, + "column": 4, + "start": 38528, + "end": 38539, + "length": 12, + "parent_index": 5207 + }, + "name": "TokenAdapter", + "referenced_declaration": 2401 + } + } + ], + "contract_dependencies": [ + 4839, + 1354, + 1482, + 2401, + 5202, + 5203, + 5204, + 5205, + 5206 + ] + } + ], + "src": { + "id": 5144, + "line": 1115, + "column": 0, + "start": 38426, + "end": 43410, + "length": 4985, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/UniswapV2Library.sol b/data/tests/contracts/sushixswap/UniswapV2Library.sol new file mode 100644 index 00000000..96c53c3e --- /dev/null +++ b/data/tests/contracts/sushixswap/UniswapV2Library.sol @@ -0,0 +1,153 @@ +// SPDX-License-Identifier: GPL-3.0 + +pragma solidity >=0.5.0; + +import "./IUniswapV2Pair.sol"; + +import "./SafeMath.sol"; + +library UniswapV2Library { + using SafeMathUniswap for uint256; + + // returns sorted token addresses, used to handle return values from pairs sorted in this order + function sortTokens(address tokenA, address tokenB) + internal + pure + returns (address token0, address token1) + { + require(tokenA != tokenB, "UniswapV2Library: IDENTICAL_ADDRESSES"); + (token0, token1) = tokenA < tokenB + ? (tokenA, tokenB) + : (tokenB, tokenA); + require(token0 != address(0), "UniswapV2Library: ZERO_ADDRESS"); + } + + // calculates the CREATE2 address for a pair without making any external calls + function pairFor( + address factory, + address tokenA, + address tokenB, + bytes32 pairCodeHash + ) internal pure returns (address pair) { + (address token0, address token1) = sortTokens(tokenA, tokenB); + pair = address( + uint160( + uint256( + keccak256( + abi.encodePacked( + hex"ff", + factory, + keccak256(abi.encodePacked(token0, token1)), + pairCodeHash // init code hash + ) + ) + ) + ) + ); + } + + // fetches and sorts the reserves for a pair + function getReserves( + address factory, + address tokenA, + address tokenB, + bytes32 pairCodeHash + ) internal view returns (uint256 reserveA, uint256 reserveB) { + (address token0, ) = sortTokens(tokenA, tokenB); + (uint256 reserve0, uint256 reserve1, ) = IUniswapV2Pair( + pairFor(factory, tokenA, tokenB, pairCodeHash) + ).getReserves(); + (reserveA, reserveB) = tokenA == token0 + ? (reserve0, reserve1) + : (reserve1, reserve0); + } + + // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset + function quote( + uint256 amountA, + uint256 reserveA, + uint256 reserveB + ) internal pure returns (uint256 amountB) { + require(amountA > 0, "UniswapV2Library: INSUFFICIENT_AMOUNT"); + require( + reserveA > 0 && reserveB > 0, + "UniswapV2Library: INSUFFICIENT_LIQUIDITY" + ); + amountB = amountA.mul(reserveB) / reserveA; + } + + // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset + function getAmountOut( + uint256 amountIn, + uint256 reserveIn, + uint256 reserveOut + ) internal pure returns (uint256 amountOut) { + require(amountIn > 0, "UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT"); + require( + reserveIn > 0 && reserveOut > 0, + "UniswapV2Library: INSUFFICIENT_LIQUIDITY" + ); + uint256 amountInWithFee = amountIn.mul(997); + uint256 numerator = amountInWithFee.mul(reserveOut); + uint256 denominator = reserveIn.mul(1000).add(amountInWithFee); + amountOut = numerator / denominator; + } + + // given an output amount of an asset and pair reserves, returns a required input amount of the other asset + function getAmountIn( + uint256 amountOut, + uint256 reserveIn, + uint256 reserveOut + ) internal pure returns (uint256 amountIn) { + require(amountOut > 0, "UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT"); + require( + reserveIn > 0 && reserveOut > 0, + "UniswapV2Library: INSUFFICIENT_LIQUIDITY" + ); + uint256 numerator = reserveIn.mul(amountOut).mul(1000); + uint256 denominator = reserveOut.sub(amountOut).mul(997); + amountIn = (numerator / denominator).add(1); + } + + // performs chained getAmountOut calculations on any number of pairs + function getAmountsOut( + address factory, + uint256 amountIn, + address[] memory path, + bytes32 pairCodeHash + ) internal view returns (uint256[] memory amounts) { + require(path.length >= 2, "UniswapV2Library: INVALID_PATH"); + amounts = new uint256[](path.length); + amounts[0] = amountIn; + for (uint256 i; i < path.length - 1; i++) { + (uint256 reserveIn, uint256 reserveOut) = getReserves( + factory, + path[i], + path[i + 1], + pairCodeHash + ); + amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut); + } + } + + // performs chained getAmountIn calculations on any number of pairs + function getAmountsIn( + address factory, + uint256 amountOut, + address[] memory path, + bytes32 pairCodeHash + ) internal view returns (uint256[] memory amounts) { + require(path.length >= 2, "UniswapV2Library: INVALID_PATH"); + amounts = new uint256[](path.length); + amounts[amounts.length - 1] = amountOut; + for (uint256 i = path.length - 1; i > 0; i--) { + (uint256 reserveIn, uint256 reserveOut) = getReserves( + factory, + path[i - 1], + path[i], + pairCodeHash + ); + amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut); + } + } +} \ No newline at end of file diff --git a/data/tests/contracts/sushixswap/UniswapV2Library.solgo.ast.json b/data/tests/contracts/sushixswap/UniswapV2Library.solgo.ast.json new file mode 100644 index 00000000..96bba84a --- /dev/null +++ b/data/tests/contracts/sushixswap/UniswapV2Library.solgo.ast.json @@ -0,0 +1,9877 @@ +{ + "id": 3448, + "base_contracts": [], + "license": "MIT", + "exported_symbols": [ + { + "id": 3448, + "name": "UniswapV2Library", + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/UniswapV2Library.sol" + }, + { + "id": 3265, + "name": "IUniswapV2Pair", + "absolute_path": "IUniswapV2Pair.sol" + }, + { + "id": 3265, + "name": "SafeMath", + "absolute_path": "SafeMath.sol" + } + ], + "absolute_path": "/home/cortex/github/txpull/solgo/data/tests/contracts/sushixswap/UniswapV2Library.sol", + "name": "UniswapV2Library", + "node_type": 1, + "nodes": [ + { + "id": 3478, + "node_type": 10, + "src": { + "id": 3479, + "line": 805, + "column": 0, + "start": 28956, + "end": 28979, + "length": 24, + "parent_index": 3448 + }, + "literals": [ + "pragma", + "solidity", + "\u003e=", + "0", + ".", + "5", + ".", + "0", + ";" + ], + "text": "pragma solidity \u003e=0.5.0;" + }, + { + "id": 3491, + "node_type": 29, + "src": { + "id": 0, + "line": 807, + "column": 0, + "start": 28982, + "end": 29011, + "length": 30, + "parent_index": 3448 + }, + "absolute_path": "IUniswapV2Pair.sol", + "file": "./IUniswapV2Pair.sol", + "scope": 3448, + "unit_alias": "", + "source_unit": 3265 + }, + { + "id": 3492, + "node_type": 29, + "src": { + "id": 0, + "line": 809, + "column": 0, + "start": 29014, + "end": 29037, + "length": 24, + "parent_index": 3448 + }, + "absolute_path": "SafeMath.sol", + "file": "./SafeMath.sol", + "scope": 3448, + "unit_alias": "", + "source_unit": 3265 + }, + { + "id": 3493, + "name": "UniswapV2Library", + "node_type": 35, + "src": { + "id": 0, + "line": 811, + "column": 0, + "start": 29040, + "end": 34362, + "length": 5323, + "parent_index": 3448 + }, + "abstract": false, + "kind": 37, + "fully_implemented": true, + "nodes": [ + { + "id": 3495, + "node_type": 51, + "src": { + "id": 3496, + "line": 812, + "column": 0, + "start": 29071, + "end": 29104, + "length": 34, + "parent_index": 3493 + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "type_name": { + "id": 3497, + "node_type": 30, + "src": { + "id": 3498, + "line": 812, + "column": 30, + "start": 29097, + "end": 29103, + "length": 7, + "parent_index": 3495 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "library_name": { + "id": 3499, + "node_type": 52, + "src": { + "id": 3500, + "line": 812, + "column": 0, + "start": 29077, + "end": 29091, + "length": 15, + "parent_index": 3495 + }, + "name": "SafeMathUniswap", + "referenced_declaration": 3265 + } + }, + { + "id": 3502, + "name": "sortTokens", + "node_type": 42, + "kind": 41, + "src": { + "id": 3503, + "line": 815, + "column": 4, + "start": 29211, + "end": 29607, + "length": 397, + "parent_index": 3493 + }, + "body": { + "id": 3524, + "node_type": 46, + "kind": 0, + "src": { + "id": 3525, + "line": 819, + "column": 4, + "start": 29346, + "end": 29607, + "length": 262, + "parent_index": 3502 + }, + "implemented": true, + "statements": [ + { + "id": 3526, + "node_type": 24, + "kind": 24, + "src": { + "id": 3527, + "line": 820, + "column": 8, + "start": 29356, + "end": 29421, + "length": 66, + "parent_index": 3524 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: IDENTICAL_ADDRESSES\"" + } + ], + "arguments": [ + { + "id": 3530, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3531, + "line": 820, + "column": 16, + "start": 29364, + "end": 29379, + "length": 16, + "parent_index": 3526 + }, + "operator": 12, + "left_expression": { + "id": 3532, + "node_type": 16, + "src": { + "id": 3533, + "line": 820, + "column": 16, + "start": 29364, + "end": 29369, + "length": 6, + "parent_index": 3530 + }, + "name": "tokenA", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3532, + "is_pure": false + }, + "right_expression": { + "id": 3534, + "node_type": 16, + "src": { + "id": 3535, + "line": 820, + "column": 26, + "start": 29374, + "end": 29379, + "length": 6, + "parent_index": 3530 + }, + "name": "tokenB", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3534, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 3536, + "node_type": 17, + "kind": 50, + "value": "UniswapV2Library: IDENTICAL_ADDRESSES", + "hex_value": "556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553", + "src": { + "id": 3537, + "line": 820, + "column": 34, + "start": 29382, + "end": 29420, + "length": 39, + "parent_index": 3526 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: IDENTICAL_ADDRESSES\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 3528, + "node_type": 16, + "src": { + "id": 3529, + "line": 820, + "column": 8, + "start": 29356, + "end": 29362, + "length": 7, + "parent_index": 3526 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 3538, + "node_type": 81, + "src": { + "id": 3539, + "line": 821, + "column": 8, + "start": 29432, + "end": 29528, + "length": 97, + "parent_index": 3524 + }, + "expression": { + "id": 3540, + "node_type": 27, + "src": { + "id": 3541, + "line": 821, + "column": 8, + "start": 29432, + "end": 29527, + "length": 96, + "parent_index": 3524 + }, + "operator": 11, + "left_expression": { + "id": 3542, + "node_type": 60, + "src": { + "id": 3543, + "line": 821, + "column": 8, + "start": 29432, + "end": 29447, + "length": 16, + "parent_index": 3540 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 3544, + "node_type": 16, + "src": { + "id": 3545, + "line": 821, + "column": 9, + "start": 29433, + "end": 29438, + "length": 6, + "parent_index": 3542 + }, + "name": "token0", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3516, + "is_pure": false + }, + { + "id": 3546, + "node_type": 16, + "src": { + "id": 3547, + "line": 821, + "column": 17, + "start": 29441, + "end": 29446, + "length": 6, + "parent_index": 3542 + }, + "name": "token1", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3520, + "is_pure": false + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_address_$_t_address$", + "type_string": "tuple(address,address)" + } + }, + "right_expression": { + "id": 3549, + "node_type": 97, + "src": { + "id": 3550, + "line": 821, + "column": 27, + "start": 29451, + "end": 29527, + "length": 77, + "parent_index": 3540 + }, + "expressions": [ + { + "id": 3551, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3552, + "line": 821, + "column": 27, + "start": 29451, + "end": 29465, + "length": 15, + "parent_index": 3549 + }, + "operator": 9, + "left_expression": { + "id": 3553, + "node_type": 16, + "src": { + "id": 3554, + "line": 821, + "column": 27, + "start": 29451, + "end": 29456, + "length": 6, + "parent_index": 3551 + }, + "name": "tokenA", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3553, + "is_pure": false + }, + "right_expression": { + "id": 3555, + "node_type": 16, + "src": { + "id": 3556, + "line": 821, + "column": 36, + "start": 29460, + "end": 29465, + "length": 6, + "parent_index": 3551 + }, + "name": "tokenB", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3555, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 3557, + "node_type": 60, + "src": { + "id": 3558, + "line": 822, + "column": 14, + "start": 29481, + "end": 29496, + "length": 16, + "parent_index": 3549 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 3559, + "node_type": 16, + "src": { + "id": 3560, + "line": 822, + "column": 15, + "start": 29482, + "end": 29487, + "length": 6, + "parent_index": 3557 + }, + "name": "tokenA", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3559, + "is_pure": false + }, + { + "id": 3561, + "node_type": 16, + "src": { + "id": 3562, + "line": 822, + "column": 23, + "start": 29490, + "end": 29495, + "length": 6, + "parent_index": 3557 + }, + "name": "tokenB", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3561, + "is_pure": false + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_address_$_t_address$", + "type_string": "tuple(address,address)" + } + }, + { + "id": 3563, + "node_type": 60, + "src": { + "id": 3564, + "line": 823, + "column": 14, + "start": 29512, + "end": 29527, + "length": 16, + "parent_index": 3549 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 3565, + "node_type": 16, + "src": { + "id": 3566, + "line": 823, + "column": 15, + "start": 29513, + "end": 29518, + "length": 6, + "parent_index": 3563 + }, + "name": "tokenB", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3565, + "is_pure": false + }, + { + "id": 3567, + "node_type": 16, + "src": { + "id": 3568, + "line": 823, + "column": 23, + "start": 29521, + "end": 29526, + "length": 6, + "parent_index": 3563 + }, + "name": "tokenA", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3567, + "is_pure": false + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_address_$_t_address$", + "type_string": "tuple(address,address)" + } + } + ], + "type_descriptions": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_tuple_$_t_address_$_t_address$", + "type_string": "tuple(address,address)" + }, + { + "type_identifier": "t_tuple_$_t_address_$_t_address$", + "type_string": "tuple(address,address)" + } + ], + "type_description": null + }, + "type_description": { + "type_identifier": "t_tuple_$_t_address_$_t_address$", + "type_string": "tuple(address,address)" + } + }, + "type_description": { + "type_identifier": "t_tuple_$_t_address_$_t_address$", + "type_string": "tuple(address,address)" + } + }, + { + "id": 3569, + "node_type": 24, + "kind": 24, + "src": { + "id": 3570, + "line": 824, + "column": 8, + "start": 29538, + "end": 29600, + "length": 63, + "parent_index": 3524 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: ZERO_ADDRESS\"" + } + ], + "arguments": [ + { + "id": 3573, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3574, + "line": 824, + "column": 16, + "start": 29546, + "end": 29565, + "length": 20, + "parent_index": 3569 + }, + "operator": 12, + "left_expression": { + "id": 3575, + "node_type": 16, + "src": { + "id": 3576, + "line": 824, + "column": 16, + "start": 29546, + "end": 29551, + "length": 6, + "parent_index": 3573 + }, + "name": "token0", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3516, + "is_pure": false + }, + "right_expression": { + "id": 3577, + "node_type": 24, + "kind": 24, + "src": { + "id": 3578, + "line": 824, + "column": 26, + "start": 29556, + "end": 29565, + "length": 10, + "parent_index": 3573 + }, + "argument_types": [ + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "arguments": [ + { + "id": 3583, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 3584, + "line": 824, + "column": 34, + "start": 29564, + "end": 29564, + "length": 1, + "parent_index": 3577 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 3579, + "node_type": 16, + "src": { + "id": 3580, + "line": 824, + "column": 26, + "start": 29556, + "end": 29562, + "length": 7, + "parent_index": 3577 + }, + "name": "address", + "type_name": { + "id": 3581, + "node_type": 30, + "src": { + "id": 3582, + "line": 824, + "column": 26, + "start": 29556, + "end": 29562, + "length": 7, + "parent_index": 3579 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_0_by_1$", + "type_string": "function(int_const 0)" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 3585, + "node_type": 17, + "kind": 50, + "value": "UniswapV2Library: ZERO_ADDRESS", + "hex_value": "556e697377617056324c6962726172793a205a45524f5f41444452455353", + "src": { + "id": 3586, + "line": 824, + "column": 38, + "start": 29568, + "end": 29599, + "length": 32, + "parent_index": 3569 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: ZERO_ADDRESS\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 3571, + "node_type": 16, + "src": { + "id": 3572, + "line": 824, + "column": 8, + "start": 29538, + "end": 29544, + "length": 7, + "parent_index": 3569 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3504, + "node_type": 43, + "src": { + "id": 3505, + "line": 815, + "column": 24, + "start": 29231, + "end": 29260, + "length": 30, + "parent_index": 3502 + }, + "parameters": [ + { + "id": 3506, + "node_type": 44, + "src": { + "id": 3507, + "line": 815, + "column": 24, + "start": 29231, + "end": 29244, + "length": 14, + "parent_index": 3504 + }, + "scope": 3502, + "name": "tokenA", + "type_name": { + "id": 3508, + "node_type": 30, + "src": { + "id": 3509, + "line": 815, + "column": 24, + "start": 29231, + "end": 29237, + "length": 7, + "parent_index": 3506 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 3510, + "node_type": 44, + "src": { + "id": 3511, + "line": 815, + "column": 40, + "start": 29247, + "end": 29260, + "length": 14, + "parent_index": 3504 + }, + "scope": 3502, + "name": "tokenB", + "type_name": { + "id": 3512, + "node_type": 30, + "src": { + "id": 3513, + "line": 815, + "column": 40, + "start": 29247, + "end": 29253, + "length": 7, + "parent_index": 3510 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "return_parameters": { + "id": 3514, + "node_type": 43, + "src": { + "id": 3515, + "line": 818, + "column": 17, + "start": 29310, + "end": 29339, + "length": 30, + "parent_index": 3502 + }, + "parameters": [ + { + "id": 3516, + "node_type": 44, + "src": { + "id": 3517, + "line": 818, + "column": 17, + "start": 29310, + "end": 29323, + "length": 14, + "parent_index": 3514 + }, + "scope": 3502, + "name": "token0", + "type_name": { + "id": 3518, + "node_type": 30, + "src": { + "id": 3519, + "line": 818, + "column": 17, + "start": 29310, + "end": 29316, + "length": 7, + "parent_index": 3516 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 3520, + "node_type": 44, + "src": { + "id": 3521, + "line": 818, + "column": 33, + "start": 29326, + "end": 29339, + "length": 14, + "parent_index": 3514 + }, + "scope": 3502, + "name": "token1", + "type_name": { + "id": 3522, + "node_type": 30, + "src": { + "id": 3523, + "line": 818, + "column": 33, + "start": 29326, + "end": 29332, + "length": 7, + "parent_index": 3520 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 3493, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$", + "type_string": "function(address,address)" + } + }, + { + "id": 3588, + "name": "pairFor", + "node_type": 42, + "kind": 41, + "src": { + "id": 3589, + "line": 828, + "column": 4, + "start": 29697, + "end": 30377, + "length": 681, + "parent_index": 3493 + }, + "body": { + "id": 3614, + "node_type": 46, + "kind": 0, + "src": { + "id": 3615, + "line": 833, + "column": 43, + "start": 29860, + "end": 30377, + "length": 518, + "parent_index": 3588 + }, + "implemented": true, + "statements": [ + { + "id": 3616, + "node_type": 44, + "src": { + "id": 3617, + "line": 834, + "column": 8, + "start": 29870, + "end": 29931, + "length": 62, + "parent_index": 3614 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 3618, + "node_type": 24, + "kind": 24, + "src": { + "id": 3619, + "line": 834, + "column": 43, + "start": 29905, + "end": 29930, + "length": 26, + "parent_index": 3616 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 3622, + "node_type": 16, + "src": { + "id": 3623, + "line": 834, + "column": 54, + "start": 29916, + "end": 29921, + "length": 6, + "parent_index": 3618 + }, + "name": "tokenA", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3622, + "is_pure": false + }, + { + "id": 3624, + "node_type": 16, + "src": { + "id": 3625, + "line": 834, + "column": 62, + "start": 29924, + "end": 29929, + "length": 6, + "parent_index": 3618 + }, + "name": "tokenB", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3624, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 3620, + "node_type": 16, + "src": { + "id": 3621, + "line": 834, + "column": 43, + "start": 29905, + "end": 29914, + "length": 10, + "parent_index": 3618 + }, + "name": "sortTokens", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$", + "type_string": "function(address,address)" + } + } + }, + { + "id": 3626, + "node_type": 81, + "src": { + "id": 3627, + "line": 835, + "column": 8, + "start": 29941, + "end": 30371, + "length": 431, + "parent_index": 3614 + }, + "expression": { + "id": 3628, + "node_type": 27, + "src": { + "id": 3629, + "line": 835, + "column": 8, + "start": 29941, + "end": 30370, + "length": 430, + "parent_index": 3614 + }, + "operator": 11, + "left_expression": { + "id": 3630, + "node_type": 16, + "src": { + "id": 3631, + "line": 835, + "column": 8, + "start": 29941, + "end": 29944, + "length": 4, + "parent_index": 3628 + }, + "name": "pair", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3610, + "is_pure": false + }, + "right_expression": { + "id": 3632, + "node_type": 24, + "kind": 24, + "src": { + "id": 3633, + "line": 835, + "column": 15, + "start": 29948, + "end": 30370, + "length": 423, + "parent_index": 3628 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "type_string": "function(function(function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32))))" + } + ], + "arguments": [ + { + "id": 3638, + "node_type": 24, + "kind": 24, + "src": { + "id": 3639, + "line": 836, + "column": 12, + "start": 29969, + "end": 30360, + "length": 392, + "parent_index": 3632 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "type_string": "function(function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32)))" + } + ], + "arguments": [ + { + "id": 3644, + "node_type": 24, + "kind": 24, + "src": { + "id": 3645, + "line": 837, + "column": 16, + "start": 29994, + "end": 30346, + "length": 353, + "parent_index": 3638 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "type_string": "function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32))" + } + ], + "arguments": [ + { + "id": 3650, + "node_type": 24, + "kind": 24, + "src": { + "id": 3651, + "line": 838, + "column": 20, + "start": 30023, + "end": 30328, + "length": 306, + "parent_index": 3644 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "type_string": "function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32)" + } + ], + "arguments": [ + { + "id": 3654, + "node_type": 24, + "kind": 24, + "src": { + "id": 3655, + "line": 839, + "column": 24, + "start": 30058, + "end": 30306, + "length": 249, + "parent_index": 3650 + }, + "argument_types": [ + { + "type_identifier": "t_string_hex_literal", + "type_string": "literal_hex_string hex\"ff\"" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$", + "type_string": "function(function(function(),function(function())))" + }, + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ], + "arguments": [ + { + "id": 3660, + "node_type": 17, + "kind": 65, + "value": "hexff", + "hex_value": "6865786666", + "src": { + "id": 3661, + "line": 840, + "column": 28, + "start": 30104, + "end": 30110, + "length": 7, + "parent_index": 3654 + }, + "type_description": { + "type_identifier": "t_string_hex_literal", + "type_string": "literal_hex_string hex\"ff\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + { + "id": 3662, + "node_type": 16, + "src": { + "id": 3663, + "line": 841, + "column": 28, + "start": 30141, + "end": 30147, + "length": 7, + "parent_index": 3654 + }, + "name": "factory", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3662, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_string_hex_literal", + "type_string": "literal_hex_string hex\"ff\"" + } + ] + }, + { + "id": 3664, + "node_type": 24, + "kind": 24, + "src": { + "id": 3665, + "line": 842, + "column": 28, + "start": 30178, + "end": 30220, + "length": 43, + "parent_index": 3654 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$", + "type_string": "function(function(),function(function()))" + } + ], + "arguments": [ + { + "id": 3668, + "node_type": 24, + "kind": 24, + "src": { + "id": 3669, + "line": 842, + "column": 38, + "start": 30188, + "end": 30219, + "length": 32, + "parent_index": 3664 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + } + ], + "arguments": [ + { + "id": 3674, + "node_type": 16, + "src": { + "id": 3675, + "line": 842, + "column": 55, + "start": 30205, + "end": 30210, + "length": 6, + "parent_index": 3668 + }, + "name": "token0", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 3676, + "node_type": 16, + "src": { + "id": 3677, + "line": 842, + "column": 63, + "start": 30213, + "end": 30218, + "length": 6, + "parent_index": 3668 + }, + "name": "token1", + "type_description": { + "type_identifier": "t_function_$_t_function_$$", + "type_string": "function(function())" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + } + ] + } + ], + "expression": { + "id": 3670, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 3671, + "line": 842, + "column": 38, + "start": 30188, + "end": 30203, + "length": 16, + "parent_index": 3668 + }, + "expression": { + "id": 3672, + "node_type": 16, + "src": { + "id": 3673, + "line": 842, + "column": 38, + "start": 30188, + "end": 30190, + "length": 3, + "parent_index": 3670 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "encodePacked", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$", + "type_string": "function(function(),function(function()))" + } + } + ], + "expression": { + "id": 3666, + "node_type": 16, + "src": { + "id": 3667, + "line": 842, + "column": 28, + "start": 30178, + "end": 30186, + "length": 9, + "parent_index": 3664 + }, + "name": "keccak256", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$", + "type_string": "function(function(function(),function(function())))" + } + }, + { + "id": 3678, + "node_type": 16, + "src": { + "id": 3679, + "line": 843, + "column": 28, + "start": 30251, + "end": 30262, + "length": 12, + "parent_index": 3654 + }, + "name": "pairCodeHash", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "overloaded_declarations": [], + "referenced_declaration": 3678, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_string_hex_literal", + "type_string": "literal_hex_string hex\"ff\"" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$", + "type_string": "function(function(function(),function(function())))" + } + ] + } + ], + "expression": { + "id": 3656, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 3657, + "line": 839, + "column": 24, + "start": 30058, + "end": 30073, + "length": 16, + "parent_index": 3654 + }, + "expression": { + "id": 3658, + "node_type": 16, + "src": { + "id": 3659, + "line": 839, + "column": 24, + "start": 30058, + "end": 30060, + "length": 3, + "parent_index": 3656 + }, + "name": "abi", + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "member_name": "encodePacked", + "argument_types": [], + "type_description": { + "type_identifier": "t_magic_abi", + "type_string": "abi" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "type_string": "function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32)" + } + } + ], + "expression": { + "id": 3652, + "node_type": 16, + "src": { + "id": 3653, + "line": 838, + "column": 20, + "start": 30023, + "end": 30031, + "length": 9, + "parent_index": 3650 + }, + "name": "keccak256", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "type_string": "function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32))" + } + } + ], + "expression": { + "id": 3646, + "node_type": 16, + "src": { + "id": 3647, + "line": 837, + "column": 16, + "start": 29994, + "end": 30000, + "length": 7, + "parent_index": 3644 + }, + "name": "uint256", + "type_name": { + "id": 3648, + "node_type": 30, + "src": { + "id": 3649, + "line": 837, + "column": 16, + "start": 29994, + "end": 30000, + "length": 7, + "parent_index": 3646 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "type_string": "function(function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32)))" + } + } + ], + "expression": { + "id": 3640, + "node_type": 16, + "src": { + "id": 3641, + "line": 836, + "column": 12, + "start": 29969, + "end": 29975, + "length": 7, + "parent_index": 3638 + }, + "name": "uint160", + "type_name": { + "id": 3642, + "node_type": 30, + "src": { + "id": 3643, + "line": 836, + "column": 12, + "start": 29969, + "end": 29975, + "length": 7, + "parent_index": 3640 + }, + "name": "uint160", + "type_description": { + "type_identifier": "t_uint160", + "type_string": "uint160" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_uint160$", + "type_string": "function(uint160)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_uint160", + "type_string": "uint160" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "type_string": "function(function(function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32))))" + } + } + ], + "expression": { + "id": 3634, + "node_type": 16, + "src": { + "id": 3635, + "line": 835, + "column": 15, + "start": 29948, + "end": 29954, + "length": 7, + "parent_index": 3632 + }, + "name": "address", + "type_name": { + "id": 3636, + "node_type": 30, + "src": { + "id": 3637, + "line": 835, + "column": 15, + "start": 29948, + "end": 29954, + "length": 7, + "parent_index": 3634 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_string_hex_literal$_t_address$_t_function_$_t_function_$_t_function_$_t_function_$_t_function_$_t_bytes32$", + "type_string": "function(function(function(function(function(literal_hex_string hex\"ff\",address,function(function(function(),function(function()))),bytes32)))))" + } + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3590, + "node_type": 43, + "src": { + "id": 3591, + "line": 829, + "column": 8, + "start": 29723, + "end": 29815, + "length": 93, + "parent_index": 3588 + }, + "parameters": [ + { + "id": 3592, + "node_type": 44, + "src": { + "id": 3593, + "line": 829, + "column": 8, + "start": 29723, + "end": 29737, + "length": 15, + "parent_index": 3590 + }, + "scope": 3588, + "name": "factory", + "type_name": { + "id": 3594, + "node_type": 30, + "src": { + "id": 3595, + "line": 829, + "column": 8, + "start": 29723, + "end": 29729, + "length": 7, + "parent_index": 3592 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 3596, + "node_type": 44, + "src": { + "id": 3597, + "line": 830, + "column": 8, + "start": 29748, + "end": 29761, + "length": 14, + "parent_index": 3590 + }, + "scope": 3588, + "name": "tokenA", + "type_name": { + "id": 3598, + "node_type": 30, + "src": { + "id": 3599, + "line": 830, + "column": 8, + "start": 29748, + "end": 29754, + "length": 7, + "parent_index": 3596 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 3600, + "node_type": 44, + "src": { + "id": 3601, + "line": 831, + "column": 8, + "start": 29772, + "end": 29785, + "length": 14, + "parent_index": 3590 + }, + "scope": 3588, + "name": "tokenB", + "type_name": { + "id": 3602, + "node_type": 30, + "src": { + "id": 3603, + "line": 831, + "column": 8, + "start": 29772, + "end": 29778, + "length": 7, + "parent_index": 3600 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 3604, + "node_type": 44, + "src": { + "id": 3605, + "line": 832, + "column": 8, + "start": 29796, + "end": 29815, + "length": 20, + "parent_index": 3590 + }, + "scope": 3588, + "name": "pairCodeHash", + "type_name": { + "id": 3606, + "node_type": 30, + "src": { + "id": 3607, + "line": 832, + "column": 8, + "start": 29796, + "end": 29802, + "length": 7, + "parent_index": 3604 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "return_parameters": { + "id": 3608, + "node_type": 43, + "src": { + "id": 3609, + "line": 833, + "column": 29, + "start": 29846, + "end": 29857, + "length": 12, + "parent_index": 3588 + }, + "parameters": [ + { + "id": 3610, + "node_type": 44, + "src": { + "id": 3611, + "line": 833, + "column": 29, + "start": 29846, + "end": 29857, + "length": 12, + "parent_index": 3608 + }, + "scope": 3588, + "name": "pair", + "type_name": { + "id": 3612, + "node_type": 30, + "src": { + "id": 3613, + "line": 833, + "column": 29, + "start": 29846, + "end": 29852, + "length": 7, + "parent_index": 3610 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + "scope": 3493, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_address$_t_bytes32$", + "type_string": "function(address,address,address,bytes32)" + } + }, + { + "id": 3681, + "name": "getReserves", + "node_type": 42, + "kind": 41, + "src": { + "id": 3682, + "line": 852, + "column": 4, + "start": 30433, + "end": 30953, + "length": 521, + "parent_index": 3493 + }, + "body": { + "id": 3711, + "node_type": 46, + "kind": 0, + "src": { + "id": 3712, + "line": 857, + "column": 65, + "start": 30622, + "end": 30953, + "length": 332, + "parent_index": 3681 + }, + "implemented": true, + "statements": [ + { + "id": 3713, + "node_type": 44, + "src": { + "id": 3714, + "line": 858, + "column": 8, + "start": 30632, + "end": 30679, + "length": 48, + "parent_index": 3711 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 3715, + "node_type": 24, + "kind": 24, + "src": { + "id": 3716, + "line": 858, + "column": 29, + "start": 30653, + "end": 30678, + "length": 26, + "parent_index": 3713 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 3719, + "node_type": 16, + "src": { + "id": 3720, + "line": 858, + "column": 40, + "start": 30664, + "end": 30669, + "length": 6, + "parent_index": 3715 + }, + "name": "tokenA", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3719, + "is_pure": false + }, + { + "id": 3721, + "node_type": 16, + "src": { + "id": 3722, + "line": 858, + "column": 48, + "start": 30672, + "end": 30677, + "length": 6, + "parent_index": 3715 + }, + "name": "tokenB", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3721, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 3717, + "node_type": 16, + "src": { + "id": 3718, + "line": 858, + "column": 29, + "start": 30653, + "end": 30662, + "length": 10, + "parent_index": 3715 + }, + "name": "sortTokens", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$", + "type_string": "function(address,address)" + } + } + }, + { + "id": 3723, + "node_type": 44, + "src": { + "id": 3724, + "line": 859, + "column": 8, + "start": 30689, + "end": 30828, + "length": 140, + "parent_index": 3711 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 3725, + "node_type": 24, + "kind": 24, + "src": { + "id": 3726, + "line": 859, + "column": 49, + "start": 30730, + "end": 30827, + "length": 98, + "parent_index": 3723 + }, + "argument_types": [], + "arguments": [], + "expression": { + "id": 3727, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 3728, + "line": 859, + "column": 49, + "start": 30730, + "end": 30825, + "length": 96, + "parent_index": 3725 + }, + "expression": { + "id": 3729, + "node_type": 24, + "kind": 24, + "src": { + "id": 3730, + "line": 859, + "column": 49, + "start": 30730, + "end": 30813, + "length": 84, + "parent_index": 3727 + }, + "argument_types": [ + { + "type_identifier": "t_function_$_t_address$_t_address$_t_address$_t_bytes32$", + "type_string": "function(address,address,address,bytes32)" + } + ], + "arguments": [ + { + "id": 3733, + "node_type": 24, + "kind": 24, + "src": { + "id": 3734, + "line": 860, + "column": 12, + "start": 30758, + "end": 30803, + "length": 46, + "parent_index": 3729 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ], + "arguments": [ + { + "id": 3737, + "node_type": 16, + "src": { + "id": 3738, + "line": 860, + "column": 20, + "start": 30766, + "end": 30772, + "length": 7, + "parent_index": 3733 + }, + "name": "factory", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3737, + "is_pure": false + }, + { + "id": 3739, + "node_type": 16, + "src": { + "id": 3740, + "line": 860, + "column": 29, + "start": 30775, + "end": 30780, + "length": 6, + "parent_index": 3733 + }, + "name": "tokenA", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3739, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 3741, + "node_type": 16, + "src": { + "id": 3742, + "line": 860, + "column": 37, + "start": 30783, + "end": 30788, + "length": 6, + "parent_index": 3733 + }, + "name": "tokenB", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3741, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + }, + { + "id": 3743, + "node_type": 16, + "src": { + "id": 3744, + "line": 860, + "column": 45, + "start": 30791, + "end": 30802, + "length": 12, + "parent_index": 3733 + }, + "name": "pairCodeHash", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "overloaded_declarations": [], + "referenced_declaration": 3743, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + } + ] + } + ], + "expression": { + "id": 3735, + "node_type": 16, + "src": { + "id": 3736, + "line": 860, + "column": 12, + "start": 30758, + "end": 30764, + "length": 7, + "parent_index": 3733 + }, + "name": "pairFor", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_address$_t_bytes32$", + "type_string": "function(address,address,address,bytes32)" + } + } + ], + "expression": { + "id": 3731, + "node_type": 16, + "src": { + "id": 3732, + "line": 859, + "column": 49, + "start": 30730, + "end": 30743, + "length": 14, + "parent_index": 3729 + }, + "name": "IUniswapV2Pair", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$_t_address$_t_address$_t_bytes32$", + "type_string": "function(function(address,address,address,bytes32))" + } + }, + "member_name": "getReserves", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_address$_t_address$_t_address$_t_bytes32$", + "type_string": "function(function(address,address,address,bytes32))" + } + }, + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + } + } + }, + { + "id": 3745, + "node_type": 81, + "src": { + "id": 3746, + "line": 862, + "column": 8, + "start": 30838, + "end": 30947, + "length": 110, + "parent_index": 3711 + }, + "expression": { + "id": 3747, + "node_type": 27, + "src": { + "id": 3748, + "line": 862, + "column": 8, + "start": 30838, + "end": 30946, + "length": 109, + "parent_index": 3711 + }, + "operator": 11, + "left_expression": { + "id": 3749, + "node_type": 60, + "src": { + "id": 3750, + "line": 862, + "column": 8, + "start": 30838, + "end": 30857, + "length": 20, + "parent_index": 3747 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 3751, + "node_type": 16, + "src": { + "id": 3752, + "line": 862, + "column": 9, + "start": 30839, + "end": 30846, + "length": 8, + "parent_index": 3749 + }, + "name": "reserveA", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3703, + "is_pure": false + }, + { + "id": 3753, + "node_type": 16, + "src": { + "id": 3754, + "line": 862, + "column": 19, + "start": 30849, + "end": 30856, + "length": 8, + "parent_index": 3749 + }, + "name": "reserveB", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3707, + "is_pure": false + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_uint256_$_t_uint256$", + "type_string": "tuple(uint256,uint256)" + } + }, + "right_expression": { + "id": 3756, + "node_type": 97, + "src": { + "id": 3757, + "line": 862, + "column": 31, + "start": 30861, + "end": 30946, + "length": 86, + "parent_index": 3747 + }, + "expressions": [ + { + "id": 3758, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3759, + "line": 862, + "column": 31, + "start": 30861, + "end": 30876, + "length": 16, + "parent_index": 3756 + }, + "operator": 11, + "left_expression": { + "id": 3760, + "node_type": 16, + "src": { + "id": 3761, + "line": 862, + "column": 31, + "start": 30861, + "end": 30866, + "length": 6, + "parent_index": 3758 + }, + "name": "tokenA", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3760, + "is_pure": false + }, + "right_expression": { + "id": 3762, + "node_type": 16, + "src": { + "id": 3763, + "line": 862, + "column": 41, + "start": 30871, + "end": 30876, + "length": 6, + "parent_index": 3758 + }, + "name": "token0", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 3516, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 3764, + "node_type": 60, + "src": { + "id": 3765, + "line": 863, + "column": 14, + "start": 30892, + "end": 30911, + "length": 20, + "parent_index": 3756 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 3766, + "node_type": 16, + "src": { + "id": 3767, + "line": 863, + "column": 15, + "start": 30893, + "end": 30900, + "length": 8, + "parent_index": 3764 + }, + "name": "reserve0", + "type_description": { + "type_identifier": "t_uint112", + "type_string": "uint112" + }, + "overloaded_declarations": [], + "referenced_declaration": 3022, + "is_pure": false + }, + { + "id": 3768, + "node_type": 16, + "src": { + "id": 3769, + "line": 863, + "column": 25, + "start": 30903, + "end": 30910, + "length": 8, + "parent_index": 3764 + }, + "name": "reserve1", + "type_description": { + "type_identifier": "t_uint112", + "type_string": "uint112" + }, + "overloaded_declarations": [], + "referenced_declaration": 3026, + "is_pure": false + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_uint112_$_t_uint112$", + "type_string": "tuple(uint112,uint112)" + } + }, + { + "id": 3770, + "node_type": 60, + "src": { + "id": 3771, + "line": 864, + "column": 14, + "start": 30927, + "end": 30946, + "length": 20, + "parent_index": 3756 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 3772, + "node_type": 16, + "src": { + "id": 3773, + "line": 864, + "column": 15, + "start": 30928, + "end": 30935, + "length": 8, + "parent_index": 3770 + }, + "name": "reserve1", + "type_description": { + "type_identifier": "t_uint112", + "type_string": "uint112" + }, + "overloaded_declarations": [], + "referenced_declaration": 3026, + "is_pure": false + }, + { + "id": 3774, + "node_type": 16, + "src": { + "id": 3775, + "line": 864, + "column": 25, + "start": 30938, + "end": 30945, + "length": 8, + "parent_index": 3770 + }, + "name": "reserve0", + "type_description": { + "type_identifier": "t_uint112", + "type_string": "uint112" + }, + "overloaded_declarations": [], + "referenced_declaration": 3022, + "is_pure": false + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_uint112_$_t_uint112$", + "type_string": "tuple(uint112,uint112)" + } + } + ], + "type_descriptions": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_tuple_$_t_uint112_$_t_uint112$", + "type_string": "tuple(uint112,uint112)" + }, + { + "type_identifier": "t_tuple_$_t_uint112_$_t_uint112$", + "type_string": "tuple(uint112,uint112)" + } + ], + "type_description": null + }, + "type_description": { + "type_identifier": "t_tuple_$_t_uint256_$_t_uint256$", + "type_string": "tuple(uint256,uint256)" + } + }, + "type_description": { + "type_identifier": "t_tuple_$_t_uint256_$_t_uint256$", + "type_string": "tuple(uint256,uint256)" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3683, + "node_type": 43, + "src": { + "id": 3684, + "line": 853, + "column": 8, + "start": 30463, + "end": 30555, + "length": 93, + "parent_index": 3681 + }, + "parameters": [ + { + "id": 3685, + "node_type": 44, + "src": { + "id": 3686, + "line": 853, + "column": 8, + "start": 30463, + "end": 30477, + "length": 15, + "parent_index": 3683 + }, + "scope": 3681, + "name": "factory", + "type_name": { + "id": 3687, + "node_type": 30, + "src": { + "id": 3688, + "line": 853, + "column": 8, + "start": 30463, + "end": 30469, + "length": 7, + "parent_index": 3685 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 3689, + "node_type": 44, + "src": { + "id": 3690, + "line": 854, + "column": 8, + "start": 30488, + "end": 30501, + "length": 14, + "parent_index": 3683 + }, + "scope": 3681, + "name": "tokenA", + "type_name": { + "id": 3691, + "node_type": 30, + "src": { + "id": 3692, + "line": 854, + "column": 8, + "start": 30488, + "end": 30494, + "length": 7, + "parent_index": 3689 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 3693, + "node_type": 44, + "src": { + "id": 3694, + "line": 855, + "column": 8, + "start": 30512, + "end": 30525, + "length": 14, + "parent_index": 3683 + }, + "scope": 3681, + "name": "tokenB", + "type_name": { + "id": 3695, + "node_type": 30, + "src": { + "id": 3696, + "line": 855, + "column": 8, + "start": 30512, + "end": 30518, + "length": 7, + "parent_index": 3693 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 3697, + "node_type": 44, + "src": { + "id": 3698, + "line": 856, + "column": 8, + "start": 30536, + "end": 30555, + "length": 20, + "parent_index": 3683 + }, + "scope": 3681, + "name": "pairCodeHash", + "type_name": { + "id": 3699, + "node_type": 30, + "src": { + "id": 3700, + "line": 856, + "column": 8, + "start": 30536, + "end": 30542, + "length": 7, + "parent_index": 3697 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "return_parameters": { + "id": 3701, + "node_type": 43, + "src": { + "id": 3702, + "line": 857, + "column": 29, + "start": 30586, + "end": 30619, + "length": 34, + "parent_index": 3681 + }, + "parameters": [ + { + "id": 3703, + "node_type": 44, + "src": { + "id": 3704, + "line": 857, + "column": 29, + "start": 30586, + "end": 30601, + "length": 16, + "parent_index": 3701 + }, + "scope": 3681, + "name": "reserveA", + "type_name": { + "id": 3705, + "node_type": 30, + "src": { + "id": 3706, + "line": 857, + "column": 29, + "start": 30586, + "end": 30592, + "length": 7, + "parent_index": 3703 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3707, + "node_type": 44, + "src": { + "id": 3708, + "line": 857, + "column": 47, + "start": 30604, + "end": 30619, + "length": 16, + "parent_index": 3701 + }, + "scope": 3681, + "name": "reserveB", + "type_name": { + "id": 3709, + "node_type": 30, + "src": { + "id": 3710, + "line": 857, + "column": 47, + "start": 30604, + "end": 30610, + "length": 7, + "parent_index": 3707 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 3493, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_address$_t_address$_t_bytes32$", + "type_string": "function(address,address,address,bytes32)" + } + }, + { + "id": 3777, + "name": "quote", + "node_type": 42, + "kind": 41, + "src": { + "id": 3778, + "line": 868, + "column": 4, + "start": 31064, + "end": 31456, + "length": 393, + "parent_index": 3493 + }, + "body": { + "id": 3799, + "node_type": 46, + "kind": 0, + "src": { + "id": 3800, + "line": 872, + "column": 46, + "start": 31202, + "end": 31456, + "length": 255, + "parent_index": 3777 + }, + "implemented": true, + "statements": [ + { + "id": 3801, + "node_type": 24, + "kind": 24, + "src": { + "id": 3802, + "line": 873, + "column": 8, + "start": 31212, + "end": 31272, + "length": 61, + "parent_index": 3799 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: INSUFFICIENT_AMOUNT\"" + } + ], + "arguments": [ + { + "id": 3805, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3806, + "line": 873, + "column": 16, + "start": 31220, + "end": 31230, + "length": 11, + "parent_index": 3801 + }, + "operator": 7, + "left_expression": { + "id": 3807, + "node_type": 16, + "src": { + "id": 3808, + "line": 873, + "column": 16, + "start": 31220, + "end": 31226, + "length": 7, + "parent_index": 3805 + }, + "name": "amountA", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3807, + "is_pure": false + }, + "right_expression": { + "id": 3809, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 3810, + "line": 873, + "column": 26, + "start": 31230, + "end": 31230, + "length": 1, + "parent_index": 3805 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 3811, + "node_type": 17, + "kind": 50, + "value": "UniswapV2Library: INSUFFICIENT_AMOUNT", + "hex_value": "556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54", + "src": { + "id": 3812, + "line": 873, + "column": 29, + "start": 31233, + "end": 31271, + "length": 39, + "parent_index": 3801 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: INSUFFICIENT_AMOUNT\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 3803, + "node_type": 16, + "src": { + "id": 3804, + "line": 873, + "column": 8, + "start": 31212, + "end": 31218, + "length": 7, + "parent_index": 3801 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 3813, + "node_type": 24, + "kind": 24, + "src": { + "id": 3814, + "line": 874, + "column": 8, + "start": 31283, + "end": 31397, + "length": 115, + "parent_index": 3799 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + } + ], + "arguments": [ + { + "id": 3818, + "node_type": 96, + "src": { + "id": 3819, + "line": 875, + "column": 12, + "start": 31304, + "end": 31331, + "length": 28, + "parent_index": 3813 + }, + "expressions": [ + { + "id": 3820, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3821, + "line": 875, + "column": 12, + "start": 31304, + "end": 31315, + "length": 12, + "parent_index": 3818 + }, + "operator": 7, + "left_expression": { + "id": 3822, + "node_type": 16, + "src": { + "id": 3823, + "line": 875, + "column": 12, + "start": 31304, + "end": 31311, + "length": 8, + "parent_index": 3820 + }, + "name": "reserveA", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3822, + "is_pure": false + }, + "right_expression": { + "id": 3824, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 3825, + "line": 875, + "column": 23, + "start": 31315, + "end": 31315, + "length": 1, + "parent_index": 3820 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 3826, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3827, + "line": 875, + "column": 28, + "start": 31320, + "end": 31331, + "length": 12, + "parent_index": 3818 + }, + "operator": 7, + "left_expression": { + "id": 3828, + "node_type": 16, + "src": { + "id": 3829, + "line": 875, + "column": 28, + "start": 31320, + "end": 31327, + "length": 8, + "parent_index": 3826 + }, + "name": "reserveB", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3828, + "is_pure": false + }, + "right_expression": { + "id": 3830, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 3831, + "line": 875, + "column": 39, + "start": 31331, + "end": 31331, + "length": 1, + "parent_index": 3826 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + } + ], + "type_descriptions": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + { + "id": 3832, + "node_type": 17, + "kind": 50, + "value": "UniswapV2Library: INSUFFICIENT_LIQUIDITY", + "hex_value": "556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459", + "src": { + "id": 3833, + "line": 876, + "column": 12, + "start": 31346, + "end": 31387, + "length": 42, + "parent_index": 3813 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 3815, + "node_type": 16, + "src": { + "id": 3816, + "line": 874, + "column": 8, + "start": 31283, + "end": 31289, + "length": 7, + "parent_index": 3813 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 3834, + "node_type": 81, + "src": { + "id": 3835, + "line": 878, + "column": 8, + "start": 31408, + "end": 31450, + "length": 43, + "parent_index": 3799 + }, + "expression": { + "id": 3836, + "node_type": 27, + "src": { + "id": 3837, + "line": 878, + "column": 8, + "start": 31408, + "end": 31449, + "length": 42, + "parent_index": 3799 + }, + "operator": 11, + "left_expression": { + "id": 3838, + "node_type": 16, + "src": { + "id": 3839, + "line": 878, + "column": 8, + "start": 31408, + "end": 31414, + "length": 7, + "parent_index": 3836 + }, + "name": "amountB", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3795, + "is_pure": false + }, + "right_expression": { + "id": 3840, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3841, + "line": 878, + "column": 18, + "start": 31418, + "end": 31449, + "length": 32, + "parent_index": 3836 + }, + "operator": 4, + "left_expression": { + "id": 3842, + "node_type": 24, + "kind": 24, + "src": { + "id": 3843, + "line": 878, + "column": 18, + "start": 31418, + "end": 31438, + "length": 21, + "parent_index": 3840 + }, + "argument_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 3848, + "node_type": 16, + "src": { + "id": 3849, + "line": 878, + "column": 30, + "start": 31430, + "end": 31437, + "length": 8, + "parent_index": 3842 + }, + "name": "reserveB", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3848, + "is_pure": false + } + ], + "expression": { + "id": 3844, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 3845, + "line": 878, + "column": 18, + "start": 31418, + "end": 31428, + "length": 11, + "parent_index": 3842 + }, + "expression": { + "id": 3846, + "node_type": 16, + "src": { + "id": 3847, + "line": 878, + "column": 18, + "start": 31418, + "end": 31424, + "length": 7, + "parent_index": 3844 + }, + "name": "amountA", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3846, + "is_pure": false + }, + "member_name": "mul", + "argument_types": [], + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + }, + "right_expression": { + "id": 3850, + "node_type": 16, + "src": { + "id": 3851, + "line": 878, + "column": 42, + "start": 31442, + "end": 31449, + "length": 8, + "parent_index": 3840 + }, + "name": "reserveA", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3850, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3779, + "node_type": 43, + "src": { + "id": 3780, + "line": 869, + "column": 8, + "start": 31088, + "end": 31154, + "length": 67, + "parent_index": 3777 + }, + "parameters": [ + { + "id": 3781, + "node_type": 44, + "src": { + "id": 3782, + "line": 869, + "column": 8, + "start": 31088, + "end": 31102, + "length": 15, + "parent_index": 3779 + }, + "scope": 3777, + "name": "amountA", + "type_name": { + "id": 3783, + "node_type": 30, + "src": { + "id": 3784, + "line": 869, + "column": 8, + "start": 31088, + "end": 31094, + "length": 7, + "parent_index": 3781 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3785, + "node_type": 44, + "src": { + "id": 3786, + "line": 870, + "column": 8, + "start": 31113, + "end": 31128, + "length": 16, + "parent_index": 3779 + }, + "scope": 3777, + "name": "reserveA", + "type_name": { + "id": 3787, + "node_type": 30, + "src": { + "id": 3788, + "line": 870, + "column": 8, + "start": 31113, + "end": 31119, + "length": 7, + "parent_index": 3785 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3789, + "node_type": 44, + "src": { + "id": 3790, + "line": 871, + "column": 8, + "start": 31139, + "end": 31154, + "length": 16, + "parent_index": 3779 + }, + "scope": 3777, + "name": "reserveB", + "type_name": { + "id": 3791, + "node_type": 30, + "src": { + "id": 3792, + "line": 871, + "column": 8, + "start": 31139, + "end": 31145, + "length": 7, + "parent_index": 3789 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 3793, + "node_type": 43, + "src": { + "id": 3794, + "line": 872, + "column": 29, + "start": 31185, + "end": 31199, + "length": 15, + "parent_index": 3777 + }, + "parameters": [ + { + "id": 3795, + "node_type": 44, + "src": { + "id": 3796, + "line": 872, + "column": 29, + "start": 31185, + "end": 31199, + "length": 15, + "parent_index": 3793 + }, + "scope": 3777, + "name": "amountB", + "type_name": { + "id": 3797, + "node_type": 30, + "src": { + "id": 3798, + "line": 872, + "column": 29, + "start": 31185, + "end": 31191, + "length": 7, + "parent_index": 3795 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 3493, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256,uint256)" + } + }, + { + "id": 3853, + "name": "getAmountOut", + "node_type": 42, + "kind": 41, + "src": { + "id": 3854, + "line": 882, + "column": 4, + "start": 31576, + "end": 32170, + "length": 595, + "parent_index": 3493 + }, + "body": { + "id": 3875, + "node_type": 46, + "kind": 0, + "src": { + "id": 3876, + "line": 886, + "column": 48, + "start": 31727, + "end": 32170, + "length": 444, + "parent_index": 3853 + }, + "implemented": true, + "statements": [ + { + "id": 3877, + "node_type": 24, + "kind": 24, + "src": { + "id": 3878, + "line": 887, + "column": 8, + "start": 31737, + "end": 31804, + "length": 68, + "parent_index": 3875 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT\"" + } + ], + "arguments": [ + { + "id": 3881, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3882, + "line": 887, + "column": 16, + "start": 31745, + "end": 31756, + "length": 12, + "parent_index": 3877 + }, + "operator": 7, + "left_expression": { + "id": 3883, + "node_type": 16, + "src": { + "id": 3884, + "line": 887, + "column": 16, + "start": 31745, + "end": 31752, + "length": 8, + "parent_index": 3881 + }, + "name": "amountIn", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3883, + "is_pure": false + }, + "right_expression": { + "id": 3885, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 3886, + "line": 887, + "column": 27, + "start": 31756, + "end": 31756, + "length": 1, + "parent_index": 3881 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 3887, + "node_type": 17, + "kind": 50, + "value": "UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT", + "hex_value": "556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54", + "src": { + "id": 3888, + "line": 887, + "column": 30, + "start": 31759, + "end": 31803, + "length": 45, + "parent_index": 3877 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 3879, + "node_type": 16, + "src": { + "id": 3880, + "line": 887, + "column": 8, + "start": 31737, + "end": 31743, + "length": 7, + "parent_index": 3877 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 3889, + "node_type": 24, + "kind": 24, + "src": { + "id": 3890, + "line": 888, + "column": 8, + "start": 31815, + "end": 31932, + "length": 118, + "parent_index": 3875 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + } + ], + "arguments": [ + { + "id": 3894, + "node_type": 96, + "src": { + "id": 3895, + "line": 889, + "column": 12, + "start": 31836, + "end": 31866, + "length": 31, + "parent_index": 3889 + }, + "expressions": [ + { + "id": 3896, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3897, + "line": 889, + "column": 12, + "start": 31836, + "end": 31848, + "length": 13, + "parent_index": 3894 + }, + "operator": 7, + "left_expression": { + "id": 3898, + "node_type": 16, + "src": { + "id": 3899, + "line": 889, + "column": 12, + "start": 31836, + "end": 31844, + "length": 9, + "parent_index": 3896 + }, + "name": "reserveIn", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3898, + "is_pure": false + }, + "right_expression": { + "id": 3900, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 3901, + "line": 889, + "column": 24, + "start": 31848, + "end": 31848, + "length": 1, + "parent_index": 3896 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 3902, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3903, + "line": 889, + "column": 29, + "start": 31853, + "end": 31866, + "length": 14, + "parent_index": 3894 + }, + "operator": 7, + "left_expression": { + "id": 3904, + "node_type": 16, + "src": { + "id": 3905, + "line": 889, + "column": 29, + "start": 31853, + "end": 31862, + "length": 10, + "parent_index": 3902 + }, + "name": "reserveOut", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3904, + "is_pure": false + }, + "right_expression": { + "id": 3906, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 3907, + "line": 889, + "column": 42, + "start": 31866, + "end": 31866, + "length": 1, + "parent_index": 3902 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + } + ], + "type_descriptions": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + { + "id": 3908, + "node_type": 17, + "kind": 50, + "value": "UniswapV2Library: INSUFFICIENT_LIQUIDITY", + "hex_value": "556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459", + "src": { + "id": 3909, + "line": 890, + "column": 12, + "start": 31881, + "end": 31922, + "length": 42, + "parent_index": 3889 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 3891, + "node_type": 16, + "src": { + "id": 3892, + "line": 888, + "column": 8, + "start": 31815, + "end": 31821, + "length": 7, + "parent_index": 3889 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 3910, + "node_type": 44, + "src": { + "id": 3911, + "line": 892, + "column": 8, + "start": 31943, + "end": 31986, + "length": 44, + "parent_index": 3875 + }, + "assignments": [ + 3912 + ], + "declarations": [ + { + "is_constant": false, + "id": 3912, + "state_mutability": 1, + "name": "amountInWithFee", + "node_type": 44, + "scope": 3875, + "src": { + "id": 3913, + "line": 892, + "column": 8, + "start": 31943, + "end": 31965, + "length": 23, + "parent_index": 3910 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 3914, + "node_type": 30, + "src": { + "id": 3915, + "line": 892, + "column": 8, + "start": 31943, + "end": 31949, + "length": 7, + "parent_index": 3912 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 3916, + "node_type": 24, + "kind": 24, + "src": { + "id": 3917, + "line": 892, + "column": 34, + "start": 31969, + "end": 31985, + "length": 17, + "parent_index": 3910 + }, + "argument_types": [ + { + "type_identifier": "t_rational_997_by_1", + "type_string": "int_const 997" + } + ], + "arguments": [ + { + "id": 3922, + "node_type": 17, + "kind": 49, + "value": "997", + "hex_value": "393937", + "src": { + "id": 3923, + "line": 892, + "column": 47, + "start": 31982, + "end": 31984, + "length": 3, + "parent_index": 3916 + }, + "type_description": { + "type_identifier": "t_rational_997_by_1", + "type_string": "int_const 997" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 3918, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 3919, + "line": 892, + "column": 34, + "start": 31969, + "end": 31980, + "length": 12, + "parent_index": 3916 + }, + "expression": { + "id": 3920, + "node_type": 16, + "src": { + "id": 3921, + "line": 892, + "column": 34, + "start": 31969, + "end": 31976, + "length": 8, + "parent_index": 3918 + }, + "name": "amountIn", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3920, + "is_pure": false + }, + "member_name": "mul", + "argument_types": [], + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_997_by_1$", + "type_string": "function(int_const 997)" + } + } + }, + { + "id": 3924, + "node_type": 44, + "src": { + "id": 3925, + "line": 893, + "column": 8, + "start": 31996, + "end": 32047, + "length": 52, + "parent_index": 3875 + }, + "assignments": [ + 3926 + ], + "declarations": [ + { + "is_constant": false, + "id": 3926, + "state_mutability": 1, + "name": "numerator", + "node_type": 44, + "scope": 3875, + "src": { + "id": 3927, + "line": 893, + "column": 8, + "start": 31996, + "end": 32012, + "length": 17, + "parent_index": 3924 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 3928, + "node_type": 30, + "src": { + "id": 3929, + "line": 893, + "column": 8, + "start": 31996, + "end": 32002, + "length": 7, + "parent_index": 3926 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 3930, + "node_type": 24, + "kind": 24, + "src": { + "id": 3931, + "line": 893, + "column": 28, + "start": 32016, + "end": 32046, + "length": 31, + "parent_index": 3924 + }, + "argument_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 3936, + "node_type": 16, + "src": { + "id": 3937, + "line": 893, + "column": 48, + "start": 32036, + "end": 32045, + "length": 10, + "parent_index": 3930 + }, + "name": "reserveOut", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3936, + "is_pure": false + } + ], + "expression": { + "id": 3932, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 3933, + "line": 893, + "column": 28, + "start": 32016, + "end": 32034, + "length": 19, + "parent_index": 3930 + }, + "expression": { + "id": 3934, + "node_type": 16, + "src": { + "id": 3935, + "line": 893, + "column": 28, + "start": 32016, + "end": 32030, + "length": 15, + "parent_index": 3932 + }, + "name": "amountInWithFee", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3910, + "is_pure": false + }, + "member_name": "mul", + "argument_types": [], + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + } + }, + { + "id": 3938, + "node_type": 44, + "src": { + "id": 3939, + "line": 894, + "column": 8, + "start": 32057, + "end": 32119, + "length": 63, + "parent_index": 3875 + }, + "assignments": [ + 3940 + ], + "declarations": [ + { + "is_constant": false, + "id": 3940, + "state_mutability": 1, + "name": "denominator", + "node_type": 44, + "scope": 3875, + "src": { + "id": 3941, + "line": 894, + "column": 8, + "start": 32057, + "end": 32075, + "length": 19, + "parent_index": 3938 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 3942, + "node_type": 30, + "src": { + "id": 3943, + "line": 894, + "column": 8, + "start": 32057, + "end": 32063, + "length": 7, + "parent_index": 3940 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 3944, + "node_type": 24, + "kind": 24, + "src": { + "id": 3945, + "line": 894, + "column": 30, + "start": 32079, + "end": 32118, + "length": 40, + "parent_index": 3938 + }, + "argument_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 3956, + "node_type": 16, + "src": { + "id": 3957, + "line": 894, + "column": 54, + "start": 32103, + "end": 32117, + "length": 15, + "parent_index": 3944 + }, + "name": "amountInWithFee", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3910, + "is_pure": false + } + ], + "expression": { + "id": 3946, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 3947, + "line": 894, + "column": 30, + "start": 32079, + "end": 32101, + "length": 23, + "parent_index": 3944 + }, + "expression": { + "id": 3948, + "node_type": 24, + "kind": 24, + "src": { + "id": 3949, + "line": 894, + "column": 30, + "start": 32079, + "end": 32097, + "length": 19, + "parent_index": 3946 + }, + "argument_types": [ + { + "type_identifier": "t_rational_1000_by_1", + "type_string": "int_const 1000" + } + ], + "arguments": [ + { + "id": 3954, + "node_type": 17, + "kind": 49, + "value": "1000", + "hex_value": "31303030", + "src": { + "id": 3955, + "line": 894, + "column": 44, + "start": 32093, + "end": 32096, + "length": 4, + "parent_index": 3948 + }, + "type_description": { + "type_identifier": "t_rational_1000_by_1", + "type_string": "int_const 1000" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 3950, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 3951, + "line": 894, + "column": 30, + "start": 32079, + "end": 32091, + "length": 13, + "parent_index": 3948 + }, + "expression": { + "id": 3952, + "node_type": 16, + "src": { + "id": 3953, + "line": 894, + "column": 30, + "start": 32079, + "end": 32087, + "length": 9, + "parent_index": 3950 + }, + "name": "reserveIn", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3952, + "is_pure": false + }, + "member_name": "mul", + "argument_types": [], + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_1000_by_1$", + "type_string": "function(int_const 1000)" + } + }, + "member_name": "add", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_rational_1000_by_1$", + "type_string": "function(int_const 1000)" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + } + }, + { + "id": 3958, + "node_type": 81, + "src": { + "id": 3959, + "line": 895, + "column": 8, + "start": 32129, + "end": 32164, + "length": 36, + "parent_index": 3875 + }, + "expression": { + "id": 3960, + "node_type": 27, + "src": { + "id": 3961, + "line": 895, + "column": 8, + "start": 32129, + "end": 32163, + "length": 35, + "parent_index": 3875 + }, + "operator": 11, + "left_expression": { + "id": 3962, + "node_type": 16, + "src": { + "id": 3963, + "line": 895, + "column": 8, + "start": 32129, + "end": 32137, + "length": 9, + "parent_index": 3960 + }, + "name": "amountOut", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 913, + "is_pure": false + }, + "right_expression": { + "id": 3964, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 3965, + "line": 895, + "column": 20, + "start": 32141, + "end": 32163, + "length": 23, + "parent_index": 3960 + }, + "operator": 4, + "left_expression": { + "id": 3966, + "node_type": 16, + "src": { + "id": 3967, + "line": 895, + "column": 20, + "start": 32141, + "end": 32149, + "length": 9, + "parent_index": 3964 + }, + "name": "numerator", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3924, + "is_pure": false + }, + "right_expression": { + "id": 3968, + "node_type": 16, + "src": { + "id": 3969, + "line": 895, + "column": 32, + "start": 32153, + "end": 32163, + "length": 11, + "parent_index": 3964 + }, + "name": "denominator", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 3938, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3855, + "node_type": 43, + "src": { + "id": 3856, + "line": 883, + "column": 8, + "start": 31607, + "end": 31677, + "length": 71, + "parent_index": 3853 + }, + "parameters": [ + { + "id": 3857, + "node_type": 44, + "src": { + "id": 3858, + "line": 883, + "column": 8, + "start": 31607, + "end": 31622, + "length": 16, + "parent_index": 3855 + }, + "scope": 3853, + "name": "amountIn", + "type_name": { + "id": 3859, + "node_type": 30, + "src": { + "id": 3860, + "line": 883, + "column": 8, + "start": 31607, + "end": 31613, + "length": 7, + "parent_index": 3857 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3861, + "node_type": 44, + "src": { + "id": 3862, + "line": 884, + "column": 8, + "start": 31633, + "end": 31649, + "length": 17, + "parent_index": 3855 + }, + "scope": 3853, + "name": "reserveIn", + "type_name": { + "id": 3863, + "node_type": 30, + "src": { + "id": 3864, + "line": 884, + "column": 8, + "start": 31633, + "end": 31639, + "length": 7, + "parent_index": 3861 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3865, + "node_type": 44, + "src": { + "id": 3866, + "line": 885, + "column": 8, + "start": 31660, + "end": 31677, + "length": 18, + "parent_index": 3855 + }, + "scope": 3853, + "name": "reserveOut", + "type_name": { + "id": 3867, + "node_type": 30, + "src": { + "id": 3868, + "line": 885, + "column": 8, + "start": 31660, + "end": 31666, + "length": 7, + "parent_index": 3865 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 3869, + "node_type": 43, + "src": { + "id": 3870, + "line": 886, + "column": 29, + "start": 31708, + "end": 31724, + "length": 17, + "parent_index": 3853 + }, + "parameters": [ + { + "id": 3871, + "node_type": 44, + "src": { + "id": 3872, + "line": 886, + "column": 29, + "start": 31708, + "end": 31724, + "length": 17, + "parent_index": 3869 + }, + "scope": 3853, + "name": "amountOut", + "type_name": { + "id": 3873, + "node_type": 30, + "src": { + "id": 3874, + "line": 886, + "column": 29, + "start": 31708, + "end": 31714, + "length": 7, + "parent_index": 3871 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 3493, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256,uint256)" + } + }, + { + "id": 3971, + "name": "getAmountIn", + "node_type": 42, + "kind": 41, + "src": { + "id": 3972, + "line": 899, + "column": 4, + "start": 32289, + "end": 32836, + "length": 548, + "parent_index": 3493 + }, + "body": { + "id": 3993, + "node_type": 46, + "kind": 0, + "src": { + "id": 3994, + "line": 903, + "column": 47, + "start": 32439, + "end": 32836, + "length": 398, + "parent_index": 3971 + }, + "implemented": true, + "statements": [ + { + "id": 3995, + "node_type": 24, + "kind": 24, + "src": { + "id": 3996, + "line": 904, + "column": 8, + "start": 32449, + "end": 32518, + "length": 70, + "parent_index": 3993 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT\"" + } + ], + "arguments": [ + { + "id": 3999, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4000, + "line": 904, + "column": 16, + "start": 32457, + "end": 32469, + "length": 13, + "parent_index": 3995 + }, + "operator": 7, + "left_expression": { + "id": 4001, + "node_type": 16, + "src": { + "id": 4002, + "line": 904, + "column": 16, + "start": 32457, + "end": 32465, + "length": 9, + "parent_index": 3999 + }, + "name": "amountOut", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4001, + "is_pure": false + }, + "right_expression": { + "id": 4003, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 4004, + "line": 904, + "column": 28, + "start": 32469, + "end": 32469, + "length": 1, + "parent_index": 3999 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 4005, + "node_type": 17, + "kind": 50, + "value": "UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT", + "hex_value": "556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54", + "src": { + "id": 4006, + "line": 904, + "column": 31, + "start": 32472, + "end": 32517, + "length": 46, + "parent_index": 3995 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 3997, + "node_type": 16, + "src": { + "id": 3998, + "line": 904, + "column": 8, + "start": 32449, + "end": 32455, + "length": 7, + "parent_index": 3995 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 4007, + "node_type": 24, + "kind": 24, + "src": { + "id": 4008, + "line": 905, + "column": 8, + "start": 32529, + "end": 32646, + "length": 118, + "parent_index": 3993 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + } + ], + "arguments": [ + { + "id": 4012, + "node_type": 96, + "src": { + "id": 4013, + "line": 906, + "column": 12, + "start": 32550, + "end": 32580, + "length": 31, + "parent_index": 4007 + }, + "expressions": [ + { + "id": 4014, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4015, + "line": 906, + "column": 12, + "start": 32550, + "end": 32562, + "length": 13, + "parent_index": 4012 + }, + "operator": 7, + "left_expression": { + "id": 4016, + "node_type": 16, + "src": { + "id": 4017, + "line": 906, + "column": 12, + "start": 32550, + "end": 32558, + "length": 9, + "parent_index": 4014 + }, + "name": "reserveIn", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4016, + "is_pure": false + }, + "right_expression": { + "id": 4018, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 4019, + "line": 906, + "column": 24, + "start": 32562, + "end": 32562, + "length": 1, + "parent_index": 4014 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 4020, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4021, + "line": 906, + "column": 29, + "start": 32567, + "end": 32580, + "length": 14, + "parent_index": 4012 + }, + "operator": 7, + "left_expression": { + "id": 4022, + "node_type": 16, + "src": { + "id": 4023, + "line": 906, + "column": 29, + "start": 32567, + "end": 32576, + "length": 10, + "parent_index": 4020 + }, + "name": "reserveOut", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4022, + "is_pure": false + }, + "right_expression": { + "id": 4024, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 4025, + "line": 906, + "column": 42, + "start": 32580, + "end": 32580, + "length": 1, + "parent_index": 4020 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + } + ], + "type_descriptions": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + }, + { + "id": 4026, + "node_type": 17, + "kind": 50, + "value": "UniswapV2Library: INSUFFICIENT_LIQUIDITY", + "hex_value": "556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459", + "src": { + "id": 4027, + "line": 907, + "column": 12, + "start": 32595, + "end": 32636, + "length": 42, + "parent_index": 4007 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: INSUFFICIENT_LIQUIDITY\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 4009, + "node_type": 16, + "src": { + "id": 4010, + "line": 905, + "column": 8, + "start": 32529, + "end": 32535, + "length": 7, + "parent_index": 4007 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 4028, + "node_type": 44, + "src": { + "id": 4029, + "line": 909, + "column": 8, + "start": 32657, + "end": 32711, + "length": 55, + "parent_index": 3993 + }, + "assignments": [ + 4030 + ], + "declarations": [ + { + "is_constant": false, + "id": 4030, + "state_mutability": 1, + "name": "numerator", + "node_type": 44, + "scope": 3993, + "src": { + "id": 4031, + "line": 909, + "column": 8, + "start": 32657, + "end": 32673, + "length": 17, + "parent_index": 4028 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 4032, + "node_type": 30, + "src": { + "id": 4033, + "line": 909, + "column": 8, + "start": 32657, + "end": 32663, + "length": 7, + "parent_index": 4030 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 4034, + "node_type": 24, + "kind": 24, + "src": { + "id": 4035, + "line": 909, + "column": 28, + "start": 32677, + "end": 32710, + "length": 34, + "parent_index": 4028 + }, + "argument_types": [ + { + "type_identifier": "t_rational_1000_by_1", + "type_string": "int_const 1000" + } + ], + "arguments": [ + { + "id": 4046, + "node_type": 17, + "kind": 49, + "value": "1000", + "hex_value": "31303030", + "src": { + "id": 4047, + "line": 909, + "column": 57, + "start": 32706, + "end": 32709, + "length": 4, + "parent_index": 4034 + }, + "type_description": { + "type_identifier": "t_rational_1000_by_1", + "type_string": "int_const 1000" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 4036, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4037, + "line": 909, + "column": 28, + "start": 32677, + "end": 32704, + "length": 28, + "parent_index": 4034 + }, + "expression": { + "id": 4038, + "node_type": 24, + "kind": 24, + "src": { + "id": 4039, + "line": 909, + "column": 28, + "start": 32677, + "end": 32700, + "length": 24, + "parent_index": 4036 + }, + "argument_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 4044, + "node_type": 16, + "src": { + "id": 4045, + "line": 909, + "column": 42, + "start": 32691, + "end": 32699, + "length": 9, + "parent_index": 4038 + }, + "name": "amountOut", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4044, + "is_pure": false + } + ], + "expression": { + "id": 4040, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4041, + "line": 909, + "column": 28, + "start": 32677, + "end": 32689, + "length": 13, + "parent_index": 4038 + }, + "expression": { + "id": 4042, + "node_type": 16, + "src": { + "id": 4043, + "line": 909, + "column": 28, + "start": 32677, + "end": 32685, + "length": 9, + "parent_index": 4040 + }, + "name": "reserveIn", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4042, + "is_pure": false + }, + "member_name": "mul", + "argument_types": [], + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + }, + "member_name": "mul", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_1000_by_1$", + "type_string": "function(int_const 1000)" + } + } + }, + { + "id": 4048, + "node_type": 44, + "src": { + "id": 4049, + "line": 910, + "column": 8, + "start": 32721, + "end": 32777, + "length": 57, + "parent_index": 3993 + }, + "assignments": [ + 4050 + ], + "declarations": [ + { + "is_constant": false, + "id": 4050, + "state_mutability": 1, + "name": "denominator", + "node_type": 44, + "scope": 3993, + "src": { + "id": 4051, + "line": 910, + "column": 8, + "start": 32721, + "end": 32739, + "length": 19, + "parent_index": 4048 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 4052, + "node_type": 30, + "src": { + "id": 4053, + "line": 910, + "column": 8, + "start": 32721, + "end": 32727, + "length": 7, + "parent_index": 4050 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 4054, + "node_type": 24, + "kind": 24, + "src": { + "id": 4055, + "line": 910, + "column": 30, + "start": 32743, + "end": 32776, + "length": 34, + "parent_index": 4048 + }, + "argument_types": [ + { + "type_identifier": "t_rational_997_by_1", + "type_string": "int_const 997" + } + ], + "arguments": [ + { + "id": 4066, + "node_type": 17, + "kind": 49, + "value": "997", + "hex_value": "393937", + "src": { + "id": 4067, + "line": 910, + "column": 60, + "start": 32773, + "end": 32775, + "length": 3, + "parent_index": 4054 + }, + "type_description": { + "type_identifier": "t_rational_997_by_1", + "type_string": "int_const 997" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 4056, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4057, + "line": 910, + "column": 30, + "start": 32743, + "end": 32771, + "length": 29, + "parent_index": 4054 + }, + "expression": { + "id": 4058, + "node_type": 24, + "kind": 24, + "src": { + "id": 4059, + "line": 910, + "column": 30, + "start": 32743, + "end": 32767, + "length": 25, + "parent_index": 4056 + }, + "argument_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "arguments": [ + { + "id": 4064, + "node_type": 16, + "src": { + "id": 4065, + "line": 910, + "column": 45, + "start": 32758, + "end": 32766, + "length": 9, + "parent_index": 4058 + }, + "name": "amountOut", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4064, + "is_pure": false + } + ], + "expression": { + "id": 4060, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4061, + "line": 910, + "column": 30, + "start": 32743, + "end": 32756, + "length": 14, + "parent_index": 4058 + }, + "expression": { + "id": 4062, + "node_type": 16, + "src": { + "id": 4063, + "line": 910, + "column": 30, + "start": 32743, + "end": 32752, + "length": 10, + "parent_index": 4060 + }, + "name": "reserveOut", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4062, + "is_pure": false + }, + "member_name": "sub", + "argument_types": [], + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + }, + "member_name": "mul", + "argument_types": [], + "type_description": { + "type_identifier": "t_function_$_t_uint256$", + "type_string": "function(uint256)" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_997_by_1$", + "type_string": "function(int_const 997)" + } + } + }, + { + "id": 4068, + "node_type": 81, + "src": { + "id": 4069, + "line": 911, + "column": 8, + "start": 32787, + "end": 32830, + "length": 44, + "parent_index": 3993 + }, + "expression": { + "id": 4070, + "node_type": 27, + "src": { + "id": 4071, + "line": 911, + "column": 8, + "start": 32787, + "end": 32829, + "length": 43, + "parent_index": 3993 + }, + "operator": 11, + "left_expression": { + "id": 4072, + "node_type": 16, + "src": { + "id": 4073, + "line": 911, + "column": 8, + "start": 32787, + "end": 32794, + "length": 8, + "parent_index": 4070 + }, + "name": "amountIn", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 1835, + "is_pure": false + }, + "right_expression": { + "id": 4074, + "node_type": 24, + "kind": 24, + "src": { + "id": 4075, + "line": 911, + "column": 19, + "start": 32798, + "end": 32829, + "length": 32, + "parent_index": 4070 + }, + "argument_types": [ + { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + } + ], + "arguments": [ + { + "id": 4086, + "node_type": 17, + "kind": 49, + "value": "1", + "hex_value": "31", + "src": { + "id": 4087, + "line": 911, + "column": 49, + "start": 32828, + "end": 32828, + "length": 1, + "parent_index": 4074 + }, + "type_description": { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + } + ], + "expression": { + "id": 4076, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4077, + "line": 911, + "column": 19, + "start": 32798, + "end": 32826, + "length": 29, + "parent_index": 4074 + }, + "expression": { + "id": 4078, + "node_type": 60, + "src": { + "id": 4079, + "line": 911, + "column": 19, + "start": 32798, + "end": 32822, + "length": 25, + "parent_index": 4076 + }, + "is_constant": false, + "is_pure": false, + "components": [ + { + "id": 4080, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4081, + "line": 911, + "column": 20, + "start": 32799, + "end": 32821, + "length": 23, + "parent_index": 4078 + }, + "operator": 4, + "left_expression": { + "id": 4082, + "node_type": 16, + "src": { + "id": 4083, + "line": 911, + "column": 20, + "start": 32799, + "end": 32807, + "length": 9, + "parent_index": 4080 + }, + "name": "numerator", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4028, + "is_pure": false + }, + "right_expression": { + "id": 4084, + "node_type": 16, + "src": { + "id": 4085, + "line": 911, + "column": 32, + "start": 32811, + "end": 32821, + "length": 11, + "parent_index": 4080 + }, + "name": "denominator", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4048, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + ], + "type_description": { + "type_identifier": "t_tuple_$_t_uint256$", + "type_string": "tuple(uint256)" + } + }, + "member_name": "add", + "argument_types": [], + "type_description": { + "type_identifier": "t_tuple_$_t_uint256$", + "type_string": "tuple(uint256)" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_rational_1_by_1$", + "type_string": "function(int_const 1)" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 6, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 3973, + "node_type": 43, + "src": { + "id": 3974, + "line": 900, + "column": 8, + "start": 32319, + "end": 32390, + "length": 72, + "parent_index": 3971 + }, + "parameters": [ + { + "id": 3975, + "node_type": 44, + "src": { + "id": 3976, + "line": 900, + "column": 8, + "start": 32319, + "end": 32335, + "length": 17, + "parent_index": 3973 + }, + "scope": 3971, + "name": "amountOut", + "type_name": { + "id": 3977, + "node_type": 30, + "src": { + "id": 3978, + "line": 900, + "column": 8, + "start": 32319, + "end": 32325, + "length": 7, + "parent_index": 3975 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3979, + "node_type": 44, + "src": { + "id": 3980, + "line": 901, + "column": 8, + "start": 32346, + "end": 32362, + "length": 17, + "parent_index": 3973 + }, + "scope": 3971, + "name": "reserveIn", + "type_name": { + "id": 3981, + "node_type": 30, + "src": { + "id": 3982, + "line": 901, + "column": 8, + "start": 32346, + "end": 32352, + "length": 7, + "parent_index": 3979 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 3983, + "node_type": 44, + "src": { + "id": 3984, + "line": 902, + "column": 8, + "start": 32373, + "end": 32390, + "length": 18, + "parent_index": 3973 + }, + "scope": 3971, + "name": "reserveOut", + "type_name": { + "id": 3985, + "node_type": 30, + "src": { + "id": 3986, + "line": 902, + "column": 8, + "start": 32373, + "end": 32379, + "length": 7, + "parent_index": 3983 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "return_parameters": { + "id": 3987, + "node_type": 43, + "src": { + "id": 3988, + "line": 903, + "column": 29, + "start": 32421, + "end": 32436, + "length": 16, + "parent_index": 3971 + }, + "parameters": [ + { + "id": 3989, + "node_type": 44, + "src": { + "id": 3990, + "line": 903, + "column": 29, + "start": 32421, + "end": 32436, + "length": 16, + "parent_index": 3987 + }, + "scope": 3971, + "name": "amountIn", + "type_name": { + "id": 3991, + "node_type": 30, + "src": { + "id": 3992, + "line": 903, + "column": 29, + "start": 32421, + "end": 32427, + "length": 7, + "parent_index": 3989 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 3493, + "type_description": { + "type_identifier": "t_function_$_t_uint256$_t_uint256$_t_uint256$", + "type_string": "function(uint256,uint256,uint256)" + } + }, + { + "id": 4089, + "name": "getAmountsOut", + "node_type": 42, + "kind": 41, + "src": { + "id": 4090, + "line": 915, + "column": 4, + "start": 32916, + "end": 33588, + "length": 673, + "parent_index": 3493 + }, + "body": { + "id": 4117, + "node_type": 46, + "kind": 0, + "src": { + "id": 4118, + "line": 920, + "column": 55, + "start": 33106, + "end": 33588, + "length": 483, + "parent_index": 4089 + }, + "implemented": true, + "statements": [ + { + "id": 4119, + "node_type": 24, + "kind": 24, + "src": { + "id": 4120, + "line": 921, + "column": 8, + "start": 33116, + "end": 33174, + "length": 59, + "parent_index": 4117 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: INVALID_PATH\"" + } + ], + "arguments": [ + { + "id": 4123, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4124, + "line": 921, + "column": 16, + "start": 33124, + "end": 33139, + "length": 16, + "parent_index": 4119 + }, + "operator": 8, + "left_expression": { + "id": 4125, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4126, + "line": 921, + "column": 16, + "start": 33124, + "end": 33134, + "length": 11, + "parent_index": 4123 + }, + "expression": { + "id": 4127, + "node_type": 16, + "src": { + "id": 4128, + "line": 921, + "column": 16, + "start": 33124, + "end": 33127, + "length": 4, + "parent_index": 4125 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4127, + "is_pure": false + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "right_expression": { + "id": 4129, + "node_type": 17, + "kind": 49, + "value": "2", + "hex_value": "32", + "src": { + "id": 4130, + "line": 921, + "column": 31, + "start": 33139, + "end": 33139, + "length": 1, + "parent_index": 4123 + }, + "type_description": { + "type_identifier": "t_rational_2_by_1", + "type_string": "int_const 2" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 4131, + "node_type": 17, + "kind": 50, + "value": "UniswapV2Library: INVALID_PATH", + "hex_value": "556e697377617056324c6962726172793a20494e56414c49445f50415448", + "src": { + "id": 4132, + "line": 921, + "column": 34, + "start": 33142, + "end": 33173, + "length": 32, + "parent_index": 4119 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: INVALID_PATH\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 4121, + "node_type": 16, + "src": { + "id": 4122, + "line": 921, + "column": 8, + "start": 33116, + "end": 33122, + "length": 7, + "parent_index": 4119 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 4133, + "node_type": 81, + "src": { + "id": 4134, + "line": 922, + "column": 8, + "start": 33185, + "end": 33221, + "length": 37, + "parent_index": 4117 + }, + "expression": { + "id": 4135, + "node_type": 27, + "src": { + "id": 4136, + "line": 922, + "column": 8, + "start": 33185, + "end": 33220, + "length": 36, + "parent_index": 4117 + }, + "operator": 11, + "left_expression": { + "id": 4137, + "node_type": 16, + "src": { + "id": 4138, + "line": 922, + "column": 8, + "start": 33185, + "end": 33191, + "length": 7, + "parent_index": 4135 + }, + "name": "amounts", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4112, + "is_pure": false + }, + "right_expression": { + "id": 4139, + "node_type": 24, + "kind": 24, + "src": { + "id": 4140, + "line": 922, + "column": 18, + "start": 33195, + "end": 33220, + "length": 26, + "parent_index": 4135 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 4146, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4147, + "line": 922, + "column": 32, + "start": 33209, + "end": 33219, + "length": 11, + "parent_index": 4139 + }, + "expression": { + "id": 4148, + "node_type": 16, + "src": { + "id": 4149, + "line": 922, + "column": 32, + "start": 33209, + "end": 33212, + "length": 4, + "parent_index": 4146 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4148, + "is_pure": false + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + } + ], + "expression": { + "id": 4141, + "node_type": 25, + "src": { + "id": 4142, + "line": 922, + "column": 18, + "start": 33195, + "end": 33207, + "length": 13, + "parent_index": 4139 + }, + "argument_types": [], + "type_name": { + "id": 4143, + "node_type": 16, + "src": { + "id": 4145, + "line": 922, + "column": 22, + "start": 33199, + "end": 33205, + "length": 7, + "parent_index": 4141 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + { + "id": 4150, + "node_type": 81, + "src": { + "id": 4151, + "line": 923, + "column": 8, + "start": 33231, + "end": 33252, + "length": 22, + "parent_index": 4117 + }, + "expression": { + "id": 4152, + "node_type": 27, + "src": { + "id": 4153, + "line": 923, + "column": 8, + "start": 33231, + "end": 33251, + "length": 21, + "parent_index": 4117 + }, + "operator": 11, + "left_expression": { + "id": 4154, + "node_type": 22, + "src": { + "id": 4155, + "line": 923, + "column": 8, + "start": 33231, + "end": 33240, + "length": 10, + "parent_index": 4152 + }, + "index_expression": { + "id": 4156, + "node_type": 16, + "src": { + "id": 4157, + "line": 923, + "column": 8, + "start": 33231, + "end": 33237, + "length": 7, + "parent_index": 4154 + }, + "name": "amounts", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4112, + "is_pure": false + }, + "base_expression": { + "id": 4158, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 4159, + "line": 923, + "column": 16, + "start": 33239, + "end": 33239, + "length": 1, + "parent_index": 4154 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_descriptions": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$_t_rational_0_by_1]$", + "type_string": "index[uint256:int_const 0]" + } + }, + "right_expression": { + "id": 4160, + "node_type": 16, + "src": { + "id": 4161, + "line": 923, + "column": 21, + "start": 33244, + "end": 33251, + "length": 8, + "parent_index": 4152 + }, + "name": "amountIn", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4160, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$_t_rational_0_by_1]$", + "type_string": "index[uint256:int_const 0]" + } + }, + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$_t_rational_0_by_1]$", + "type_string": "index[uint256:int_const 0]" + } + }, + { + "id": 4162, + "node_type": 79, + "src": { + "id": 4163, + "line": 924, + "column": 0, + "start": 33262, + "end": 33582, + "length": 321, + "parent_index": 4117 + }, + "initialiser": { + "id": 4164, + "node_type": 44, + "src": { + "id": 4165, + "line": 924, + "column": 13, + "start": 33267, + "end": 33276, + "length": 10, + "parent_index": 4117 + }, + "assignments": [ + 4166 + ], + "declarations": [ + { + "is_constant": false, + "id": 4166, + "state_mutability": 1, + "name": "i", + "node_type": 44, + "scope": 4117, + "src": { + "id": 4167, + "line": 924, + "column": 13, + "start": 33267, + "end": 33275, + "length": 9, + "parent_index": 4164 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 4168, + "node_type": 30, + "src": { + "id": 4169, + "line": 924, + "column": 13, + "start": 33267, + "end": 33273, + "length": 7, + "parent_index": 4166 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ] + }, + "condition": { + "id": 4170, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4171, + "line": 924, + "column": 24, + "start": 33278, + "end": 33296, + "length": 19, + "parent_index": 4162 + }, + "operator": 9, + "left_expression": { + "id": 4172, + "node_type": 16, + "src": { + "id": 4173, + "line": 924, + "column": 24, + "start": 33278, + "end": 33278, + "length": 1, + "parent_index": 4170 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 4174, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4175, + "line": 924, + "column": 28, + "start": 33282, + "end": 33296, + "length": 15, + "parent_index": 4170 + }, + "operator": 2, + "left_expression": { + "id": 4176, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4177, + "line": 924, + "column": 28, + "start": 33282, + "end": 33292, + "length": 11, + "parent_index": 4174 + }, + "expression": { + "id": 4178, + "node_type": 16, + "src": { + "id": 4179, + "line": 924, + "column": 28, + "start": 33282, + "end": 33285, + "length": 4, + "parent_index": 4176 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4178, + "is_pure": false + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "right_expression": { + "id": 4180, + "node_type": 17, + "kind": 49, + "value": "1", + "hex_value": "31", + "src": { + "id": 4181, + "line": 924, + "column": 42, + "start": 33296, + "end": 33296, + "length": 1, + "parent_index": 4174 + }, + "type_description": { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "closure": { + "id": 4182, + "node_type": 18, + "src": { + "id": 4183, + "line": 924, + "column": 45, + "start": 33299, + "end": 33301, + "length": 3, + "parent_index": 4089 + }, + "operator": 27, + "expression": { + "id": 4184, + "node_type": 16, + "src": { + "id": 4185, + "line": 924, + "column": 45, + "start": 33299, + "end": 33299, + "length": 1, + "parent_index": 4182 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "prefix": false, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false + }, + "body": { + "id": 4186, + "node_type": 46, + "kind": 0, + "src": { + "id": 4187, + "line": 924, + "column": 50, + "start": 33304, + "end": 33582, + "length": 279, + "parent_index": 4162 + }, + "implemented": true, + "statements": [ + { + "id": 4188, + "node_type": 44, + "src": { + "id": 4189, + "line": 925, + "column": 12, + "start": 33318, + "end": 33494, + "length": 177, + "parent_index": 4186 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 4190, + "node_type": 24, + "kind": 24, + "src": { + "id": 4191, + "line": 925, + "column": 54, + "start": 33360, + "end": 33493, + "length": 134, + "parent_index": 4188 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + }, + { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + }, + { + "type_identifier": "t_function_$_t_function_$$$_t_[_[$_t_address]$_t_uint256]$$$_t_[_[$_t_address]$_t_uint256]$$", + "type_string": "function(function(),index[address:uint256],index[address:uint256])" + } + ], + "arguments": [ + { + "id": 4194, + "node_type": 16, + "src": { + "id": 4195, + "line": 926, + "column": 16, + "start": 33389, + "end": 33395, + "length": 7, + "parent_index": 4190 + }, + "name": "factory", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 4196, + "node_type": 22, + "src": { + "id": 4197, + "line": 927, + "column": 16, + "start": 33414, + "end": 33420, + "length": 7, + "parent_index": 4190 + }, + "index_expression": { + "id": 4198, + "node_type": 16, + "src": { + "id": 4199, + "line": 927, + "column": 16, + "start": 33414, + "end": 33417, + "length": 4, + "parent_index": 4196 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4101, + "is_pure": false + }, + "base_expression": { + "id": 4200, + "node_type": 16, + "src": { + "id": 4201, + "line": 927, + "column": 21, + "start": 33419, + "end": 33419, + "length": 1, + "parent_index": 4196 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + } + }, + { + "id": 4202, + "node_type": 22, + "src": { + "id": 4203, + "line": 928, + "column": 16, + "start": 33439, + "end": 33449, + "length": 11, + "parent_index": 4190 + }, + "index_expression": { + "id": 4204, + "node_type": 16, + "src": { + "id": 4205, + "line": 928, + "column": 16, + "start": 33439, + "end": 33442, + "length": 4, + "parent_index": 4202 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4101, + "is_pure": false + }, + "base_expression": { + "id": 4206, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4207, + "line": 928, + "column": 21, + "start": 33444, + "end": 33448, + "length": 5, + "parent_index": 4202 + }, + "operator": 1, + "left_expression": { + "id": 4208, + "node_type": 16, + "src": { + "id": 4209, + "line": 928, + "column": 21, + "start": 33444, + "end": 33444, + "length": 1, + "parent_index": 4206 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 4210, + "node_type": 17, + "kind": 49, + "value": "1", + "hex_value": "31", + "src": { + "id": 4211, + "line": 928, + "column": 25, + "start": 33448, + "end": 33448, + "length": 1, + "parent_index": 4206 + }, + "type_description": { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_descriptions": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + } + }, + { + "id": 4212, + "node_type": 16, + "src": { + "id": 4213, + "line": 929, + "column": 16, + "start": 33468, + "end": 33479, + "length": 12, + "parent_index": 4190 + }, + "name": "pairCodeHash", + "type_description": { + "type_identifier": "t_function_$_t_function_$$$_t_[_[$_t_address]$_t_uint256]$$$_t_[_[$_t_address]$_t_uint256]$$", + "type_string": "function(function(),index[address:uint256],index[address:uint256])" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + }, + { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + } + ] + } + ], + "expression": { + "id": 4192, + "node_type": 16, + "src": { + "id": 4193, + "line": 925, + "column": 54, + "start": 33360, + "end": 33370, + "length": 11, + "parent_index": 4190 + }, + "name": "getReserves", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$_t_[_[$_t_address]$_t_uint256]$_t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$_t_[_[$_t_address]$_t_uint256]$", + "type_string": "function(function(),index[address:uint256],index[address:uint256],function(function(),index[address:uint256],index[address:uint256]))" + } + } + }, + { + "id": 4214, + "node_type": 81, + "src": { + "id": 4215, + "line": 931, + "column": 12, + "start": 33508, + "end": 33572, + "length": 65, + "parent_index": 4186 + }, + "expression": { + "id": 4216, + "node_type": 27, + "src": { + "id": 4217, + "line": 931, + "column": 12, + "start": 33508, + "end": 33571, + "length": 64, + "parent_index": 4186 + }, + "operator": 11, + "left_expression": { + "id": 4218, + "node_type": 22, + "src": { + "id": 4219, + "line": 931, + "column": 12, + "start": 33508, + "end": 33521, + "length": 14, + "parent_index": 4216 + }, + "index_expression": { + "id": 4220, + "node_type": 16, + "src": { + "id": 4221, + "line": 931, + "column": 12, + "start": 33508, + "end": 33514, + "length": 7, + "parent_index": 4218 + }, + "name": "amounts", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4112, + "is_pure": false + }, + "base_expression": { + "id": 4222, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4223, + "line": 931, + "column": 20, + "start": 33516, + "end": 33520, + "length": 5, + "parent_index": 4218 + }, + "operator": 1, + "left_expression": { + "id": 4224, + "node_type": 16, + "src": { + "id": 4225, + "line": 931, + "column": 20, + "start": 33516, + "end": 33516, + "length": 1, + "parent_index": 4222 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 4226, + "node_type": 17, + "kind": 49, + "value": "1", + "hex_value": "31", + "src": { + "id": 4227, + "line": 931, + "column": 24, + "start": 33520, + "end": 33520, + "length": 1, + "parent_index": 4222 + }, + "type_description": { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_descriptions": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + } + }, + "right_expression": { + "id": 4228, + "node_type": 24, + "kind": 24, + "src": { + "id": 4229, + "line": 931, + "column": 29, + "start": 33525, + "end": 33571, + "length": 47, + "parent_index": 4216 + }, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + }, + { + "type_identifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$", + "type_string": "function(index[uint256:uint256])" + }, + { + "type_identifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$", + "type_string": "function(index[uint256:uint256],function(index[uint256:uint256]))" + } + ], + "arguments": [ + { + "id": 4232, + "node_type": 22, + "src": { + "id": 4233, + "line": 931, + "column": 42, + "start": 33538, + "end": 33547, + "length": 10, + "parent_index": 4228 + }, + "index_expression": { + "id": 4234, + "node_type": 16, + "src": { + "id": 4235, + "line": 931, + "column": 42, + "start": 33538, + "end": 33544, + "length": 7, + "parent_index": 4232 + }, + "name": "amounts", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4112, + "is_pure": false + }, + "base_expression": { + "id": 4236, + "node_type": 16, + "src": { + "id": 4237, + "line": 931, + "column": 50, + "start": 33546, + "end": 33546, + "length": 1, + "parent_index": 4232 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + } + }, + { + "id": 4238, + "node_type": 16, + "src": { + "id": 4239, + "line": 931, + "column": 54, + "start": 33550, + "end": 33558, + "length": 9, + "parent_index": 4228 + }, + "name": "reserveIn", + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$", + "type_string": "function(index[uint256:uint256])" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + } + ] + }, + { + "id": 4240, + "node_type": 16, + "src": { + "id": 4241, + "line": 931, + "column": 65, + "start": 33561, + "end": 33570, + "length": 10, + "parent_index": 4228 + }, + "name": "reserveOut", + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$", + "type_string": "function(index[uint256:uint256],function(index[uint256:uint256]))" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + }, + { + "type_identifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$", + "type_string": "function(index[uint256:uint256])" + } + ] + } + ], + "expression": { + "id": 4230, + "node_type": 16, + "src": { + "id": 4231, + "line": 931, + "column": 29, + "start": 33525, + "end": 33536, + "length": 12, + "parent_index": 4228 + }, + "name": "getAmountOut", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "function(index[uint256:uint256],function(index[uint256:uint256]),function(index[uint256:uint256],function(index[uint256:uint256])))" + } + }, + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + } + }, + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + } + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 4091, + "node_type": 43, + "src": { + "id": 4092, + "line": 916, + "column": 8, + "start": 32948, + "end": 33049, + "length": 102, + "parent_index": 4089 + }, + "parameters": [ + { + "id": 4093, + "node_type": 44, + "src": { + "id": 4094, + "line": 916, + "column": 8, + "start": 32948, + "end": 32962, + "length": 15, + "parent_index": 4091 + }, + "scope": 4089, + "name": "factory", + "type_name": { + "id": 4095, + "node_type": 30, + "src": { + "id": 4096, + "line": 916, + "column": 8, + "start": 32948, + "end": 32954, + "length": 7, + "parent_index": 4093 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 4097, + "node_type": 44, + "src": { + "id": 4098, + "line": 917, + "column": 8, + "start": 32973, + "end": 32988, + "length": 16, + "parent_index": 4091 + }, + "scope": 4089, + "name": "amountIn", + "type_name": { + "id": 4099, + "node_type": 30, + "src": { + "id": 4100, + "line": 917, + "column": 8, + "start": 32973, + "end": 32979, + "length": 7, + "parent_index": 4097 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 4101, + "node_type": 44, + "src": { + "id": 4102, + "line": 918, + "column": 8, + "start": 32999, + "end": 33019, + "length": 21, + "parent_index": 4091 + }, + "scope": 4089, + "name": "path", + "type_name": { + "id": 4103, + "node_type": 16, + "src": { + "id": 4105, + "line": 918, + "column": 8, + "start": 32999, + "end": 33005, + "length": 7, + "parent_index": 4101 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 4106, + "node_type": 44, + "src": { + "id": 4107, + "line": 919, + "column": 8, + "start": 33030, + "end": 33049, + "length": 20, + "parent_index": 4091 + }, + "scope": 4089, + "name": "pairCodeHash", + "type_name": { + "id": 4108, + "node_type": 30, + "src": { + "id": 4109, + "line": 919, + "column": 8, + "start": 33030, + "end": 33036, + "length": 7, + "parent_index": 4106 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "return_parameters": { + "id": 4110, + "node_type": 43, + "src": { + "id": 4111, + "line": 920, + "column": 29, + "start": 33080, + "end": 33103, + "length": 24, + "parent_index": 4089 + }, + "parameters": [ + { + "id": 4112, + "node_type": 44, + "src": { + "id": 4113, + "line": 920, + "column": 29, + "start": 33080, + "end": 33103, + "length": 24, + "parent_index": 4110 + }, + "scope": 4089, + "name": "amounts", + "type_name": { + "id": 4114, + "node_type": 16, + "src": { + "id": 4116, + "line": 920, + "column": 29, + "start": 33080, + "end": 33086, + "length": 7, + "parent_index": 4112 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 3493, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_uint256$_t_address$_t_bytes32$", + "type_string": "function(address,uint256,address,bytes32)" + } + }, + { + "id": 4243, + "name": "getAmountsIn", + "node_type": 42, + "kind": 41, + "src": { + "id": 4244, + "line": 936, + "column": 4, + "start": 33667, + "end": 34360, + "length": 694, + "parent_index": 3493 + }, + "body": { + "id": 4271, + "node_type": 46, + "kind": 0, + "src": { + "id": 4272, + "line": 941, + "column": 55, + "start": 33857, + "end": 34360, + "length": 504, + "parent_index": 4243 + }, + "implemented": true, + "statements": [ + { + "id": 4273, + "node_type": 24, + "kind": 24, + "src": { + "id": 4274, + "line": 942, + "column": 8, + "start": 33867, + "end": 33925, + "length": 59, + "parent_index": 4271 + }, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + }, + { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: INVALID_PATH\"" + } + ], + "arguments": [ + { + "id": 4277, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4278, + "line": 942, + "column": 16, + "start": 33875, + "end": 33890, + "length": 16, + "parent_index": 4273 + }, + "operator": 8, + "left_expression": { + "id": 4279, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4280, + "line": 942, + "column": 16, + "start": 33875, + "end": 33885, + "length": 11, + "parent_index": 4277 + }, + "expression": { + "id": 4281, + "node_type": 16, + "src": { + "id": 4282, + "line": 942, + "column": 16, + "start": 33875, + "end": 33878, + "length": 4, + "parent_index": 4279 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4281, + "is_pure": false + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "right_expression": { + "id": 4283, + "node_type": 17, + "kind": 49, + "value": "2", + "hex_value": "32", + "src": { + "id": 4284, + "line": 942, + "column": 31, + "start": 33890, + "end": 33890, + "length": 1, + "parent_index": 4277 + }, + "type_description": { + "type_identifier": "t_rational_2_by_1", + "type_string": "int_const 2" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + { + "id": 4285, + "node_type": 17, + "kind": 50, + "value": "UniswapV2Library: INVALID_PATH", + "hex_value": "556e697377617056324c6962726172793a20494e56414c49445f50415448", + "src": { + "id": 4286, + "line": 942, + "column": 34, + "start": 33893, + "end": 33924, + "length": 32, + "parent_index": 4273 + }, + "type_description": { + "type_identifier": "t_string_literal", + "type_string": "literal_string \"UniswapV2Library: INVALID_PATH\"" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true, + "argument_types": [ + { + "type_identifier": "t_bool", + "type_string": "bool" + } + ] + } + ], + "expression": { + "id": 4275, + "node_type": 16, + "src": { + "id": 4276, + "line": 942, + "column": 8, + "start": 33867, + "end": 33873, + "length": 7, + "parent_index": 4273 + }, + "name": "require", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_bool$_t_string_literal$", + "type_string": "function(bool,string memory)" + } + }, + { + "id": 4287, + "node_type": 81, + "src": { + "id": 4288, + "line": 943, + "column": 8, + "start": 33936, + "end": 33972, + "length": 37, + "parent_index": 4271 + }, + "expression": { + "id": 4289, + "node_type": 27, + "src": { + "id": 4290, + "line": 943, + "column": 8, + "start": 33936, + "end": 33971, + "length": 36, + "parent_index": 4271 + }, + "operator": 11, + "left_expression": { + "id": 4291, + "node_type": 16, + "src": { + "id": 4292, + "line": 943, + "column": 8, + "start": 33936, + "end": 33942, + "length": 7, + "parent_index": 4289 + }, + "name": "amounts", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4112, + "is_pure": false + }, + "right_expression": { + "id": 4293, + "node_type": 24, + "kind": 24, + "src": { + "id": 4294, + "line": 943, + "column": 18, + "start": 33946, + "end": 33971, + "length": 26, + "parent_index": 4289 + }, + "argument_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + } + ], + "arguments": [ + { + "id": 4300, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4301, + "line": 943, + "column": 32, + "start": 33960, + "end": 33970, + "length": 11, + "parent_index": 4293 + }, + "expression": { + "id": 4302, + "node_type": 16, + "src": { + "id": 4303, + "line": 943, + "column": 32, + "start": 33960, + "end": 33963, + "length": 4, + "parent_index": 4300 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4302, + "is_pure": false + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + } + ], + "expression": { + "id": 4295, + "node_type": 25, + "src": { + "id": 4296, + "line": 943, + "column": 18, + "start": 33946, + "end": 33958, + "length": 13, + "parent_index": 4293 + }, + "argument_types": [], + "type_name": { + "id": 4297, + "node_type": 16, + "src": { + "id": 4299, + "line": 943, + "column": 22, + "start": 33950, + "end": 33956, + "length": 7, + "parent_index": 4295 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_function_$_t_address$", + "type_string": "function(address)" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + { + "id": 4304, + "node_type": 81, + "src": { + "id": 4305, + "line": 944, + "column": 8, + "start": 33982, + "end": 34021, + "length": 40, + "parent_index": 4271 + }, + "expression": { + "id": 4306, + "node_type": 27, + "src": { + "id": 4307, + "line": 944, + "column": 8, + "start": 33982, + "end": 34020, + "length": 39, + "parent_index": 4271 + }, + "operator": 11, + "left_expression": { + "id": 4308, + "node_type": 22, + "src": { + "id": 4309, + "line": 944, + "column": 8, + "start": 33982, + "end": 34008, + "length": 27, + "parent_index": 4306 + }, + "index_expression": { + "id": 4310, + "node_type": 16, + "src": { + "id": 4311, + "line": 944, + "column": 8, + "start": 33982, + "end": 33988, + "length": 7, + "parent_index": 4308 + }, + "name": "amounts", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4112, + "is_pure": false + }, + "base_expression": { + "id": 4312, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4313, + "line": 944, + "column": 16, + "start": 33990, + "end": 34007, + "length": 18, + "parent_index": 4308 + }, + "operator": 2, + "left_expression": { + "id": 4314, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4315, + "line": 944, + "column": 16, + "start": 33990, + "end": 34003, + "length": 14, + "parent_index": 4312 + }, + "expression": { + "id": 4316, + "node_type": 16, + "src": { + "id": 4317, + "line": 944, + "column": 16, + "start": 33990, + "end": 33996, + "length": 7, + "parent_index": 4314 + }, + "name": "amounts", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4112, + "is_pure": false + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "right_expression": { + "id": 4318, + "node_type": 17, + "kind": 49, + "value": "1", + "hex_value": "31", + "src": { + "id": 4319, + "line": 944, + "column": 33, + "start": 34007, + "end": 34007, + "length": 1, + "parent_index": 4312 + }, + "type_description": { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_descriptions": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + } + }, + "right_expression": { + "id": 4320, + "node_type": 16, + "src": { + "id": 4321, + "line": 944, + "column": 38, + "start": 34012, + "end": 34020, + "length": 9, + "parent_index": 4306 + }, + "name": "amountOut", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4320, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + } + }, + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + } + }, + { + "id": 4322, + "node_type": 79, + "src": { + "id": 4323, + "line": 945, + "column": 0, + "start": 34031, + "end": 34354, + "length": 324, + "parent_index": 4271 + }, + "initialiser": { + "id": 4324, + "node_type": 44, + "src": { + "id": 4325, + "line": 945, + "column": 13, + "start": 34036, + "end": 34063, + "length": 28, + "parent_index": 4271 + }, + "assignments": [ + 4326 + ], + "declarations": [ + { + "is_constant": false, + "id": 4326, + "state_mutability": 1, + "name": "i", + "node_type": 44, + "scope": 4271, + "src": { + "id": 4327, + "line": 945, + "column": 13, + "start": 34036, + "end": 34044, + "length": 9, + "parent_index": 4324 + }, + "is_state_variable": false, + "storage_location": 1, + "type_name": { + "id": 4328, + "node_type": 30, + "src": { + "id": 4329, + "line": 945, + "column": 13, + "start": 34036, + "end": 34042, + "length": 7, + "parent_index": 4326 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "visibility": 1 + } + ], + "initial_value": { + "id": 4330, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4331, + "line": 945, + "column": 25, + "start": 34048, + "end": 34062, + "length": 15, + "parent_index": 4324 + }, + "operator": 2, + "left_expression": { + "id": 4332, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false, + "node_type": 23, + "src": { + "id": 4333, + "line": 945, + "column": 25, + "start": 34048, + "end": 34058, + "length": 11, + "parent_index": 4324 + }, + "expression": { + "id": 4334, + "node_type": 16, + "src": { + "id": 4335, + "line": 945, + "column": 25, + "start": 34048, + "end": 34051, + "length": 4, + "parent_index": 4332 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4334, + "is_pure": false + }, + "member_name": "length", + "argument_types": [], + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + }, + "right_expression": { + "id": 4336, + "node_type": 17, + "kind": 49, + "value": "1", + "hex_value": "31", + "src": { + "id": 4337, + "line": 945, + "column": 39, + "start": 34062, + "end": 34062, + "length": 1, + "parent_index": 4330 + }, + "type_description": { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + } + } + }, + "condition": { + "id": 4338, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4339, + "line": 945, + "column": 42, + "start": 34065, + "end": 34069, + "length": 5, + "parent_index": 4322 + }, + "operator": 7, + "left_expression": { + "id": 4340, + "node_type": 16, + "src": { + "id": 4341, + "line": 945, + "column": 42, + "start": 34065, + "end": 34065, + "length": 1, + "parent_index": 4338 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 4342, + "node_type": 17, + "kind": 49, + "value": "0", + "hex_value": "30", + "src": { + "id": 4343, + "line": 945, + "column": 46, + "start": 34069, + "end": 34069, + "length": 1, + "parent_index": 4338 + }, + "type_description": { + "type_identifier": "t_rational_0_by_1", + "type_string": "int_const 0" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_bool", + "type_string": "bool" + } + }, + "closure": { + "id": 4344, + "node_type": 18, + "src": { + "id": 4345, + "line": 945, + "column": 49, + "start": 34072, + "end": 34074, + "length": 3, + "parent_index": 4243 + }, + "operator": 28, + "expression": { + "id": 4346, + "node_type": 16, + "src": { + "id": 4347, + "line": 945, + "column": 49, + "start": 34072, + "end": 34072, + "length": 1, + "parent_index": 4344 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "prefix": false, + "is_constant": false, + "is_l_value": false, + "is_pure": false, + "l_value_requested": false + }, + "body": { + "id": 4348, + "node_type": 46, + "kind": 0, + "src": { + "id": 4349, + "line": 945, + "column": 54, + "start": 34077, + "end": 34354, + "length": 278, + "parent_index": 4322 + }, + "implemented": true, + "statements": [ + { + "id": 4350, + "node_type": 44, + "src": { + "id": 4351, + "line": 946, + "column": 12, + "start": 34091, + "end": 34267, + "length": 177, + "parent_index": 4348 + }, + "assignments": [], + "declarations": [], + "initial_value": { + "id": 4352, + "node_type": 24, + "kind": 24, + "src": { + "id": 4353, + "line": 946, + "column": 54, + "start": 34133, + "end": 34266, + "length": 134, + "parent_index": 4350 + }, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + }, + { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + }, + { + "type_identifier": "t_function_$_t_function_$$$_t_[_[$_t_address]$_t_uint256]$$$_t_[_[$_t_address]$_t_uint256]$$", + "type_string": "function(function(),index[address:uint256],index[address:uint256])" + } + ], + "arguments": [ + { + "id": 4356, + "node_type": 16, + "src": { + "id": 4357, + "line": 947, + "column": 16, + "start": 34162, + "end": 34168, + "length": 7, + "parent_index": 4352 + }, + "name": "factory", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + { + "id": 4358, + "node_type": 22, + "src": { + "id": 4359, + "line": 948, + "column": 16, + "start": 34187, + "end": 34197, + "length": 11, + "parent_index": 4352 + }, + "index_expression": { + "id": 4360, + "node_type": 16, + "src": { + "id": 4361, + "line": 948, + "column": 16, + "start": 34187, + "end": 34190, + "length": 4, + "parent_index": 4358 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4101, + "is_pure": false + }, + "base_expression": { + "id": 4362, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4363, + "line": 948, + "column": 21, + "start": 34192, + "end": 34196, + "length": 5, + "parent_index": 4358 + }, + "operator": 2, + "left_expression": { + "id": 4364, + "node_type": 16, + "src": { + "id": 4365, + "line": 948, + "column": 21, + "start": 34192, + "end": 34192, + "length": 1, + "parent_index": 4362 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 4366, + "node_type": 17, + "kind": 49, + "value": "1", + "hex_value": "31", + "src": { + "id": 4367, + "line": 948, + "column": 25, + "start": 34196, + "end": 34196, + "length": 1, + "parent_index": 4362 + }, + "type_description": { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_descriptions": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + } + }, + { + "id": 4368, + "node_type": 22, + "src": { + "id": 4369, + "line": 949, + "column": 16, + "start": 34216, + "end": 34222, + "length": 7, + "parent_index": 4352 + }, + "index_expression": { + "id": 4370, + "node_type": 16, + "src": { + "id": 4371, + "line": 949, + "column": 16, + "start": 34216, + "end": 34219, + "length": 4, + "parent_index": 4368 + }, + "name": "path", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "overloaded_declarations": [], + "referenced_declaration": 4101, + "is_pure": false + }, + "base_expression": { + "id": 4372, + "node_type": 16, + "src": { + "id": 4373, + "line": 949, + "column": 21, + "start": 34221, + "end": 34221, + "length": 1, + "parent_index": 4368 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + } + }, + { + "id": 4374, + "node_type": 16, + "src": { + "id": 4375, + "line": 950, + "column": 16, + "start": 34241, + "end": 34252, + "length": 12, + "parent_index": 4352 + }, + "name": "pairCodeHash", + "type_description": { + "type_identifier": "t_function_$_t_function_$$$_t_[_[$_t_address]$_t_uint256]$$$_t_[_[$_t_address]$_t_uint256]$$", + "type_string": "function(function(),index[address:uint256],index[address:uint256])" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + }, + { + "type_identifier": "t_[_[$_t_address]$_t_uint256]$", + "type_string": "index[address:uint256]" + } + ] + } + ], + "expression": { + "id": 4354, + "node_type": 16, + "src": { + "id": 4355, + "line": 946, + "column": 54, + "start": 34133, + "end": 34143, + "length": 11, + "parent_index": 4352 + }, + "name": "getReserves", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$_t_[_[$_t_address]$_t_uint256]$_t_function_$_t_function_$_t_[_[$_t_address]$_t_uint256]$_t_[_[$_t_address]$_t_uint256]$", + "type_string": "function(function(),index[address:uint256],index[address:uint256],function(function(),index[address:uint256],index[address:uint256]))" + } + } + }, + { + "id": 4376, + "node_type": 81, + "src": { + "id": 4377, + "line": 952, + "column": 12, + "start": 34281, + "end": 34344, + "length": 64, + "parent_index": 4348 + }, + "expression": { + "id": 4378, + "node_type": 27, + "src": { + "id": 4379, + "line": 952, + "column": 12, + "start": 34281, + "end": 34343, + "length": 63, + "parent_index": 4348 + }, + "operator": 11, + "left_expression": { + "id": 4380, + "node_type": 22, + "src": { + "id": 4381, + "line": 952, + "column": 12, + "start": 34281, + "end": 34294, + "length": 14, + "parent_index": 4378 + }, + "index_expression": { + "id": 4382, + "node_type": 16, + "src": { + "id": 4383, + "line": 952, + "column": 12, + "start": 34281, + "end": 34287, + "length": 7, + "parent_index": 4380 + }, + "name": "amounts", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4112, + "is_pure": false + }, + "base_expression": { + "id": 4384, + "is_constant": false, + "is_pure": false, + "node_type": 19, + "src": { + "id": 4385, + "line": 952, + "column": 20, + "start": 34289, + "end": 34293, + "length": 5, + "parent_index": 4380 + }, + "operator": 2, + "left_expression": { + "id": 4386, + "node_type": 16, + "src": { + "id": 4387, + "line": 952, + "column": 20, + "start": 34289, + "end": 34289, + "length": 1, + "parent_index": 4384 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "right_expression": { + "id": 4388, + "node_type": 17, + "kind": 49, + "value": "1", + "hex_value": "31", + "src": { + "id": 4389, + "line": 952, + "column": 24, + "start": 34293, + "end": 34293, + "length": 1, + "parent_index": 4384 + }, + "type_description": { + "type_identifier": "t_rational_1_by_1", + "type_string": "int_const 1" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": true + }, + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + }, + "type_descriptions": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + } + }, + "right_expression": { + "id": 4390, + "node_type": 24, + "kind": 24, + "src": { + "id": 4391, + "line": 952, + "column": 29, + "start": 34298, + "end": 34343, + "length": 46, + "parent_index": 4378 + }, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + }, + { + "type_identifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$", + "type_string": "function(index[uint256:uint256])" + }, + { + "type_identifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$", + "type_string": "function(index[uint256:uint256],function(index[uint256:uint256]))" + } + ], + "arguments": [ + { + "id": 4394, + "node_type": 22, + "src": { + "id": 4395, + "line": 952, + "column": 41, + "start": 34310, + "end": 34319, + "length": 10, + "parent_index": 4390 + }, + "index_expression": { + "id": 4396, + "node_type": 16, + "src": { + "id": 4397, + "line": 952, + "column": 41, + "start": 34310, + "end": 34316, + "length": 7, + "parent_index": 4394 + }, + "name": "amounts", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4112, + "is_pure": false + }, + "base_expression": { + "id": 4398, + "node_type": 16, + "src": { + "id": 4399, + "line": 952, + "column": 49, + "start": 34318, + "end": 34318, + "length": 1, + "parent_index": 4394 + }, + "name": "i", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "overloaded_declarations": [], + "referenced_declaration": 4164, + "is_pure": false + }, + "type_descriptions": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ], + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + } + }, + { + "id": 4400, + "node_type": 16, + "src": { + "id": 4401, + "line": 952, + "column": 53, + "start": 34322, + "end": 34330, + "length": 9, + "parent_index": 4390 + }, + "name": "reserveIn", + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$", + "type_string": "function(index[uint256:uint256])" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + } + ] + }, + { + "id": 4402, + "node_type": 16, + "src": { + "id": 4403, + "line": 952, + "column": 64, + "start": 34333, + "end": 34342, + "length": 10, + "parent_index": 4390 + }, + "name": "reserveOut", + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$$$", + "type_string": "function(index[uint256:uint256],function(index[uint256:uint256]))" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false, + "argument_types": [ + { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + }, + { + "type_identifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$$", + "type_string": "function(index[uint256:uint256])" + } + ] + } + ], + "expression": { + "id": 4392, + "node_type": 16, + "src": { + "id": 4393, + "line": 952, + "column": 29, + "start": 34298, + "end": 34308, + "length": 11, + "parent_index": 4390 + }, + "name": "getAmountIn", + "type_description": { + "type_identifier": "t_function_$", + "type_string": "function()" + }, + "overloaded_declarations": [], + "referenced_declaration": 0, + "is_pure": false + }, + "type_description": { + "type_identifier": "t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$_t_function_$_t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "function(index[uint256:uint256],function(index[uint256:uint256]),function(index[uint256:uint256],function(index[uint256:uint256])))" + } + }, + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + } + }, + "type_description": { + "type_identifier": "t_[_[$_t_uint256]$_t_uint256]$", + "type_string": "index[uint256:uint256]" + } + } + ] + } + } + ] + }, + "implemented": true, + "visibility": 1, + "state_mutability": 5, + "virtual": false, + "modifiers": [], + "overrides": [], + "parameters": { + "id": 4245, + "node_type": 43, + "src": { + "id": 4246, + "line": 937, + "column": 8, + "start": 33698, + "end": 33800, + "length": 103, + "parent_index": 4243 + }, + "parameters": [ + { + "id": 4247, + "node_type": 44, + "src": { + "id": 4248, + "line": 937, + "column": 8, + "start": 33698, + "end": 33712, + "length": 15, + "parent_index": 4245 + }, + "scope": 4243, + "name": "factory", + "type_name": { + "id": 4249, + "node_type": 30, + "src": { + "id": 4250, + "line": 937, + "column": 8, + "start": 33698, + "end": 33704, + "length": 7, + "parent_index": 4247 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "state_mutability": 4, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 4251, + "node_type": 44, + "src": { + "id": 4252, + "line": 938, + "column": 8, + "start": 33723, + "end": 33739, + "length": 17, + "parent_index": 4245 + }, + "scope": 4243, + "name": "amountOut", + "type_name": { + "id": 4253, + "node_type": 30, + "src": { + "id": 4254, + "line": 938, + "column": 8, + "start": 33723, + "end": 33729, + "length": 7, + "parent_index": 4251 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + }, + { + "id": 4255, + "node_type": 44, + "src": { + "id": 4256, + "line": 939, + "column": 8, + "start": 33750, + "end": 33770, + "length": 21, + "parent_index": 4245 + }, + "scope": 4243, + "name": "path", + "type_name": { + "id": 4257, + "node_type": 16, + "src": { + "id": 4259, + "line": 939, + "column": 8, + "start": 33750, + "end": 33756, + "length": 7, + "parent_index": 4255 + }, + "name": "address", + "type_description": { + "type_identifier": "t_address", + "type_string": "address" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 4 + }, + { + "id": 4260, + "node_type": 44, + "src": { + "id": 4261, + "line": 940, + "column": 8, + "start": 33781, + "end": 33800, + "length": 20, + "parent_index": 4245 + }, + "scope": 4243, + "name": "pairCodeHash", + "type_name": { + "id": 4262, + "node_type": 30, + "src": { + "id": 4263, + "line": 940, + "column": 8, + "start": 33781, + "end": 33787, + "length": 7, + "parent_index": 4260 + }, + "name": "bytes32", + "type_description": { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + { + "type_identifier": "t_address", + "type_string": "address" + }, + { + "type_identifier": "t_bytes32", + "type_string": "bytes32" + } + ] + }, + "return_parameters": { + "id": 4264, + "node_type": 43, + "src": { + "id": 4265, + "line": 941, + "column": 29, + "start": 33831, + "end": 33854, + "length": 24, + "parent_index": 4243 + }, + "parameters": [ + { + "id": 4266, + "node_type": 44, + "src": { + "id": 4267, + "line": 941, + "column": 29, + "start": 33831, + "end": 33854, + "length": 24, + "parent_index": 4264 + }, + "scope": 4243, + "name": "amounts", + "type_name": { + "id": 4268, + "node_type": 16, + "src": { + "id": 4270, + "line": 941, + "column": 29, + "start": 33831, + "end": 33837, + "length": 7, + "parent_index": 4266 + }, + "name": "uint256", + "type_description": { + "type_identifier": "t_uint256", + "type_string": "uint256" + }, + "referenced_declaration": 0 + }, + "storage_location": 2, + "visibility": 1, + "state_mutability": 1 + } + ], + "parameter_types": [ + { + "type_identifier": "t_uint256", + "type_string": "uint256" + } + ] + }, + "scope": 3493, + "type_description": { + "type_identifier": "t_function_$_t_address$_t_uint256$_t_address$_t_bytes32$", + "type_string": "function(address,uint256,address,bytes32)" + } + } + ], + "linearized_base_contracts": [ + 3493 + ], + "base_contracts": [], + "contract_dependencies": [], + "scope": 3448 + } + ], + "src": { + "id": 3449, + "line": 811, + "column": 0, + "start": 29040, + "end": 34362, + "length": 5323, + "parent_index": 263 + } +} \ No newline at end of file diff --git a/data/tests/eip/eip1155_full_match.proto.json b/data/tests/eip/eip1155_full_match.proto.json index 2b227b51..ce7dc9e0 100644 --- a/data/tests/eip/eip1155_full_match.proto.json +++ b/data/tests/eip/eip1155_full_match.proto.json @@ -136,6 +136,7 @@ ], "events": [ { + "name": "TransferSingle", "inputs": [ { "type": "address", @@ -164,6 +165,7 @@ "matched": true }, { + "name": "TransferBatch", "inputs": [ { "type": "address", @@ -192,6 +194,7 @@ "matched": true }, { + "name": "ApprovalForAll", "inputs": [ { "type": "address", @@ -211,6 +214,7 @@ "matched": true }, { + "name": "URI", "inputs": [ { "type": "string", diff --git a/data/tests/eip/eip1820_full_match.proto.json b/data/tests/eip/eip1820_full_match.proto.json index 39e1592f..f3686831 100644 --- a/data/tests/eip/eip1820_full_match.proto.json +++ b/data/tests/eip/eip1820_full_match.proto.json @@ -118,6 +118,7 @@ ], "events": [ { + "name": "InterfaceImplementerSet", "inputs": [ { "type": "address", @@ -138,6 +139,7 @@ "matched": true }, { + "name": "ManagerChanged", "inputs": [ { "type": "address", diff --git a/data/tests/eip/eip1822_full_match.proto.json b/data/tests/eip/eip1822_full_match.proto.json index b07c5304..26e8b491 100644 --- a/data/tests/eip/eip1822_full_match.proto.json +++ b/data/tests/eip/eip1822_full_match.proto.json @@ -54,6 +54,7 @@ ], "events": [ { + "name": "Upgraded", "inputs": [ { "type": "address", @@ -64,6 +65,7 @@ "matched": true }, { + "name": "ProxyOwnershipTransferred", "inputs": [ { "type": "address", diff --git a/data/tests/eip/eip1967_full_match.proto.json b/data/tests/eip/eip1967_full_match.proto.json index e7a128bc..543af591 100644 --- a/data/tests/eip/eip1967_full_match.proto.json +++ b/data/tests/eip/eip1967_full_match.proto.json @@ -118,6 +118,7 @@ ], "events": [ { + "name": "InterfaceImplementerSet", "inputs": [ { "type": "address", @@ -138,6 +139,7 @@ "matched": true }, { + "name": "AdminChanged", "inputs": [ { "type": "address", diff --git a/data/tests/eip/eip20_full_match.proto.json b/data/tests/eip/eip20_full_match.proto.json index b0a18109..16fd3344 100644 --- a/data/tests/eip/eip20_full_match.proto.json +++ b/data/tests/eip/eip20_full_match.proto.json @@ -120,6 +120,7 @@ ], "events": [ { + "name": "Transfer", "inputs": [ { "type": "address", @@ -139,6 +140,7 @@ "matched": true }, { + "name": "Approval", "inputs": [ { "type": "address", diff --git a/data/tests/eip/eip20_high_match.proto.json b/data/tests/eip/eip20_high_match.proto.json index 7b65c1a9..af36c514 100644 --- a/data/tests/eip/eip20_high_match.proto.json +++ b/data/tests/eip/eip20_high_match.proto.json @@ -119,6 +119,7 @@ ], "events": [ { + "name": "Transfer", "inputs": [ { "type": "address", @@ -138,6 +139,7 @@ "matched": true }, { + "name": "Approval", "inputs": [ { "type": "address", diff --git a/data/tests/eip/eip20_low_match.proto.json b/data/tests/eip/eip20_low_match.proto.json index 3b13b025..9bddfff2 100644 --- a/data/tests/eip/eip20_low_match.proto.json +++ b/data/tests/eip/eip20_low_match.proto.json @@ -100,6 +100,7 @@ ], "events": [ { + "name": "Transfer", "inputs": [ { "type": "address", @@ -119,6 +120,7 @@ "matched": true }, { + "name": "Approval", "inputs": [ { "type": "address", diff --git a/data/tests/eip/eip20_medium_match.proto.json b/data/tests/eip/eip20_medium_match.proto.json index a874ee69..6ff27edd 100644 --- a/data/tests/eip/eip20_medium_match.proto.json +++ b/data/tests/eip/eip20_medium_match.proto.json @@ -116,6 +116,7 @@ ], "events": [ { + "name": "Transfer", "inputs": [ { "type": "address", @@ -135,6 +136,7 @@ "matched": true }, { + "name": "Approval", "inputs": [ { "type": "address", diff --git a/data/tests/eip/eip20_no_match.proto.json b/data/tests/eip/eip20_no_match.proto.json index 0ae33f9d..9cef1e72 100644 --- a/data/tests/eip/eip20_no_match.proto.json +++ b/data/tests/eip/eip20_no_match.proto.json @@ -95,6 +95,7 @@ ], "events": [ { + "name": "Transfer", "inputs": [ { "type": "address", @@ -110,6 +111,7 @@ ] }, { + "name": "Approval", "inputs": [ { "type": "address", diff --git a/data/tests/eip/eip721_full_match.proto.json b/data/tests/eip/eip721_full_match.proto.json index 1dd5477f..f58f5082 100644 --- a/data/tests/eip/eip721_full_match.proto.json +++ b/data/tests/eip/eip721_full_match.proto.json @@ -154,6 +154,7 @@ ], "events": [ { + "name": "Transfer", "inputs": [ { "type": "address", @@ -173,6 +174,7 @@ "matched": true }, { + "name": "Approval", "inputs": [ { "type": "address", @@ -192,6 +194,7 @@ "matched": true }, { + "name": "ApprovalForAll", "inputs": [ { "type": "address", diff --git a/data/tests/ir/ERC20.ir.json b/data/tests/ir/ERC20.ir.json index f09f6659..b8606297 100644 --- a/data/tests/ir/ERC20.ir.json +++ b/data/tests/ir/ERC20.ir.json @@ -3206,7 +3206,7 @@ "overrides": [], "referenced_declaration_id": 802, "type_description": { - "type_identifier": "t_function_$_t_string", + "type_identifier": "t_function_$_t_string$", "type_string": "function(string)" } } @@ -3263,7 +3263,7 @@ "overrides": [], "referenced_declaration_id": 818, "type_description": { - "type_identifier": "t_function_$_t_string", + "type_identifier": "t_function_$_t_string$", "type_string": "function(string)" } } @@ -3320,7 +3320,7 @@ "overrides": [], "referenced_declaration_id": 834, "type_description": { - "type_identifier": "t_function_$_t_uint8", + "type_identifier": "t_function_$_t_uint8$", "type_string": "function(uint8)" } } @@ -3377,7 +3377,7 @@ "overrides": [], "referenced_declaration_id": 637, "type_description": { - "type_identifier": "t_function_$_t_uint256", + "type_identifier": "t_function_$_t_uint256$", "type_string": "function(uint256)" } } @@ -3434,7 +3434,7 @@ "overrides": [], "referenced_declaration_id": 653, "type_description": { - "type_identifier": "t_function_$_t_address", + "type_identifier": "t_function_$_t_address$", "type_string": "function(address)" } } @@ -3491,7 +3491,7 @@ "overrides": [], "referenced_declaration_id": 669, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_uint256", + "type_identifier": "t_function_$_t_address$_t_uint256$", "type_string": "function(address,uint256)" } } @@ -3550,7 +3550,7 @@ "reference_statement_id": 1448, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256$", + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", "type_string": "function(address,address,uint256)" } } @@ -3589,7 +3589,7 @@ "overrides": [], "referenced_declaration_id": 689, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address", + "type_identifier": "t_function_$_t_address$_t_address$", "type_string": "function(address,address)" } } @@ -3657,7 +3657,7 @@ "overrides": [], "referenced_declaration_id": 709, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_uint256", + "type_identifier": "t_function_$_t_address$_t_uint256$", "type_string": "function(address,uint256)" } } @@ -3716,7 +3716,7 @@ "reference_statement_id": 1824, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256$", + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", "type_string": "function(address,address,uint256)" } } @@ -3755,7 +3755,7 @@ "overrides": [], "referenced_declaration_id": 729, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256", + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", "type_string": "function(address,address,uint256)" } } @@ -3825,7 +3825,7 @@ "reference_statement_id": 1906, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256$", + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", "type_string": "function(address,address,uint256)" } }, @@ -3854,7 +3854,7 @@ "reference_statement_id": 1448, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256$", + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", "type_string": "function(address,address,uint256)" } } @@ -3930,7 +3930,7 @@ "type_string": "address" }, { - "type_identifier": "t_function_$_t_address$$_t_address$", + "type_identifier": "t_function_$_t_address$_t_address$", "type_string": "function(address,address)" } ], @@ -3940,7 +3940,7 @@ "reference_statement_id": 1824, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_function_$_t_address$$_t_address$$", + "type_identifier": "t_function_$_t_address$_t_address$_t_function_$_t_address$_t_address$", "type_string": "function(address,address,function(address,address))" } } @@ -4166,7 +4166,7 @@ "reference_statement_id": 1964, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256$", + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", "type_string": "function(address,address,uint256)" } }, @@ -4219,7 +4219,7 @@ "reference_statement_id": 1984, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256$", + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", "type_string": "function(address,address,uint256)" } } @@ -4317,7 +4317,7 @@ "reference_statement_id": 1964, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256$", + "type_identifier": "t_function_$_t_function_$_t_rational_0_by_1$_t_address$_t_uint256$", "type_string": "function(function(int_const 0),address,uint256)" } }, @@ -4346,7 +4346,7 @@ "reference_statement_id": 1984, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256$", + "type_identifier": "t_function_$_t_function_$_t_rational_0_by_1$_t_address$_t_uint256$", "type_string": "function(function(int_const 0),address,uint256)" } } @@ -4444,7 +4444,7 @@ "reference_statement_id": 1964, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256$", + "type_identifier": "t_function_$_t_address$_t_function_$_t_rational_0_by_1$_t_uint256$", "type_string": "function(address,function(int_const 0),uint256)" } }, @@ -4497,7 +4497,7 @@ "reference_statement_id": 1984, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256$", + "type_identifier": "t_function_$_t_address$_t_function_$_t_rational_0_by_1$_t_uint256$", "type_string": "function(address,function(int_const 0),uint256)" } } diff --git a/data/tests/ir/ERC20.ir.proto.json b/data/tests/ir/ERC20.ir.proto.json index c0c3a3d5..d9c21aba 100644 --- a/data/tests/ir/ERC20.ir.proto.json +++ b/data/tests/ir/ERC20.ir.proto.json @@ -1511,7 +1511,7 @@ "name": "name", "referenced_declaration_id": 802, "type_description": { - "type_identifier": "t_function_$_t_string", + "type_identifier": "t_function_$_t_string$", "type_string": "function(string)" } } @@ -1559,7 +1559,7 @@ "name": "symbol", "referenced_declaration_id": 818, "type_description": { - "type_identifier": "t_function_$_t_string", + "type_identifier": "t_function_$_t_string$", "type_string": "function(string)" } } @@ -1607,7 +1607,7 @@ "name": "decimals", "referenced_declaration_id": 834, "type_description": { - "type_identifier": "t_function_$_t_uint8", + "type_identifier": "t_function_$_t_uint8$", "type_string": "function(uint8)" } } @@ -1655,7 +1655,7 @@ "name": "totalSupply", "referenced_declaration_id": 637, "type_description": { - "type_identifier": "t_function_$_t_uint256", + "type_identifier": "t_function_$_t_uint256$", "type_string": "function(uint256)" } } @@ -1703,7 +1703,7 @@ "name": "balanceOf", "referenced_declaration_id": 653, "type_description": { - "type_identifier": "t_function_$_t_address", + "type_identifier": "t_function_$_t_address$", "type_string": "function(address)" } } @@ -1752,7 +1752,7 @@ "name": "transfer", "referenced_declaration_id": 669, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_uint256", + "type_identifier": "t_function_$_t_address$_t_uint256$", "type_string": "function(address,uint256)" } } @@ -1809,7 +1809,7 @@ "nodeType": "FUNCTION_CALL", "referenceStatementId": "1448", "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", "typeString": "function(address,address,uint256)" } } @@ -1844,7 +1844,7 @@ "name": "allowance", "referenced_declaration_id": 689, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address", + "type_identifier": "t_function_$_t_address$_t_address$", "type_string": "function(address,address)" } } @@ -1903,7 +1903,7 @@ "name": "approve", "referenced_declaration_id": 709, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_uint256", + "type_identifier": "t_function_$_t_address$_t_uint256$", "type_string": "function(address,uint256)" } } @@ -1960,7 +1960,7 @@ "nodeType": "FUNCTION_CALL", "referenceStatementId": "1824", "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", "typeString": "function(address,address,uint256)" } } @@ -1995,7 +1995,7 @@ "name": "transferFrom", "referenced_declaration_id": 729, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_address$$_t_uint256", + "type_identifier": "t_function_$_t_address$_t_address$_t_uint256$", "type_string": "function(address,address,uint256)" } } @@ -2062,7 +2062,7 @@ "nodeType": "FUNCTION_CALL", "referenceStatementId": "1906", "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", "typeString": "function(address,address,uint256)" } } @@ -2093,7 +2093,7 @@ "nodeType": "FUNCTION_CALL", "referenceStatementId": "1448", "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", "typeString": "function(address,address,uint256)" } } @@ -2160,7 +2160,7 @@ "typeString": "address" }, { - "typeIdentifier": "t_function_$_t_address$$_t_address$", + "typeIdentifier": "t_function_$_t_address$_t_address$", "typeString": "function(address,address)" } ], @@ -2173,7 +2173,7 @@ "nodeType": "FUNCTION_CALL", "referenceStatementId": "1824", "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_function_$_t_address$$_t_address$$", + "typeIdentifier": "t_function_$_t_address$_t_address$_t_function_$_t_address$_t_address$", "typeString": "function(address,address,function(address,address))" } } @@ -2379,7 +2379,7 @@ "nodeType": "FUNCTION_CALL", "referenceStatementId": "1964", "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", "typeString": "function(address,address,uint256)" } } @@ -2433,7 +2433,7 @@ "nodeType": "FUNCTION_CALL", "referenceStatementId": "1984", "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_address$$_t_uint256$", + "typeIdentifier": "t_function_$_t_address$_t_address$_t_uint256$", "typeString": "function(address,address,uint256)" } } @@ -2524,7 +2524,7 @@ "nodeType": "FUNCTION_CALL", "referenceStatementId": "1964", "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256$", + "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$_t_address$_t_uint256$", "typeString": "function(function(int_const 0),address,uint256)" } } @@ -2555,7 +2555,7 @@ "nodeType": "FUNCTION_CALL", "referenceStatementId": "1984", "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$$$_t_address$$_t_uint256$", + "typeIdentifier": "t_function_$_t_function_$_t_rational_0_by_1$_t_address$_t_uint256$", "typeString": "function(function(int_const 0),address,uint256)" } } @@ -2646,7 +2646,7 @@ "nodeType": "FUNCTION_CALL", "referenceStatementId": "1964", "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256$", + "typeIdentifier": "t_function_$_t_address$_t_function_$_t_rational_0_by_1$_t_uint256$", "typeString": "function(address,function(int_const 0),uint256)" } } @@ -2700,7 +2700,7 @@ "nodeType": "FUNCTION_CALL", "referenceStatementId": "1984", "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_function_$_t_rational_0_by_1$$$_t_uint256$", + "typeIdentifier": "t_function_$_t_address$_t_function_$_t_rational_0_by_1$_t_uint256$", "typeString": "function(address,function(int_const 0),uint256)" } } diff --git a/data/tests/ir/TokenSale.ir.json b/data/tests/ir/TokenSale.ir.json index ff248b39..476835e0 100644 --- a/data/tests/ir/TokenSale.ir.json +++ b/data/tests/ir/TokenSale.ir.json @@ -2913,7 +2913,7 @@ "name": "", "argument_types": [ { - "type_identifier": "t_function_", + "type_identifier": "t_function_$", "type_string": "function()" }, { @@ -2931,7 +2931,7 @@ "reference_statement_id": 0, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_function_$$_t_address$$_t_uint256$", + "type_identifier": "t_function_$_t_function_$_t_address$_t_uint256$", "type_string": "function(function(),address,uint256)" } } diff --git a/data/tests/ir/TokenSale.ir.proto.json b/data/tests/ir/TokenSale.ir.proto.json index 1bf1634d..3f4b2ce2 100644 --- a/data/tests/ir/TokenSale.ir.proto.json +++ b/data/tests/ir/TokenSale.ir.proto.json @@ -1278,7 +1278,7 @@ "value": { "argumentTypes": [ { - "typeIdentifier": "t_function_", + "typeIdentifier": "t_function_$", "typeString": "function()" }, { @@ -1297,7 +1297,7 @@ "kind": "FUNCTION_CALL", "nodeType": "FUNCTION_CALL", "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$_t_address$$_t_uint256$", + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_uint256$", "typeString": "function(function(),address,uint256)" } } diff --git a/data/tests/ir/TransparentUpgradeableProxy.ir.json b/data/tests/ir/TransparentUpgradeableProxy.ir.json index 15536a8f..18949931 100644 --- a/data/tests/ir/TransparentUpgradeableProxy.ir.json +++ b/data/tests/ir/TransparentUpgradeableProxy.ir.json @@ -808,7 +808,7 @@ "reference_statement_id": 168, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_function_$$", + "type_identifier": "t_function_$_t_function_$", "type_string": "function(function())" } } @@ -1024,7 +1024,7 @@ "name": "require", "argument_types": [ { - "type_identifier": "t_function_", + "type_identifier": "t_function_$", "type_string": "function()" }, { @@ -1342,7 +1342,7 @@ "reference_statement_id": 0, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", + "type_identifier": "t_function_$_t_function_$_t_address$_t_string_literal$", "type_string": "function(function(address),string memory)" } } @@ -1490,7 +1490,7 @@ "reference_statement_id": 0, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", + "type_identifier": "t_function_$_t_function_$_t_address$_t_string_literal$", "type_string": "function(function(address),string memory)" } } @@ -1638,7 +1638,7 @@ "reference_statement_id": 0, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", + "type_identifier": "t_function_$_t_function_$_t_address$_t_string_literal$", "type_string": "function(function(address),string memory)" } } @@ -2372,7 +2372,7 @@ "reference_statement_id": 0, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", + "type_identifier": "t_function_$_t_function_$_t_address$_t_string_literal$", "type_string": "function(function(address),string memory)" } } @@ -2919,7 +2919,7 @@ "reference_statement_id": 0, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", + "type_identifier": "t_function_$_t_function_$_t_address$_t_string_literal$", "type_string": "function(function(address),string memory)" } }, @@ -2930,7 +2930,7 @@ "name": "require", "argument_types": [ { - "type_identifier": "t_function_$_t_function_$$", + "type_identifier": "t_function_$_t_function_$", "type_string": "function(function())" }, { @@ -2943,7 +2943,7 @@ "reference_statement_id": 0, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_function_$_t_function_$$$_t_string_literal$", + "type_identifier": "t_function_$_t_function_$_t_function_$_t_string_literal$", "type_string": "function(function(function()),string memory)" } } @@ -3142,7 +3142,7 @@ "overrides": [], "referenced_declaration_id": 188, "type_description": { - "type_identifier": "t_function_$_t_address", + "type_identifier": "t_function_$_t_address$", "type_string": "function(address)" } } @@ -3246,7 +3246,7 @@ "reference_statement_id": 1242, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_bool$", + "type_identifier": "t_function_$_t_address$_t_bytes$_t_bool$", "type_string": "function(address,bytes,bool)" } } @@ -3827,7 +3827,7 @@ "node_type": 63, "name": "implementation", "overrides": [], - "referenced_declaration_id": 929, + "referenced_declaration_id": 172, "type_description": { "type_identifier": "t_address", "type_string": "address" @@ -3979,7 +3979,7 @@ "reference_statement_id": 0, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", + "type_identifier": "t_function_$_t_function_$_t_address$_t_string_literal$", "type_string": "function(function(address),string memory)" } } @@ -4501,7 +4501,7 @@ "reference_statement_id": 1032, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_function__t_string_literal$$$_t_bool$", + "type_identifier": "t_function_$_t_address$_t_function__t_string_literal$_t_bool$", "type_string": "function(address,function(string memory),bool)" } } @@ -4582,7 +4582,7 @@ "reference_statement_id": 1032, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$$_t_bool$", + "type_identifier": "t_function_$_t_address$_t_bytes$_t_bool$", "type_string": "function(address,bytes,bool)" } } @@ -4654,7 +4654,7 @@ "overrides": [], "referenced_declaration_id": 212, "type_description": { - "type_identifier": "t_function_", + "type_identifier": "t_function_$", "type_string": "function()" } } @@ -4822,7 +4822,7 @@ "name": "require", "argument_types": [ { - "type_identifier": "t_function_", + "type_identifier": "t_function_$", "type_string": "function()" } ], @@ -4888,7 +4888,7 @@ "name": "require", "argument_types": [ { - "type_identifier": "t_function_", + "type_identifier": "t_function_$", "type_string": "function()" } ], @@ -5143,7 +5143,7 @@ "reference_statement_id": 0, "referenced_declaration_id": 0, "type_description": { - "type_identifier": "t_function_$_t_address$$_t_bytes$", + "type_identifier": "t_function_$_t_address$_t_bytes$", "type_string": "function(address,bytes)" } } diff --git a/data/tests/ir/TransparentUpgradeableProxy.ir.proto.json b/data/tests/ir/TransparentUpgradeableProxy.ir.proto.json index 5234e84d..ec081bfc 100644 --- a/data/tests/ir/TransparentUpgradeableProxy.ir.proto.json +++ b/data/tests/ir/TransparentUpgradeableProxy.ir.proto.json @@ -217,7 +217,7 @@ "nodeType": "FUNCTION_CALL", "referenceStatementId": "168", "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$$", + "typeIdentifier": "t_function_$_t_function_$", "typeString": "function(function())" } } @@ -394,7 +394,7 @@ "value": { "argumentTypes": [ { - "typeIdentifier": "t_function_", + "typeIdentifier": "t_function_$", "typeString": "function()" }, { @@ -668,7 +668,7 @@ "name": "require", "nodeType": "FUNCTION_CALL", "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_string_literal$", "typeString": "function(function(address),string memory)" } } @@ -795,7 +795,7 @@ "name": "require", "nodeType": "FUNCTION_CALL", "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_string_literal$", "typeString": "function(function(address),string memory)" } } @@ -922,7 +922,7 @@ "name": "require", "nodeType": "FUNCTION_CALL", "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_string_literal$", "typeString": "function(function(address),string memory)" } } @@ -1564,7 +1564,7 @@ "name": "require", "nodeType": "FUNCTION_CALL", "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_string_literal$", "typeString": "function(function(address),string memory)" } } @@ -2044,7 +2044,7 @@ "name": "require", "nodeType": "FUNCTION_CALL", "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_string_literal$", "typeString": "function(function(address),string memory)" } } @@ -2054,7 +2054,7 @@ "value": { "argumentTypes": [ { - "typeIdentifier": "t_function_$_t_function_$$", + "typeIdentifier": "t_function_$_t_function_$", "typeString": "function(function())" }, { @@ -2067,7 +2067,7 @@ "name": "require", "nodeType": "FUNCTION_CALL", "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_function_$$$_t_string_literal$", + "typeIdentifier": "t_function_$_t_function_$_t_function_$_t_string_literal$", "typeString": "function(function(function()),string memory)" } } @@ -2241,7 +2241,7 @@ "name": "_implementation", "referenced_declaration_id": 188, "type_description": { - "type_identifier": "t_function_$_t_address", + "type_identifier": "t_function_$_t_address$", "type_string": "function(address)" } } @@ -2334,7 +2334,7 @@ "nodeType": "FUNCTION_CALL", "referenceStatementId": "1242", "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_bool$", + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_bool$", "typeString": "function(address,bytes,bool)" } } @@ -2840,7 +2840,7 @@ "id": 2064, "node_type": 63, "name": "implementation", - "referenced_declaration_id": 929, + "referenced_declaration_id": 172, "type_description": { "type_identifier": "t_address", "type_string": "address" @@ -2974,7 +2974,7 @@ "name": "require", "nodeType": "FUNCTION_CALL", "typeDescription": { - "typeIdentifier": "t_function_$_t_function_$_t_address$$_t_string_literal$", + "typeIdentifier": "t_function_$_t_function_$_t_address$_t_string_literal$", "typeString": "function(function(address),string memory)" } } @@ -3440,7 +3440,7 @@ "nodeType": "FUNCTION_CALL", "referenceStatementId": "1032", "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_function__t_string_literal$$$_t_bool$", + "typeIdentifier": "t_function_$_t_address$_t_function__t_string_literal$_t_bool$", "typeString": "function(address,function(string memory),bool)" } } @@ -3515,7 +3515,7 @@ "nodeType": "FUNCTION_CALL", "referenceStatementId": "1032", "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$$_t_bool$", + "typeIdentifier": "t_function_$_t_address$_t_bytes$_t_bool$", "typeString": "function(address,bytes,bool)" } } @@ -3575,7 +3575,7 @@ "name": "_beforeFallback", "referenced_declaration_id": 212, "type_description": { - "type_identifier": "t_function_", + "type_identifier": "t_function_$", "type_string": "function()" } } @@ -3722,7 +3722,7 @@ "value": { "argumentTypes": [ { - "typeIdentifier": "t_function_", + "typeIdentifier": "t_function_$", "typeString": "function()" } ], @@ -3780,7 +3780,7 @@ "value": { "argumentTypes": [ { - "typeIdentifier": "t_function_", + "typeIdentifier": "t_function_$", "typeString": "function()" } ], @@ -4012,7 +4012,7 @@ "kind": "FUNCTION_CALL", "nodeType": "FUNCTION_CALL", "typeDescription": { - "typeIdentifier": "t_function_$_t_address$$_t_bytes$", + "typeIdentifier": "t_function_$_t_address$_t_bytes$", "typeString": "function(address,bytes)" } } diff --git a/eip/confidence.go b/eip/confidence.go index b6eec876..ae3c378b 100644 --- a/eip/confidence.go +++ b/eip/confidence.go @@ -1,6 +1,8 @@ package eip -import eip_pb "github.com/txpull/protos/dist/go/eip" +import ( + eip_pb "github.com/txpull/protos/dist/go/eip" +) // ConfidenceLevel represents the confidence level of a discovery. type ConfidenceLevel int @@ -131,6 +133,7 @@ func ConfidenceCheck(standard EIP, contract *Contract) (Discovery, bool) { } for _, event := range standard.GetEvents() { + eventFn := Event{ Name: event.Name, Inputs: make([]Input, 0), @@ -223,6 +226,7 @@ func eventMatch(newEvent *Event, standardEvent, event Event) (int, bool) { if standardEvent.Name == event.Name { totalTokenCount++ + newEvent.Name = event.Name for _, seInput := range standardEvent.Inputs { newInput := Input{Type: seInput.Type, Indexed: seInput.Indexed} for _, eventInput := range event.Inputs { diff --git a/eip/storage_test.go b/eip/storage_test.go index 7c0b2108..6036f6f3 100644 --- a/eip/storage_test.go +++ b/eip/storage_test.go @@ -115,6 +115,9 @@ func TestEIPStorage(t *testing.T) { assert.True(t, bool, "standard %v not found in registered standards", tt.eip.GetType()) assert.NotNil(t, standard) assert.Equal(t, tt.eip.GetStandard(), standard.GetStandard()) + + assert.NotNil(t, GetSortedRegisteredStandards()) + assert.True(t, StandardsLoaded()) }) } } diff --git a/eip/types.go b/eip/types.go index 90080010..28f3fb76 100644 --- a/eip/types.go +++ b/eip/types.go @@ -136,6 +136,7 @@ func (e *Event) ToProto() *eip_pb.Event { } return &eip_pb.Event{ + Name: e.Name, Inputs: protoInputs, Outputs: protoOutputs, Matched: e.Matched, diff --git a/go.mod b/go.mod index 83f47594..ec4ae15f 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/ipfs/go-ipfs-api v0.6.0 github.com/mr-tron/base58 v1.2.0 github.com/stretchr/testify v1.8.4 - github.com/txpull/protos v0.1.4 + github.com/txpull/protos v0.1.6 go.uber.org/zap v1.24.0 google.golang.org/protobuf v1.31.0 ) diff --git a/go.sum b/go.sum index 5d086df2..39efad50 100644 --- a/go.sum +++ b/go.sum @@ -89,8 +89,8 @@ github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0b github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/txpull/protos v0.1.4 h1:vRG7UJw/kkYBN8b66+7Jz2GwyNHRQBYRa7LmQKcWtP0= -github.com/txpull/protos v0.1.4/go.mod h1:t5JJHXY96/1ozyAwQouHFwjOLHa61b2MtNpf2wfAyG8= +github.com/txpull/protos v0.1.6 h1:GnvtHaYqPOaEgSW3qx8csQmx7el2RhYFHB/dRa4+QL4= +github.com/txpull/protos v0.1.6/go.mod h1:t5JJHXY96/1ozyAwQouHFwjOLHa61b2MtNpf2wfAyG8= github.com/whyrusleeping/tar-utils v0.0.0-20201201191210-20a61371de5b h1:wA3QeTsaAXybLL2kb2cKhCAQTHgYTMwuI8lBlJSv5V8= github.com/whyrusleeping/tar-utils v0.0.0-20201201191210-20a61371de5b/go.mod h1:xT1Y5p2JR2PfSZihE0s4mjdJaRGp1waCTf5JzhQLBck= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= diff --git a/ir/builder_test.go b/ir/builder_test.go index 3b3d7d26..a18cf6b3 100644 --- a/ir/builder_test.go +++ b/ir/builder_test.go @@ -10,6 +10,7 @@ import ( "github.com/txpull/solgo/ast" "github.com/txpull/solgo/eip" "github.com/txpull/solgo/tests" + "github.com/txpull/solgo/utils" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) @@ -283,7 +284,7 @@ func TestIrBuilderFromSources(t *testing.T) { // Leaving it here for now to make unit tests pass... // This will be removed before final push to the main branch - err = parser.GetAstBuilder().WriteToFile( + err = utils.WriteToFile( "../data/tests/ir/"+testCase.sources.EntrySourceUnitName+".ir.json", pretty, ) @@ -302,7 +303,7 @@ func TestIrBuilderFromSources(t *testing.T) { // Leaving it here for now to make unit tests pass... // This will be removed before final push to the main branch - err = parser.GetAstBuilder().WriteToFile( + err = utils.WriteToFile( "../data/tests/ir/"+testCase.sources.EntrySourceUnitName+".ir.proto.json", protoPretty, ) @@ -411,6 +412,12 @@ func TestIrBuilderFromSources(t *testing.T) { assert.NotNil(t, node.GetId()) assert.Equal(t, len(node.GetNodes()), 0) assert.NotNil(t, node.ToProto()) + if node.GetExternalContract() != nil { + assert.NotNil(t, node.GetExternalContract().GetSrc()) + } + if node.GetReferenceStatement() != nil { + assert.NotEmpty(t, node.GetReferenceStatement().GetSrc()) + } } } } diff --git a/ir/import.go b/ir/import.go index 2dc22dcd..2de9445b 100644 --- a/ir/import.go +++ b/ir/import.go @@ -87,8 +87,9 @@ func (b *Builder) processImport(unit *ast.Import) *Import { sourceUnit := b.astBuilder.GetTree().GetById(unit.GetSourceUnit()) if sourceUnit != nil { - su := sourceUnit.(*ast.SourceUnit[ast.Node[ast_pb.SourceUnit]]) - toReturn.ContractId = su.GetContract().GetId() + if su, ok := sourceUnit.(*ast.SourceUnit[ast.Node[ast_pb.SourceUnit]]); ok { + toReturn.ContractId = su.GetContract().GetId() + } } return toReturn diff --git a/sources.go b/sources.go index d21823d5..a5e29086 100644 --- a/sources.go +++ b/sources.go @@ -82,7 +82,7 @@ func NewSourcesFromMetadata(md *metadata.ContractMetadata) *Sources { // too good to be true. for name, source := range md.Sources { sources.SourceUnits = append(sources.SourceUnits, &SourceUnit{ - Name: strings.TrimRight(filepath.Base(name), ".sol"), + Name: strings.TrimSuffix(filepath.Base(name), ".sol"), Path: name, Content: source.Content, }) @@ -281,6 +281,7 @@ func (s *Sources) WriteToDir(path string) error { // Write each SourceUnit's content to a file in the specified directory for _, sourceUnit := range s.SourceUnits { content := simplifyImportPaths(sourceUnit.Content) + filePath := filepath.Join(path, sourceUnit.Name+".sol") if err := utils.WriteToFile(filePath, []byte(content)); err != nil { return fmt.Errorf("failed to write source unit %s to file: %v", sourceUnit.Name, err) @@ -417,8 +418,7 @@ func (s *Sources) SortContracts() error { var sortedSourceUnits []*SourceUnit for _, name := range sortedNames { - sourceUnit := s.GetSourceUnitByName(name) - if sourceUnit != nil { + if sourceUnit := s.GetSourceUnitByName(name); sourceUnit != nil { sortedSourceUnits = append(sortedSourceUnits, sourceUnit) } } diff --git a/sources_test.go b/sources_test.go index 4fe10ac0..80e76332 100644 --- a/sources_test.go +++ b/sources_test.go @@ -1,6 +1,7 @@ package solgo import ( + "context" "path/filepath" "testing" @@ -94,7 +95,11 @@ func TestSources(t *testing.T) { for _, testCase := range testCases { t.Run(testCase.name, func(t *testing.T) { - err := testCase.sources.Prepare() + parser, err := NewParserFromSources(context.Background(), testCase.sources) + assert.NoError(t, err) + assert.NotNil(t, parser) + + err = testCase.sources.Prepare() assert.NoError(t, err) assert.NoError(t, testCase.sources.SortContracts()) diff --git a/utils/json.go b/utils/json.go index 5e0f1820..35a68ec2 100644 --- a/utils/json.go +++ b/utils/json.go @@ -2,6 +2,8 @@ package utils import ( "encoding/json" + "fmt" + "os" ) // ToJSON converts a Go struct to its JSON representation. @@ -19,3 +21,18 @@ func ToProtoJSON(data interface{}) ([]byte, error) { func ToJSONPretty(data interface{}) ([]byte, error) { return json.MarshalIndent(data, "", "\t") } + +// DumpNodeWithExit prints a formatted JSON representation of the provided interface and exits the program. +// This function is primarily used for debugging purposes. +func DumpNodeWithExit(whatever interface{}) { + j, _ := json.MarshalIndent(whatever, "", "\t") + fmt.Println(string(j)) + os.Exit(1) +} + +// DumpNodeNoExit prints a formatted JSON representation of the provided interface without exiting the program. +// This function is primarily used for debugging purposes. +func DumpNodeNoExit(whatever interface{}) { + j, _ := json.MarshalIndent(whatever, "", "\t") + fmt.Println(string(j)) +}